有tinker页面,类似于学生管理系统或者图书管
理系统,里面要有增删改查这四种基本功能。
最最重要的是请麻烦在代码里注释一下每一部分的
功能,详细点。
需求是挺简单,但是最好把详细需求说一下,或者发我
具体需求?发我
以下是一个基于单链表的学生信息管理系统的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
方法:从输入框中获取学号,删除单链表中对应的学生信息,更新结果标签的文本和颜色,将输入框清空