还拥有年龄的排序函数,某个学生全科目的平均值,退出系统
时间: 2024-02-17 08:00:49 浏览: 56
好的,我们可以在学生管理系统中增加这些功能。
首先,我们可以实现一个按照年龄排序的函数。这里我们使用 Python 内置的 `sorted` 函数,并指定按照学生的年龄进行排序。
```python
class StudentManagementSystem:
# 省略之前的代码
def query_age_sort(self):
students = sorted(self.students, key=lambda student: student.age)
return students
# 省略之后的代码
```
接下来,我们可以实现一个函数,来计算某个学生全科目的平均值。
```python
class StudentManagementSystem:
# 省略之前的代码
def query_student_average(self, id):
scores = []
for student in self.students:
if student.id == id:
scores.append(student.score)
if len(scores) > 0:
return sum(scores) / len(scores)
else:
return 0
# 省略之后的代码
```
最后,我们可以增加一个循环,来让用户进行多次操作,并可以通过输入 `exit` 来退出系统。
```python
sms = StudentManagementSystem()
while True:
print('请输入操作命令(add/modify/remove/query/sort/average/modify_score/exit):')
command = input()
if command == 'add':
print('请输入学生信息(学号、姓名、性别、年龄、科目、成绩,以空格分隔):')
id, name, sex, age, subject, score = input().split()
student = Student(id, name, sex, int(age), subject, int(score))
sms.add_student(student)
elif command == 'modify':
print('请输入要修改的学生学号:')
id = input()
print('请输入要修改的学生信息(姓名、性别、年龄、科目、成绩,以空格分隔):')
values = input().split()
sms.modify_student(id, *values)
elif command == 'remove':
print('请输入要删除的学生学号:')
id = input()
sms.remove_student(id)
elif command == 'query':
print('请输入要查询的学生信息(学号、姓名、性别、年龄、科目、成绩,以空格分隔,不需要查询的信息可以留空):')
values = input().split()
students = sms.query_student(*values)
for student in students:
print(student)
elif command == 'sort':
print('请输入要排序的属性(age/score):')
attribute = input()
if attribute == 'age':
students = sms.query_age_sort()
elif attribute == 'score':
print('请输入要排序的科目:')
subject = input()
scores = sms.query_score_sort(subject)
students = [student for student in sms.students if student.subject == subject and student.score in scores]
for student in students:
print(student)
elif command == 'average':
print('请输入要查询的学生学号:')
id = input()
average = sms.query_student_average(id)
print(f'学生{id}的平均成绩为:{average}')
elif command == 'modify_score':
print('请输入要修改的学生学号和科目:')
id, subject = input().split()
print('请输入修改后的成绩:')
score = input()
sms.modify_score(id, subject, int(score))
elif command == 'exit':
break
else:
print('无效的操作命令,请重新输入!')
```
现在我们可以通过输入命令,来进行学生管理系统的操作了。
阅读全文