用顺序表写根据学生姓名进行字典排序,根据成绩进行由高到低排序,根据学号或姓名查找学生成绩,统计各分数段(≥90分、80-89分、70-79分、60-69分、60分以下)的学生人数及其所占比例,并打印统计的结果。
时间: 2024-04-02 11:31:03 浏览: 41
好的,我可以为您提供一个用顺序表实现的学生成绩管理系统的代码示例,以实现您的要求。
```python
class Student:
def __init__(self, name, id, score):
self.name = name
self.id = id
self.score = score
class StudentList:
def __init__(self, students):
self.students = students
def sort_by_name(self):
self.students.sort(key=lambda x: x.name)
def sort_by_score(self):
self.students.sort(key=lambda x: x.score, reverse=True)
def search_by_id(self, id):
for student in self.students:
if student.id == id:
return student
return None
def search_by_name(self, name):
for student in self.students:
if student.name == name:
return student
return None
def count_by_score(self):
score_count = [0, 0, 0, 0, 0]
for student in self.students:
if student.score >= 90:
score_count[0] += 1
elif student.score >= 80:
score_count[1] += 1
elif student.score >= 70:
score_count[2] += 1
elif student.score >= 60:
score_count[3] += 1
else:
score_count[4] += 1
total_count = len(self.students)
score_percent = [count / total_count for count in score_count]
return score_count, score_percent
if __name__ == '__main__':
# 创建学生列表
students = [
Student('张三', '001', 80),
Student('李四', '002', 90),
Student('王五', '003', 70),
Student('赵六', '004', 85),
Student('钱七', '005', 60),
]
student_list = StudentList(students)
# 根据姓名排序
student_list.sort_by_name()
print('根据姓名排序后的学生列表:')
for student in student_list.students:
print(student.name, student.id, student.score)
# 根据成绩排序
student_list.sort_by_score()
print('根据成绩排序后的学生列表:')
for student in student_list.students:
print(student.name, student.id, student.score)
# 根据学号查找成绩
student = student_list.search_by_id('003')
if student:
print('学号为003的学生成绩为:', student.score)
else:
print('未找到学号为003的学生')
# 根据姓名查找成绩
student = student_list.search_by_name('赵六')
if student:
print('姓名为赵六的学生成绩为:', student.score)
else:
print('未找到姓名为赵六的学生')
# 统计各分数段学生人数及占比
score_count, score_percent = student_list.count_by_score()
print('90分及以上的学生人数为:', score_count[0], '占比为:', score_percent[0])
print('80分至89分的学生人数为:', score_count[1], '占比为:', score_percent[1])
print('70分至79分的学生人数为:', score_count[2], '占比为:', score_percent[2])
print('60分至69分的学生人数为:', score_count[3], '占比为:', score_percent[3])
print('60分以下的学生人数为:', score_count[4], '占比为:', score_percent[4]))
```
这段代码实现了一个简单的学生成绩管理系统,其中包括了根据姓名和成绩排序、根据学号或姓名查找学生成绩、统计各分数段学生人数及其所占比例等功能。您可以根据需求进行修改和扩展。
阅读全文