用链表完成学生信息管理系统,录入,显示,添加,删除,查找,成绩排序,保存,
时间: 2024-05-06 13:18:44 浏览: 12
好的,我可以为您提供一个基于链表的学生信息管理系统的简单实现。该系统支持以下功能:
- 录入学生信息
- 显示所有学生信息
- 添加学生信息
- 删除学生信息
- 查找学生信息
- 按照成绩排序
- 保存学生信息到文件中
下面是代码实现:
```python
class Student:
def __init__(self, id, name, age, score):
self.id = id
self.name = name
self.age = age
self.score = score
self.next = None
class StudentLinkedList:
def __init__(self):
self.head = None
def add(self, student):
if self.head is None:
self.head = student
return
current = self.head
while current.next is not None:
current = current.next
current.next = student
def delete(self, id):
if self.head is None:
return
if self.head.id == id:
self.head = self.head.next
return
current = self.head
while current.next is not None:
if current.next.id == id:
current.next = current.next.next
return
current = current.next
def find(self, id):
current = self.head
while current is not None:
if current.id == id:
return current
current = current.next
return None
def sort_by_score(self):
if self.head is None:
return
sorted_head = None
current = self.head
while current is not None:
next = current.next
if sorted_head is None or current.score > sorted_head.score:
current.next = sorted_head
sorted_head = current
else:
temp = sorted_head
while temp.next is not None and current.score < temp.next.score:
temp = temp.next
current.next = temp.next
temp.next = current
current = next
self.head = sorted_head
def display(self):
current = self.head
while current is not None:
print(f"ID: {current.id}, Name: {current.name}, Age: {current.age}, Score: {current.score}")
current = current.next
def save_to_file(self, filename):
with open(filename, "w") as f:
current = self.head
while current is not None:
f.write(f"{current.id},{current.name},{current.age},{current.score}\n")
current = current.next
def load_from_file(self, filename):
with open(filename, "r") as f:
for line in f:
id, name, age, score = line.strip().split(",")
student = Student(id, name, age, score)
self.add(student)
```
使用示例:
```python
# 创建一个学生信息链表
students = StudentLinkedList()
# 录入学生信息
student1 = Student("1001", "Tom", 20, 80)
student2 = Student("1002", "Jerry", 19, 90)
students.add(student1)
students.add(student2)
# 显示所有学生信息
students.display()
# 添加学生信息
student3 = Student("1003", "Alice", 21, 85)
students.add(student3)
# 删除学生信息
students.delete("1002")
# 查找学生信息
student = students.find("1001")
if student is not None:
print(f"Found: ID={student.id}, Name={student.name}, Age={student.age}, Score={student.score}")
else:
print("Not found")
# 按照成绩排序
students.sort_by_score()
# 保存学生信息到文件中
students.save_to_file("students.txt")
# 从文件中加载学生信息
students = StudentLinkedList()
students.load_from_file("students.txt")
students.display()
```