学员管理模块编写

学员信息都以字典的形式放在一个大列表里,然后列表以字符串存在文件,要实现对学员信息的增删改查,并且可以被其他使用者调用该模块。
文件内容如下;
  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)
View Code

猜你喜欢

转载自www.cnblogs.com/thoughtful-actors/p/9588484.html