编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。每个学生要学习若干课程,每门课程有平时成绩、其中考试成绩、实习成绩、期末考试成绩以及总评成绩等多个成绩,其中平时成绩的数目不定(因为不同课程的教师布置的平时作业不同),而总评成绩是其它成绩的平均值。请先设计合理的类存放这些信息,然后设计程序完成以下功能: (1) 列出某个学生的所有成绩; (2) 列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分; (3) 分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等。
时间: 2023-06-17 14:05:06 浏览: 281
基于B+树的学生成绩管理系统.rar
5星 · 资源好评率100%
以下是一个基本的学生成绩管理系统的类设计:
```python
class Student:
def __init__(self, student_id, name, age):
self.student_id = student_id
self.name = name
self.age = age
self.courses = {}
def add_course(self, course):
self.courses[course.name] = course
def get_all_grades(self):
print(f"学号:{self.student_id} 姓名:{self.name} 年龄:{self.age}")
for course in self.courses.values():
print(f"课程名称:{course.name}")
for grade in course.grades:
print(f"{grade.name}:{grade.value}")
print(f"总评成绩:{course.get_average_grade()}")
class Course:
def __init__(self, name):
self.name = name
self.grades = []
def add_grade(self, grade):
self.grades.append(grade)
def get_average_grade(self):
total = 0
for grade in self.grades:
total += grade.value
return total / len(self.grades)
class Grade:
def __init__(self, name, value):
self.name = name
self.value = value
```
接下来,我们可以使用这些类来实现我们需要的功能:
```python
# 创建学生
s1 = Student("001", "张三", 18)
s2 = Student("002", "李四", 19)
# 创建课程
c1 = Course("数学")
c2 = Course("英语")
# 给学生添加课程
s1.add_course(c1)
s1.add_course(c2)
s2.add_course(c1)
# 给课程添加成绩
c1.add_grade(Grade("平时成绩", 80))
c1.add_grade(Grade("其中考试成绩", 90))
c1.add_grade(Grade("实习成绩", 85))
c1.add_grade(Grade("期末考试成绩", 95))
c2.add_grade(Grade("平时成绩", 90))
c2.add_grade(Grade("其中考试成绩", 85))
c2.add_grade(Grade("实习成绩", 80))
c2.add_grade(Grade("期末考试成绩", 90))
# 列出某个学生的所有成绩
s1.get_all_grades()
# 列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分
for student in [s1, s2]:
for course in student.courses.values():
print(f"{student.name}在{course.name}中的总评成绩为{course.get_average_grade()}")
all_grades = []
for student in [s1, s2]:
for course in student.courses.values():
all_grades.append(course.get_average_grade())
print(f"所有学生总评成绩的总评分为{sum(all_grades)}")
# 分区段统计某门课程的学生总评成绩
course_name = "数学"
grades = []
for student in [s1, s2]:
if course_name in student.courses.keys():
course = student.courses[course_name]
grades.append(course.get_average_grade())
print(f"{course_name}课程60分以下的学生人数为{len([g for g in grades if g < 60])}")
print(f"{course_name}课程60至70分的学生人数为{len([g for g in grades if 60 <= g < 70])}")
print(f"{course_name}课程70至80分的学生人数为{len([g for g in grades if 70 <= g < 80])}")
print(f"{course_name}课程80分以上的学生人数为{len([g for g in grades if g >= 80])}")
```
阅读全文