编写一个简单的学生成绩管理程序,每个学生记录包含学号、姓名、课程和分数,采用顺序表存储,完成以下功能:①屏幕显示所有学生记录②输入一个学生记录③按学号和课程删除一个学生记录④按学号排序并输出所有学生记录⑤按课程排序,对于一门课程,学生按分数递减排序
时间: 2023-05-30 09:06:16 浏览: 276
以下是Python代码实现:
```python
class Student:
def __init__(self, id, name, course, score):
self.id = id
self.name = name
self.course = course
self.score = score
class StudentManager:
def __init__(self):
self.students = []
def display(self):
for student in self.students:
print("学号:{}, 姓名:{}, 课程:{}, 分数:{}".format(student.id, student.name, student.course, student.score))
def add(self, id, name, course, score):
student = Student(id, name, course, score)
self.students.append(student)
def delete(self, id=None, course=None):
if id:
for student in self.students:
if student.id == id:
self.students.remove(student)
break
elif course:
for student in self.students:
if student.course == course:
self.students.remove(student)
def sort_by_id(self):
self.students.sort(key=lambda x: x.id)
def sort_by_course(self, course):
course_students = [student for student in self.students if student.course == course]
course_students.sort(key=lambda x: x.score, reverse=True)
for student in course_students:
print("学号:{}, 姓名:{}, 课程:{}, 分数:{}".format(student.id, student.name, student.course, student.score))
```
使用示例:
```python
manager = StudentManager()
manager.add(1, "张三", "数学", 90)
manager.add(2, "李四", "英语", 80)
manager.add(3, "王五", "数学", 85)
manager.display()
# 输出:
# 学号:1, 姓名:张三, 课程:数学, 分数:90
# 学号:2, 姓名:李四, 课程:英语, 分数:80
# 学号:3, 姓名:王五, 课程:数学, 分数:85
manager.delete(id=2)
manager.display()
# 输出:
# 学号:1, 姓名:张三, 课程:数学, 分数:90
# 学号:3, 姓名:王五, 课程:数学, 分数:85
manager.sort_by_id()
manager.display()
# 输出:
# 学号:1, 姓名:张三, 课程:数学, 分数:90
# 学号:3, 姓名:王五, 课程:数学, 分数:85
manager.sort_by_course("数学")
# 输出:
# 学号:1, 姓名:张三, 课程:数学, 分数:90
# 学号:3, 姓名:王五, 课程:数学, 分数:85
```
阅读全文