一、概述
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()
来源:https://www.cnblogs.com/kekefu/p/12344744.html