某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试·编程实现如下学生成绩管理: (1)录入每个学生的序号和考试成绩;(2)计算课程的总分和平均分; (3)按成绩由高到低排出名次表; (4)按序号由小到大排出成绩表;(选做)(5)按序号查询学生排名及其考试成绩; (6)按优秀(90-100)﹑良好(80-89)﹑中等(70-79)﹑及格(60- 69)、不及格(0-59)5个类别,统计每个类别的人数以及所占的百分比;(选做) (7)输出每个学生的学号﹑考试成绩﹑课程总分和平均分。
时间: 2023-06-17 15:08:44 浏览: 230
下面是一个 Python 实现,可以作为参考:
```python
# 定义一个学生类
class Student:
def __init__(self, id, score):
self.id = id
self.score = score
# 录入学生成绩
num_students = int(input("请输入学生人数:"))
students = []
for i in range(num_students):
id = input("请输入学生序号:")
score = float(input("请输入学生考试成绩:"))
students.append(Student(id, score))
# 计算课程总分和平均分
total_score = 0
for student in students:
total_score += student.score
average_score = total_score / num_students
# 按成绩由高到低排出名次表
students.sort(key=lambda x: x.score, reverse=True)
print("名次表:")
for i, student in enumerate(students):
print("{0}.\t{1}\t{2:.2f}".format(i+1, student.id, student.score))
# 按序号由小到大排出成绩表
students.sort(key=lambda x: x.id)
print("成绩表:")
for student in students:
print("{0}\t{1:.2f}".format(student.id, student.score))
# 按序号查询学生排名及其考试成绩
search_id = input("请输入要查询的学生序号:")
for i, student in enumerate(students):
if student.id == search_id:
print("学生 {0} 的排名是第 {1} 名,考试成绩为 {2:.2f}".format(search_id, i+1, student.score))
# 统计每个类别的人数以及所占的百分比
ranges = [("优秀", 90, 100), ("良好", 80, 89), ("中等", 70, 79), ("及格", 60, 69), ("不及格", 0, 59)]
counts = [0] * len(ranges)
for student in students:
for i, r in enumerate(ranges):
if r[1] <= student.score <= r[2]:
counts[i] += 1
break
for i, r in enumerate(ranges):
percentage = counts[i] / num_students * 100
print("{0}:{1}人,占{2:.2f}%".format(r[0], counts[i], percentage))
# 输出每个学生的学号、考试成绩、课程总分和平均分
print("学号\t考试成绩\t课程总分\t平均分")
for student in students:
print("{0}\t{1:.2f}\t{2:.2f}\t{3:.2f}".format(student.id, student.score, total_score, average_score))
```
注意,这只是一个简单的实现,可能还有很多需要改进的地方。
阅读全文