添加
删除
修改
查询
使用面向对象编程思想完成学员管理系统的开发
学员数据储存在文件中
系统功能:添加学员信息,删除学员信息,修改学员信息,查询学员信息,显示学员信息,保存学员信息,退出系统
注意:为了方便维护代码,一般一个角色一个程序文件,项目入口程序,习惯为main.py
Student.py
class Student(object):
def __init__(self, name, age, no):
self.name = name
self.age = age
self.no = no
def __str__(self):
return f"{self.name},{self.age},{self.no}"
功能实现步骤
存储数据的位置:student.data
加载数据
修改数据后保存文件
存储数据形式:列表存储学员对象
系统功能
添加学员
删除学员
修改学员
查询学员
显示所有学员
保存学员
序号功能列表
mananagerSystem.py代码如下:
from student import *
class MananagerSystem(object):
def __init__(self):
self.studenData = []
def run(self):
# 加载学员信息
self.loadStudents()
while True:
# 显示功能序号
self.showNumber()
# 输入序号
num = input("请输入功能序号:")
# 输入1表示添加学员功能
if num == "1":
self.addStudent()
# 输入2表示删除学员功能
elif num == "2":
self.delStudent()
# 输入3表示修改学员功能
elif num == "3":
self.updateStudent()
# 输入4表示查询学员功能
elif num == "4":
self.searchStudent()
# 输入5表示显示所有学员
elif num == "5":
self.showStudent()
# 输入6表示保存学员信息
elif num == "6":
self.saveStudent()
# 输入7表示退出系统
elif num == "7":
break
def showNumber(self):
print("功能序号描述:")
print("\t1.添加学员")
print("\t2.删除学员功能")
print("\t3.修改学员功能")
print("\t4.查询学员功能")
print("\t5.显示所有学员")
print("\t6.保存学员信息")
print("\t7.退出系统")
# 添加学员
def addStudent(self):
pass
# 删除学员功能
def delStudent(self):
pass
# 修改学员功能
def updateStudent(self):
pass
# 查询学员功能
def searchStudent(self):
pass
# 显示所有学员
def showStudent(self):
pass
# 保存学员信息
def saveStudent(self):
pass
# 加载学员信息
def loadStudents(self):
pass
后续就开始补全各个功能代码.
用户输入姓名,性别,学号
创建学员对象
将该学员对象添加到列表
# 添加学员
def addStudent(self):
name = input("请输入学员名称:")
age = input("请输入学员年龄:")
no = input("请输入学员学号:")
stu = Student(name, age, no)
删除学员功能
用户输入学员姓名
遍历学员数据列表
如果用户输入的学员姓名存在则删除,如果不存在提示学员不存在
# 删除学员功能
def delStudent(self):
name = input("请输入学员名称:")
for stu in self.studenData:
if stu.name == name:
self.studenData.remove(stu)
print("删除成功")
break
else:
print("学员不存在")
用户输入目标学员姓名,遍历学员数据列表,如果用户学员存在则修改姓名,年龄,学号,否则提示该学员不存在
# 修改学员功能
def updateStudent(self):
name = input("请输入学员名称:")
for stu in self.studenData:
if stu.name == name:
yes = input(f"需要修改的学员信息:{stu.name},{stu.age},{stu.no},是否继续修改,是:y,否:其它")
if yes == "y":
name = input("请输入学员名称:")
age = input("请输入学员年龄:")
no = input("请输入学员学号:")
stu.name = name
stu.age = age
stu.no = no
break
else:
print("学员不存在")
用户输入学员名称,遍历数据列表,如果学员存在则打印,如果不存在则打印学员不存在
# 查询学员功能
def searchStudent(self):
name = input("请输入学员名称:")
for stu in self.studenData:
if stu.name == name:
print(f"需要修改的学员信息:{stu.name},{stu.age},{stu.no},是否继续修改,是:y,否:其它")
break
else:
print("学员不存在")
遍历列表,循环打印学员信息
# 显示所有学员
def showStudent(self):
print(f"姓名\t性别\t手机号")
for stu in self.studenData:
print(f"{stu.name}\t{stu.age}\t{stu.no}")
打开文件,文件写入数据,关闭文件,保存文件时可以使用列表推导式将实体对象推到成字典类型,__dict__这个属性是可以将实体对象变为字典类型
# 保存学员信息
def saveStudent(self):
try:
f = open("student.data", "w")
except Exception as error:
print(error)
else:
# 列表推导式将实体对象推到成字典类型
stu_list = [stu.__dict__ for stu in self.studenData]
print(stu_list)
print(str(stu_list))
# 将列表对象转换成string类型
f.write(str(stu_list))
finally:
f.close()
打开文件如果文件不存在则创建文件,如果文件存在,然后读取数据,将数据转换成字典类型的序列,然后展示
# 加载学员信息
def loadStudents(self):
try:
# 读取数据
f = open("student.data", "r")
except:
f = open("student.data", "w")
else:
stu_list = f.read()
# 将读取出来的数据转换成字典类型的序列
new_list = eval(stu_list)
# 再将字典序列推导式成对象序列展示
self.studenData = [Student(stu["name"],stu["age"],stu["no"]) for stu in new_list]
finally:
f.close()
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务