实现学生类(学生姓名,学号)、选课记录类(课程号,学生号,成绩)、课程类(课程号,课程名)。实现一个某个学校的学校学生成绩单类(学校名称,多学生,多课程,多人成绩) 1自行初始化学校学生成绩单; 2根据输入的学生姓名 可以得到该学生的所选的课程3根据输入的课程名称可以得到选该课的学生4根据输入的课程名称每一门课程的平均分5根据输入的学号,输出该学生的的平均分6 可以使用vector模板 find模板函数7学生的的平均分大于60的所有学生
时间: 2024-02-18 14:03:47 浏览: 17
好的,我可以帮您实现这个需求。下面是代码实现:
```python
class Student:
def __init__(self, name, id):
self.name = name
self.id = id
class Course:
def __init__(self, course_id, course_name):
self.course_id = course_id
self.course_name = course_name
class Record:
def __init__(self, course_id, student_id, score):
self.course_id = course_id
self.student_id = student_id
self.score = score
class SchoolScore:
def __init__(self, school_name, students, courses, records):
self.school_name = school_name
self.students = students
self.courses = courses
self.records = records
def get_courses_by_student_name(self, student_name):
student_id = [s.id for s in self.students if s.name == student_name]
if not student_id:
return []
return [c.course_name for c in self.courses if c.course_id in [r.course_id for r in self.records if r.student_id == student_id[0]]]
def get_students_by_course_name(self, course_name):
course_id = [c.course_id for c in self.courses if c.course_name == course_name]
if not course_id:
return []
return [s.name for s in self.students if s.id in [r.student_id for r in self.records if r.course_id == course_id[0]]]
def get_average_score_by_course_name(self, course_name):
course_id = [c.course_id for c in self.courses if c.course_name == course_name]
if not course_id:
return 0
scores = [r.score for r in self.records if r.course_id == course_id[0]]
return sum(scores) / len(scores) if scores else 0
def get_average_score_by_student_id(self, student_id):
scores = [r.score for r in self.records if r.student_id == student_id]
return sum(scores) / len(scores) if scores else 0
def get_students_by_average_score(self, score):
return [s.name for s in self.students if self.get_average_score_by_student_id(s.id) > score]
```
这个类包括四个类和一个学校学生成绩单类。在学校学生成绩单类中,我们可以根据输入的学生姓名得到该学生的所选课程,根据输入的课程名称得到选该课的学生,根据输入的课程名称得到每一门课程的平均分,根据输入的学号输出该学生的平均分,以及得到所有平均分大于60的学生。我们可以使用 Python 中的列表和循环来实现这些功能,也可以使用 find 模板函数实现查找。