一、概述
1.1涉及到的知识点
项目开发:创建项目,创建包,导入包;
面向对象:静态方法,继承,内置函数,自定义函数;
数据类型:列表,字典,字符串、列表、字典的转换和自动生成导向;
异常处理:捕获异常; 文件操作:读,写;
1.2需求分析
(1)思考学员管理系统需要哪些功能?
(2)思考可以将哪些功能对象化?
(3)创建的对象可将功能方法化(函数化)吗?
二、具体实现
(1)创建项目:StudentManagerSystem;
(2)创建文件:main,managerSystem,student;
(3)在文件内创建具体对象;
Student:基本属性有name,gender,tel,方法(__str__)返回具体属性值
managerSystem:属性依赖于Student,本身无属性,
功能有:执行函数run,静态方法show_menu,以及add_stu等增删改操作
main:创建对象,执行文件
(4)细节要点
确保在相应文件首部中导入正确的包,即使正确,仍可能有警告;
每写完一个小功能,都要立即进行测试,发现问题及时解决;
注意数据的存储形式,列表,字符串;
三、总结
这个项目跟着老师做了差不多一周,因为涉及的知识点很多事前面学过但没有很熟练掌握的,所以有些吃力,加上最近开学,有很任务要完成,勉强每天学一点,效果不是很好,但学了总比没学好。马上就要进入mooc学图形了,不求每天学得很多,能学一点是一点,希望自己可以坚持下去吧!
四、完整源码
1 # student.py 2 class Student(object): 3 def __init__(self, name, gender, tel): 4 self.name = name 5 self.gender = gender 6 self.tel = tel 7 8 def __str__(self): 9 return f\'姓名:{self.name},\' \ 10 f\'性别:{self.gender},\' \ 11 f\'手机号:{self.tel}\' 12 13 14 # managerSystem.py 15 """ 16 存储数据:文件(student.data) 17 加载文件数据 18 修改数据后保存到文件 19 存储形式:list 存储学员对象 20 系统功能:add,del,modify,find,display,save,exit 21 """ 22 from student import * 23 24 25 class StudentManager(object): 26 def __init__(self): 27 """存储数据""" 28 self.stu_list = [] 29 30 def run(self): 31 self.load_stu() 32 33 while True: 34 self.show_menu() 35 k = int(input(\'请输入功能序号:\n\')) 36 if k == 1: 37 self.add_stu() 38 elif k == 2: 39 self.del_stu() 40 elif k == 3: 41 self.modify() 42 elif k == 4: 43 self.find() 44 elif k == 5: 45 self.display() 46 elif k == 6: 47 self.save() 48 elif k == 7: 49 break 50 51 @staticmethod 52 def show_menu(): 53 """显示功能菜单""" 54 print(\'请选择如下功能:\') 55 print(\'1:添加学员\') 56 print(\'2:删除学员\') 57 print(\'3:修改学员信息\') 58 print(\'4:查询学员\') 59 print(\'5:显示全部学员信息\') 60 print(\'6.:保存学员信息\') 61 print(\'7:退出系统\') 62 63 def add_stu(self): 64 name = input(\'请输入您的姓名:\') 65 gender = input(\'请输入您的性别:\') 66 tel = input(\'请输入您的电话号码:\') 67 stu = Student(name, gender, tel) 68 self.stu_list.append(stu) 69 print(self.stu_list, stu) 70 71 def del_stu(self): 72 del_name = input(\'请输入要删除学员姓名:\') 73 for i in self.stu_list: 74 if i.name == del_name: 75 self.stu_list.remove(i) 76 break 77 else: 78 print(\'查无此人。\') 79 print(self.stu_list) 80 81 def modify(self): 82 modiy_name = input(\'请输入要修改的学员姓名:\') 83 for i in self.stu_list: 84 if i.name == modiy_name: 85 i.name = input(\'请输入您的姓名:\') 86 i.gender = input(\'请输入您的性别:\') 87 i.tel = input(\'请输入您的电话号码:\') 88 print(f\'姓名:{i.name},性别:{i.gender},电话号码:{i.tel}\n\' 89 f\'修改学员信息成功.\') 90 break 91 else: 92 print(\'该学员不存在!\') 93 94 def find(self): 95 find_name = input(\'请输入要修改的学员姓名:\') 96 for i in self.stu_list: 97 if i.name == find_name: 98 print(f\'姓名:{i.name},性别:{i.gender},电话号码:{i.tel}\n\' 99 f\'修改学员信息成功.\') 100 break 101 else: 102 print(\'该学员不存在!\') 103 104 def display(self): 105 for i in self.stu_list: 106 print(f\'姓名:{i.name},\' 107 f\'性别:{i.gender},\' 108 f\'电话号码:{i.tel}\n\' 109 f\'修改学员信息成功.\') 110 111 def save(self): 112 """文件写入学员数据""" 113 f = open(\'student.data\', \'w\') 114 new_list = [i.__dict__ for i in self.stu_list] 115 f.write(str(new_list)) 116 f.close() 117 118 def load_stu(self): 119 try: 120 f = open(\'student.data\', \'r\') 121 except: 122 f = open(\'student.data\', \'w\') 123 else: 124 data = f.read() 125 126 # 将data字符串转换为列表类型数据 127 new_list = eval(data) 128 129 # 列表推导式 130 self.stu_list = [Student(i[\'name\'], 131 i[\'gender\'], 132 i[\'tel\'] ) 133 for i in new_list] 134 finally: 135 f.close() 136 137 # main.py 138 from managerSystem import * 139 140 141 if __name__ == \'__main__\': 142 stu = StudentManager() 143 stu.run()