高校人员信息管理系统(Python版)
目录
高校人员信息管理系统
一、问题描述
二、功能要求
三、问题的解决方案
四、运行环境说明
五、代码段
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版)相关推荐
- 高校人员信息管理系统(C++版)
目录 高校人员信息管理系统 一.问题描述 二.功能要求 三.问题的解决方案 四.代码段 1.多文件 2.单文件 高校人员信息管理系统 ...
- java高校人员信息管理系统
高校人员信息管理系统 1.数据模型 教师.实验员.行政人员.教师兼行政人员 共有属性:编号.姓名.性别.出生年月 教师:所在系部.专业.职称 实验员:所在实验室.职称 行政人员:政治面貌.职务 pac ...
- 高校人员信息管理系统(C++课设)
/* 高校人员信息管理系统 作者:徐世兴 时间:2019年11月1日 *///预定义区 #include<iostream> #include<string> #include ...
- c++课设:高校人员信息管理系统 开发一个简易的高校人员信息管理系统,主要针对高校人员的基本信息进行管理。采用对象链表或对象数组存放各个对象,实现新增、修改、删除、查询以及统计等功能。
通过本次课程设计,深入理解类和对象.继承和派生.重载和多态,熟练掌握面向对象的程序设计思想和方法,能够对现实世界中的实际问题进行分析.设计,并学会熟练运用面向对象的编程方法(OOP)-- C++语言进 ...
- 课程设计下:利用C++实现高校人员信息管理系统
高校人员信息管理系统 需求分析 实现功能如下: 系统环境: 数据结构设计: 界面显示: 代码如下: 下载链接 需求分析 该系统所应包含的信息有以下一些: 人员的基本信息: 编号.姓名.年龄.性别.职称 ...
- 高校人员信息管理系统(Java课程设计,带图形界面版)
题目 1.问题描述 某高校有四类员工:教师.实验员.行政人员,教师兼行政人员:共有的信息包括:编号.姓名.性别.年龄等.其中,教师还包含的信息有:所在系部.专业.职称:实验员还包含的信息由:所在实验室 ...
- 学生信息管理系统——python版(附流程图)
声明 本篇代码对新手十分友好.我大一的期末考试作业,今天分享出来.当时写的时候也是一个新手,现在也不想再去修改了(一是太懒,二还是懒),所以有很多地方可能不足,但是运行完全没问题.我用的是列表加循环这 ...
- c语言高校信息查询系统,高校人员信息管理系统c语言.doc
#include #include #include #include #include using namespace std; class Person //基类 { protected: dou ...
- Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询)
Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码(前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询 修改密 ...
最新文章
- Python 语法相关知识
- 基本算法研究1-冒泡排序算法测试
- 做项目时的几个感慨(持续更新...)
- php把数据生成mxl,php如何生成加密公钥以及加密私钥的代码案例分享
- 2批量批量查询数据插入数据_不吹牛!Mysql 千万数据10秒批量插入只需三步
- android 弹幕礼物,Android的简易弹幕
- Звезда 星星
- Matlab-Simulink文件类型总结
- Word打印目录或另存为PDF时出现“错误!未定义书签!”的解决办法
- flea-db使用之基于对象池的FleaJPAQuery
- Jenkins系列之——第五章 Jenkins编译一个Spring Boot项目并通过SSH推送到远程
- 计算机考研考线代和概率论吗,考研数一数二数三的区别有哪些
- opensips服务器环境搭建
- MySQL----mysql_secure_installation 安全配置向导
- 论文阅读:Enconder-Decoder with Atrous Separabel Convolution for Semantic Image Segmentation(deeplabv3+)
- SQL SERVER 链接服务器
- 安卓系统再曝高危漏洞!大部分手机都可能被黑客控制
- 信息孤岛影响_消防管理中,互不关联的“数据孤岛”如何解决?
- 环境监测中标准气体使用问题的探讨
- 【设计规范】TVS管如何选型/浪涌静电防护
热门文章
- 柯莱特CTO谈企业选择CRM的六大目标
- WRF示例运行(官方示例)
- 并发编程 - Synchronized
- gpu z linux版本,GPU-Z 2.13.0发布,可检测到假冒的NVIDIA 显卡
- 免费打印控件Lodop
- 676_AUTOSAR_TR_Methodology_文档阅读3
- 高德地图——浏览器定位+点击获取经纬度+去除高德百度地图左下角logo
- 网吧无盘主副服务器,网吧无盘服务器教程
- Python matplotlib常见问题
- java+标签定位_java+selenium——查找定位元素,elements复数定位(driver.findElementsByClassName(mnav);)002...