编写图形界面应用程序实现学生信息的添加、查询和删除学生信息存储在SQLite数据库中如dstudentsdb文件。要求:1单击添加按钮可以将入框的学号、姓名、性别、年龄信息添加到数据库中。2单击查询根据学号查询对应数据库的学生的信息并显示在文本框。如不存在则弹出提示框。3单击删除根据学号删除该学生在数据库的信息。如该学号不存在则弹出提示框。4单击清除将文本框的内容清空。python编写
以下是一个基于Tkinter和SQLite的学生信息管理系统的示例代码:
import tkinter as tk
import sqlite3
class StudentInfoGUI(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title("学生信息管理系统")
self.master.geometry("400x300")
self.create_widgets()
def create_widgets(self):
# 创建输入框和标签
self.id_label = tk.Label(self.master, text="学号")
self.id_label.grid(row=0, column=0, padx=5, pady=5)
self.id_entry = tk.Entry(self.master)
self.id_entry.grid(row=0, column=1, padx=5, pady=5)
self.name_label = tk.Label(self.master, text="姓名")
self.name_label.grid(row=1, column=0, padx=5, pady=5)
self.name_entry = tk.Entry(self.master)
self.name_entry.grid(row=1, column=1, padx=5, pady=5)
self.gender_label = tk.Label(self.master, text="性别")
self.gender_label.grid(row=2, column=0, padx=5, pady=5)
self.gender_entry = tk.Entry(self.master)
self.gender_entry.grid(row=2, column=1, padx=5, pady=5)
self.age_label = tk.Label(self.master, text="年龄")
self.age_label.grid(row=3, column=0, padx=5, pady=5)
self.age_entry = tk.Entry(self.master)
self.age_entry.grid(row=3, column=1, padx=5, pady=5)
# 创建按钮
self.add_button = tk.Button(self.master, text="添加", command=self.add_student)
self.add_button.grid(row=4, column=0, padx=5, pady=5)
self.query_button = tk.Button(self.master, text="查询", command=self.query_student)
self.query_button.grid(row=4, column=1, padx=5, pady=5)
self.delete_button = tk.Button(self.master, text="删除", command=self.delete_student)
self.delete_button.grid(row=4, column=2, padx=5, pady=5)
self.clear_button = tk.Button(self.master, text="清除", command=self.clear_inputs)
self.clear_button.grid(row=4, column=3, padx=5, pady=5)
# 创建文本框
self.textbox = tk.Text(self.master, height=10, width=30)
self.textbox.grid(row=5, column=0, columnspan=4, padx=5, pady=5)
def add_student(self):
# 获取输入框中的值
id_val = self.id_entry.get()
name_val = self.name_entry.get()
gender_val = self.gender_entry.get()
age_val = self.age_entry.get()
# 连接数据库并插入数据
conn = sqlite3.connect("d:\students.db")
cursor = conn.cursor()
cursor.execute("INSERT INTO students VALUES (?, ?, ?, ?)", (id_val, name_val, gender_val, age_val))
conn.commit()
conn.close()
# 清空输入框
self.clear_inputs()
def query_student(self):
# 获取输入框中的学号
id_val = self.id_entry.get()
# 连接数据库并查询数据
conn = sqlite3.connect("d:\students.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM students WHERE id=?", (id_val,))
result = cursor.fetchone()
conn.close()
# 将结果显示在文本框中
if result:
self.textbox.delete("1.0", tk.END)
self.textbox.insert(tk.END, "学号:%s\n姓名:%s\n性别:%s\n年龄:%s\n" % result)
else:
tk.messagebox.showinfo("提示", "该学号不存在!")
def delete_student(self):
# 获取输入框中的学号
id_val = self.id_entry.get()
# 连接数据库并删除数据
conn = sqlite3.connect("d:\students.db")
cursor = conn.cursor()
cursor.execute("DELETE FROM students WHERE id=?", (id_val,))
conn.commit()
conn.close()
# 清空输入框
self.clear_inputs()
def clear_inputs(self):
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)
self.textbox.delete("1.0", tk.END)
if __name__ == "__main__":
root = tk.Tk()
app = StudentInfoGUI(master=root)
app.mainloop()
在该示例代码中,我们首先创建了一个名为StudentInfoGUI的类,继承自tk.Frame。该类包含了一些方法,用于创建各种界面组件、连接数据库、执行增删查改操作等。
在create_widgets方法中,我们创建了输入框、标签、按钮和文本框等组件,并将它们放置在主窗口中。
在add_student方法中,我们获取输入框中的学号、姓名、性别和年龄信息,然后连接数据库并执行INSERT语句,将这些信息插入到students表中。最后,我们调用clear_inputs方法清空输入框。
在query_student方法中,我们获取输入框中的学号,然后连接数据库并执行SELECT语句,获取该学号对应的学生信息。如果查询到了结果,我们将结果显示在文本框中;否则,弹出一个提示框。
在delete_student方法中,我们获取输入框中的学号,然后连接数据库并执行DELETE语句,删除该学号对应的学生信息。最后,我们调用clear_inputs方法清空输入框。
在clear_inputs方法中,我们清空所有输入框和文本框中的内容。
最后,在__main__函数中创建了一个Tkinter的主窗口,并运行StudentInfoGUI类的实例,启动程序
原文地址: https://www.cveoy.top/t/topic/f23V 著作权归作者所有。请勿转载和采集!