使用python语言中的Tkinter模块创建GUI应用程序开发一个拥有图形化界面的学生信息管理系统,实现基本的增加、删除、修改、查询、排序等功能并使用文件存储相关信息。把代码分析和实验总结发给我
时间: 2023-12-24 07:02:36 浏览: 31
很高兴回答您的问题。首先,让我们了解一下Tkinter模块,它是Python中用于创建GUI应用程序的标准模块之一,它提供了一组工具和对象,用于构建GUI窗口和构建用户界面。在本例中,我们将使用Tkinter模块创建学生信息管理系统的GUI应用程序。
下面是一个基本的Tkinter GUI应用程序的代码示例:
```python
import tkinter as tk
# 创建主窗口
root = tk.Tk()
root.title("学生信息管理系统")
# 添加组件
label = tk.Label(root, text="Hello, World!")
label.pack()
# 运行主循环
root.mainloop()
```
该代码中,我们首先导入Tkinter模块,然后创建一个主窗口。接着我们添加一个标签组件,最后我们运行主循环,这样我们就可以看到一个简单的GUI应用程序。
接下来,我们将创建一个学生信息管理系统的GUI应用程序,实现基本的增加、删除、修改、查询、排序等功能并使用文件存储相关信息的功能。我们将使用Python内置的shelve模块来实现文件存储相关信息。
```python
import tkinter as tk
import shelve
class Student:
def __init__(self, name, age, gender, id):
self.name = name
self.age = age
self.gender = gender
self.id = id
class StudentManagementSystem:
def __init__(self, master):
self.master = master
self.master.title("学生信息管理系统")
# 创建组件
self.name_label = tk.Label(master, text="姓名:")
self.age_label = tk.Label(master, text="年龄:")
self.gender_label = tk.Label(master, text="性别:")
self.id_label = tk.Label(master, text="学号:")
self.name_entry = tk.Entry(master)
self.age_entry = tk.Entry(master)
self.gender_entry = tk.Entry(master)
self.id_entry = tk.Entry(master)
self.add_button = tk.Button(master, text="添加学生", command=self.add_student)
self.delete_button = tk.Button(master, text="删除学生", command=self.delete_student)
self.update_button = tk.Button(master, text="修改学生信息", command=self.update_student)
self.query_button = tk.Button(master, text="查询学生信息", command=self.query_student)
self.sort_button = tk.Button(master, text="排序", command=self.sort_student)
self.student_listbox = tk.Listbox(master, height=10)
# 布局组件
self.name_label.grid(row=0, column=0)
self.name_entry.grid(row=0, column=1)
self.age_label.grid(row=1, column=0)
self.age_entry.grid(row=1, column=1)
self.gender_label.grid(row=2, column=0)
self.gender_entry.grid(row=2, column=1)
self.id_label.grid(row=3, column=0)
self.id_entry.grid(row=3, column=1)
self.add_button.grid(row=4, column=0)
self.delete_button.grid(row=4, column=1)
self.update_button.grid(row=4, column=2)
self.query_button.grid(row=5, column=0)
self.sort_button.grid(row=5, column=1)
self.student_listbox.grid(row=6, column=0, columnspan=3)
# 打开数据文件
self.db = shelve.open("students.db")
# 显示已有学生信息
self.show_students()
def add_student(self):
name = self.name_entry.get()
age = self.age_entry.get()
gender = self.gender_entry.get()
id = self.id_entry.get()
if name and age and gender and id:
student = Student(name, age, gender, id)
self.db[id] = student
self.student_listbox.insert(tk.END, student.name)
self.name_entry.delete(0, tk.END)
self.age_entry.delete(0, tk.END)
self.gender_entry.delete(0, tk.END)
self.id_entry.delete(0, tk.END)
def delete_student(self):
selected = self.student_listbox.curselection()
if selected:
student_name = self.student_listbox.get(selected[0])
for key in self.db.keys():
if self.db[key].name == student_name:
del self.db[key]
self.student_listbox.delete(selected)
def update_student(self):
selected = self.student_listbox.curselection()
if selected:
student_name = self.student_listbox.get(selected[0])
for key in self.db.keys():
if self.db[key].name == student_name:
self.name_entry.insert(0, self.db[key].name)
self.age_entry.insert(0, self.db[key].age)
self.gender_entry.insert(0, self.db[key].gender)
self.id_entry.insert(0, self.db[key].id)
del self.db[key]
self.student_listbox.delete(selected)
def query_student(self):
self.student_listbox.delete(0, tk.END)
for key in self.db.keys():
student = self.db[key]
if student.name == self.name_entry.get() or student.age == self.age_entry.get() or student.gender == self.gender_entry.get() or student.id == self.id_entry.get():
self.student_listbox.insert(tk.END, student.name)
def sort_student(self):
self.student_listbox.delete(0, tk.END)
sorted_students = sorted(self.db.values(), key=lambda student: student.name)
for student in sorted_students:
self.student_listbox.insert(tk.END, student.name)
def show_students(self):
for key in self.db.keys():
student = self.db[key]
self.student_listbox.insert(tk.END, student.name)
def __del__(self):
self.db.close()
# 创建主窗口
root = tk.Tk()
# 创建学生信息管理系统
sms = StudentManagementSystem(root)
# 运行主循环
root.mainloop()
```
该代码中,我们首先定义了一个Student类,用于存储学生信息。接着我们定义了一个StudentManagementSystem类,用于创建学生信息管理系统的界面和实现相关功能。在该类的构造函数中,我们创建了界面的各个组件,并将其布局在界面上。我们还使用shelve模块打开一个名为“students.db”的文件,并在构造函数中显示已有学生信息。在该类中,我们实现了添加、删除、修改、查询、排序等功能。当用户单击“添加学生”按钮时,我们将其输入的学生信息添加到shelve文件中,并在学生列表框中显示该学生的姓名。当用户单击“删除学生”按钮时,我们将从shelve文件中删除选定的学生信息,并在学生列表框中删除该学生的姓名。当用户单击“修改学生信息”按钮时,我们将选定学生的信息填充到输入框中,并从shelve文件中删除该学生的信息。当用户单击“查询学生信息”按钮时,我们将根据输入框中的信息查询匹配的学生,并在学生列表框中显示匹配的学生的姓名。当用户单击“排序”按钮时,我们将按名称对学生进行排序,并在学生列表框中显示排序后的学生姓名。最后,当学生管理系统窗口关闭时,我们关闭shelve文件。
总结:
本文介绍了如何使用Tkinter模块创建GUI应用程序,以及如何使用shelve模块实现文件存储。我们创建了一个学生信息管理系统的GUI应用程序,实现了基本的添加、删除、修改、查询、排序等功能,并使用文件存储相关信息。通过本文的学习,我们可以了解如何使用Python编写GUI应用程序和使用文件存储相关数据。