面向对象版学员管理系统

要求:学员数据存储在文件中,添加、删除、修改学员信息,查询学员信息,显示所有学员信息,保存学员信息以及退出系统

扩展:_dict_:收集类对象或实例对象的属性和方法以及对应的值,从而返回一个字典

程序主要分为三部分 1、学员信息类 2、main主程序 3、学员管理类

image.png

在学员类python文件中创建学员类 代码如下:

#学生模块 #定义学员类 class Student(object): def _init_(self,name,gender,tel): self.name = name self.gender = gender self.tel = tel

▼
text
复制代码
def __str__(self): return f'{self.name},{self.gender},{self.tel}'

在学员管理类实现 代码如下:

#引入学员类、 from student import * #系统管理模块 """ 存储数据的位置:文件student.data 加载文件数据 修改数据后保存到文件 列表存储数据 增删改查学员,显示所有学员,保存学员信息 退出系统 """ #1、程序入口函数 class StudentManager(object): def init(self): #存储数据所用的列表 self.student_list = [] #定义程序入口,启动后执行的函数 def run(self): #1、从文件中加载学员信息 self.load_student()

▼
text
复制代码
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、退出系统") print("-" * 10 ) #2、添加学员 def add_student(self): name = input("请输入姓名:") gender = input('请输入性别:') tel = input('请输入手机号:') #创建学员对象 student = Student(name,gender,tel) #将学员信息添加到学院列表内 self.student_list.append(student) print(self.student_list) print(student) #3、删除学员 def del_student(self): del_name = input('请输入要删除的学员姓名: ') for i in self.student_list: if i.name == del_name: self.student_list.remove(i) #删除完成后退出循环 break #循环结束后都没有删除一个学员 else: print('要删除的学员不存在!') print(self.student_list) #4、修改学员信息 def modify_student(self): modify_name = input("输入要修改的学员姓名: ") 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('学员存不存在') #5、查询学员信息 def search_student(self): search_name = input('请输入要查询的学员: ') for i in self.student_list: if i.name == search_name: print(f'学员的名字为{i.name},性别为{i.gender},手机号为{i.tel}') break else: print('查无此人') #6、显示所有学员信息 def show_student(self): print('姓名\t性别\t手机号') for i in self.student_list: print(f'{i.name}\t{i.gender}\t{i.tel}') #7、保存学员信息,将学员列表内信息写入到列表中,选择该功能后在写入文件 def save_student(self): #在文件写入数据时写入的为地址信息,需要获取学员对象的各个属性以及值,用__dict__转换为字典类型 #1、打开文件 f = open('student.data','w') #2、写入数据 文件内数据为字符串 #列表中是学院对象转换为字典 new_list = [i.__dict__ for i in self.student_list] #文件中为字符串类型 f.write(str(new_list)) #3、关闭文件 f.close() #8、加载学员信息 def load_student(self): #以'r'模式打开文件,如果文件不存在则以'w'模式打开,如果文件存在则读取数据并存储数据 #转换数据类型为列表并转换列表内的字典为对象,存储到学员数据到学院列表中,关闭文件 try: f = open('student.data','r') except: f = open('student.data', 'w') else: #无异常时执行的代码 #读数据,字符串类型 data = f.read() #将字符串类型转换成列表类型 new_list = eval(data) #列表推导式遍历new_list,将返回的值一创建对象的方返回后复制给学表列表用来在系统内存储数据 self.student_list = [Student(i['name'],i['gender'],i['tel']) for i in new_list] finally: f.close()

main中只创建学员管理类,之后调用run方法启动 代码如下:

#主要导入模块调用 #1、导入managerSystem模块 from managerSystem import *

#2、启动学员管理系统 创建对象调用run方法 if name == "main": student_manager = StudentManager()

student_manager.run()

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP