注:
- 学员信息:姓名、性别和手机号
- 添加str魔法方法,方便查看学员对象信息 “””
class Students(object): def init(self, name, gender, tel): self.name = name self.gender = gender self.tel = tel
def __str__(self):
return f"该学员信息是:{self.name}\t{self.gender}\t{self.tel}"
test
if name == “main“: result = Students(“xiaoming”, “male”, 10086) print(result)
```python
# ManagerSystem.py
"""
1. 存储数据的位置:文件(students.data)
2. 存储数据的形式:列表存储学员对象
3. 系统功能:
3.1 添加学员信息
3.2 删除学员信息
3.3 修改学员信息
3.4 查询学员信息
3.5 显示所有学员信息
3.6 保存学员信息
3.7 退出系统
"""
from Students import *
class ManagerSystem(object):
def __init__(self):
self.student_list = [] # 存储列表
def run(self):
# 加载原文件信息
self.load_data()
while True:
# 显示功能菜单
self.show_menu()
# 捕获用户输入
menu_num = int(input("请输入你要执行的功能序号:"))
# 根据用户输入执行功能
# 添加学员信息
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_all()
# 保存学员信息
elif menu_num == 6:
self.save_data()
# 退出系统
elif menu_num == 7:
print("----系统退出!")
break
@staticmethod # 静态类方法显示
def show_menu():
print("以下是系统功能菜单:")
print("1.添加学员信息")
print("2.删除学员信息")
print("3.修改学员信息")
print("4.查询学员信息")
print("5.显示所有学员信息")
print("6.保存学员信息")
print("7.退出系统")
@staticmethod # 静态类方法显示
def student_modify_info_menu():
print("以下是修改的功能菜单:")
print("1.修改学员姓名")
print("2.修改学员性别")
print("3.修改学员手机号码")
def add_student(self):
name = input("请输入学生名字:")
gender = input("请输入学生性别:")
tel = input("请输入学生电话:")
# 将获取的数据用来创建对象
student = Students(name, gender, tel)
# 将对象追加到学生列表
self.student_list.append(student)
def del_student(self):
name = input("请输入要删除的学生姓名:")
if len(self.student_list) == 0:
print("文件数据为空,功能自动退出!")
return
for i in self.student_list:
if i.name == name:
self.student_list.remove(i)
break
else:
print("Error,该学生不存在!")
def modify_student(self):
name = input("请输入要修改的学生姓名:")
if len(self.student_list) == 0:
print("文件数据为空,功能自动退出!")
return
for i in self.student_list: # 遍历出来的是对象类型
if i.name == name:
self.student_modify_info_menu()
num = int(input("请输入需要修改的功能编号:"))
if num == 1:
i.name = input("请输入要修改的名字:")
elif num == 2:
i.gender = input("请输入要修改的性别:")
elif num == 3:
i.tel = input("请输入要修改的tel:")
break
else:
print("Error,该学生不存在!")
def search_student(self):
name = input("请输入要查询的学生姓名:")
if len(self.student_list) == 0:
print("文件数据为空,功能自动退出!")
return
for i in self.student_list:
if i.name == name:
print(f"姓名:{i.name},性别:{i.gender},tel:{i.tel}")
break
else:
print("Error,该学生不存在!")
def show_all(self):
print("姓名\t\t性别\t\ttel")
for i in self.student_list:
print(f"{i.name}\t\t{i.gender}\t\t{i.tel}")
def save_data(self):
fo = open("students.data", "w")
# 将类属性转换成字典形式
new_list = [i.__dict__ for i in self.student_list]
# test
# print(new_list)
# 以字符串的形式写入文件
fo.write(str(new_list))
fo.close()
def load_data(self):
# 打开文件
try:
fo = open("students.data", "r")
except:
fo = open("students.data", "w")
else:
# 读取文件
data = fo.read()
# test
# print(data)
if len(data) != 0: # 防止文件数据为空时,再次读取时,系统报错
# 字符串转字典对象
new_list = eval(data)
# test
# print(new_list)
# 提取字典中的值传入学生类属性并保存在学生信息列表
self.student_list = [Students(i["name"], i["gender"], i["tel"]) for i in new_list]
# 关闭文件
finally:
fo.close()
# main.py
from ManagerSystem import ManagerSystem
if __name__ == "__main__":
student_manager = ManagerSystem()
student_manager.run()