class StudentManager(object): def __init__(self): self.stu_list = [] def run(self): self.load_stu() while True: self.show_menu() k = int(input('请输入功能序号:\n')) if k == 1: self.add_stu() elif k == 2: self.del_stu() elif k == 3: # 补充代码,实现调用相对应的方法 pass elif k == 4: self.find_stu() elif k == 5: self.show_stu() elif k == 6: # 补充代码,实现调用相对应的方法 pass elif k == 7: self.show_stu_age_reduce() elif k == 8: self.save() elif k == 9: # 补充代码,实现结束循环 pass else: print('输入错误,请输入1~9之间的数字!') @staticmethod def show_menu(): menu_info = \ ''' +----------------------+ 欢迎进入学生管理系统 | 1.添加学员 | 2.删除学员 | 3.修改学员信息 | 4.查询学员信息 | 5.显示全部学员信息 | 6.按年龄从小到大显示全部学员信息 | 7.按年龄从大到小显示全部学员信息 | 8.保存学员信息 | 9.退出系统 +----------------------+ ''' print(menu_info) def add_stu(self): while True: try: name = input("请输入姓名:") if name == '': raise BaseException('姓名不能为空!') gender = input('请输入您的性别:') # 补充代码,实现判断如果输入的gender不是男也不是女,则抛出异常,异常提示信息为“性别只能是男或女” pass age = int(input("请输入年龄:")) except ValueError: print("输入无效,不是整形数值....重新录入信息") continue except BaseException as e: print(e) continue # 根据输入的姓名、性别和年龄创建学生对象stu pass self.stu_list.append(stu) print(stu) break def del_stu(self): del_name = input('请输入要删除学员姓名:') # 补充代码,实现功能:判断要删除的学员姓名是否存在,如果存在则删除,如果不存在则输出“查无此人” pass def new_input(self, old, new): input_str = input(new) if len(input_str) > 0: return input_str else: return old def modify_stu(self): modify_name = input('请输入要修改的学员姓名:') # 补充代码,实现功能:判断要修改的学员姓名是否存在, # 如果存在,则提示用户“请输入新修改的名字[回车则不修改]:”、'请输入新修改的性别[回车则不修改]:'、 '请输入新修改的年龄[回车则不修改]:' # 并调用new_input方法修改学员信息 # 如果不存在,则提示“该学员不存在!” pass def find_stu(self): find_name = input('请输入要查询的学员姓名:') for i in self.stu_list: if i.name == find_name: print(f'姓名:{i.name},性别:{i.gender},年龄:{i.age}\n') break # 补充代码,实现当要查询的学员姓名不存在时打印“该学员不存在!” pass def show_stu(self): for i in self.stu_list: print(f'姓名:{i.name},性别:{i.gender},年龄:{i.age}') def show_stu_age_rise(self): new_list = sorted(self.stu_list, key=lambda student: student.age) for i in new_list: print(f'姓名:{i.name},性别:{i.gender},年龄:{i.age}') def show_stu_age_reduce(self): new_list = sorted(self.stu_list, key=lambda student: student.age, reverse=True) for i in new_list: print(f'姓名:{i.name},性别:{i.gender},年龄:{i.age}') def save(self): f = open('student.data', 'w', encoding='utf_8') new_list = [i.__dict__ for i in self.stu_list] # 补充代码,实现将new_list转换为字符串后写入文件中 pass f.close() def load_stu(self): global f # 补充代码,实现以"r"模式打开学员数据文件,如果文件不存在(即发生异常)则以"w"模式打开文件 try: pass except: pass else: data = f.read() new_list = eval(data) self.stu_list = [Student(i['name'], i['gender'], i['age']) for i in new_list] finally: f.close()
可以参考下这篇文章,希望对你有帮助
https://blog.csdn.net/h674174380/article/details/77931891
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632