目录
高校人员信息管理系统
备注:大二(上)Python语言课程设计
一、问题描述
某高校有四类员工:教师、实验员、行政人员,教师兼行政人员
共有的信息包括:编号、姓名、性别、年龄等
其中,教师还包含的信息有:所在系部、专业、职称;
实验员还包含的信息有:所在实验室、职务;
行政人员还包含的信息有:政治面貌、职称等
二、功能要求
(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
(6)统计功能:能根据多种参数进行人员的统计。能统计四类人员数量以及总数,统计男、女员工的数量。
(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。
(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。
三、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员方法的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
四、运行环境说明
五、代码段
1、多文件
(1)员工类(文件1)
# 文件1 Staff.py
class 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.py
from 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 None
else:
return temp_nu
def set_gender(self): # 设置教师性别
temp_ge = input('请输入性别(男或女):')
if temp_ge != '男' and temp_ge != '女':
print('性别必须是男或女,请重新录入!')
return None
else:
return temp_ge
def input(self): # 录入教师信息
print('请输入教师的各项信息:')
temp_nu = self.set_number()
if temp_nu == None:
return None
temp_na = input('请输入姓名:')
temp_ge = self.set_gender()
if temp_ge == None:
return None
temp_ag = int(input('请输入年龄(整数):'))
temp_de = input('请输入系部:')
temp_ma = input('请输入专业:')
temp_ti = input('请输入职称:')
self.number = temp_nu
self.name = temp_na
self.gender = temp_ge
self.age = temp_ag
self.department = temp_de
self.major = temp_ma
self.title = temp_ti
return self
def 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 True
else:
return False
def 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 i
else:
return None
elif choice == '2':
temp_na = input('请输入姓名:')
for i in range(len(self.listx)):
if temp_na == self.listx[i].name:
return i
else:
return None
def 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 inde
else:
print('查询失败!')
return None
def 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_nu
print('编号编辑成功!')
else:
print('编号编辑失败!')
elif choice == '2':
temp_na = input('请输入姓名:')
self.listx[inde].name = temp_na
print('姓名编辑成功!')
elif choice == '3':
temp_ge = self.listx[inde].set_gender()
if temp_ge != None:
self.listx[inde].gender = temp_ge
print('性别编辑成功!')
else:
print('性别编辑失败!')
elif choice == '4':
temp_ag = int(input('请输入年龄(整数):'))
self.listx[inde].age = temp_ag
print('年龄编辑成功!')
elif choice == '5':
temp_de = input('请输入系部:')
self.listx[inde].department = temp_de
print('系部编辑成功!')
elif choice == '6':
temp_ma = input('请输入专业:')
self.listx[inde].major = temp_ma
print('专业编辑成功!')
elif choice == '7':
temp_ti = input('请输入职称:')
self.listx[inde].title = temp_ti
print('职称编辑成功!')
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 = 0
print('统计结果如下:')
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 += 1
self.listx[i].output()
print('该年龄段的人数共计有{0}人'.format(count))
elif choice == '2':
total = len(self.listx)
count_female = 0
for i in range(len(self.listx)):
if self.listx[i].gender == '女':
count_female += 1
print('统计结果如下:')
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':
break
else:
print('选择错误,请重新选择!')
(3)实验员类(文件3)
# 文件3 LabTechnician.py
from 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 None
else:
return temp_nu
def set_gender(self): # 设置实验员性别
temp_ge = input('请输入性别(男或女):')
if temp_ge != '男' and temp_ge != '女':
print('性别必须是男或女,请重新录入!')
return None
else:
return temp_ge
def input(self): # 录入实验员信息
print('请输入实验员的各项信息:')
temp_nu = self.set_number()
if temp_nu == None:
return None
temp_na = input('请输入姓名:')
temp_ge = self.set_gender()
if temp_ge == None:
return None
temp_ag = int(input('请输入年龄(整数):'))
temp_la = input('请输入实验室:')
temp_jo = input('请输入职务:')
self.number = temp_nu
self.name = temp_na
self.gender = temp_ge
self.age = temp_ag
self.lab = temp_la
self.job = temp_jo
return self
def 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 True
else:
return False
def 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 i
else:
return None
elif choice == '2':
temp_na = input('请输入姓名:')
for i in range(len(self.listx)):
if temp_na == self.listx[i].name:
return i
else:
return None
def 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 inde
else:
print('查询失败!')
return None
def 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_nu
print('编号编辑成功!')
else:
print('编号编辑失败!')
elif choice == '2':
temp_na = input('请输入姓名:')
self.listx[inde].name = temp_na
print('姓名编辑成功!')
elif choice == '3':
temp_ge = self.listx[inde].set_gender()
if temp_ge != None:
self.listx[inde].gender = temp_ge
print('性别编辑成功!')
else:
print('性别编辑失败!')
elif choice == '4':
temp_ag = int(input('请输入年龄(整数):'))
self.listx[inde].age = temp_ag
print('年龄编辑成功!')
elif choice == '5':
temp_la = input('请输入实验室:')
self.listx[inde].lab = temp_la
print('实验室编辑成功!')
elif choice == '6':
temp_jo = input('请输入职务:')
self.listx[inde].job = temp_jo
print('职务编辑成功!')
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 = 0
print('统计结果如下:')
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 += 1
self.listx[i].output()
print('该年龄段的人数共计有{0}人'.format(count))
elif choice == '2':
total = len(self.listx)
count_female = 0
for i in range(len(self.listx)):
if self.listx[i].gender == '女':
count_female += 1
print('统计结果如下:')
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':
break
else:
print('选择错误,请重新选择!')
(4)行政人员类(文件4)
# 文件4 AdminiStaff.py
from 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 None
else:
return temp_nu
def set_gender(self): # 设置行政人员性别
temp_ge = input('请输入性别(男或女):')
if temp_ge != '男' and temp_ge != '女':
print('性别必须是男或女,请重新录入!')
return None
else:
return temp_ge
def input(self): # 录入行政人员信息
print('请输入行政人员的各项信息:')
temp_nu = self.set_number()
if temp_nu == None:
return None
temp_na = input('请输入姓名:')
temp_ge = self.set_gender()
if temp_ge == None:
return None
temp_ag = int(input('请输入年龄(整数):'))
temp_po = input('请输入政治面貌:')
temp_Ti = input('请输入职称:')
self.number = temp_nu
self.name = temp_na
self.gender = temp_ge
self.age = temp_ag
self.poli_status = temp_po
self.Title = temp_Ti
return self
def 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 True
else:
return False
def 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 i
else:
return None
elif choice == '2':
temp_na = input('请输入姓名:')
for i in range(len(self.listx)):
if temp_na == self.listx[i].name:
return i
else:
return None
def 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 inde
else:
print('查询失败!')
return None
def 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_nu
print('编号编辑成功!')
else:
print('编号编辑失败!')
elif choice == '2':
temp_na = input('请输入姓名:')
self.listx[inde].name = temp_na
print('姓名编辑成功!')
elif choice == '3':
temp_ge = self.listx[inde].set_gender()
if temp_ge != None:
self.listx[inde].gender = temp_ge
print('性别编辑成功!')
else:
print('性别编辑失败!')
elif choice == '4':
temp_ag = int(input('请输入年龄(整数):'))
self.listx[inde].age = temp_ag
print('年龄编辑成功!')
elif choice == '5':
temp_po = input('请输入政治面貌:')
self.listx[inde].poli_status = temp_po
print('政治面貌编辑成功!')
elif choice == '6':
temp_Ti = input('请输入职称:')
self.listx[inde].Title = temp_Ti
print('职称编辑成功!')
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 = 0
print('统计结果如下:')
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 += 1
self.listx[i].output()
print('该年龄段的人数共计有{0}人'.format(count))
elif choice == '2':
total = len(self.listx)
count_female = 0
for i in range(len(self.listx)):
if self.listx[i].gender == '女':
count_female += 1
print('统计结果如下:')
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':
break
else:
print('选择错误,请重新选择!')
(5)教师兼行政人员类(文件5)
# 文件5 TeachAdminiStaff.py
from 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 None
else:
return temp_nu
def set_gender(self): # 设置教师兼行政人员性别
temp_ge = input('请输入性别(男或女):')
if temp_ge != '男' and temp_ge != '女':
print('性别必须是男或女,请重新录入!')
return None
else:
return temp_ge
def input(self): # 录入教师兼行政人员信息
print('请输入教师兼行政人员的各项信息:')
temp_nu = self.set_number()
if temp_nu == None:
return None
temp_na = input('请输入姓名:')
temp_ge = self.set_gender()
if temp_ge == None:
return None
temp_ag = int(input('请输入年龄(整数):'))
temp_de = input('请输入系部:')
temp_ma = input('请输入专业:')
temp_Ti = input('请输入职称:')
temp_po = input('请输入政治面貌:')
self.number = temp_nu
self.name = temp_na
self.gender = temp_ge
self.age = temp_ag
self.department = temp_de
self.major = temp_ma
self.Title = temp_Ti
self.poli_status = temp_po
return self
def 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 True
else:
return False
def 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 i
else:
return None
elif choice == '2':
temp_na = input('请输入姓名:')
for i in range(len(self.listx)):
if temp_na == self.listx[i].name:
return i
else:
return None
def 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 inde
else:
print('查询失败!')
return None
def 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_nu
print('编号编辑成功!')
else:
print('编号编辑失败!')
elif choice == '2':
temp_na = input('请输入姓名:')
self.listx[inde].name = temp_na
print('姓名编辑成功!')
elif choice == '3':
temp_ge = self.listx[inde].set_gender()
if temp_ge != None:
self.listx[inde].gender = temp_ge
print('性别编辑成功!')
else:
print('性别编辑失败!')
elif choice == '4':
temp_ag = int(input('请输入年龄(整数):'))
self.listx[inde].age = temp_ag
print('年龄编辑成功!')
elif choice == '5':
temp_de = input('请输入系部:')
self.listx[inde].department = temp_de
print('系部编辑成功!')
elif choice == '6':
temp_ma = input('请输入专业:')
self.listx[inde].major = temp_ma
print('专业编辑成功!')
elif choice == '7':
temp_Ti = input('请输入职称:')
self.listx[inde].Title = temp_Ti
print('职称编辑成功!')
elif choice == '8':
temp_po = input('请输入政治面貌:')
self.listx[inde].poli_status = temp_po
print('政治面貌编辑成功!')
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 = 0
print('统计结果如下:')
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 += 1
self.listx[i].output()
print('该年龄段的人数共计有{0}人'.format(count))
elif choice == '2':
total = len(self.listx)
count_female = 0
for i in range(len(self.listx)):
if self.listx[i].gender == '女':
count_female += 1
print('统计结果如下:')
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':
break
else:
print('选择错误,请重新选择!')
(6)一级菜单函数和主函数(文件6)
# 文件6 Main.py
from 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':
break
else:
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 None
else:
return temp_nu
def set_gender(self): # 设置教师性别
temp_ge = input('请输入性别(男或女):')
if temp_ge != '男' and temp_ge != '女':
print('性别必须是男或女,请重新录入!')
return None
else:
return temp_ge
def input(self): # 录入教师信息
print('请输入教师的各项信息:')
temp_nu = self.set_number()
if temp_nu == None:
return None
temp_na = input('请输入姓名:')
temp_ge = self.set_gender()
if temp_ge == None:
return None
temp_ag = int(input('请输入年龄(整数):'))
temp_de = input('请输入系部:')
temp_ma = input('请输入专业:')
temp_ti = input('请输入职称:')
self.number = temp_nu
self.name = temp_na
self.gender = temp_ge
self.age = temp_ag
self.department = temp_de
self.major = temp_ma
self.title = temp_ti
return self
def 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 True
else:
return False
def 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 i
else:
return None
elif choice == '2':
temp_na = input('请输入姓名:')
for i in range(len(self.listx)):
if temp_na == self.listx[i].name:
return i
else:
return None
def 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 inde
else:
print('查询失败!')
return None
def 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_nu
print('编号编辑成功!')
else:
print('编号编辑失败!')
elif choice == '2':
temp_na = input('请输入姓名:')
self.listx[inde].name = temp_na
print('姓名编辑成功!')
elif choice == '3':
temp_ge = self.listx[inde].set_gender()
if temp_ge != None:
self.listx[inde].gender = temp_ge
print('性别编辑成功!')
else:
print('性别编辑失败!')
elif choice == '4':
temp_ag = int(input('请输入年龄(整数):'))
self.listx[inde].age = temp_ag
print('年龄编辑成功!')
elif choice == '5':
temp_de = input('请输入系部:')
self.listx[inde].department = temp_de
print('系部编辑成功!')
elif choice == '6':
temp_ma = input('请输入专业:')
self.listx[inde].major = temp_ma
print('专业编辑成功!')
elif choice == '7':
temp_ti = input('请输入职称:')
self.listx[inde].title = temp_ti
print('职称编辑成功!')
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 = 0
print('统计结果如下:')
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 += 1
self.listx[i].output()
print('该年龄段的人数共计有{0}人'.format(count))
elif choice == '2':
total = len(self.listx)
count_female = 0
for i in range(len(self.listx)):
if self.listx[i].gender == '女':
count_female += 1
print('统计结果如下:')
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':
break
else:
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 None
else:
return temp_nu
def set_gender(self): # 设置实验员性别
temp_ge = input('请输入性别(男或女):')
if temp_ge != '男' and temp_ge != '女':
print('性别必须是男或女,请重新录入!')
return None
else:
return temp_ge
def input(self): # 录入实验员信息
print('请输入实验员的各项信息:')
temp_nu = self.set_number()
if temp_nu == None:
return None
temp_na = input('请输入姓名:')
temp_ge = self.set_gender()
if temp_ge == None:
return None
temp_ag = int(input('请输入年龄(整数):'))
temp_la = input('请输入实验室:')
temp_jo = input('请输入职务:')
self.number = temp_nu
self.name = temp_na
self.gender = temp_ge
self.age = temp_ag
self.lab = temp_la
self.job = temp_jo
return self
def 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 True
else:
return False
def 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 i
else:
return None
elif choice == '2':
temp_na = input('请输入姓名:')
for i in range(len(self.listx)):
if temp_na == self.listx[i].name:
return i
else:
return None
def 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 inde
else:
print('查询失败!')
return None
def 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_nu
print('编号编辑成功!')
else:
print('编号编辑失败!')
elif choice == '2':
temp_na = input('请输入姓名:')
self.listx[inde].name = temp_na
print('姓名编辑成功!')
elif choice == '3':
temp_ge = self.listx[inde].set_gender()
if temp_ge != None:
self.listx[inde].gender = temp_ge
print('性别编辑成功!')
else:
print('性别编辑失败!')
elif choice == '4':
temp_ag = int(input('请输入年龄(整数):'))
self.listx[inde].age = temp_ag
print('年龄编辑成功!')
elif choice == '5':
temp_la = input('请输入实验室:')
self.listx[inde].lab = temp_la
print('实验室编辑成功!')
elif choice == '6':
temp_jo = input('请输入职务:')
self.listx[inde].job = temp_jo
print('职务编辑成功!')
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 = 0
print('统计结果如下:')
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 += 1
self.listx[i].output()
print('该年龄段的人数共计有{0}人'.format(count))
elif choice == '2':
total = len(self.listx)
count_female = 0
for i in range(len(self.listx)):
if self.listx[i].gender == '女':
count_female += 1
print('统计结果如下:')
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':
break
else:
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 None
else:
return temp_nu
def set_gender(self): # 设置行政人员性别
temp_ge = input('请输入性别(男或女):')
if temp_ge != '男' and temp_ge != '女':
print('性别必须是男或女,请重新录入!')
return None
else:
return temp_ge
def input(self): # 录入行政人员信息
print('请输入行政人员的各项信息:')
temp_nu = self.set_number()
if temp_nu == None:
return None
temp_na = input('请输入姓名:')
temp_ge = self.set_gender()
if temp_ge == None:
return None
temp_ag = int(input('请输入年龄(整数):'))
temp_po = input('请输入政治面貌:')
temp_Ti = input('请输入职称:')
self.number = temp_nu
self.name = temp_na
self.gender = temp_ge
self.age = temp_ag
self.poli_status = temp_po
self.Title = temp_Ti
return self
def 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 True
else:
return False
def 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 i
else:
return None
elif choice == '2':
temp_na = input('请输入姓名:')
for i in range(len(self.listx)):
if temp_na == self.listx[i].name:
return i
else:
return None
def 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 inde
else:
print('查询失败!')
return None
def 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_nu
print('编号编辑成功!')
else:
print('编号编辑失败!')
elif choice == '2':
temp_na = input('请输入姓名:')
self.listx[inde].name = temp_na
print('姓名编辑成功!')
elif choice == '3':
temp_ge = self.listx[inde].set_gender()
if temp_ge != None:
self.listx[inde].gender = temp_ge
print('性别编辑成功!')
else:
print('性别编辑失败!')
elif choice == '4':
temp_ag = int(input('请输入年龄(整数):'))
self.listx[inde].age = temp_ag
print('年龄编辑成功!')
elif choice == '5':
temp_po = input('请输入政治面貌:')
self.listx[inde].poli_status = temp_po
print('政治面貌编辑成功!')
elif choice == '6':
temp_Ti = input('请输入职称:')
self.listx[inde].Title = temp_Ti
print('职称编辑成功!')
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 = 0
print('统计结果如下:')
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 += 1
self.listx[i].output()
print('该年龄段的人数共计有{0}人'.format(count))
elif choice == '2':
total = len(self.listx)
count_female = 0
for i in range(len(self.listx)):
if self.listx[i].gender == '女':
count_female += 1
print('统计结果如下:')
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':
break
else:
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 None
else:
return temp_nu
def set_gender(self): # 设置教师兼行政人员性别
temp_ge = input('请输入性别(男或女):')
if temp_ge != '男' and temp_ge != '女':
print('性别必须是男或女,请重新录入!')
return None
else:
return temp_ge
def input(self): # 录入教师兼行政人员信息
print('请输入教师兼行政人员的各项信息:')
temp_nu = self.set_number()
if temp_nu == None:
return None
temp_na = input('请输入姓名:')
temp_ge = self.set_gender()
if temp_ge == None:
return None
temp_ag = int(input('请输入年龄(整数):'))
temp_de = input('请输入系部:')
temp_ma = input('请输入专业:')
temp_Ti = input('请输入职称:')
temp_po = input('请输入政治面貌:')
self.number = temp_nu
self.name = temp_na
self.gender = temp_ge
self.age = temp_ag
self.department = temp_de
self.major = temp_ma
self.Title = temp_Ti
self.poli_status = temp_po
return self
def 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 True
else:
return False
def 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 i
else:
return None
elif choice == '2':
temp_na = input('请输入姓名:')
for i in range(len(self.listx)):
if temp_na == self.listx[i].name:
return i
else:
return None
def 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 inde
else:
print('查询失败!')
return None
def 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_nu
print('编号编辑成功!')
else:
print('编号编辑失败!')
elif choice == '2':
temp_na = input('请输入姓名:')
self.listx[inde].name = temp_na
print('姓名编辑成功!')
elif choice == '3':
temp_ge = self.listx[inde].set_gender()
if temp_ge != None:
self.listx[inde].gender = temp_ge
print('性别编辑成功!')
else:
print('性别编辑失败!')
elif choice == '4':
temp_ag = int(input('请输入年龄(整数):'))
self.listx[inde].age = temp_ag
print('年龄编辑成功!')
elif choice == '5':
temp_de = input('请输入系部:')
self.listx[inde].department = temp_de
print('系部编辑成功!')
elif choice == '6':
temp_ma = input('请输入专业:')
self.listx[inde].major = temp_ma
print('专业编辑成功!')
elif choice == '7':
temp_Ti = input('请输入职称:')
self.listx[inde].Title = temp_Ti
print('职称编辑成功!')
elif choice == '8':
temp_po = input('请输入政治面貌:')
self.listx[inde].poli_status = temp_po
print('政治面貌编辑成功!')
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 = 0
print('统计结果如下:')
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 += 1
self.listx[i].output()
print('该年龄段的人数共计有{0}人'.format(count))
elif choice == '2':
total = len(self.listx)
count_female = 0
for i in range(len(self.listx)):
if self.listx[i].gender == '女':
count_female += 1
print('统计结果如下:')
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':
break
else:
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':
break
else:
print('选择错误,请重新选择!')
main()