快看点丨Python之面向对象版学员管理系统

2022-12-23 10:18:40 来源:51CTO博客


【资料图】

一、系统需求

使⽤⾯向对象编程思想完成学员管理系统的开发,具体如下:系统要求:学员数据存储在⽂件中系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统等功能。

二、准备程序⽂件

1、分析

⻆⾊分析    学员    管理系统⼯作中注意事项1. 为了⽅便维护代码,⼀般⼀个⻆⾊⼀个程序⽂件;2. 项⽬要有主程序⼊⼝,习惯为 main.py

2、创建程序⽂件

创建项⽬⽬录,例如: StudentManagerSystem程序⽂件如下:程序⼊⼝⽂件:main.py学员⽂件:student.py管理系统⽂件:managerSystem.py

三、书写程序

1、student.py

需求:学员信息包含:姓名、性别、⼿机号;添加 __str__ 魔法⽅法,⽅便查看学员对象信息class Student(object): def __init__(self, name, gender, tel):     self.name = name     self.gender = gender     self.tel = tel def __str__(self):     return f"{self.name}, {self.gender}, {self.tel}"

2、managerSystem.py

需求:存储数据的位置:⽂件(student.data)    加载⽂件数据    修改数据后保存到⽂件存储数据的形式:列表存储学员对象系统功能    添加学员    删除学员    修改学员    查询学员信息    显示所有学员信息    保存学员信息    退出系统

2.1 定义类

class StudentManager(object): def __init__(self):     # 存储数据所⽤的列表     self.student_list = []

2.2 管理系统框架

需求:系统功能循环使⽤,⽤户输⼊不同的功能序号执⾏不同的功能。步骤   定义程序⼊⼝函数       加载数据       显示功能菜单       ⽤户输⼊功能序号       根据⽤户输⼊的功能序号执⾏不同的功能   定义系统功能函数,添加、删除学员等   class StudentManager(object): def __init__(self):     # 存储数据所⽤的列表     self.student_list = [] # ⼀. 程序⼊⼝函数,启动程序后执⾏的函数 def run(self):     # 1. 加载学员信息     self.load_student()     while True:         # 2. 显示功能菜单         self.show_menu()         # 3. ⽤户输⼊功能序号         menu_num = int(input("请输⼊您需要的功能序号:"))         # 4 根据⽤户输⼊的功能序号执⾏不同的功能         if menu_num == 1:             # 添加学员             self.add_student()         elif menu_num == 2:             # 删除学员             self.del_student()         elif menu_num == 3:             # 修改学员信息             self.modify_student()         elif menu_num == 4:             # 查询学员信息             self.search_student()         elif menu_num == 5:             # 显示所有学员信息             self.show_student()         elif menu_num == 6:             # 保存学员信息             self.save_student()         elif menu_num == 7:             # 退出系统             break # ⼆. 定义功能函数 # 2.1 显示功能菜单 @staticmethod def show_menu():     print("请选择如下功能-----------------")     print("1:添加学员")     print("2:删除学员")     print("3:修改学员信息")     print("4:查询学员信息")     print("5:显示所有学员信息")     print("6:保存学员信息")     print("7:退出系统") # 2.2 添加学员 def add_student(self):     pass # 2.3 删除学员 def del_student(self):     pass # 2.4 修改学员信息 def modify_student(self):     pass # 2.5 查询学员信息 def search_student(self):     pass # 2.6 显示所有学员信息 def show_student(self):     pass # 2.7 保存学员信息 def save_student(self):     pass # 2.8 加载学员信息 def load_student(self):     pass

3、main.py

# 1. 导⼊managerSystem模块from managerSystem import *# 2. 启动学员管理系统if __name__ == "__main__": student_manager = StudentManager() student_manager.run()

4、定义系统功能函数

4.1 添加功能

需求:⽤户输⼊学员姓名、性别、⼿机号,将学员添加到系统。步骤    ⽤户输⼊姓名、性别、⼿机号    创建该学员对象    将该学员对象添加到列表代码# 添加学员函数内部需要创建学员对象,故先导⼊student模块from student import *class StudentManager(object): ...... # 2.2 添加学员 def add_student(self):     # 1. ⽤户输⼊姓名、性别、⼿机号     name = input("请输⼊您的姓名:")     gender = input("请输⼊您的性别:")     tel = input("请输⼊您的⼿机号:")     # 2. 创建学员对象:先导⼊学员模块,再创建对象     student = Student(name, gender, tel)     # 3. 将该学员对象添加到列表     self.student_list.append(student)         # 打印信息     print(self.student_list)     print(student)

4.2 删除学员

