700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 高校人员信息管理系统(Python版)

高校人员信息管理系统(Python版)

时间:2019-06-08 11:02:18

相关推荐

高校人员信息管理系统(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 1125class 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 1126class 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 1126class 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 1127class 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()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。