题目描述:
请你设计一个简单的学生成绩管理系统,要求能够进行以下操作:
定义类:
Student 类,包含以下属性:
name: 学生姓名id: 学生学号grades: 存储学生成绩的字典,键为科目,值为成绩StudentManagementSystem 类,包含学生列表,并实现以下方法:
add_student(name, id): 添加学生add_grade(student_id, subject, grade): 添加成绩get_average_grade(student_id): 计算并返回学生的平均成绩print_report(): 打印所有学生的成绩单实现函数:
测试系统:
class Student:
def __init__(self, name, student_id):
self.name = name
self.student_id = student_id
self.grades = {}
def add_grade(self, subject, grade):
self.grades[subject] = grade
def get_average_grade(self):
if not self.grades:
return 0
return sum(self.grades.values()) / len(self.grades)
class StudentManagementSystem:
def __init__(self):
self.students = {}
def add_student(self, name, student_id):
if student_id in self.students:
print(f"学生ID {student_id} 已存在。")
else:
self.students[student_id] = Student(name, student_id)
print(f"添加学生:{name} (ID: {student_id})")
def add_grade(self, student_id, subject, grade):
if student_id not in self.students:
print(f"学生ID {student_id} 不存在。")
else:
self.students[student_id].add_grade(subject, grade)
print(f"为学生ID {student_id} 添加成绩:{subject} - {grade}")
def get_average_grade(self, student_id):
if student_id not in self.students:
print(f"学生ID {student_id} 不存在。")
return None
else:
average_grade = self.students[student_id].get_average_grade()
print(f"学生ID {student_id} 的平均成绩是: {average_grade:.2f}")
return average_grade
def print_report(self):
for student_id, student in self.students.items():
print(f"学生: {student.name} (ID: {student_id})")
for subject, grade in student.grades.items():
print(f" {subject}: {grade}")
print(f" 平均成绩: {student.get_average_grade():.2f}")
print("-" * 20)
# 测试代码
system = StudentManagementSystem()
system.add_student("Alice", 1)
system.add_student("Bob", 2)
system.add_grade(1, "Math", 90)
system.add_grade(1, "English", 85)
system.add_grade(2, "Math", 78)
system.add_grade(2, "English", 82)
system.get_average_grade(1)
system.get_average_grade(2)
system.print_report()
Student 和 StudentManagementSystem 类,封装了学生信息和管理系统的功能。