Python基于单链表的学生信息管理系统

有tinker页面,类似于学生管理系统或者图书管
理系统,里面要有增删改查这四种基本功能。
最最重要的是请麻烦在代码里注释一下每一部分的
功能,详细点。

需求是挺简单,但是最好把详细需求说一下,或者发我

具体需求?发我


可以参考

img

以下是一个基于单链表的学生信息管理系统的Python代码,使用了Tkinter界面库进行页面设计:

import tkinter as tk

# 学生信息类
class Student:
    def __init__(self, name, id, gender, age):
        self.name = name
        self.id = id
        self.gender = gender
        self.age = age
        self.next = None

# 学生信息管理类
class StudentsLinkedList:
    def __init__(self):
        self.head = None

    # 添加学生信息
    def add_student(self, name, id, gender, age):
        new_student = Student(name, id, gender, age)
        if not self.head:
            self.head = new_student
        else:
            curr = self.head
            while curr.next:
                curr = curr.next
            curr.next = new_student

    # 删除学生信息
    def delete_student(self, id):
        if not self.head:
            return
        if self.head.id == id:
            self.head = self.head.next
            return
        curr = self.head
        while curr.next:
            if curr.next.id == id:
                curr.next = curr.next.next
                return
            curr = curr.next

    # 修改学生信息
    def modify_student(self, id, name, gender, age):
        curr = self.head
        while curr:
            if curr.id == id:
                curr.name = name
                curr.gender = gender
                curr.age = age
                return
            curr = curr.next

    # 查询学生信息
    def search_student(self, id):
        curr = self.head
        while curr:
            if curr.id == id:
                return curr
            curr = curr.next
        return None

