单链表实现数学生管理系统 python
时间: 2023-05-25 21:01:01 浏览: 87
我理解您需要一个使用单链表实现数学生管理系统的Python程序。这个管理系统将允许您添加、查找、修改和删除数学生信息。以下是我为您撰写的一个简单的示例程序,以帮助您开始。
```python
class Student:
def __init__(self, name, id, math_grade):
self.name = name
self.id = id
self.math_grade = math_grade
self.next = None
class StudentList:
def __init__(self):
self.head = None
def add_student(self, name, id, math_grade):
new_student = Student(name, id, math_grade)
if self.head is None:
self.head = new_student
return
current = self.head
while current.next is not None:
current = current.next
current.next = new_student
def display_students(self):
if self.head is None:
print("No students")
return
current = self.head
while current is not None:
print("Name:", current.name)
print("ID:", current.id)
print("Math Grade:", current.math_grade)
print("-----------------")
current = current.next
def find_student(self, id):
if self.head is None:
print("No students")
return None
current = self.head
while current is not None and current.id != id:
current = current.next
if current is None:
print("Student not found")
return None
else:
print("Name:", current.name)
print("ID:", current.id)
print("Math Grade:", current.math_grade)
return current
def delete_student(self, id):
if self.head is None:
print("No students")
return
if self.head.id == id:
self.head = self.head.next
return
current = self.head
while current.next is not None and current.next.id != id:
current = current.next
if current.next is None:
print("Student not found")
return
current.next = current.next.next
def modify_student(self, id, math_grade):
student_to_modify = self.find_student(id)
if student_to_modify is not None:
student_to_modify.math_grade = math_grade
print("Math grade modified")
# example usage
student_list = StudentList()
student_list.add_student("John", 1001, 85)
student_list.add_student("David", 1002, 90)
student_list.add_student("Alice", 1003, 92)
student_list.display_students()
# output:
# Name: John
# ID: 1001
# Math Grade: 85
# -----------------
# Name: David
# ID: 1002
# Math Grade: 90
# -----------------
# Name: Alice
# ID: 1003
# Math Grade: 92
# -----------------
student_list.find_student(1001)
# output:
# Name: John
# ID: 1001
# Math Grade: 85
# Student object
student_list.delete_student(1002)
student_list.display_students()
# output:
# Name: John
# ID: 1001
# Math Grade: 85
# -----------------
# Name: Alice
# ID: 1003
# Math Grade: 92
# -----------------
student_list.modify_student(1003, 95)
student_list.display_students()
# output:
# Name: John
# ID: 1001
# Math Grade: 85
# -----------------
# Name: Alice
# ID: 1003
# Math Grade: 95
# -----------------
```
在这个程序中,我们定义了一个名为`Student`的类,它表示一个数学生。`Student`类有三个属性:姓名、学号和数学成绩。它还有一个名为`next`的属性,该属性用于指向链表中的下一个节点。
接下来,我们定义了一个名为`StudentList`的类,它实现了一个能够添加、查找、修改和删除数学生信息的单链表。在`StudentList`类中,我们定义了一个名为`head`的属性,它指向链表的头节点。我们还定义了五个方法:
- `add_student`: 此方法用于向链表中添加新的学生信息。我们将新学生添加到链表的末尾。
- `display_students`: 此方法用于显示链表中的所有学生信息。
- `find_student`: 此方法用于查找给定学生ID的学生信息。
- `delete_student`: 此方法用于删除给定学生ID的学生信息。
- `modify_student`: 此方法用于修改给定学生ID的学生成绩。
在我们的示例程序中,我们使用`StudentList`类来创建一个名为`student_list`的对象并添加了三个学生信息。然后,我们分别使用`display_students`、`find_student`、`delete_student`和`modify_student`方法来展示、查找、删除和修改学生信息。这个程序只是一个演示,您可以根据自己的需求进行修改和扩展。
阅读全文