学生管理系统(面向对象编程)
学生管理系统(面向对象编程)
main模块
import StudentManager
if __name__ == '__main__':
s1 = StudentManager.StudentManager()
s1.run()
Student类
class Student(object):
# 定义一些学生的公共属性 : 姓名、学号、性别、 年级
def __init__(self, name, student_id, gender, grade):
self.name = name
self.student_id = student_id
self.gender = gender
self.grade = grade
# 在打印学生对象的时候显示学生信息
def __str__(self):
return f'姓名:{self.name} 学号:{self.student_id} 性别:{self.gender} 年级:{self.grade}'
if __name__ == '__main__':
s1 = Student('莫航', 3120006883, '男', '20应数1班')
print(s1)
StudentManeger类
from Student import Student
class StudentManager(object):
def __init__(self):
self.students = [] # 创建一个学生列表用来存储学生对象
# 定义一个静态方法来实现打印学生管理的功能菜单
@staticmethod
def menu():
print('-' * 40)
print('欢迎使用学生管理系统 lv2.0')
print('【1】添加学生信息')
print('【2】删除学生信息')
print('【3】修改学生信息')
print('【4】查看学生信息')
print('【5】循环遍历查看所有学生信息')
print('【6】保存数据到文件中')
print('【7】退出系统并保存更新数据')
print('-' * 40)
# 定义一个系统启动的功能
def run(self):
# 应该在每次启动学生系统的系统时候加载学生信息
self.load_data_to_manager()
while True:
self.menu()
choice = int(input('请输入功能选择:'))
if choice == 1:
self.add_student()
elif choice == 2:
self.del_student()
elif choice == 3:
self.edit_student()
elif choice == 4:
self.find_student()
elif choice == 5:
self.visit_student()
elif choice == 6:
self.save_data_to_file()
elif choice == 7:
print('成功退出学生管理系统,欢迎下次使用!')
self.save_data_to_file() # 在退出学生管理系统之前保存一下信息
break
else:
print('您输入的功能编号有误,请重新输入:')
# 添加学生信息的功能(应该是创建一个学生对象)
def add_student(self):
name = input('请输入学生的姓名:')
student_id = int(input('请输入学生的学号:'))
gender = input('请输入学生的性别:')
grade = input('请输入学生的年级:')
student1 = Student(name, student_id, gender, grade)
self.students.append(student1) # 将添加的学生的对象存储到学生列表中
# 删除学生信息的功能(应该是删除一个学生对象)根据学号的唯一性
def del_student(self):
student_id = int(input('请输入要删除的学生的学号:'))
for student in self.students:
if student.student_id == student_id:
self.students.remove(student)
print(f'成功删除学号为{student_id}的学生信息!')
break
else:
print(f'未找到学号为{student_id}的学生!')
# 修改学生信息的功能
def edit_student(self):
student_id = int(input('请输入要修改的学生的学号:'))
for student in self.students:
if student.student_id == student_id:
student.student_id = int(input('请输入修改后的学生的学号:'))
student.name = input('请输入修改后的学生的姓名:')
student.grade = input('请输入修改后的学生的年级:')
student.gender = input("请输入修改后的学生的性别:")
break
else:
print(f'很抱歉,未找到学号为{student_id}的学生!')
# 查看学生信息的功能
def find_student(self):
student_id = int(input('请你输入要查看的学生的学号:'))
for student in self.students:
if student.student_id == student_id:
print(f'姓名:{student.name} 学号:{student.student_id} 性别:{student.gender} 年级:{student.grade}')
break
else:
print(f'很抱歉,未找到学号为{student_id}的学生!')
# 遍历查看所有学生信息的功能
def visit_student(self):
if len(self.students) > 0:
for student in self.students:
print(student)
# print(f'姓名:{student.name} 学号:{student.student_id} 性别:{student.gender} 年级:{student.grade}')
# 保存学生信息的功能(保存到文件中)
def restore(self):
file = open('student.txt', 'w', encoding='utf-8')
for student in self.students:
student_message = f'{student.name},{student.student_id},{student.gender},{student.grade}'
file.write(student_message)
file.close()
# 定义一个加载文件中的数据到系统的功能
def load_data(self):
file1 = open('student.txt', 'r', encoding='utf-8')
content = file1.readlines()
for i in content:
i.strip()
content1 = i.split(',')
if len(content1) > 1:
name = content1[0]
student_id = int(content1[1])
gender = content1[2]
grade = content1[3]
student = Student(name, student_id, gender, grade)
self.students.append(student)
file1.close()
# 改进保存数据的方法,效果一样
def save_data_to_file(self):
file1 = open('student1.txt', 'w', encoding='utf-8')
# data = self.students # 不能这样保存,因为里面是一个个对象
# __dict__ 可以将对象转化为字典的形式
data = [i.__dict__ for i in self.students] # 数据形如[{},{},{}]
# print(data)
file1.write(str(data))
file1.close()
# 保存数据的格式改变,加载数据的方法也需要改变
def load_data_to_manager(self):
file2 = open('student1.txt', 'r', encoding='utf-8')
data = eval(file2.read()) # 使用eval()转换数据为列表形式,不能使用list,会将每一个元素都给分解
# print(data)
if len(data) > 0:
for i in data:
name = i['name']
student_id = i['student_id']
gender = i['gender']
grade = i['grade']
self.students.append(Student(name, student_id, gender, grade))
file2.close()
if __name__ == '__main__':
manager = StudentManager()
# manager.run()
manager.load_data()
manager.save_data_to_file()
manager.load_data_to_manager()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现