題目:
編寫程序實現一個高校信息管理系統:
1、系統中包括教職工(老師、行政人員),學生等人員信息
2、教職工包含私有的屬性:姓名、職工編號、年齡、性別、生日,包含行爲:教職工信息查詢
3、老師類從教職工類派生,還包含私有的屬性:授課名稱、管理的學生信息,包含行爲:老師信息查詢
4、行政人員從教職工類派生,還包含私有的屬性:崗位類型,包含行爲:行政人員信息查詢
5、學生包含私有的屬性:學號、姓名、性別、專業、成績(語文、數學、英語),包含行爲:學生信息查詢
6、高校信息管理系統需要通過用戶名和密碼進行登錄,登錄成功後顯示如下菜單:
歡迎來到高校信息管理系統,本系統提供如下功能:
1)教職工信息錄入
2)教職工信息查詢(可查詢所有或根據職工編號查詢單個信息)
3)教職工信息修改
4)教職工信息刪除
5)學生信息錄入
6)學生信息查詢(可查詢所有或根據學號查詢單個信息)
7)學生信息修改
8)學生信息刪除
9)退出
注:題目瞎出的,寫也是瞎寫的,不嚴謹的地方就跳過吧~
首先來回顧一下面向對象的基礎知識
然後具體代碼題目實現
一、學生類
class Student:
def __init__(self,num,name,sex,major,chinese,math,english):
self.__num=num
self.__name=name
self.__sex=sex
self.__major=major
self.__chinese=chinese
self.__math=math
self.__english=english
def getNum(self):
return self.__num
def modify(self,num,name,sex,major,chinese,math,english):
self.__num=num
self.__name=name
self.__sex=sex
self.__major=major
self.__chinese=chinese
self.__math=math
self.__english=english
def check(self):
return self.__num,self.__name,self.__sex,self.__major,self.__chinese,self.__math,self.__english
def display(self):
print(self.__num,self.__name,self.__sex,self.__major,self.__chinese,self.__math,self.__english)
二、教職工類
class Staff:
def __init__(self,name,num,age,sex,birthday):
self.__name=name
self.__num=num
self.__age=age
self.__sex=sex
self.__birthday=birthday
def getNum(self):
return self.__num
def check(self):
return self.__name,self.__num,self.__age,self.__sex,self.__birthday
def display(self):
print(self.__name,self.__num,self.__age,self.__sex,self.__birthday,end=" ")
def modify(self,name,num,age,sex,birthday):
self.__name=name
self.__num=num
self.__age=age
self.__sex=sex
self.__birthday=birthday
class Teacher(Staff):
def __init__(self,name,num,age,sex,birthday,lessonName,StudentList):
super().__init__(name,num,age,sex,birthday)
self.__lessonName=lessonName
self.__StudentList=StudentList
def getStudentList(self):
return self.__StudentList
def check(self):
name,num,age,sex,birthday=Staff.check(self)
return name,num,age,sex,birthday,self.__lessonName,self.__StudentList
def display(self):
Staff.display(self)
print(self.__lessonName,self.__StudentList)
def modify(self,name,num,age,sex,birthday,lessonName):
Staff.modify(self,name,num,age,sex,birthday)
self.__lessonName=lessonName
def addStudent(self,student):
self.__StudentList[student.getNum()]=student
def delStudent(self,num):
del self.__StudentList[num]
class AdministrationStaff(Staff):
def __init__(self,name,num,age,sex,birthday,jobType):
super().__init__(name,num,age,sex,birthday)
self.__jobType=jobType
def check(self):
name,num,age,sex,birthday=Staff.check(self)
return name,num,age,sex,birthday,self.__jobType
def display(self):
Staff.display(self)
print(self.__jobType)
def modify(self,name,num,age,sex,birthday,jobType):
Staff.modify(self,name,num,age,sex,birthday)
self.__jobType=jobType
三、信息管理系統類
from Student import Student
from Staff import Teacher
from Staff import AdministrationStaff
class InformationManagementSystem:
def __init__(self,userName,password):
self.__userName=userName
self.__password=password
self.__staff={}
self.__student={}
def showMenu(self):
print(" 1)教職工信息錄入")
print(" 2)教職工信息查詢")
print(" 3)教職工信息修改")
print(" 4)教職工信息刪除")
print(" 5)學生信息錄入")
print(" 6)學生信息查詢")
print(" 7)學生信息修改")
print(" 8)學生信息刪除")
print(" 9)教師添加管理學生")
print(" 10)教師減少管理學生")
print(" 11)退出")
def log(self,userName,password):
if self.__userName==userName:
if self.__password==password:
print("%s登錄成功,歡迎來到高校信息管理系統"%(self.__userName))
return True
else:
print("密碼錯誤!")
return False
else:
print("用戶名錯誤!")
return False
def TeacherAddStudent(self,teacherNum,studentNum):
if teacherNum in self.__staff.keys() and studentNum in self.__student.keys():#若教師跟學生都已錄入系統內
if isinstance(self.__staff[teacherNum],Teacher):
self.__staff[teacherNum].addStudent(self.__student[studentNum])
print("教師%s接手管理學生%s成功~"%(teacherNum,studentNum))
else:
print("非教師無學生管理操作")
else:
print("該編號教師、學生待錄入系統,不能直接操作系統不存在的人員~")
def TeacherDelStudent(self,teacherNum,studentNum):
if teacherNum in self.__staff.keys() and studentNum in self.__student.keys():#若教師跟學生都已錄入系統內
if isinstance(self.__staff[teacherNum],Teacher):
self.__staff[teacherNum].delStudent(studentNum)
print("教師%s轉手學生%s成功~"%(teacherNum,studentNum))
else:
print("非教師無學生管理操作")
else:
print("該編號教師、學生待錄入系統,不能直接操作系統不存在的人員~")
def StaffEntry(self,staff):
self.__staff[staff.getNum()]=staff#(key,vale)-->(num,staff)
def StaffCheck(self,num):
if num=="":
for key in self.__staff.keys():
self.__staff[key].display()
elif num in self.__staff.keys():
staff=self.__staff[num]
staff.display()
else:
print("暫無該編號的教職工~")
def StaffModify(self,num):
if num in self.__staff.keys():
newName=input("請輸入該教職工的正確姓名:")
newNum=input("請輸入該教職工的正確編號:")
newAge=int(input("請輸入該教職工的正確年齡:"))
newSex=input("請輸入該教職工的正確性別:")
if isinstance(self.__staff[num],Teacher):
newBirthday=input("請輸入該教師的正確生日:")
newLessonName=input("請輸入該教師所授課程:")
studentList=self.__staff[num].getStudentList()
del self.__staff[num]
self.__staff[newNum]=Teacher(newName,newNum,newAge,newSex,newBirthday,newLessonName,studentList)
print("信息更新成功~")
elif isinstance(self.__staff[num],AdministrationStaff):
newJobType=input("請輸入該職工的正確職務類型:")
self.__staff[newNum]=AdministrationStaff(newName,newNum,newAge,newSex,newBirthday,newJobType)
del self.__staff[num]
print("信息更新成功~")
else:
print("該教職工類型出現錯誤~")
else:
print("不存在該編號的教職工~")
def StaffDelete(self,num):
if num in self.__staff.keys():
del self.__staff[num]
print("教職工%s刪除成功"%(num))
else:
print("不存在該編號的教職工~")
def StudentEntry(self,student):
self.__student[student.getNum()]=student#(key,vale)-->(num,student)
def StudentCheck(self,num):
if num=="":
for key in self.__student.keys():
self.__student[key].display()
elif num in self.__student.keys():
student=self.__student[num]
student.display()
else:
print("暫無該學號學生~")
def StudentModify(self,num):
if num in self.__student.keys():
newNum=input("請輸入該學生的正確編號:")
newName=input("請輸入該學生的正確名字:")
newSex=input("請輸入該學生的正確性別:")
newMajor=input("請輸入該學生正確專業:")
newChinese=input("請輸入該學生語文成績")
newMath=input("請輸入該學生數學成績")
newEnglish=input("請輸入該學生英語成績")
del self.__student[num]
self.__student[newNum]=Student(newNum,newName,newSex,newMajor,newChinese,newMath,newEnglish)
print("信息更新成功~")
else:
print("不存在該編號的學生~")
def StudentDelete(self,num):
if num in self.__student.keys():
del self.__student[num]
print("學生%s刪除成功"%(num))
else:
print("不存在該學號的學生~")
四、main實現調用
from Student import Student
from Staff import Teacher
from Staff import AdministrationStaff
from InformationManagementSystem import InformationManagementSystem
if __name__=='__main__':
system=InformationManagementSystem("user","user")
#提前錄一點教職工、學生信息,避免每次運行都需要重新錄入,實際系統可以刪除~以下四行
#簡單編寫,所以所有類型基本用字符串替代,具體完善可以更改爲正確的數據類型
#也可以改爲文件錄入一些信息~
system.StudentEntry(Student("1","小花","woman","computer",40,90,80))
system.StudentEntry(Student("2","小明","man","SoftwareEngineering",30,98,70))
system.StudentEntry(Student("3","小厸","woman","computer",90,68,85))
system.StudentEntry(Student("4","小華","man","computer",77,68,75))
system.StaffEntry(Teacher("唐老師","37","40","man","19780118","C++",{}))
system.StaffEntry(AdministrationStaff("康老師","27","30","woman","19880119","教務科"))
system.TeacherAddStudent("37","1")
system.TeacherAddStudent("37","2")
system.TeacherAddStudent("37","3")
loopFlag=True
while loopFlag==True:
userName=input("請輸入用戶名:")
password=input("請輸入登錄密碼:")
flag=system.log(userName,password)
flag=True
if flag==True:
while True:
system.showMenu()
index=int(input("請輸入操作選項:"))
if index==1:#教職工信息錄入
print(" 1)教師信息錄入")
print(" 2)行政人員信息錄入")
index1=int(input("請輸出錄入人員類型:"))
name=input("請輸入教職工姓名:")
num=input("請輸入教職工編號:")
age=input("請輸入教職工年齡:")
sex=input("請輸入教職工性別:")
birthday=input("請輸入教師生日:")
if index1==1:
lessonName=input("請輸入教師所授課程:")
staff=Teacher(name,num,age,sex,birthday,lessonName,{})
system.StaffEntry(staff)
print("教師信息錄入成功!")
staff.display()
elif index1==2:
jobType=input("請輸入行政人員崗位類型:")
staff=AdministrationStaff(name,num,age,sex,birthday,jobType)
system.StaffEntry(staff)
print("行政人員信息錄入成功!")
staff.display()
else:
print("輸入有誤!")
elif index==2:#教職工信息查詢
num=input("請輸入查詢的教職工編號(空輸入打印全部教職工信息):")
system.StaffCheck(num)
elif index==3:#教職工信息修改
num=input("請輸入信息待更新的教職工編號:")
system.StaffModify(num)
elif index==4:
num=input("請輸入待刪除的教職工編號:")
system.StaffDelete(num)
elif index==5:
num=input("請輸入學生學號:")
name=input("請輸入學生姓名:")
sex=input("請輸入學生性別:")
major=input("請輸入學生專業:")
chinese=int(input("請輸入學生語文成績:"))
math=int(input("請輸入學生數學成績:"))
english=int(input("請輸入學生英語成績:"))
student=Student(num,name,sex,major,chinese,math,english)
system.StudentEntry(student)
print("學生信息錄入成功!")
student.display()
elif index==6:
num=input("請輸入查詢的學生學號(空輸入打印全部教職工信息):")
system.StudentCheck(num)
elif index==7:
num=input("請輸入信息待更新的學生學號:")
system.Student(num)
elif index==8:
num=input("請輸入待刪除的學生學號:")
system.StudentDelete(num)
elif index==9:
teacherNum=input("請輸入教師編號:")
studentNum=input("請輸入待添加學生學號:")
system.TeacherAddStudent(teacherNum,studentNum)
elif index==10:
teacherNum=input("請輸入教師編號:")
studentNum=input("請輸入待剔除學生學號:")
system.TeacherDelStudent(teacherNum,studentNum)
elif index==11:
loopFlag=False#外層循環結束標誌
break#跳出內層循環(當前循環)
else:
print("請輸入1~9選項")
else:
print("登錄失敗...重新登錄...")
注:最最最快速簡單的實現一個信息管理系統,爲了快速構建,數據類型基本都用字符串模擬了,具體自己創建的時候可以更改爲正確對應的數據類型,不完善的地方自己可以完善,可以直接換一種語言寫一遍就類比出其他語言的系統了~