实现小型学生信息管理程序(不用实现界面),功能包括基本的添加学生、删除、修改和查询学生信息等操作,要求用链表实现:用户可选择五个操作之一:添加学生、修改学生、删除学生、查询学生、显示学生链表的当前状态和退出程序,测试上述所有功能。v
时间: 2024-01-27 16:05:15 浏览: 26
好的,我可以为您解答这个问题。以下是一个简单的基于链表实现的学生信息管理程序的示例代码:
```python
class Student:
def __init__(self, name, age, gender, id):
self.name = name
self.age = age
self.gender = gender
self.id = id
self.next = None
class StudentList:
def __init__(self):
self.head = None
def add(self, name, age, gender, id):
new_student = Student(name, age, gender, id)
if self.head is None:
self.head = new_student
else:
current_node = self.head
while current_node.next is not None:
current_node = current_node.next
current_node.next = new_student
def delete(self, id):
if self.head is None:
return
if self.head.id == id:
self.head = self.head.next
return
previous_node = self.head
current_node = self.head.next
while current_node is not None:
if current_node.id == id:
previous_node.next = current_node.next
return
previous_node = current_node
current_node = current_node.next
def modify(self, id, name=None, age=None, gender=None):
if self.head is None:
return
current_node = self.head
while current_node is not None:
if current_node.id == id:
if name is not None:
current_node.name = name
if age is not None:
current_node.age = age
if gender is not None:
current_node.gender = gender
return
current_node = current_node.next
def search(self, id):
current_node = self.head
while current_node is not None:
if current_node.id == id:
return current_node
current_node = current_node.next
return None
def display(self):
current_node = self.head
while current_node is not None:
print(f"Name: {current_node.name}\tAge: {current_node.age}\tGender: {current_node.gender}\tID: {current_node.id}")
current_node = current_node.next
def main():
student_list = StudentList()
while True:
print("1. Add student")
print("2. Modify student")
print("3. Delete student")
print("4. Search student")
print("5. Display student list")
print("6. Quit")
choice = input("Enter your choice: ")
if choice == "1":
name = input("Enter student name: ")
age = input("Enter student age: ")
gender = input("Enter student gender: ")
id = input("Enter student ID: ")
student_list.add(name, age, gender, id)
elif choice == "2":
id = input("Enter student ID to modify: ")
name = input("Enter new name (press enter to skip): ")
age = input("Enter new age (press enter to skip): ")
gender = input("Enter new gender (press enter to skip): ")
student_list.modify(id, name, age, gender)
elif choice == "3":
id = input("Enter student ID to delete: ")
student_list.delete(id)
elif choice == "4":
id = input("Enter student ID to search: ")
student = student_list.search(id)
if student is not None:
print(f"Name: {student.name}\tAge: {student.age}\tGender: {student.gender}\tID: {student.id}")
else:
print("Student not found")
elif choice == "5":
student_list.display()
elif choice == "6":
break
else:
print("Invalid choice")
if __name__ == "__main__":
main()
```
这个程序使用了两个类,`Student` 表示一个学生,包含姓名、年龄、性别和学号等信息,同时还有一个指向下一个学生的指针 `next`;`StudentList` 则表示整个学生链表,包含了添加、删除、修改、查询和显示链表的方法。
在 `main` 函数中,程序使用一个死循环不断询问用户想要进行哪种操作,根据用户的选择调用相应的方法。用户可以通过输入学生的信息来添加学生,通过输入学生的学号来删除、修改或查询学生。最后,用户可以选择退出程序。
以上是一个简单的基于链表实现的学生信息管理程序的示例代码。希望能对您有帮助!