Python——面向对象,简易学生信息管理系统
一、概述
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()