python編程基礎訓練之面向對象人員管理系統構建

題目:

編寫程序實現一個高校信息管理系統:
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("登錄失敗...重新登錄...")

注:最最最快速簡單的實現一個信息管理系統,爲了快速構建,數據類型基本都用字符串模擬了,具體自己創建的時候可以更改爲正確對應的數據類型,不完善的地方自己可以完善,可以直接換一種語言寫一遍就類比出其他語言的系統了~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章