# Tkinter界面类
class StudentManagementSystem(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.master.title("学生信息管理系统")
        self.pack()
        self.create_widgets()

        # 初始化学生信息管理类
        self.students_list = StudentsLinkedList()

    # 创建页面元素
    def create_widgets(self):
        # 标题标签
        self.title_label = tk.Label(self, text="学生信息管理系统", font=("Arial", 20))
        self.title_label.grid(row=0, column=0, columnspan=4, padx=50, pady=20)

        # 学号标签和输入框
        self.id_label = tk.Label(self, text="学号:", font=("Arial", 14))
        self.id_label.grid(row=1, column=0, padx=10, pady=10)
        self.id_entry = tk.Entry(self, font=("Arial", 14))
        self.id_entry.grid(row=1, column=1, padx=10, pady=10)

        # 姓名标签和输入框
        self.name_label = tk.Label(self, text="姓名:", font=("Arial", 14))
        self.name_label.grid(row=2, column=0, padx=10, pady=10)
        self.name_entry = tk.Entry(self, font=("Arial", 14))
        self.name_entry.grid(row=2, column=1, padx=10, pady=10)

        # 性别标签和输入框
        self.gender_label = tk.Label(self, text="性别:", font=("Arial", 14))
        self.gender_label.grid(row=3, column=0, padx=10, pady=10)
        self.gender_entry = tk.Entry(self, font=("Arial", 14))
        self.gender_entry.grid(row=3, column=1, padx=10, pady=10)

        # 年龄标签和输入框
        self.age_label = tk.Label(self, text="年龄:", font=("Arial", 14))
        self.age_label.grid(row=4, column=0, padx=10, pady=10)
        self.age_entry = tk.Entry(self, font=("Arial", 14))
        self.age_entry.grid(row=4, column=1, padx=10, pady=10)

        # 操作按钮
        self.add_button = tk.Button(self, text="添加", font=("Arial", 14), command=self.add_student)
        self.add_button.grid(row=1, column=2, padx=10, pady=10)
        self.delete_button = tk.Button(self, text="删除", font=("Arial", 14), command=self.delete_student)
        self.delete_button.grid(row=2, column=2, padx=10, pady=10)
        self.modify_button = tk.Button(self, text="修改", font=("Arial", 14), command=self.modify_student)
        self.modify_button.grid(row=3, column=2, padx=10, pady=10)
        self.search_button = tk.Button(self, text="查询", font=("Arial", 14), command=self.search_student)
        self.search_button.grid(row=4, column=2, padx=10, pady=10)

        # 结果标签
        self.result_label = tk.Label(self, font=("Arial", 14))
        self.result_label.grid(row=5, column=0, columnspan=4, padx=50, pady=20)

    # 添加学生信息操作
    def add_student(self):
        # 从输入框中获取学生信息
        id = self.id_entry.get().strip()
        name = self.name_entry.get().strip()
        gender = self.gender_entry.get().strip()
        age = self.age_entry.get().strip()

        # 判断学号是否已存在
        if self.students_list.search_student(id):
            self.result_label.config(text="学号已存在,添加失败", fg="red")
            return

        # 添加学生信息
        self.students_list.add_student(name, id, gender, age)
        self.result_label.config(text="添加成功", fg="green")

        # 清空输入框
        self.id_entry.delete(0, tk.END)
        self.name_entry.delete(0, tk.END)
        self.gender_entry.delete(0, tk.END)
        self.age_entry.delete(0, tk.END)

    # 删除学生信息操作
    def delete_student(self):
        # 从输入框中获取学号
        id = self.id_entry.get().strip()

        # 删除学生信息
        self.students_list.delete_student(id)
        self.result_label.config(text="删除成功", fg="green")

        # 清空输入框
        self.id_entry.delete(0, tk.END)
        self.name_entry.delete(0, tk.END)
        self.gender_entry.delete(0, tk.END)
        self.age_entry.delete(0, tk.END)

    # 修改学生信息操作
    def modify_student(self):
        # 从输入框中获取学生信息
        id = self.id_entry.get().strip()
        name = self.name_entry.get().strip()
        gender = self.gender_entry.get().strip()
        age = self.age_entry.get().strip()

        # 修改学生信息
        self.students_list.modify_student(id, name, gender, age)
        self.result_label.config(text="修改成功", fg="green")

        # 清空输入框
        self.id_entry.delete(0, tk.END)
        self.name_entry.delete(0, tk.END)
        self.gender_entry.delete(0, tk.END)
        self.age_entry.delete(0, tk.END)

    # 查询学生信息操作
    def search_student(self):
        # 从输入框中获取学号
        id = self.id_entry.get().strip()

        # 查询学生信息
        student = self.students_list.search_student(id)
        if student:
            self.result_label.config(text=f"姓名:{student.name},性别:{student.gender},年龄:{student.age}", fg="green")
        else:
            self.result_label.config(text="学号不存在,查询失败", fg="red"))

        # 清空输入框
        self.id_entry.delete(0, tk.END)
        self.name_entry.delete(0, tk.END)
        self.gender_entry.delete(0, tk.END)
        self.age_entry.delete(0, tk.END)

# 主程序
if __name__ == '__main__':
    root = tk.Tk()
    app = StudentManagementSystem(master=root)
    app.mainloop()

注释说明:

  • Student 类:定义了学生信息的属性和构造函数。
  • StudentsLinkedList 类:定义了管理学生信息的单链表,包含添加、删除、修改和查询学生信息的方法。
  • StudentManagementSystem 类:使用 Tkinter 库定义了学生信息管理系统的界面和相应的操作,其中包括添加、删除、修改和查询学生信息的方法,以及初始化学生信息管理类对象。
  • create_widgets 方法:创建学生信息管理系统的界面元素,包括标签、输入框和操作按钮。
  • add_student 方法:从输入框中获取学生信息,判断学号是否已存在,如果不存在则添加学生信息到单链表中,更新结果标签的文本和颜色,将输入框清空。
  • delete_student 方法:从输入框中获取学号,删除单链表中对应的学生信息,更新结果标签的文本和颜色,将输入框清空