设计一个学生类student,它具有的私有数据成员是:注册号、姓名、数学、英语、计算机成绩;具有的公有成员函数是:求三门课总成绩的函数sum,求三门课平均成绩的函数average,显示学生数据信息的函数print;获取学生注册号的函数get_reg_num;设置学生数据信息的函数set_stu_inf。 编制主函数,说明一个student类对象的数组,并进行全班学生信息的输入与设置,然后求出每一个学生的总成绩,平均成绩,全班学生总成绩的最高分,全班学生的总平均分,并在输入一个注册号后,输出该学生有关的全部数据信息。
时间: 2023-06-07 21:07:49 浏览: 235
好的,我会为您提供相应的帮助。
首先,我会根据您的要求设计一个学生类 `Student`,具体代码如下:
```python
class Student:
def __init__(self, reg_num, name, math, english, computer):
self.__reg_num = reg_num
self.__name = name
self.__math = math
self.__english = english
self.__computer = computer
def sum_score(self):
return self.__math + self.__english + self.__computer
def average_score(self):
return self.sum_score() / 3
def print_info(self):
print("Name:", self.__name)
print("Reg_num:", self.__reg_num)
print("Math score:", self.__math)
print("English score:", self.__english)
print("Computer score:", self.__computer)
def get_reg_num(self):
return self.__reg_num
def set_stu_inf(self, reg_num, name, math, english, computer):
self.__reg_num = reg_num
self.__name = name
self.__math = math
self.__english = english
self.__computer = computer
```
在上面的代码中,我们使用了 `__` 开头的变量名表示这些成员变量是私有的。同时,我们提供了相应的公共函数来访问和修改这些私有成员变量。
接下来,我们编写主函数来实例化学生对象,并对全班学生信息进行输入和设置。代码如下:
```python
# 实例化学生对象
s1 = Student('2021001', '张三', 90, 85, 88)
s2 = Student('2021002', '李四', 78, 92, 85)
s3 = Student('2021003', '王五', 84, 90, 76)
s4 = Student('2021004', '赵六', 92, 87, 89)
# 将学生信息添加到数组中
students = [s1, s2, s3, s4]
# 循环遍历数组,求出每一个学生的总成绩、平均成绩,并输出其信息
total_score = 0
for student in students:
sum_score = student.sum_score()
average_score = student.average_score()
print("==================================")
print("Name:", student.get_name())
print("Reg_num:", student.get_reg_num())
print("Sum score:", sum_score)
print("Average score:", average_score)
total_score += sum_score
# 求出全班学生总成绩的最高分和总平均分
max_score = max([student.sum_score() for student in students])
average_score = total_score / len(students)
print("==================================")
print("Max score in class:", max_score)
print("Average score in class:", average_score)
# 输入一个注册号,显示该学生的全部数据信息
reg_num = input("Please input the reg_num:")
for student in students:
if student.get_reg_num() == reg_num:
student.print_info()
break
else:
print("No student with reg_num:", reg_num)
```
在上面的代码中,我们首先实例化了学生对象,然后将其添加到数组中。接着,我们使用 `for` 循环遍历数组中的每一个学生,求出其总成绩和平均成绩,并输出其信息。然后,我们再次使用 `for` 循环遍历数组中的每一个学生,求出全班学生总成绩的最高分和总平均分,并输出相应的信息。最后,我们输入一个注册号,找到对应的学生对象,并输出该学生所有数据信息。
希望这段代码能够满足您的需求,如果您还有其它问题或需求,请随时告诉我。
阅读全文