请结合数据结构实现简单的学生信息管理,包括学生姓名,学号后四位,年龄,性别,三门课成绩,录入学生信息时能够不按照任何顺序进行录入,能够支持后续任意时刻的信息录入。成绩的录入要求能够按照学号顺序进行批量录入,并在录入时打印学生信息。要求按照顺序结构实现。
时间: 2024-11-10 11:14:19 浏览: 37
为了实现一个简单的学生信息管理系统,我们可以使用哈希表(如Python中的字典或HashMap)作为底层数据结构,结合链表来保存学生的记录。哈希表通过学号作为键值对存储学生信息,保证了快速查找和插入操作。链表用于维护学生信息的顺序,以便于按照学号顺序输入成绩。
首先,我们可以定义一个`Student`类,包含姓名、后四位学号、年龄、性别和成绩列表:
```python
class Student:
def __init__(self, id_, name, age, gender):
self.id = id_
self.name = name
self.age = age
self.gender = gender
self.grades = []
def add_grade(self, course, grade):
self.grades.append((course, grade))
def __str__(self):
return f"姓名: {self.name}, 学号: {self.id[-4:]}, 年龄: {self.age}, 性别: {self.gender}, 成绩: {self.grades}"
```
接下来,我们创建一个`StudentManager`类,它负责管理所有学生和成绩的添加:
```python
class StudentManager:
def __init__(self):
self.students = {} # 使用哈希表存储学生
def insert_student(self, name, age, gender, student_id):
self.students[student_id[-4:]] = Student(student_id, name, age, gender)
def batch_add_grades(self, student_ids, grades_dict):
for i in range(0, len(student_ids), 2): # 每次两个学号,对应两门课程的成绩
student_id = student_ids[i]
course1, grade1 = grades_dict[f"{i}"]
course2, grade2 = grades_dict[f"{i+1}"]
if student_id in self.students:
self.students[student_id].add_grade(course1, grade1)
self.students[student_id].add_grade(course2, grade2)
def print_students(self):
for student_id, student in sorted(self.students.items()):
print(student)
# 示例使用
manager = StudentManager()
manager.insert_student("张三", 20, "男", "123456")
manager.insert_student("李四", 21, "女", "789012")
grades = {"0": ("数学", 90), "1": ("语文", 85)}
manager.batch_add_grades(["123456", "789012"], grades)
manager.print_students()
```
这个实现允许用户按任意顺序插入学生信息,同时支持按照学号顺序批量添加成绩并打印学生信息。
阅读全文