需求:⽤户输⼊⽬标学员姓名,如果学员存在则删除该学员。步骤    ⽤户输⼊⽬标学员姓名    遍历学员数据列表,如果⽤户输⼊的学员姓名存在则删除,否则则提示该学员不存在。代码# 2.3 删除学员:删除指定姓名的学员 def del_student(self):     # 1. ⽤户输⼊⽬标学员姓名     del_name = input("请输⼊要删除的学员姓名:")         # 2. 如果⽤户输⼊的⽬标学员存在则删除,否则提示学员不存在     for i in self.student_list:         if i.name == del_name:             self.student_list.remove(i)             break     else:         print("查⽆此⼈!")     # 打印学员列表,验证删除功能     print(self.student_list)

4.3 修改学员信息

需求:⽤户输⼊⽬标学员姓名,如果学员存在则修改该学员信息。步骤    ⽤户输⼊⽬标学员姓名;    遍历学员数据列表,如果⽤户输⼊的学员姓名存在则修改学员的姓名、性别、⼿机号数据,否则则提示该学员不存在。代码# 2.4 修改学员信息 def modify_student(self):     # 1. ⽤户输⼊⽬标学员姓名     modify_name = input("请输⼊要修改的学员的姓名:")     # 2. 如果⽤户输⼊的⽬标学员存在则修改姓名、性别、⼿机号等数据,否则提示学员不存在     for i in self.student_list:         if i.name == modify_name:             i.name = input("请输⼊学员姓名:")             i.gender = input("请输⼊学员性别:")             i.tel = input("请输⼊学员⼿机号:")             print(f"修改该学员信息成功,姓名{i.name},性别{i.gender}, ⼿机号{i.tel}")             break     else:         print("查⽆此⼈!")

4.5 查询学员信息

需求:⽤户输⼊⽬标学员姓名,如果学员存在则打印该学员信息步骤    ⽤户输⼊⽬标学员姓名    遍历学员数据列表,如果⽤户输⼊的学员姓名存在则打印学员信息,否则提示该学员不存在。代码# 2.5 查询学员信息 def search_student(self):     # 1. ⽤户输⼊⽬标学员姓名     search_name = input("请输⼊要查询的学员的姓名:")     # 2. 如果⽤户输⼊的⽬标学员存在,则打印学员信息,否则提示学员不存在     for i in self.student_list:         if i.name == search_name:             print(f"姓名{i.name},性别{i.gender}, ⼿机号{i.tel}")             break     else:         print("查⽆此⼈!")

4.6 显示所有学员信息

打印所有学员信息步骤    遍历学员数据列表,打印所有学员信息代码# 2.6 显示所有学员信息 def show_student(self):     print("姓名\t性别\t⼿机号")     for i in self.student_list:         print(f"{i.name}\t{i.gender}\t{i.tel}")

4.7 保存学员信息

需求:将修改后的学员数据保存到存储数据的⽂件。步骤    打开⽂件    ⽂件写⼊数据    关闭⽂件思考1. ⽂件写⼊的数据是学员对象的内存地址吗?2. ⽂件内数据要求的数据类型是什么?拓展 __dict__class A(object): a = 0 def __init__(self): self.b = 1aa = A()# 返回类内部所有属性和⽅法对应的字典print(A.__dict__)# 返回实例属性和值组成的字典print(aa.__dict__)代码# 2.7 保存学员信息 def save_student(self):     # 1. 打开⽂件     f = open("student.data", "w")     # 2. ⽂件写⼊学员数据     # 注意1:⽂件写⼊的数据不能是学员对象的内存地址,需要把学员数据转换成列表字典数据再做存储     new_list = [i.__dict__ for i in self.student_list]     # [{"name": "aa", "gender": "nv", "tel": "111"}]     print(new_list)     # 注意2:⽂件内数据要求为字符串类型,故需要先转换数据类型为字符串才能⽂件写⼊数据     f.write(str(new_list))     # 3. 关闭⽂件     f.close()

4.8 加载学员信息

需求:每次进⼊系统后,修改的数据是⽂件⾥⾯的数据步骤    尝试以 "r" 模式打开学员数据⽂件,如果⽂件不存在则以 "w" 模式打开⽂件    如果⽂件存在则读取数据并存储数据        读取数据        转换数据类型为列表并转换列表内的字典为对象        存储学员数据到学员列表    关闭⽂件代码# 2.8 加载学员信息 def load_student(self):     # 尝试以"r"模式打开数据⽂件,⽂件不存在则提示⽤户;⽂件存在(没有异常)则读取数据     try:         f = open("student.data", "r")     except:         f = open("student.data", "w")     else:         # 1. 读取数据         data = f.read()         # 2. ⽂件中读取的数据都是字符串且字符串内部为字典数据,故需要转换数据类型再转换字典为对象后存储到学员列表         new_list = eval(data)         self.student_list = [Student(i["name"], i["gender"], i["tel"]) for i in new_list]     finally:         # 3. 关闭⽂件         f.close()

标签: 管理系统 存储数据

上一篇:焦点要闻:嵌入式:交换指令之SWP,MRS,MSR
下一篇:消息!脚本2分钟实现电话短信报警