设计一个菜单驱动的学生成绩管理程序,实现对学生成绩的各种管理按要求定义结构体数据类型,包括num(学号)name(姓名)score[5](5门课成绩),aver(5门课平均成绩),和sum(5门课总成绩),要求将下面功能都编写成独立的函数。 1.输入n个学生5门成绩的函数 2.计算每个学生的5门的总成绩和平均成绩。 3.计算n个学生的最高总分和最高平均分。 4.输入一个学号,输出该学生的学号、姓名和总分。 5.编写主函数集成上面4项功能。 6.程序能够进行异常处理,检查用户输入数据的有效性,在用户输入数据有错误(如类型错误) 或无效时,不会中断程序的执行,程序具有一定的健壮性。
时间: 2024-03-07 15:48:25 浏览: 341
设计一个菜单驱动的学生成绩管理程序
好的,我来为您解答。
首先,我们可以定义一个结构体数据类型,包括num(学号)、name(姓名)、score[5](5门课成绩),aver(5门课平均成绩)和sum(5门课总成绩),如下所示:
```python
class Student:
def __init__(self, num, name, score):
self.num = num
self.name = name
self.score = score
self.sum = sum(score)
self.aver = self.sum / len(score)
```
接下来,我们可以依次编写实现上述功能的函数。
1. 输入n个学生5门成绩的函数
```python
def input_scores(n):
students = []
for i in range(n):
print("请输入第", i+1, "个学生的学号、姓名和5门成绩:")
num, name, s1, s2, s3, s4, s5 = input().split()
try:
s1, s2, s3, s4, s5 = int(s1), int(s2), int(s3), int(s4), int(s5)
student = Student(num, name, [s1, s2, s3, s4, s5])
students.append(student)
except ValueError:
print("成绩输入有误,请重新输入!")
return students
```
该函数中,我们通过for循环让用户输入n个学生的学号、姓名和5门成绩,使用try-except语句进行异常处理,若输入的成绩不是整数,则提示用户重新输入。如果输入的成绩正确,则将学生信息存储在一个列表中,最后返回该列表。
2. 计算每个学生的5门的总成绩和平均成绩。
```python
def calculate_total_average(students):
for student in students:
student.sum = sum(student.score)
student.aver = student.sum / len(student.score)
```
该函数中,我们通过for循环遍历每个学生,计算每个学生的5门成绩的总成绩和平均成绩,并更新该学生的总成绩和平均成绩属性。
3. 计算n个学生的最高总分和最高平均分。
```python
def calculate_highest(students):
total_scores = [student.sum for student in students]
average_scores = [student.aver for student in students]
highest_total = max(total_scores)
highest_average = max(average_scores)
return highest_total, highest_average
```
该函数中,我们先通过列表推导式获取所有学生的总成绩和平均成绩,然后找出这些成绩中的最大值,分别作为最高总分和最高平均分返回。
4. 输入一个学号,输出该学生的学号、姓名和总分。
```python
def output_score(students):
print("请输入要查询的学生的学号:")
n = input()
for student in students:
if student.num == n:
print("学号:", student.num, "姓名:", student.name, " 总分:", student.sum)
break
else:
print("未找到该学生!")
```
该函数中,我们通过for循环遍历每个学生的成绩,当找到与输入的学号相等的学生时,输出该学生的学号、姓名和总分。如果未找到该学生,则输出提示信息。
5. 编写主函数集成上面4项功能。
```python
def main():
while True:
print("请选择要进行的操作:")
print("1.输入学生成绩")
print("2.计算每个学生的总成绩和平均成绩")
print("3.计算最高总分和最高平均分")
print("4.查询学生总分")
print("5.退出")
choice = input()
if choice == '1':
n = int(input("请输入学生人数:"))
students = input_scores(n)
elif choice == '2':
calculate_total_average(students)
print("计算成功!")
elif choice == '3':
highest_total, highest_average = calculate_highest(students)
print("最高总分:", highest_total, " 最高平均分:", highest_average)
elif choice == '4':
output_score(students)
elif choice == '5':
break
else:
print("输入有误,请重新输入!")
```
该函数中,我们通过while循环不断显示菜单,根据用户的选择调用相应的函数,并进行异常处理。
6. 程序能够进行异常处理,检查用户输入数据的有效性,在用户输入数据有错误(如类型错误) 或无效时,不会中断程序的执行,程序具有一定的健壮性。
在上述函数中,我们使用了try-except语句进行异常处理,当用户输入的成绩不是整数时,程序不会中断执行,而是输出提示信息,让用户重新输入。
以上就是一个菜单驱动的学生成绩管理程序的Python代码实现,具有一定的健壮性和用户友好性。
阅读全文