编写一个学生管理系统,使用面向对象编程思想
系统支持4个功能:
查询全部学生
新增一个学生
根据学号修改成绩
根据学号删除学生
该项目分为3个类,学生类、学生数据库类以及学生管理系统类
学生类有4个属性,学号、姓名、性别、成绩以及一个获取自身信息的函数
学生数据库类用于存储学生类实例,并提供增删改查各种函数
学生管理系统类用于展示菜单、接收用户输入、展示功能结果
学生学号不允许重复,学生顺序有序
具体代码实现如下,分别对集中状态进行判断输出实例就行,按照面向对象的思想,望采纳!
class Student:
def __init__(self, id, name, gender, score):
self.id = id
self.name = name
self.gender = gender
self.score = score
def get_info(self):
return f"学号:{self.id},姓名:{self.name},性别:{self.gender},成绩:{self.score}"
class StudentDB:
def __init__(self):
self.students = []
def add_student(self, student):
for s in self.students:
if s.id == student.id:
return False
self.students.append(student)
self.students.sort(key=lambda x: x.id)
return True
def remove_student(self, id):
for i, s in enumerate(self.students):
if s.id == id:
self.students.pop(i)
return True
return False
def update_score(self, id, score):
for s in self.students:
if s.id == id:
s.score = score
return True
return False
def query_all_students(self):
return [s.get_info() for s in self.students]
class StudentManagementSystem:
def __init__(self):
self.db = StudentDB()
def show_menu(self):
print("1. 查询全部学生")
print("2. 新增一个学生")
print("3. 根据学号修改成绩")
print("4. 根据学号删除学生")
print("0. 退出系统")
def run(self):
while True:
self.show_menu()
choice = input("请输入您的选择:")
if choice == "1":
students = self.db.query_all_students()
for s in students:
print(s)
elif choice == "2":
id = input("请输入学号:")
name = input("请输入姓名:")
gender = input("请输入性别:")
score = input("请输入成绩:")
student = Student(id, name, gender, score)
if self.db.add_student(student):
print("添加成功!")
else:
print("学号已存在,添加失败!")
elif choice == "3":
id = input("请输入学号:")
score = input("请输入成绩:")
if self.db.update_score(id, score):
print("修改成功!")
else:
print("学号不存在,修改失败!")
elif choice == "4":
id = input("请输入学号:")
if self.db.remove_student(id):
print("删除成功!")
else:
print("学号不存在,删除失败!")
elif choice == "0":
print("谢谢使用,再见!")
break
else:
print("输入错误,请重新输入!")
if __name__ == "__main__":
system = StudentManagementSystem()
system.run()