面向对象学员管理系统
添加
删除
修改
查询
系统需求
使用面向对象编程思想完成学员管理系统的开发
学员数据储存在文件中
系统功能:添加学员信息,删除学员信息,修改学员信息,查询学员信息,显示学员信息,保存学员信息,退出系统
注意:为了方便维护代码,一般一个角色一个程序文件,项目入口程序,习惯为main.py
创建程序文件
创建目录名称:StudentManangerSystem
程序文件名称:入口文件-main.py,学员文件-student.py,管理系统文件-mananagerSystem.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
加载数据
修改数据后保存文件
存储数据形式:列表存储学员对象
系统功能
添加学员
删除学员
修改学员
查询学员
显示所有学员
保存学员
- 加载数据
- 显示功能菜单
- 用户输入功能序号执行不同的功能
- 定义系统功能函数,添加,删除学员等
序号功能列表
- 输入1表示添加学员功能
- 输入2表示删除学员功能
- 输入3表示修改学员功能
- 输入4表示查询学员功能
- 输入5表示显示所有学员
- 输入6表示保存学员信息
- 输入7表示退出系统
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()
作者:阿超
原创公众号:『Python日常笔记』,专注于 Python爬虫等技术栈和有益的程序人生,会将一些平时的日常笔记都慢慢整理起来,也期待你的关注和阿超一起学习,公众号回复【csdn】优质资源。