学员信息都以字典的形式放在一个大列表里,然后列表以字符串存在文件,要实现对学员信息的增删改查,并且可以被其他使用者调用该模块。
文件内容如下;
1 class StudentManage: 2 ''' 3 学员管理,调用此类需要传入学员信息文件,文件内容是一个单独的列表,列表里是字典,然后调用相关方法, 4 实现增删改查功能,每次调用方法需要传入学号,操作完之后需要手动保存 5 ''' 6 def __init__(self, file): 7 ''' 8 类的实例化,直接出发读方法,获取文件所有内容,可以直接让实例在调用方法时使用 9 :param file: 传入文件对象 10 ''' 11 self.file = file 12 self.con_list = self.readInfo() 13 14 def readInfo(self): 15 ''' 16 读取文件全部内容,并以列表形式返回文件内容 17 :return: con_list 18 ''' 19 with open(self.file, 'r', encoding='utf-8') as read_f: 20 con = read_f.read() 21 con_list = eval(con) 22 return con_list 23 24 def fetchInfo(self, num): 25 ''' 26 输入学号查找学员信息,如果不存在没有返回值,打印'学号不存在',如果存在,返回学员信息 27 :param num:学号 28 :return: 学员信息 29 ''' 30 for i in self.con_list: 31 if i['num'] == num: 32 print(i) 33 return i 34 else: 35 print("学号不存在") 36 37 def addInfo(self, num): 38 ''' 39 输入学号添加学员信息,如果学号已存在,就返回原列表信息,如果不存在,就添加,并返回添加后的学员信息 40 :param num: 学号 41 :return: 学员信息 42 ''' 43 for i in self.con_list: 44 if i['num'] == num: 45 print("学号已经存在") 46 return self.con_list 47 else: 48 stu_dic = {} 49 stu_dic['name'] = input("请输入姓名>>:") 50 stu_dic['age'] = input("请输入年龄>>:") 51 stu_dic['num'] = num 52 self.con_list.append(stu_dic) 53 return self.con_list 54 55 def changeInfo(self, num): 56 ''' 57 输入学号修改学员信息,学号不能修改,如果不存在,则打印'学号不存在'并返回原列表, 58 如果存在,则返回修改后的列表 59 :param num: 学号 60 :return: 学员信息 61 ''' 62 for i in self.con_list: 63 if i['num'] == num: 64 print(i) 65 i['name'] = input("请输入姓名:") 66 i['age'] = input("请输入年龄:") 67 return self.con_list 68 else: 69 print("学号不存在") 70 return self.con_list 71 72 def deleteInfo(self, num): 73 ''' 74 输入学号删除信息,如果存在则删除指定信息并返回删除后的列表,如果不存在,则打印'学号不存在'并返回原列表 75 :param num: 学号 76 :return: 学员信息 77 ''' 78 for i in self.con_list: 79 if i['num'] == num: 80 self.con_list.remove(i) 81 print("删除成功") 82 return self.con_list 83 else: 84 print("学号不存在") 85 return self.con_list 86 87 def saveInfo(self, info): 88 ''' 89 输入要保存的内容,直接保存到原文件 90 :param info: 更改后的列表 91 :return: 92 ''' 93 with open(self.file, 'w', encoding='utf-8') as write_f: 94 write_f.write(str(info)) 95 96 # 测试代码 97 if __name__ == '__main__': 98 msg = ''' 99 1 查找 100 2 添加 101 3 修改 102 4 删除 103 5 保存 104 0 退出 105 ''' 106 st = StudentManage('stu_info.txt') 107 msg_dic = { 108 '1': st.fetchInfo, 109 '2': st.addInfo, 110 '3': st.changeInfo, 111 '4': st.deleteInfo, 112 '5': st.saveInfo, 113 } 114 115 while True: 116 print(msg) 117 choice = input("请输入选择编号>>:").strip() 118 if choice not in ['1', '2', '3', '4', '5', '0']: 119 continue 120 elif choice == '5': 121 print(st.con_list) 122 msg_dic[choice](st.con_list) 123 continue 124 elif choice == '0': 125 break 126 num = input("请输入学号>>:") 127 msg_dic[choice](num)