使⽤⾯向对象编程思想完成学生管理系统的开发,具体需求如下:
系统要求:学生数据存储在指定⽂件中
系统功能:添加学生、删除学生、修改学生信息、查询学生信息、显示所有学生信息、保存学生信息及退出系统等功能。
1、准备文件
创建项目目录:学生管理系统
需要py文件:
程序⼊⼝⽂件:Main.py
学员⽂件:Student.py
管理系统⽂件:StudentManager.py

2、代码实现
Main.py 为项目运行入口
from StudentManager import *
if __name__ == '__main__':
studentManager = StudentManager()
studentManager.run()
Student.py
学生信息包含:姓名、性别、⼿机号;所以在初始化方法中设置属性
添加 str 魔法⽅法,⽅便查看学生对象信息
class Student():
def __init__(self,name,sex,phone):
self.name = name
self.sex = sex
self.phone = phone
def __str__(self):
return f"{self.name},{self.sex},{self.phone}"
StudentManager.py用于实现对学生的各种操作
from Student import *
class StudentManager():
def __init__(self):
self.student_list = []
@staticmethod
def menu():
print('请选择如下功能-----------------')
print('1:添加学员')
print('2:删除学员')
print('3:修改学员信息')
print('4:查询学员信息')
print('5:显示所有学员信息')
print('6:保存学员信息')
print('7:退出系统')
def run(self):
self.load_student()
while True:
self.menu()
number = int(input("输入你要选择的菜单序号:"))
if number == 1:
self.add_student()
elif number == 2:
self.delete_student()
elif number ==3:
self.update_student()
elif number == 4:
self.search_student()
elif number == 5:
self.show_all()
elif number ==6:
self.save_student()
elif number == 7:
break
def add_student(self):
name = input("请输入学生姓名:")
sex = input("请输入学生性别:")
phone = input("请输入学生电话:")
for s in self.student_list:
if s.phone == phone :
print("该学生已存在~")
break
else:
ss = Student(name, sex, phone)
self.student_list.append(ss)
def update_student(self):
name = input("请输入学生姓名:")
for ss in self.student_list:
if name == ss.name:
ss.sex = input("请输入学生性别:")
ss.phone = input("请输入学生电话:")
print(f"修改学生{name}的性别为{ss.sex},电话为{ss.phone}")
break
else:
print("查无此人~")
def delete_student(self):
name = input("请输入要删除的学生姓名:")
for ss in self.student_list:
if name == ss.name:
self.student_list.remove(ss)
break
else:
print("查无此人~")
def search_student(self):
name = input("请输入要查询的学生姓名:")
for ss in self.student_list:
if name == ss.name:
print(f"学生{name}的性别为{ss.sex},电话为{ss.phone}")
break
else:
print("查无此人~")
def show_all(self):
print("姓名\t性别\t电话")
for ss in self.student_list:
print(f"{ss.name}\t{ss.sex}\t{ss.phone}")
def save_student(self):
file = open("student.txt",'w')
#方法一
for ss in self.student_list:
file.write(str(ss.__dict__)+"\n")
# 方法二 ⽂件写⼊的数据不能是学员对象的内存地址,需要把学员数据转换成列表字典数据再做存储
# data_list = [s.__dict__ for s in self.student_list]
# print(data_list)
#⽂件内数据要求为字符串类型,故需要先转换数据类型为字符串才能⽂件写⼊数据
# file.write(str(data_list))
file.close()
def load_student(self):
try:
file = open("student.txt","r")
except:
file = open("student.txt","w")
else:
data = file.read()
if len(data)>0:
stu_list = eval(data)
self.student_list = [Student(i['name'],i['sex'],i['phone']) for i in stu_list]
else:
self.student_list =[]
finally:
file.close()
网友评论