请结合数据结构实现简单的学生信息管理,包括学生姓名,学号后四位,年龄,性别,三门课成绩,录入学生信息时能够不按照任何顺序进行录入,能够支持后续任意时刻的信息录入。成绩的录入要求能够按照学号顺序进行批量
时间: 2024-11-12 19:41:27 浏览: 16
学生信息管理系统,实现学生信息包括:学号、姓名、性别、年龄、班级等信息。
5星 · 资源好评率100%
为了实现这样一个学生信息管理系统,我们可以使用哈希表(例如Python中的字典)作为基础数据结构,配合链表或数组来保持输入顺序。首先,创建一个学生对象(如Student类),包含姓名、学号后四位、年龄、性别以及一个列表来存储成绩。这里我们假设成绩也是有序的,可以使用列表的索引来对应学号。
```python
class Student:
def __init__(self):
self.name = ""
self.student_id = None
self.age = 0
self.gender = ""
self.grades = []
def add_student(data: dict) -> None:
student_id = data.get("student_id", None)
if not student_id:
raise ValueError("Student ID is required.")
# 使用哈希表,键是学号后四位,值是Student对象
students = {}
if student_id[-4:] in students:
raise ValueError(f"Duplicate student ID {student_id[-4:]}")
else:
student = Student()
student.name = data.get("name", "")
student.student_id = int(student_id)
student.age = data.get("age", 0)
student.gender = data.get("gender", "")
grades = data.get("grades", [])
for grade in sorted(grades):
student.grades.append(int(grade))
students[student_id[-4:]] = student
def get_student_by_id(student_id):
return students.get(student_id[-4:], None)
# 示例数据
students_data = {
"name": "张三",
"student_id": "12345678",
"age": 18,
"gender": "男",
"grades": [90, 85, 95]
}
add_student(students_data)
```
在这个系统中,你可以随时添加新的学生信息,并且只通过学号后四位查找,实现了无序录入。成绩也可以按学号顺序批量插入。但是请注意,如果需要频繁查询所有学生信息,哈希表虽然插入快,但查询所有学生可能不太高效,因为我们需要遍历整个哈希表。在这种情况下,可能需要考虑其他数据结构,比如数组或者数据库存储。
阅读全文