目录

高校人员信息管理系统

一、问题描述

二、功能要求

三、问题的解决方案

四、运行环境说明

五、代码段

1、多文件

(1)员工类(文件1)

(2)教师类(文件2)

(3)实验员类(文件3)

(4)行政人员类(文件4)

(5)教师兼行政人员类(文件5)

(6)一级菜单函数和主函数(文件6)

2、单文件


                                  高校人员信息管理系统                                 

备注:大二(上)Python语言课程设计                                     

一、问题描述

某高校有四类员工:教师、实验员、行政人员,教师兼行政人员

共有的信息包括:编号、姓名、性别、年龄等

其中,教师还包含的信息有:所在系部、专业、职称;

实验员还包含的信息有:所在实验室、职务;

行政人员还包含的信息有:政治面貌、职称等

二、功能要求

(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。

(6)统计功能:能根据多种参数进行人员的统计。能统计四类人员数量以及总数,统计男、女员工的数量。

(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。

三、问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系;

(3)根据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述;

(5)完成类中各个成员方法的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告。

四、运行环境说明

五、代码段

1、多文件

(1)员工类(文件1)

# 文件1  Staff.pyclass Staff:                                                                                                      # 员工类def __init__(self,number='-1',name='',gender='',age=-1):self.number = number     # 编号self.name = name         # 姓名self.gender = gender     # 性别self.age = age           # 年龄

(2)教师类(文件2) 

# 文件2  Teacher.pyfrom Staff import *class Teacher(Staff):                                                                                             # 教师类def __init__(self,number='-1',name='',gender='',age=-1,department='',major='',title=''):Staff.__init__(self,number,name,gender,age)  # 编号、姓名、性别、年龄self.department = department                 # 系部self.major = major                           # 专业self.title = title                           # 职称def set_number(self): # 设置教师编号temp_nu = input('请输入编号(4位数):')if len(temp_nu) != 4:print('编号必须是4位数,请重新录入!')return Noneelse:return temp_nudef set_gender(self): # 设置教师性别temp_ge = input('请输入性别(男或女):')if temp_ge != '男' and temp_ge != '女':print('性别必须是男或女,请重新录入!')return Noneelse:return temp_gedef input(self): # 录入教师信息print('请输入教师的各项信息:')temp_nu = self.set_number()if temp_nu == None:return Nonetemp_na = input('请输入姓名:')temp_ge = self.set_gender()if temp_ge == None:return Nonetemp_ag = int(input('请输入年龄(整数):'))temp_de = input('请输入系部:')temp_ma = input('请输入专业:')temp_ti = input('请输入职称:')self.number = temp_nuself.name = temp_naself.gender = temp_geself.age = temp_agself.department = temp_deself.major = temp_maself.title = temp_tireturn selfdef output(self): # 输出教师信息print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}".format(self.number,self.name,self.gender,self.age,self.department,self.major,self.title))class TeaManager:                                                                                              # 教师管理类def __init__(self):self.listx = []def check_number(self,nu): # 检查教师编号是否存在重复for i in range(len(self.listx)):if nu == self.listx[i].number:return Trueelse:return Falsedef add(self): # 添加教师信息print('-' * 40,'添加教师信息','-' * 40,sep='')T = Teacher()T = T.input()if T != None:if self.check_number(T.number):print('编号重复,添加失败!')else:self.listx.append(T)print('添加教师信息成功!')else:print('添加教师信息失败!')def show(self): # 显示教师信息print('-' * 40,'显示教师信息','-' * 40,sep='')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}".format('编号','姓名','性别','年龄','系部','专业','职称'))for t in self.listx:t.output()def min_search(self): # 查询教师信息print('-' * 20, '查询教师信息', '-' * 20, sep='')print('请选择查询方式:')print('1、根据编号查询')print('2、根据姓名查询')choice = input()if choice == '1':temp_nu = input('请输入编号(4位数):')for i in range(len(self.listx)):if temp_nu == self.listx[i].number:return ielse:return Noneelif choice == '2':temp_na = input('请输入姓名:')for i in range(len(self.listx)):if temp_na == self.listx[i].name:return ielse:return Nonedef main_search(self): # 查询教师信息inde = self.min_search()if inde != None:print('查询成功,信息如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}".format('编号','姓名','性别','年龄','系部','专业','职称'))self.listx[inde].output()return indeelse:print('查询失败!')return Nonedef edit(self): # 编辑教师信息print('-' * 40, '编辑教师信息', '-' * 40, sep='')print('请先查询需要编辑的教师信息!')inde = self.main_search()if inde != None:print('请选择需要编辑的信息:')choice = input('1、编号  2、姓名  3、性别  4、年龄  5、系部  6、专业  7、职称')if choice == '1':temp_nu = self.listx[inde].set_number()if temp_nu != None and not self.check_number(temp_nu):self.listx[inde].number = temp_nuprint('编号编辑成功!')else:print('编号编辑失败!')elif choice == '2':temp_na = input('请输入姓名:')self.listx[inde].name = temp_naprint('姓名编辑成功!')elif choice == '3':temp_ge = self.listx[inde].set_gender()if temp_ge != None:self.listx[inde].gender = temp_geprint('性别编辑成功!')else:print('性别编辑失败!')elif choice == '4':temp_ag = int(input('请输入年龄(整数):'))self.listx[inde].age = temp_agprint('年龄编辑成功!')elif choice == '5':temp_de = input('请输入系部:')self.listx[inde].department = temp_deprint('系部编辑成功!')elif choice == '6':temp_ma = input('请输入专业:')self.listx[inde].major = temp_maprint('专业编辑成功!')elif choice == '7':temp_ti = input('请输入职称:')self.listx[inde].title = temp_tiprint('职称编辑成功!')else:print('选择有误,编辑失败!')def dele(self): # 删除教师信息print('-' * 40, '删除教师信息', '-' * 40, sep='')print('请先查询需要删除的教师信息!')inde = self.main_search()if inde != None:del self.listx[inde]print('删除教师信息成功!')else:print('删除教师信息失败!')def statis(self): # 统计教师信息print('-' * 40, '统计教师信息', '-' * 40, sep='')print('请选择统计方式:')print('1、按年龄统计')print('2、统计总人数以及男性和女性人数')choice = input()if choice == '1':l = int(input('请输入年龄的下限(包含下限):'))u = int(input('请输入年龄的上限(包含上限):'))count = 0print('统计结果如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}".format('编号','姓名','性别','年龄','系部','专业','职称'))for i in range(len(self.listx)):if l <= self.listx[i].age <= u:count += 1self.listx[i].output()print('该年龄段的人数共计有{0}人'.format(count))elif choice == '2':total = len(self.listx)count_female = 0for i in range(len(self.listx)):if self.listx[i].gender == '女':count_female += 1print('统计结果如下:')print('教师的总人数为{0}人'.format(total))print('其中,女性{0}人,男性{1}人'.format(count_female,total-count_female))else:print('选择错误,请重新选择!')def save(self): # 保存教师信息print('-' * 40, '保存教师信息', '-' * 40, sep='')with open('Teacherinfo.txt', 'w', encoding='utf-8') as fp:for s in self.listx:s = [s.number,s.name,s.gender,str(s.age),s.department,s.major,s.title]s = ','.join(s) + '\n'fp.write(s)print('保存教师信息成功!')def init(self): # 读取教师信息print('-' * 40, '读取教师信息', '-' * 40, sep='')try:with open('Teacherinfo.txt', 'r', encoding='utf-8') as fp:self.listx = []for line in fp.readlines():s = line.strip().split(',')self.listx.append(Teacher(s[0],s[1],s[2],int(s[3]),s[4],s[5],s[6]))print('读取教师信息成功!')except FileNotFoundError:print('文件不存在!')def tea_mune(tm):                                                                                           # 教师类二级菜单tm.init()print('教师信息管理子系统自动初始化完成!')choice = '99'while choice != '0':print('*' * 40, '教师信息管理子系统', '*' * 40, sep='')print('*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!')print('*请输入您的选择:')print('*1:添加')print('*2:查询')print('*3:显示')print('*4:编辑')print('*5:删除')print('*6:统计')print('*7:保存')print('*0:退出子系统')print('*' * 100)choice = input()if choice == '1':tm.add()elif choice == '2':tm.main_search()elif choice == '3':tm.show()elif choice == '4':tm.edit()elif choice == '5':tm.dele()elif choice == '6':tm.statis()elif choice == '7':tm.save()elif choice == '0':breakelse:print('选择错误,请重新选择!')

(3)实验员类(文件3)

# 文件3  LabTechnician.pyfrom Staff import *class LabTechnician(Staff):                                                                                     # 实验员类def __init__(self,number='-1',name='',gender='',age=-1,lab='',job=''):Staff.__init__(self,number,name,gender,age)  # 编号、姓名、性别、年龄self.lab = lab                               # 实验室self.job = job                               # 职务def set_number(self): # 设置实验员编号temp_nu = input('请输入编号(4位数):')if len(temp_nu) != 4:print('编号必须是4位数,请重新录入!')return Noneelse:return temp_nudef set_gender(self): # 设置实验员性别temp_ge = input('请输入性别(男或女):')if temp_ge != '男' and temp_ge != '女':print('性别必须是男或女,请重新录入!')return Noneelse:return temp_gedef input(self): # 录入实验员信息print('请输入实验员的各项信息:')temp_nu = self.set_number()if temp_nu == None:return Nonetemp_na = input('请输入姓名:')temp_ge = self.set_gender()if temp_ge == None:return Nonetemp_ag = int(input('请输入年龄(整数):'))temp_la = input('请输入实验室:')temp_jo = input('请输入职务:')self.number = temp_nuself.name = temp_naself.gender = temp_geself.age = temp_agself.lab = temp_laself.job = temp_joreturn selfdef output(self): # 输出实验员信息print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format(self.number,self.name,self.gender,self.age,self.lab,self.job))class LabTechManager:                                                                                        # 实验员管理类def __init__(self):self.listx = []def check_number(self,nu): # 检查实验员编号是否存在重复for i in range(len(self.listx)):if nu == self.listx[i].number:return Trueelse:return Falsedef add(self): # 添加实验员信息print('-' * 40,'添加实验员信息','-' * 40,sep='')LT = LabTechnician()LT = LT.input()if LT != None:if self.check_number(LT.number):print('编号重复,添加失败!')else:self.listx.append(LT)print('添加实验员信息成功!')else:print('添加实验员信息失败!')def show(self): # 显示实验员信息print('-' * 40,'显示实验员信息','-' * 40,sep='')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','实验室','职务'))for lt in self.listx:lt.output()def min_search(self): # 查询实验员信息print('-' * 20, '查询实验员信息', '-' * 20, sep='')print('请选择查询方式:')print('1、根据编号查询')print('2、根据姓名查询')choice = input()if choice == '1':temp_nu = input('请输入编号(4位数):')for i in range(len(self.listx)):if temp_nu == self.listx[i].number:return ielse:return Noneelif choice == '2':temp_na = input('请输入姓名:')for i in range(len(self.listx)):if temp_na == self.listx[i].name:return ielse:return Nonedef main_search(self): # 查询实验员信息inde = self.min_search()if inde != None:print('查询成功,信息如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','实验室','职务'))self.listx[inde].output()return indeelse:print('查询失败!')return Nonedef edit(self): # 编辑实验员信息print('-' * 40, '编辑实验员信息', '-' * 40, sep='')print('请先查询需要编辑的实验员信息!')inde = self.main_search()if inde != None:print('请选择需要编辑的信息:')choice = input('1、编号  2、姓名  3、性别  4、年龄  5、实验室  6、职务')if choice == '1':temp_nu = self.listx[inde].set_number()if temp_nu != None and not self.check_number(temp_nu):self.listx[inde].number = temp_nuprint('编号编辑成功!')else:print('编号编辑失败!')elif choice == '2':temp_na = input('请输入姓名:')self.listx[inde].name = temp_naprint('姓名编辑成功!')elif choice == '3':temp_ge = self.listx[inde].set_gender()if temp_ge != None:self.listx[inde].gender = temp_geprint('性别编辑成功!')else:print('性别编辑失败!')elif choice == '4':temp_ag = int(input('请输入年龄(整数):'))self.listx[inde].age = temp_agprint('年龄编辑成功!')elif choice == '5':temp_la = input('请输入实验室:')self.listx[inde].lab = temp_laprint('实验室编辑成功!')elif choice == '6':temp_jo = input('请输入职务:')self.listx[inde].job = temp_joprint('职务编辑成功!')else:print('选择有误,编辑失败!')def dele(self): # 删除实验员信息print('-' * 40, '删除实验员信息', '-' * 40, sep='')print('请先查询需要删除的实验员信息!')inde = self.main_search()if inde != None:del self.listx[inde]print('删除实验员信息成功!')else:print('删除实验员信息失败!')def statis(self): # 统计实验员信息print('-' * 40, '统计实验员信息', '-' * 40, sep='')print('请选择统计方式:')print('1、按年龄统计')print('2、统计总人数以及男性和女性人数')choice = input()if choice == '1':l = int(input('请输入年龄的下限(包含下限):'))u = int(input('请输入年龄的上限(包含上限):'))count = 0print('统计结果如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','实验室','职务'))for i in range(len(self.listx)):if l <= self.listx[i].age <= u:count += 1self.listx[i].output()print('该年龄段的人数共计有{0}人'.format(count))elif choice == '2':total = len(self.listx)count_female = 0for i in range(len(self.listx)):if self.listx[i].gender == '女':count_female += 1print('统计结果如下:')print('实验员的总人数为{0}人'.format(total))print('其中,女性{0}人,男性{1}人'.format(count_female,total-count_female))else:print('选择错误,请重新选择!')def save(self): # 保存实验员信息print('-' * 40, '保存实验员信息', '-' * 40, sep='')with open('LabTechnicianinfo.txt', 'w', encoding='utf-8') as fp:for s in self.listx:s = [s.number,s.name,s.gender,str(s.age),s.lab,s.job]s = ','.join(s) + '\n'fp.write(s)print('保存实验员信息成功!')def init(self): # 读取实验员信息print('-' * 40, '读取实验员信息', '-' * 40, sep='')try:with open('LabTechnicianinfo.txt', 'r', encoding='utf-8') as fp:self.listx = []for line in fp.readlines():s = line.strip().split(',')self.listx.append(LabTechnician(s[0],s[1],s[2],int(s[3]),s[4],s[5]))print('读取实验员信息成功!')except FileNotFoundError:print('文件不存在!')def lab_tech_mune(ltm):                                                                                   # 实验员类二级菜单ltm.init()print('实验员信息管理子系统自动初始化完成!')choice = '99'while choice != '0':print('*' * 40, '实验员信息管理子系统', '*' * 40, sep='')print('*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!')print('*请输入您的选择:')print('*1:添加')print('*2:查询')print('*3:显示')print('*4:编辑')print('*5:删除')print('*6:统计')print('*7:保存')print('*0:退出子系统')print('*' * 100)choice = input()if choice == '1':ltm.add()elif choice == '2':ltm.main_search()elif choice == '3':ltm.show()elif choice == '4':ltm.edit()elif choice == '5':ltm.dele()elif choice == '6':ltm.statis()elif choice == '7':ltm.save()elif choice == '0':breakelse:print('选择错误,请重新选择!')

(4)行政人员类(文件4) 

# 文件4  AdminiStaff.pyfrom Staff import *class AdminiStaff(Staff):                                                                                      # 行政人员类def __init__(self,number='-1',name='',gender='',age=-1,poli_status='',Title=''):Staff.__init__(self,number,name,gender,age)  # 编号、姓名、性别、年龄self.poli_status = poli_status               # 政治面貌self.Title = Title                           # 职称def set_number(self): # 设置行政人员编号temp_nu = input('请输入编号(4位数):')if len(temp_nu) != 4:print('编号必须是4位数,请重新录入!')return Noneelse:return temp_nudef set_gender(self): # 设置行政人员性别temp_ge = input('请输入性别(男或女):')if temp_ge != '男' and temp_ge != '女':print('性别必须是男或女,请重新录入!')return Noneelse:return temp_gedef input(self): # 录入行政人员信息print('请输入行政人员的各项信息:')temp_nu = self.set_number()if temp_nu == None:return Nonetemp_na = input('请输入姓名:')temp_ge = self.set_gender()if temp_ge == None:return Nonetemp_ag = int(input('请输入年龄(整数):'))temp_po = input('请输入政治面貌:')temp_Ti = input('请输入职称:')self.number = temp_nuself.name = temp_naself.gender = temp_geself.age = temp_agself.poli_status = temp_poself.Title = temp_Tireturn selfdef output(self): # 输出行政人员信息print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format(self.number,self.name,self.gender,self.age,self.poli_status,self.Title))class AdmiManager:                                                                                          # 行政人员管理类def __init__(self):self.listx = []def check_number(self,nu): # 检查行政人员编号是否存在重复for i in range(len(self.listx)):if nu == self.listx[i].number:return Trueelse:return Falsedef add(self): # 添加行政人员信息print('-' * 40,'添加行政人员信息','-' * 40,sep='')AS = AdminiStaff()AS = AS.input()if AS != None:if self.check_number(AS.number):print('编号重复,添加失败!')else:self.listx.append(AS)print('添加行政人员信息成功!')else:print('添加行政人员信息失败!')def show(self): # 显示行政人员信息print('-' * 40,'显示行政人员信息','-' * 40,sep='')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','政治面貌','职称'))for a in self.listx:a.output()def min_search(self): # 查询行政人员信息print('-' * 20, '查询行政人员信息', '-' * 20, sep='')print('请选择查询方式:')print('1、根据编号查询')print('2、根据姓名查询')choice = input()if choice == '1':temp_nu = input('请输入编号(4位数):')for i in range(len(self.listx)):if temp_nu == self.listx[i].number:return ielse:return Noneelif choice == '2':temp_na = input('请输入姓名:')for i in range(len(self.listx)):if temp_na == self.listx[i].name:return ielse:return Nonedef main_search(self): # 查询行政人员信息inde = self.min_search()if inde != None:print('查询成功,信息如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','政治面貌','职称'))self.listx[inde].output()return indeelse:print('查询失败!')return Nonedef edit(self): # 编辑行政人员信息print('-' * 40, '编辑行政人员信息', '-' * 40, sep='')print('请先查询需要编辑的行政人员信息!')inde = self.main_search()if inde != None:print('请选择需要编辑的信息:')choice = input('1、编号  2、姓名  3、性别  4、年龄  5、政治面貌  6、职称')if choice == '1':temp_nu = self.listx[inde].set_number()if temp_nu != None and not self.check_number(temp_nu):self.listx[inde].number = temp_nuprint('编号编辑成功!')else:print('编号编辑失败!')elif choice == '2':temp_na = input('请输入姓名:')self.listx[inde].name = temp_naprint('姓名编辑成功!')elif choice == '3':temp_ge = self.listx[inde].set_gender()if temp_ge != None:self.listx[inde].gender = temp_geprint('性别编辑成功!')else:print('性别编辑失败!')elif choice == '4':temp_ag = int(input('请输入年龄(整数):'))self.listx[inde].age = temp_agprint('年龄编辑成功!')elif choice == '5':temp_po = input('请输入政治面貌:')self.listx[inde].poli_status = temp_poprint('政治面貌编辑成功!')elif choice == '6':temp_Ti = input('请输入职称:')self.listx[inde].Title = temp_Tiprint('职称编辑成功!')else:print('选择有误,编辑失败!')def dele(self): # 删除行政人员信息print('-' * 40, '删除行政人员信息', '-' * 40, sep='')print('请先查询需要删除的行政人员信息!')inde = self.main_search()if inde != None:del self.listx[inde]print('删除行政人员信息成功!')else:print('删除行政人员信息失败!')def statis(self): # 统计行政人员信息print('-' * 40, '统计行政人员信息', '-' * 40, sep='')print('请选择统计方式:')print('1、按年龄统计')print('2、统计总人数以及男性和女性人数')choice = input()if choice == '1':l = int(input('请输入年龄的下限(包含下限):'))u = int(input('请输入年龄的上限(包含上限):'))count = 0print('统计结果如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','政治面貌','职称'))for i in range(len(self.listx)):if l <= self.listx[i].age <= u:count += 1self.listx[i].output()print('该年龄段的人数共计有{0}人'.format(count))elif choice == '2':total = len(self.listx)count_female = 0for i in range(len(self.listx)):if self.listx[i].gender == '女':count_female += 1print('统计结果如下:')print('行政人员的总人数为{0}人'.format(total))print('其中,女性{0}人,男性{1}人'.format(count_female,total-count_female))else:print('选择错误,请重新选择!')def save(self): # 保存行政人员信息print('-' * 40, '保存行政人员信息', '-' * 40, sep='')with open('AdminiStaffinfo.txt', 'w', encoding='utf-8') as fp:for s in self.listx:s = [s.number,s.name,s.gender,str(s.age),s.poli_status,s.Title]s = ','.join(s) + '\n'fp.write(s)print('保存行政人员信息成功!')def init(self): # 读取行政人员信息print('-' * 40, '读取行政人员信息', '-' * 40, sep='')try:with open('AdminiStaffinfo.txt', 'r', encoding='utf-8') as fp:self.listx = []for line in fp.readlines():s = line.strip().split(',')self.listx.append(AdminiStaff(s[0],s[1],s[2],int(s[3]),s[4],s[5]))print('读取行政人员信息成功!')except FileNotFoundError:print('文件不存在!')def admi_mune(am):                                                                                       # 行政人员类二级菜单am.init()print('行政人员信息管理子系统自动初始化完成!')choice = '99'while choice != '0':print('*' * 40, '行政人员信息管理子系统', '*' * 40, sep='')print('*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!')print('*请输入您的选择:')print('*1:添加')print('*2:查询')print('*3:显示')print('*4:编辑')print('*5:删除')print('*6:统计')print('*7:保存')print('*0:退出子系统')print('*' * 100)choice = input()if choice == '1':am.add()elif choice == '2':am.main_search()elif choice == '3':am.show()elif choice == '4':am.edit()elif choice == '5':am.dele()elif choice == '6':am.statis()elif choice == '7':am.save()elif choice == '0':breakelse:print('选择错误,请重新选择!')

(5)教师兼行政人员类(文件5) 

# 文件5  TeachAdminiStaff.pyfrom Staff import *class TeachAdminiStaff(Staff):                                                                            # 教师兼行政人员类def __init__(self,number='-1',name='',gender='',age=-1,department='',major='',Title='',poli_status=''):Staff.__init__(self,number,name,gender,age)  # 编号、姓名、性别、年龄self.department = department                 # 系部self.major = major                           # 专业self.Title = Title                           # 职称self.poli_status = poli_status               # 政治面貌def set_number(self): # 设置教师兼行政人员编号temp_nu = input('请输入编号(4位数):')if len(temp_nu) != 4:print('编号必须是4位数,请重新录入!')return Noneelse:return temp_nudef set_gender(self): # 设置教师兼行政人员性别temp_ge = input('请输入性别(男或女):')if temp_ge != '男' and temp_ge != '女':print('性别必须是男或女,请重新录入!')return Noneelse:return temp_gedef input(self): # 录入教师兼行政人员信息print('请输入教师兼行政人员的各项信息:')temp_nu = self.set_number()if temp_nu == None:return Nonetemp_na = input('请输入姓名:')temp_ge = self.set_gender()if temp_ge == None:return Nonetemp_ag = int(input('请输入年龄(整数):'))temp_de = input('请输入系部:')temp_ma = input('请输入专业:')temp_Ti = input('请输入职称:')temp_po = input('请输入政治面貌:')self.number = temp_nuself.name = temp_naself.gender = temp_geself.age = temp_agself.department = temp_deself.major = temp_maself.Title = temp_Tiself.poli_status = temp_poreturn selfdef output(self): # 输出教师兼行政人员信息print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}{7:^12}".format(self.number,self.name,self.gender,self.age,self.department,self.major,self.Title,self.poli_status))class TeachAdmiManager:                                                                                # 教师兼行政人员管理类def __init__(self):self.listx = []def check_number(self,nu): # 检查教师兼行政人员编号是否存在重复for i in range(len(self.listx)):if nu == self.listx[i].number:return Trueelse:return Falsedef add(self): # 添加教师兼行政人员信息print('-' * 40,'添加教师兼行政人员信息','-' * 40,sep='')TAS = TeachAdminiStaff()TAS = TAS.input()if TAS != None:if self.check_number(TAS.number):print('编号重复,添加失败!')else:self.listx.append(TAS)print('添加教师兼行政人员信息成功!')else:print('添加教师兼行政人员信息失败!')def show(self): # 显示教师兼行政人员信息print('-' * 40,'显示教师兼行政人员信息','-' * 40,sep='')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}{7:^12}".format('编号','姓名','性别','年龄','系部','专业','职称','政治面貌'))for tas in self.listx:tas.output()def min_search(self): # 查询教师兼行政人员信息print('-' * 20, '查询教师兼行政人员信息', '-' * 20, sep='')print('请选择查询方式:')print('1、根据编号查询')print('2、根据姓名查询')choice = input()if choice == '1':temp_nu = input('请输入编号(4位数):')for i in range(len(self.listx)):if temp_nu == self.listx[i].number:return ielse:return Noneelif choice == '2':temp_na = input('请输入姓名:')for i in range(len(self.listx)):if temp_na == self.listx[i].name:return ielse:return Nonedef main_search(self): # 查询教师兼行政人员信息inde = self.min_search()if inde != None:print('查询成功,信息如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}{7:^12}".format('编号','姓名','性别','年龄','系部','专业','职称','政治面貌'))self.listx[inde].output()return indeelse:print('查询失败!')return Nonedef edit(self): # 编辑教师兼行政人员信息print('-' * 40, '编辑教师兼行政人员信息', '-' * 40, sep='')print('请先查询需要编辑的教师兼行政人员信息!')inde = self.main_search()if inde != None:print('请选择需要编辑的信息:')choice = input('1、编号  2、姓名  3、性别  4、年龄  5、系部  6、专业  7、职称  8、政治面貌')if choice == '1':temp_nu = self.listx[inde].set_number()if temp_nu != None and not self.check_number(temp_nu):self.listx[inde].number = temp_nuprint('编号编辑成功!')else:print('编号编辑失败!')elif choice == '2':temp_na = input('请输入姓名:')self.listx[inde].name = temp_naprint('姓名编辑成功!')elif choice == '3':temp_ge = self.listx[inde].set_gender()if temp_ge != None:self.listx[inde].gender = temp_geprint('性别编辑成功!')else:print('性别编辑失败!')elif choice == '4':temp_ag = int(input('请输入年龄(整数):'))self.listx[inde].age = temp_agprint('年龄编辑成功!')elif choice == '5':temp_de = input('请输入系部:')self.listx[inde].department = temp_deprint('系部编辑成功!')elif choice == '6':temp_ma = input('请输入专业:')self.listx[inde].major = temp_maprint('专业编辑成功!')elif choice == '7':temp_Ti = input('请输入职称:')self.listx[inde].Title = temp_Tiprint('职称编辑成功!')elif choice == '8':temp_po = input('请输入政治面貌:')self.listx[inde].poli_status = temp_poprint('政治面貌编辑成功!')else:print('选择有误,编辑失败!')def dele(self): # 删除教师兼行政人员信息print('-' * 40, '删除教师兼行政人员信息', '-' * 40, sep='')print('请先查询需要删除的教师兼行政人员信息!')inde = self.main_search()if inde != None:del self.listx[inde]print('删除教师兼行政人员信息成功!')else:print('删除教师兼行政人员信息失败!')def statis(self): # 统计教师兼行政人员信息print('-' * 40, '统计教师兼行政人员信息', '-' * 40, sep='')print('请选择统计方式:')print('1、按年龄统计')print('2、统计总人数以及男性和女性人数')choice = input()if choice == '1':l = int(input('请输入年龄的下限(包含下限):'))u = int(input('请输入年龄的上限(包含上限):'))count = 0print('统计结果如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}{7:^12}".format('编号','姓名','性别','年龄','系部','专业','职称','政治面貌'))for i in range(len(self.listx)):if l <= self.listx[i].age <= u:count += 1self.listx[i].output()print('该年龄段的人数共计有{0}人'.format(count))elif choice == '2':total = len(self.listx)count_female = 0for i in range(len(self.listx)):if self.listx[i].gender == '女':count_female += 1print('统计结果如下:')print('教师兼行政人员的总人数为{0}人'.format(total))print('其中,女性{0}人,男性{1}人'.format(count_female,total-count_female))else:print('选择错误,请重新选择!')def save(self): # 保存教师兼行政人员信息print('-' * 40, '保存教师兼行政人员信息', '-' * 40, sep='')with open('TeachAdminiStaffinfo.txt', 'w', encoding='utf-8') as fp:for s in self.listx:s = [s.number,s.name,s.gender,str(s.age),s.department,s.major,s.Title,s.poli_status]s = ','.join(s) + '\n'fp.write(s)print('保存教师兼行政人员信息成功!')def init(self): # 读取教师兼行政人员信息print('-' * 40, '读取教师兼行政人员信息', '-' * 40, sep='')try:with open('TeachAdminiStaffinfo.txt', 'r', encoding='utf-8') as fp:self.listx = []for line in fp.readlines():s = line.strip().split(',')self.listx.append(TeachAdminiStaff(s[0],s[1],s[2],int(s[3]),s[4],s[5],s[6],s[7]))print('读取教师兼行政人员信息成功!')except FileNotFoundError:print('文件不存在!')def teach_admi_mune(tam):                                                                           # 教师兼行政人员类二级菜单tam.init()print('教师兼行政人员信息管理子系统自动初始化完成!')choice = '99'while choice != '0':print('*' * 40, '教师兼行政人员信息管理子系统', '*' * 40, sep='')print('*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!')print('*请输入您的选择:')print('*1:添加')print('*2:查询')print('*3:显示')print('*4:编辑')print('*5:删除')print('*6:统计')print('*7:保存')print('*0:退出子系统')print('*' * 100)choice = input()if choice == '1':tam.add()elif choice == '2':tam.main_search()elif choice == '3':tam.show()elif choice == '4':tam.edit()elif choice == '5':tam.dele()elif choice == '6':tam.statis()elif choice == '7':tam.save()elif choice == '0':breakelse:print('选择错误,请重新选择!')

(6)一级菜单函数和主函数(文件6) 

# 文件6  Main.pyfrom Staff import *
from Teacher import *
from LabTechnician import *
from AdminiStaff import *
from TeachAdminiStaff import *# 一级菜单函数
def menu():                                                                                                  # 一级菜单函数print('*' * 40, '高校人员管理系统', '*' * 40, sep='')print('*请输入您的选择:')print('*1:教师信息管理')print('*2:实验员信息管理')print('*3:行政人员信息管理')print('*4:教师兼行政人员信息管理')print('*0:退出系统')print('*' * 100)# 主函数
def main():                                                                                                       # 主函数tm = TeaManager()ltm = LabTechManager()am = AdmiManager()tam = TeachAdmiManager()while True:menu()choice = input()if choice == '1':tea_mune(tm)elif choice == '2':lab_tech_mune(ltm)elif choice == '3':admi_mune(am)elif choice == '4':teach_admi_mune(tam)elif choice == '0':breakelse:print('选择错误,请重新选择!')main()

2、单文件

# 课设_Teacher  20221125
class Staff:                                                                                                      # 员工类def __init__(self,number='-1',name='',gender='',age=-1):self.number = number     # 编号self.name = name         # 姓名self.gender = gender     # 性别self.age = age           # 年龄class Teacher(Staff):                                                                                             # 教师类def __init__(self,number='-1',name='',gender='',age=-1,department='',major='',title=''):Staff.__init__(self,number,name,gender,age)  # 编号、姓名、性别、年龄self.department = department                 # 系部self.major = major                           # 专业self.title = title                           # 职称def set_number(self): # 设置教师编号temp_nu = input('请输入编号(4位数):')if len(temp_nu) != 4:print('编号必须是4位数,请重新录入!')return Noneelse:return temp_nudef set_gender(self): # 设置教师性别temp_ge = input('请输入性别(男或女):')if temp_ge != '男' and temp_ge != '女':print('性别必须是男或女,请重新录入!')return Noneelse:return temp_gedef input(self): # 录入教师信息print('请输入教师的各项信息:')temp_nu = self.set_number()if temp_nu == None:return Nonetemp_na = input('请输入姓名:')temp_ge = self.set_gender()if temp_ge == None:return Nonetemp_ag = int(input('请输入年龄(整数):'))temp_de = input('请输入系部:')temp_ma = input('请输入专业:')temp_ti = input('请输入职称:')self.number = temp_nuself.name = temp_naself.gender = temp_geself.age = temp_agself.department = temp_deself.major = temp_maself.title = temp_tireturn selfdef output(self): # 输出教师信息print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}".format(self.number,self.name,self.gender,self.age,self.department,self.major,self.title))class TeaManager:                                                                                              # 教师管理类def __init__(self):self.listx = []def check_number(self,nu): # 检查教师编号是否存在重复for i in range(len(self.listx)):if nu == self.listx[i].number:return Trueelse:return Falsedef add(self): # 添加教师信息print('-' * 40,'添加教师信息','-' * 40,sep='')T = Teacher()T = T.input()if T != None:if self.check_number(T.number):print('编号重复,添加失败!')else:self.listx.append(T)print('添加教师信息成功!')else:print('添加教师信息失败!')def show(self): # 显示教师信息print('-' * 40,'显示教师信息','-' * 40,sep='')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}".format('编号','姓名','性别','年龄','系部','专业','职称'))for t in self.listx:t.output()def min_search(self): # 查询教师信息print('-' * 20, '查询教师信息', '-' * 20, sep='')print('请选择查询方式:')print('1、根据编号查询')print('2、根据姓名查询')choice = input()if choice == '1':temp_nu = input('请输入编号(4位数):')for i in range(len(self.listx)):if temp_nu == self.listx[i].number:return ielse:return Noneelif choice == '2':temp_na = input('请输入姓名:')for i in range(len(self.listx)):if temp_na == self.listx[i].name:return ielse:return Nonedef main_search(self): # 查询教师信息inde = self.min_search()if inde != None:print('查询成功,信息如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}".format('编号','姓名','性别','年龄','系部','专业','职称'))self.listx[inde].output()return indeelse:print('查询失败!')return Nonedef edit(self): # 编辑教师信息print('-' * 40, '编辑教师信息', '-' * 40, sep='')print('请先查询需要编辑的教师信息!')inde = self.main_search()if inde != None:print('请选择需要编辑的信息:')choice = input('1、编号  2、姓名  3、性别  4、年龄  5、系部  6、专业  7、职称')if choice == '1':temp_nu = self.listx[inde].set_number()if temp_nu != None and not self.check_number(temp_nu):self.listx[inde].number = temp_nuprint('编号编辑成功!')else:print('编号编辑失败!')elif choice == '2':temp_na = input('请输入姓名:')self.listx[inde].name = temp_naprint('姓名编辑成功!')elif choice == '3':temp_ge = self.listx[inde].set_gender()if temp_ge != None:self.listx[inde].gender = temp_geprint('性别编辑成功!')else:print('性别编辑失败!')elif choice == '4':temp_ag = int(input('请输入年龄(整数):'))self.listx[inde].age = temp_agprint('年龄编辑成功!')elif choice == '5':temp_de = input('请输入系部:')self.listx[inde].department = temp_deprint('系部编辑成功!')elif choice == '6':temp_ma = input('请输入专业:')self.listx[inde].major = temp_maprint('专业编辑成功!')elif choice == '7':temp_ti = input('请输入职称:')self.listx[inde].title = temp_tiprint('职称编辑成功!')else:print('选择有误,编辑失败!')def dele(self): # 删除教师信息print('-' * 40, '删除教师信息', '-' * 40, sep='')print('请先查询需要删除的教师信息!')inde = self.main_search()if inde != None:del self.listx[inde]print('删除教师信息成功!')else:print('删除教师信息失败!')def statis(self): # 统计教师信息print('-' * 40, '统计教师信息', '-' * 40, sep='')print('请选择统计方式:')print('1、按年龄统计')print('2、统计总人数以及男性和女性人数')choice = input()if choice == '1':l = int(input('请输入年龄的下限(包含下限):'))u = int(input('请输入年龄的上限(包含上限):'))count = 0print('统计结果如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}".format('编号','姓名','性别','年龄','系部','专业','职称'))for i in range(len(self.listx)):if l <= self.listx[i].age <= u:count += 1self.listx[i].output()print('该年龄段的人数共计有{0}人'.format(count))elif choice == '2':total = len(self.listx)count_female = 0for i in range(len(self.listx)):if self.listx[i].gender == '女':count_female += 1print('统计结果如下:')print('教师的总人数为{0}人'.format(total))print('其中,女性{0}人,男性{1}人'.format(count_female,total-count_female))else:print('选择错误,请重新选择!')def save(self): # 保存教师信息print('-' * 40, '保存教师信息', '-' * 40, sep='')with open('Teacherinfo.txt', 'w', encoding='utf-8') as fp:for s in self.listx:s = [s.number,s.name,s.gender,str(s.age),s.department,s.major,s.title]s = ','.join(s) + '\n'fp.write(s)print('保存教师信息成功!')def init(self): # 读取教师信息print('-' * 40, '读取教师信息', '-' * 40, sep='')try:with open('Teacherinfo.txt', 'r', encoding='utf-8') as fp:self.listx = []for line in fp.readlines():s = line.strip().split(',')self.listx.append(Teacher(s[0],s[1],s[2],int(s[3]),s[4],s[5],s[6]))print('读取教师信息成功!')except FileNotFoundError:print('文件不存在!')def tea_mune(tm):                                                                                           # 教师类二级菜单tm.init()print('教师信息管理子系统自动初始化完成!')choice = '99'while choice != '0':print('*' * 40, '教师信息管理子系统', '*' * 40, sep='')print('*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!')print('*请输入您的选择:')print('*1:添加')print('*2:查询')print('*3:显示')print('*4:编辑')print('*5:删除')print('*6:统计')print('*7:保存')print('*0:退出子系统')print('*' * 100)choice = input()if choice == '1':tm.add()elif choice == '2':tm.main_search()elif choice == '3':tm.show()elif choice == '4':tm.edit()elif choice == '5':tm.dele()elif choice == '6':tm.statis()elif choice == '7':tm.save()elif choice == '0':breakelse:print('选择错误,请重新选择!')# 课设_LabTechnician  20221126
class LabTechnician(Staff):                                                                                     # 实验员类def __init__(self,number='-1',name='',gender='',age=-1,lab='',job=''):Staff.__init__(self,number,name,gender,age)  # 编号、姓名、性别、年龄self.lab = lab                               # 实验室self.job = job                               # 职务def set_number(self): # 设置实验员编号temp_nu = input('请输入编号(4位数):')if len(temp_nu) != 4:print('编号必须是4位数,请重新录入!')return Noneelse:return temp_nudef set_gender(self): # 设置实验员性别temp_ge = input('请输入性别(男或女):')if temp_ge != '男' and temp_ge != '女':print('性别必须是男或女,请重新录入!')return Noneelse:return temp_gedef input(self): # 录入实验员信息print('请输入实验员的各项信息:')temp_nu = self.set_number()if temp_nu == None:return Nonetemp_na = input('请输入姓名:')temp_ge = self.set_gender()if temp_ge == None:return Nonetemp_ag = int(input('请输入年龄(整数):'))temp_la = input('请输入实验室:')temp_jo = input('请输入职务:')self.number = temp_nuself.name = temp_naself.gender = temp_geself.age = temp_agself.lab = temp_laself.job = temp_joreturn selfdef output(self): # 输出实验员信息print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format(self.number,self.name,self.gender,self.age,self.lab,self.job))class LabTechManager:                                                                                        # 实验员管理类def __init__(self):self.listx = []def check_number(self,nu): # 检查实验员编号是否存在重复for i in range(len(self.listx)):if nu == self.listx[i].number:return Trueelse:return Falsedef add(self): # 添加实验员信息print('-' * 40,'添加实验员信息','-' * 40,sep='')LT = LabTechnician()LT = LT.input()if LT != None:if self.check_number(LT.number):print('编号重复,添加失败!')else:self.listx.append(LT)print('添加实验员信息成功!')else:print('添加实验员信息失败!')def show(self): # 显示实验员信息print('-' * 40,'显示实验员信息','-' * 40,sep='')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','实验室','职务'))for lt in self.listx:lt.output()def min_search(self): # 查询实验员信息print('-' * 20, '查询实验员信息', '-' * 20, sep='')print('请选择查询方式:')print('1、根据编号查询')print('2、根据姓名查询')choice = input()if choice == '1':temp_nu = input('请输入编号(4位数):')for i in range(len(self.listx)):if temp_nu == self.listx[i].number:return ielse:return Noneelif choice == '2':temp_na = input('请输入姓名:')for i in range(len(self.listx)):if temp_na == self.listx[i].name:return ielse:return Nonedef main_search(self): # 查询实验员信息inde = self.min_search()if inde != None:print('查询成功,信息如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','实验室','职务'))self.listx[inde].output()return indeelse:print('查询失败!')return Nonedef edit(self): # 编辑实验员信息print('-' * 40, '编辑实验员信息', '-' * 40, sep='')print('请先查询需要编辑的实验员信息!')inde = self.main_search()if inde != None:print('请选择需要编辑的信息:')choice = input('1、编号  2、姓名  3、性别  4、年龄  5、实验室  6、职务')if choice == '1':temp_nu = self.listx[inde].set_number()if temp_nu != None and not self.check_number(temp_nu):self.listx[inde].number = temp_nuprint('编号编辑成功!')else:print('编号编辑失败!')elif choice == '2':temp_na = input('请输入姓名:')self.listx[inde].name = temp_naprint('姓名编辑成功!')elif choice == '3':temp_ge = self.listx[inde].set_gender()if temp_ge != None:self.listx[inde].gender = temp_geprint('性别编辑成功!')else:print('性别编辑失败!')elif choice == '4':temp_ag = int(input('请输入年龄(整数):'))self.listx[inde].age = temp_agprint('年龄编辑成功!')elif choice == '5':temp_la = input('请输入实验室:')self.listx[inde].lab = temp_laprint('实验室编辑成功!')elif choice == '6':temp_jo = input('请输入职务:')self.listx[inde].job = temp_joprint('职务编辑成功!')else:print('选择有误,编辑失败!')def dele(self): # 删除实验员信息print('-' * 40, '删除实验员信息', '-' * 40, sep='')print('请先查询需要删除的实验员信息!')inde = self.main_search()if inde != None:del self.listx[inde]print('删除实验员信息成功!')else:print('删除实验员信息失败!')def statis(self): # 统计实验员信息print('-' * 40, '统计实验员信息', '-' * 40, sep='')print('请选择统计方式:')print('1、按年龄统计')print('2、统计总人数以及男性和女性人数')choice = input()if choice == '1':l = int(input('请输入年龄的下限(包含下限):'))u = int(input('请输入年龄的上限(包含上限):'))count = 0print('统计结果如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','实验室','职务'))for i in range(len(self.listx)):if l <= self.listx[i].age <= u:count += 1self.listx[i].output()print('该年龄段的人数共计有{0}人'.format(count))elif choice == '2':total = len(self.listx)count_female = 0for i in range(len(self.listx)):if self.listx[i].gender == '女':count_female += 1print('统计结果如下:')print('实验员的总人数为{0}人'.format(total))print('其中,女性{0}人,男性{1}人'.format(count_female,total-count_female))else:print('选择错误,请重新选择!')def save(self): # 保存实验员信息print('-' * 40, '保存实验员信息', '-' * 40, sep='')with open('LabTechnicianinfo.txt', 'w', encoding='utf-8') as fp:for s in self.listx:s = [s.number,s.name,s.gender,str(s.age),s.lab,s.job]s = ','.join(s) + '\n'fp.write(s)print('保存实验员信息成功!')def init(self): # 读取实验员信息print('-' * 40, '读取实验员信息', '-' * 40, sep='')try:with open('LabTechnicianinfo.txt', 'r', encoding='utf-8') as fp:self.listx = []for line in fp.readlines():s = line.strip().split(',')self.listx.append(LabTechnician(s[0],s[1],s[2],int(s[3]),s[4],s[5]))print('读取实验员信息成功!')except FileNotFoundError:print('文件不存在!')def lab_tech_mune(ltm):                                                                                   # 实验员类二级菜单ltm.init()print('实验员信息管理子系统自动初始化完成!')choice = '99'while choice != '0':print('*' * 40, '实验员信息管理子系统', '*' * 40, sep='')print('*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!')print('*请输入您的选择:')print('*1:添加')print('*2:查询')print('*3:显示')print('*4:编辑')print('*5:删除')print('*6:统计')print('*7:保存')print('*0:退出子系统')print('*' * 100)choice = input()if choice == '1':ltm.add()elif choice == '2':ltm.main_search()elif choice == '3':ltm.show()elif choice == '4':ltm.edit()elif choice == '5':ltm.dele()elif choice == '6':ltm.statis()elif choice == '7':ltm.save()elif choice == '0':breakelse:print('选择错误,请重新选择!')# 课设_AdminiStaff  20221126
class AdminiStaff(Staff):                                                                                      # 行政人员类def __init__(self,number='-1',name='',gender='',age=-1,poli_status='',Title=''):Staff.__init__(self,number,name,gender,age)  # 编号、姓名、性别、年龄self.poli_status = poli_status               # 政治面貌self.Title = Title                           # 职称def set_number(self): # 设置行政人员编号temp_nu = input('请输入编号(4位数):')if len(temp_nu) != 4:print('编号必须是4位数,请重新录入!')return Noneelse:return temp_nudef set_gender(self): # 设置行政人员性别temp_ge = input('请输入性别(男或女):')if temp_ge != '男' and temp_ge != '女':print('性别必须是男或女,请重新录入!')return Noneelse:return temp_gedef input(self): # 录入行政人员信息print('请输入行政人员的各项信息:')temp_nu = self.set_number()if temp_nu == None:return Nonetemp_na = input('请输入姓名:')temp_ge = self.set_gender()if temp_ge == None:return Nonetemp_ag = int(input('请输入年龄(整数):'))temp_po = input('请输入政治面貌:')temp_Ti = input('请输入职称:')self.number = temp_nuself.name = temp_naself.gender = temp_geself.age = temp_agself.poli_status = temp_poself.Title = temp_Tireturn selfdef output(self): # 输出行政人员信息print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format(self.number,self.name,self.gender,self.age,self.poli_status,self.Title))class AdmiManager:                                                                                          # 行政人员管理类def __init__(self):self.listx = []def check_number(self,nu): # 检查行政人员编号是否存在重复for i in range(len(self.listx)):if nu == self.listx[i].number:return Trueelse:return Falsedef add(self): # 添加行政人员信息print('-' * 40,'添加行政人员信息','-' * 40,sep='')AS = AdminiStaff()AS = AS.input()if AS != None:if self.check_number(AS.number):print('编号重复,添加失败!')else:self.listx.append(AS)print('添加行政人员信息成功!')else:print('添加行政人员信息失败!')def show(self): # 显示行政人员信息print('-' * 40,'显示行政人员信息','-' * 40,sep='')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','政治面貌','职称'))for a in self.listx:a.output()def min_search(self): # 查询行政人员信息print('-' * 20, '查询行政人员信息', '-' * 20, sep='')print('请选择查询方式:')print('1、根据编号查询')print('2、根据姓名查询')choice = input()if choice == '1':temp_nu = input('请输入编号(4位数):')for i in range(len(self.listx)):if temp_nu == self.listx[i].number:return ielse:return Noneelif choice == '2':temp_na = input('请输入姓名:')for i in range(len(self.listx)):if temp_na == self.listx[i].name:return ielse:return Nonedef main_search(self): # 查询行政人员信息inde = self.min_search()if inde != None:print('查询成功,信息如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','政治面貌','职称'))self.listx[inde].output()return indeelse:print('查询失败!')return Nonedef edit(self): # 编辑行政人员信息print('-' * 40, '编辑行政人员信息', '-' * 40, sep='')print('请先查询需要编辑的行政人员信息!')inde = self.main_search()if inde != None:print('请选择需要编辑的信息:')choice = input('1、编号  2、姓名  3、性别  4、年龄  5、政治面貌  6、职称')if choice == '1':temp_nu = self.listx[inde].set_number()if temp_nu != None and not self.check_number(temp_nu):self.listx[inde].number = temp_nuprint('编号编辑成功!')else:print('编号编辑失败!')elif choice == '2':temp_na = input('请输入姓名:')self.listx[inde].name = temp_naprint('姓名编辑成功!')elif choice == '3':temp_ge = self.listx[inde].set_gender()if temp_ge != None:self.listx[inde].gender = temp_geprint('性别编辑成功!')else:print('性别编辑失败!')elif choice == '4':temp_ag = int(input('请输入年龄(整数):'))self.listx[inde].age = temp_agprint('年龄编辑成功!')elif choice == '5':temp_po = input('请输入政治面貌:')self.listx[inde].poli_status = temp_poprint('政治面貌编辑成功!')elif choice == '6':temp_Ti = input('请输入职称:')self.listx[inde].Title = temp_Tiprint('职称编辑成功!')else:print('选择有误,编辑失败!')def dele(self): # 删除行政人员信息print('-' * 40, '删除行政人员信息', '-' * 40, sep='')print('请先查询需要删除的行政人员信息!')inde = self.main_search()if inde != None:del self.listx[inde]print('删除行政人员信息成功!')else:print('删除行政人员信息失败!')def statis(self): # 统计行政人员信息print('-' * 40, '统计行政人员信息', '-' * 40, sep='')print('请选择统计方式:')print('1、按年龄统计')print('2、统计总人数以及男性和女性人数')choice = input()if choice == '1':l = int(input('请输入年龄的下限(包含下限):'))u = int(input('请输入年龄的上限(包含上限):'))count = 0print('统计结果如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}".format('编号','姓名','性别','年龄','政治面貌','职称'))for i in range(len(self.listx)):if l <= self.listx[i].age <= u:count += 1self.listx[i].output()print('该年龄段的人数共计有{0}人'.format(count))elif choice == '2':total = len(self.listx)count_female = 0for i in range(len(self.listx)):if self.listx[i].gender == '女':count_female += 1print('统计结果如下:')print('行政人员的总人数为{0}人'.format(total))print('其中,女性{0}人,男性{1}人'.format(count_female,total-count_female))else:print('选择错误,请重新选择!')def save(self): # 保存行政人员信息print('-' * 40, '保存行政人员信息', '-' * 40, sep='')with open('AdminiStaffinfo.txt', 'w', encoding='utf-8') as fp:for s in self.listx:s = [s.number,s.name,s.gender,str(s.age),s.poli_status,s.Title]s = ','.join(s) + '\n'fp.write(s)print('保存行政人员信息成功!')def init(self): # 读取行政人员信息print('-' * 40, '读取行政人员信息', '-' * 40, sep='')try:with open('AdminiStaffinfo.txt', 'r', encoding='utf-8') as fp:self.listx = []for line in fp.readlines():s = line.strip().split(',')self.listx.append(AdminiStaff(s[0],s[1],s[2],int(s[3]),s[4],s[5]))print('读取行政人员信息成功!')except FileNotFoundError:print('文件不存在!')def admi_mune(am):                                                                                       # 行政人员类二级菜单am.init()print('行政人员信息管理子系统自动初始化完成!')choice = '99'while choice != '0':print('*' * 40, '行政人员信息管理子系统', '*' * 40, sep='')print('*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!')print('*请输入您的选择:')print('*1:添加')print('*2:查询')print('*3:显示')print('*4:编辑')print('*5:删除')print('*6:统计')print('*7:保存')print('*0:退出子系统')print('*' * 100)choice = input()if choice == '1':am.add()elif choice == '2':am.main_search()elif choice == '3':am.show()elif choice == '4':am.edit()elif choice == '5':am.dele()elif choice == '6':am.statis()elif choice == '7':am.save()elif choice == '0':breakelse:print('选择错误,请重新选择!')# 课设_TeachAdminiStaff  20221127
class TeachAdminiStaff(Staff):                                                                            # 教师兼行政人员类def __init__(self,number='-1',name='',gender='',age=-1,department='',major='',Title='',poli_status=''):Staff.__init__(self,number,name,gender,age)  # 编号、姓名、性别、年龄self.department = department                 # 系部self.major = major                           # 专业self.Title = Title                           # 职称self.poli_status = poli_status               # 政治面貌def set_number(self): # 设置教师兼行政人员编号temp_nu = input('请输入编号(4位数):')if len(temp_nu) != 4:print('编号必须是4位数,请重新录入!')return Noneelse:return temp_nudef set_gender(self): # 设置教师兼行政人员性别temp_ge = input('请输入性别(男或女):')if temp_ge != '男' and temp_ge != '女':print('性别必须是男或女,请重新录入!')return Noneelse:return temp_gedef input(self): # 录入教师兼行政人员信息print('请输入教师兼行政人员的各项信息:')temp_nu = self.set_number()if temp_nu == None:return Nonetemp_na = input('请输入姓名:')temp_ge = self.set_gender()if temp_ge == None:return Nonetemp_ag = int(input('请输入年龄(整数):'))temp_de = input('请输入系部:')temp_ma = input('请输入专业:')temp_Ti = input('请输入职称:')temp_po = input('请输入政治面貌:')self.number = temp_nuself.name = temp_naself.gender = temp_geself.age = temp_agself.department = temp_deself.major = temp_maself.Title = temp_Tiself.poli_status = temp_poreturn selfdef output(self): # 输出教师兼行政人员信息print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}{7:^12}".format(self.number,self.name,self.gender,self.age,self.department,self.major,self.Title,self.poli_status))class TeachAdmiManager:                                                                                # 教师兼行政人员管理类def __init__(self):self.listx = []def check_number(self,nu): # 检查教师兼行政人员编号是否存在重复for i in range(len(self.listx)):if nu == self.listx[i].number:return Trueelse:return Falsedef add(self): # 添加教师兼行政人员信息print('-' * 40,'添加教师兼行政人员信息','-' * 40,sep='')TAS = TeachAdminiStaff()TAS = TAS.input()if TAS != None:if self.check_number(TAS.number):print('编号重复,添加失败!')else:self.listx.append(TAS)print('添加教师兼行政人员信息成功!')else:print('添加教师兼行政人员信息失败!')def show(self): # 显示教师兼行政人员信息print('-' * 40,'显示教师兼行政人员信息','-' * 40,sep='')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}{7:^12}".format('编号','姓名','性别','年龄','系部','专业','职称','政治面貌'))for tas in self.listx:tas.output()def min_search(self): # 查询教师兼行政人员信息print('-' * 20, '查询教师兼行政人员信息', '-' * 20, sep='')print('请选择查询方式:')print('1、根据编号查询')print('2、根据姓名查询')choice = input()if choice == '1':temp_nu = input('请输入编号(4位数):')for i in range(len(self.listx)):if temp_nu == self.listx[i].number:return ielse:return Noneelif choice == '2':temp_na = input('请输入姓名:')for i in range(len(self.listx)):if temp_na == self.listx[i].name:return ielse:return Nonedef main_search(self): # 查询教师兼行政人员信息inde = self.min_search()if inde != None:print('查询成功,信息如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}{7:^12}".format('编号','姓名','性别','年龄','系部','专业','职称','政治面貌'))self.listx[inde].output()return indeelse:print('查询失败!')return Nonedef edit(self): # 编辑教师兼行政人员信息print('-' * 40, '编辑教师兼行政人员信息', '-' * 40, sep='')print('请先查询需要编辑的教师兼行政人员信息!')inde = self.main_search()if inde != None:print('请选择需要编辑的信息:')choice = input('1、编号  2、姓名  3、性别  4、年龄  5、系部  6、专业  7、职称  8、政治面貌')if choice == '1':temp_nu = self.listx[inde].set_number()if temp_nu != None and not self.check_number(temp_nu):self.listx[inde].number = temp_nuprint('编号编辑成功!')else:print('编号编辑失败!')elif choice == '2':temp_na = input('请输入姓名:')self.listx[inde].name = temp_naprint('姓名编辑成功!')elif choice == '3':temp_ge = self.listx[inde].set_gender()if temp_ge != None:self.listx[inde].gender = temp_geprint('性别编辑成功!')else:print('性别编辑失败!')elif choice == '4':temp_ag = int(input('请输入年龄(整数):'))self.listx[inde].age = temp_agprint('年龄编辑成功!')elif choice == '5':temp_de = input('请输入系部:')self.listx[inde].department = temp_deprint('系部编辑成功!')elif choice == '6':temp_ma = input('请输入专业:')self.listx[inde].major = temp_maprint('专业编辑成功!')elif choice == '7':temp_Ti = input('请输入职称:')self.listx[inde].Title = temp_Tiprint('职称编辑成功!')elif choice == '8':temp_po = input('请输入政治面貌:')self.listx[inde].poli_status = temp_poprint('政治面貌编辑成功!')else:print('选择有误,编辑失败!')def dele(self): # 删除教师兼行政人员信息print('-' * 40, '删除教师兼行政人员信息', '-' * 40, sep='')print('请先查询需要删除的教师兼行政人员信息!')inde = self.main_search()if inde != None:del self.listx[inde]print('删除教师兼行政人员信息成功!')else:print('删除教师兼行政人员信息失败!')def statis(self): # 统计教师兼行政人员信息print('-' * 40, '统计教师兼行政人员信息', '-' * 40, sep='')print('请选择统计方式:')print('1、按年龄统计')print('2、统计总人数以及男性和女性人数')choice = input()if choice == '1':l = int(input('请输入年龄的下限(包含下限):'))u = int(input('请输入年龄的上限(包含上限):'))count = 0print('统计结果如下:')print("{0:^12}{1:^12}{2:^12}{3:^12}{4:^12}{5:^12}{6:^12}{7:^12}".format('编号','姓名','性别','年龄','系部','专业','职称','政治面貌'))for i in range(len(self.listx)):if l <= self.listx[i].age <= u:count += 1self.listx[i].output()print('该年龄段的人数共计有{0}人'.format(count))elif choice == '2':total = len(self.listx)count_female = 0for i in range(len(self.listx)):if self.listx[i].gender == '女':count_female += 1print('统计结果如下:')print('教师兼行政人员的总人数为{0}人'.format(total))print('其中,女性{0}人,男性{1}人'.format(count_female,total-count_female))else:print('选择错误,请重新选择!')def save(self): # 保存教师兼行政人员信息print('-' * 40, '保存教师兼行政人员信息', '-' * 40, sep='')with open('TeachAdminiStaffinfo.txt', 'w', encoding='utf-8') as fp:for s in self.listx:s = [s.number,s.name,s.gender,str(s.age),s.department,s.major,s.Title,s.poli_status]s = ','.join(s) + '\n'fp.write(s)print('保存教师兼行政人员信息成功!')def init(self): # 读取教师兼行政人员信息print('-' * 40, '读取教师兼行政人员信息', '-' * 40, sep='')try:with open('TeachAdminiStaffinfo.txt', 'r', encoding='utf-8') as fp:self.listx = []for line in fp.readlines():s = line.strip().split(',')self.listx.append(TeachAdminiStaff(s[0],s[1],s[2],int(s[3]),s[4],s[5],s[6],s[7]))print('读取教师兼行政人员信息成功!')except FileNotFoundError:print('文件不存在!')def teach_admi_mune(tam):                                                                           # 教师兼行政人员类二级菜单tam.init()print('教师兼行政人员信息管理子系统自动初始化完成!')choice = '99'while choice != '0':print('*' * 40, '教师兼行政人员信息管理子系统', '*' * 40, sep='')print('*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!')print('*请输入您的选择:')print('*1:添加')print('*2:查询')print('*3:显示')print('*4:编辑')print('*5:删除')print('*6:统计')print('*7:保存')print('*0:退出子系统')print('*' * 100)choice = input()if choice == '1':tam.add()elif choice == '2':tam.main_search()elif choice == '3':tam.show()elif choice == '4':tam.edit()elif choice == '5':tam.dele()elif choice == '6':tam.statis()elif choice == '7':tam.save()elif choice == '0':breakelse:print('选择错误,请重新选择!')# 一级菜单函数
def menu():                                                                                                  # 一级菜单函数print('*' * 40, '高校人员管理系统', '*' * 40, sep='')print('*请输入您的选择:')print('*1:教师信息管理')print('*2:实验员信息管理')print('*3:行政人员信息管理')print('*4:教师兼行政人员信息管理')print('*0:退出系统')print('*' * 100)# 主函数
def main():                                                                                                       # 主函数tm = TeaManager()ltm = LabTechManager()am = AdmiManager()tam = TeachAdmiManager()while True:menu()choice = input()if choice == '1':tea_mune(tm)elif choice == '2':lab_tech_mune(ltm)elif choice == '3':admi_mune(am)elif choice == '4':teach_admi_mune(tam)elif choice == '0':breakelse:print('选择错误,请重新选择!')main()

高校人员信息管理系统(Python版)相关推荐

  1. 高校人员信息管理系统(C++版)

    目录 高校人员信息管理系统 一.问题描述 二.功能要求 三.问题的解决方案 四.代码段 1.多文件 2.单文件                                  高校人员信息管理系统  ...

  2. java高校人员信息管理系统

    高校人员信息管理系统 1.数据模型 教师.实验员.行政人员.教师兼行政人员 共有属性:编号.姓名.性别.出生年月 教师:所在系部.专业.职称 实验员:所在实验室.职称 行政人员:政治面貌.职务 pac ...

  3. 高校人员信息管理系统(C++课设)

    /* 高校人员信息管理系统 作者:徐世兴 时间:2019年11月1日 *///预定义区 #include<iostream> #include<string> #include ...

  4. c++课设:高校人员信息管理系统 开发一个简易的高校人员信息管理系统,主要针对高校人员的基本信息进行管理。采用对象链表或对象数组存放各个对象,实现新增、修改、删除、查询以及统计等功能。

    通过本次课程设计,深入理解类和对象.继承和派生.重载和多态,熟练掌握面向对象的程序设计思想和方法,能够对现实世界中的实际问题进行分析.设计,并学会熟练运用面向对象的编程方法(OOP)-- C++语言进 ...

  5. 课程设计下:利用C++实现高校人员信息管理系统

    高校人员信息管理系统 需求分析 实现功能如下: 系统环境: 数据结构设计: 界面显示: 代码如下: 下载链接 需求分析 该系统所应包含的信息有以下一些: 人员的基本信息: 编号.姓名.年龄.性别.职称 ...

  6. 高校人员信息管理系统(Java课程设计,带图形界面版)

    题目 1.问题描述 某高校有四类员工:教师.实验员.行政人员,教师兼行政人员:共有的信息包括:编号.姓名.性别.年龄等.其中,教师还包含的信息有:所在系部.专业.职称:实验员还包含的信息由:所在实验室 ...

  7. 学生信息管理系统——python版(附流程图)

    声明 本篇代码对新手十分友好.我大一的期末考试作业,今天分享出来.当时写的时候也是一个新手,现在也不想再去修改了(一是太懒,二还是懒),所以有很多地方可能不足,但是运行完全没问题.我用的是列表加循环这 ...

  8. c语言高校信息查询系统,高校人员信息管理系统c语言.doc

    #include #include #include #include #include using namespace std; class Person //基类 { protected: dou ...

  9. Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询)

    Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码(前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询 修改密 ...

最新文章

  1. Python 语法相关知识
  2. 基本算法研究1-冒泡排序算法测试
  3. 做项目时的几个感慨(持续更新...)
  4. php把数据生成mxl,php如何生成加密公钥以及加密私钥的代码案例分享
  5. 2批量批量查询数据插入数据_不吹牛!Mysql 千万数据10秒批量插入只需三步
  6. android 弹幕礼物,Android的简易弹幕
  7. Звезда 星星
  8. Matlab-Simulink文件类型总结
  9. Word打印目录或另存为PDF时出现“错误!未定义书签!”的解决办法
  10. flea-db使用之基于对象池的FleaJPAQuery
  11. Jenkins系列之——第五章 Jenkins编译一个Spring Boot项目并通过SSH推送到远程
  12. 计算机考研考线代和概率论吗,考研数一数二数三的区别有哪些
  13. opensips服务器环境搭建
  14. MySQL----mysql_secure_installation 安全配置向导
  15. 论文阅读:Enconder-Decoder with Atrous Separabel Convolution for Semantic Image Segmentation(deeplabv3+)
  16. SQL SERVER 链接服务器
  17. 安卓系统再曝高危漏洞!大部分手机都可能被黑客控制
  18. 信息孤岛影响_消防管理中,互不关联的“数据孤岛”如何解决?
  19. 环境监测中标准气体使用问题的探讨
  20. 【设计规范】TVS管如何选型/浪涌静电防护

热门文章

  1. 柯莱特CTO谈企业选择CRM的六大目标
  2. WRF示例运行(官方示例)
  3. 并发编程 - Synchronized
  4. gpu z linux版本,GPU-Z 2.13.0发布,可检测到假冒的NVIDIA 显卡
  5. 免费打印控件Lodop
  6. 676_AUTOSAR_TR_Methodology_文档阅读3
  7. 高德地图——浏览器定位+点击获取经纬度+去除高德百度地图左下角logo
  8. 网吧无盘主副服务器,网吧无盘服务器教程
  9. Python matplotlib常见问题
  10. java+标签定位_java+selenium——查找定位元素,elements复数定位(driver.findElementsByClassName(mnav);)002...