每个学生的成绩信息包括:学号、平时成绩、 期中成绩、期末成绩、总评成绩;采用单链表 存储若干学生的成绩信息;输入学生的学号、 平时成绩、期中成绩、期末成绩;计算学生的 总评成绩(各项成绩满分100分,平时成绩占 20%,期中成绩占20%,期末成绩占60%) ; 输出学生的成绩信息
时间: 2024-10-18 17:08:15 浏览: 31
这是一个关于链表数据结构的实际应用案例。在单链表中,每个节点通常包含学生的信息(如学号及其各个分数),你可以创建一个结构体或者类来表示这种节点,比如:
```python
class StudentRecord:
def __init__(self, student_id, regular_score=0, mid_term_score=0, final_score=0):
self.student_id = student_id
self.regular_score = regular_score
self.mid_term_score = mid_term_score
self.final_score = final_score
self.total_score = 0
def calculate_total(self):
total_weight = 0.2 + 0.2 + 0.6
self.total_score = (self.regular_score * 0.2) + (self.mid_term_score * 0.2) + (self.final_score * 0.6)
self.total_score /= total_weight # 考虑满分为100分,按比例调整
# 使用链表来存储学生记录
class GradeList:
def __init__(self):
self.head = None
def add_student(self, record):
new_node = StudentRecord(record.student_id, record.regular_score, record.mid_term_score, record.final_score)
if not self.head:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
# 示例操作
grade_list = GradeList()
input_data = {'student_id': 1, 'regular_score': 85, 'mid_term_score': 90, 'final_score': 95}
grade_list.add_student(input_data)
# 计算并输出总评成绩
record = grade_list.head
while record:
record.calculate_total()
print(f"学生{record.student_id}的总评成绩为:{record.total_score}")
record = record.next
```
在这个例子中,我们首先定义了一个`StudentRecord`类用于存储单个学生的成绩信息,并实现了计算总评分数的方法。然后创建了`GradeList`类,作为链表容器,允许添加新学生并自动更新他们的总评成绩。
当你需要输入新的学生信息时,只需实例化`GradeList`,然后调用`add_student`方法即可。最后通过遍历链表,可以打印出每个学生的总评成绩。
阅读全文