赞
踩
目录
系统需求:学员的学员信息需要存储在文件中
系统功能:添加学员,删除学员,修改学员信息,查询学员信息,显示学员信息,保存学员信息,以及退出系统等功能。
角色分析
学员
工作过程中需要注意的地方:
为了方便维护代码,一般一个角色一个程序文件
项目中要有主程序入口,习惯命名为main.py
创建项目目录: 比如说:StudentManageSystem
程序文件:
程序入口文件:main.py
学员文件:students.py
管理系统文件:managersystem.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}'
-
-
- if __name__ == '__main__':
- yunxing = Student('Peng', '男', 21)
- print(yunxing)
- yunxing1 = Student('Cheng', '男', 19)
- print(yunxing1)
'运行
需求:
系统功能
添加学员
删除学员
修改学员
查询学员
显示所有学员
保存学员
退出系统
存储数据文件的位置:文件(student.data)
加载学员信息
修改数据后保存在文件中
存储数据的形式:在系统中列表存储学员对象,数据文件中字典加列表组合。
代码:
- class StudentManager(object):
- def __init__(self):
- # 存储数据的列表
- self.student_list = []
'运行
需求:系统功能循环使用,用户输入不同的功能序号执行不同的功能
步骤:
定义程序入口
加载学员信息
显示功能菜单
用户输入功能序号
根据用户输入的不同功能序号执行不同的功能
定义系统功能函数,例如增删改查等
代码:
- class StudentManager(object):
- def __init__(self):
- # 存储数据的列表
- self.student_list = []
-
- def run(self):
- """程序入口函数,也就是程序运行起来之后执行的功能"""
- # 加载学员信息
- self.load_student()
- while True:
- # 显示功能菜单
- self.show_menu()
- # 判断输入的序号正不正确
- try:
- # 用户输入功能序号
- number = int(input('请输入你要执行的功能序号:'))
- except:
- print("你输入的序号有误,请输入正确的序号")
- continue
- else:
- # 根据用户输入的功能序号执行对应的功能
- if number == 1:
- # 添加学员
- self.add_student()
- elif number == 2:
- # 删除学员
- self.del_student()
- elif number == 3:
- # 修改学员
- self.modify_student()
- elif number == 4:
- # 查询学员
- self.search_student()
- elif number == 5:
- # 显示所有学员
- self.show_student()
- elif number == 6:
- # 保存学员
- self.save_student()
- elif number == 7:
- # 退出系统
- break
- def modify_student(self):
- pass
-
- def search_student(self):
- pass
-
- def show_student(self):
- pass
-
- def save_student(self):
- pass
-
- def del_student(self):
- pass
-
- def add_student(self):
- pass
-
- @staticmethod
- def show_menu():
- print('请输入如下功能序号:')
- print('1:添加学员功能')
- print('2:删除学员功能')
- print('3:修改学员功能')
- print('4:查询学员功能')
- print('5:显示所有学员功能')
- print('6:保存学员功能')
- print('7:退出系统')
-
- def load_student(self):
- pass
代码:
- # 导入managersystem模块
- import managersystem
-
-
- if __name__ == '__main__':
- # 启动学员管理系统
- student_manager = managersystem.StudentManager()
- student_manager.run()
需求:用户输入学员信息,将用户输入的学员信息添加到系统模块中。
步骤:
用户输入姓名,性别,电话
创建学员对象
将学员对象添加到系统中
代码
- 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)
'运行
步骤
用户输入姓名
遍历学员列表,如果存在即删除,如果不存在即提示学员不存在
代码
- def del_student(self):
- # - 用户输入姓名
- del_name = input('请输入您要删除的学员的姓名:')
- # - 遍历学员列表,如果存在即删除,如果不存在即提示学员不存在
- for i in self.student_list:
- if del_name == i.name:
- self.student_list.remove(i)
- print('学员已删除', del_name)
- break
- else:
- print("您要删除的学员不存在")
'运行
用户输入姓名
遍历列表,如果存在就修改,如果不存在就提示不存在
代码
- def modify_student(self):
- # - 用户输入姓名
- modify_name = input('请输入您要修改的学员姓名:')
- # - 遍历列表,如果存在就修改,如果不存在就提示不存在
- for i in self.student_list:
- if modify_name == i.name:
- i.name = input('姓名:')
- i.gender = input('性别:')
- i.tel = input('电话:')
- print(f"学员信息修改成功,姓名{i.name},性别{i.gender},电话{i.tel}")
- break
- else:
- print('您要修改的学员信息不存在')
'运行
需求:将学员的信息保存到存储数据的student.data中
步骤:
打开文件
写入数据
关闭文件
思考:
文件写入的时候,写入的数据是学员的具体信息,还是学员的对象地址
文件数据要求的数据类型是啥?
代码
- def save_student(self):
- # - 打开文件
- f = open('student.data', 'w')
- # - 写入数据
- # 注意1:文件写入不能是学员对象的内存地址,必须是具体学员信息,需要把学员信息转换成字典再存储
- new_list = [i.__dict__ for i in self.student_list]
- print(new_list)
- # 文件内的数据要求为字符串儿类型,故存入数据前需要强转
- f.write(str(new_list))
- # - 关闭文件
- f.close()
'运行
用户输入姓名
遍历列表
代码
- def search_student(self):
- # 用户输入姓名
- search_name = input('请输入您要查找的学员的姓名:')
- # 遍历列表,有则展示,没有则提示无此人
- for i in self.student_list:
- if search_name == i.name:
- print(f"姓名:{i.name},性别:{i.gender},电话:{i.tel}")
- break
- else:
- print('查无此人!')
'运行
代码:
- def show_student(self):
- for i in self.student_list:
- print(f"姓名:{i.name},性别:{i.gender},电话:{i.tel}")
'运行
需求:每次进入系统的时候,修改和查询的都是文件里面的数据,添加在是在加载文件数据之后再添加
步骤:
尝试以r的方式打开文件,如果有误就以w的方式打开文件
如果文件存在则读取数据并且加载到系统中
读取数据
转换数据类型为列表,并且转换列表里面的字典为学员对象
存储学员对象到列表中
关闭文件
代码
- 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)
- # for i in new_list:
- # student = Student(i['name'], i['gender'], i['tel'])
- # self.student_list.append(student)
- self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
- finally:
- # - 关闭文件
- f.close()
'运行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。