数据库实践作业增删改查GU I
时间: 2023-10-02 17:10:14 浏览: 101
数据库的增删改查
5星 · 资源好评率100%
好的,以下是一个简单的增删改查GUI的实现示例。
首先,我们需要创建一个数据库和表,假设我们要创建一个名为“students”的表,包含“id”、“name”、“age”和“gender”四个字段,其中“id”为自增主键。
```sql
CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE IF NOT EXISTS students (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT(11) NOT NULL,
gender VARCHAR(10) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
接下来,我们可以使用Python的Tkinter库来创建GUI界面,并通过PyMySQL库实现与数据库的交互。
```python
import pymysql
from tkinter import *
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', db='test', charset='utf8')
cursor = conn.cursor()
# 创建GUI窗口
root = Tk()
root.title("学生信息管理系统")
# 标签和输入框
Label(root, text="姓名:").grid(row=0, column=0)
name_entry = Entry(root)
name_entry.grid(row=0, column=1)
Label(root, text="年龄:").grid(row=1, column=0)
age_entry = Entry(root)
age_entry.grid(row=1, column=1)
Label(root, text="性别:").grid(row=2, column=0)
gender_entry = Entry(root)
gender_entry.grid(row=2, column=1)
# 显示学生信息的列表框
listbox = Listbox(root, width=60)
listbox.grid(row=3, column=0, columnspan=2)
# 查询学生信息
def query():
# 清空列表框
listbox.delete(0, END)
# 查询语句
sql = "SELECT * FROM students"
try:
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
id = row[0]
name = row[1]
age = row[2]
gender = row[3]
# 将查询结果添加到列表框
listbox.insert(END, f"{id} {name} {age} {gender}")
except:
conn.rollback()
# 添加学生信息
def add():
name = name_entry.get()
age = int(age_entry.get())
gender = gender_entry.get()
# 插入语句
sql = f"INSERT INTO students (name, age, gender) VALUES ('{name}', {age}, '{gender}')"
try:
cursor.execute(sql)
conn.commit()
# 清空输入框
name_entry.delete(0, END)
age_entry.delete(0, END)
gender_entry.delete(0, END)
# 刷新学生信息列表
query()
except:
conn.rollback()
# 修改学生信息
def modify():
# 获取当前选中的学生信息
selected_index = listbox.curselection()[0]
selected_student = listbox.get(selected_index)
# 解析学生信息
id, name, age, gender = selected_student.split(" ")
# 显示待修改的学生信息
name_entry.delete(0, END)
name_entry.insert(0, name)
age_entry.delete(0, END)
age_entry.insert(0, age)
gender_entry.delete(0, END)
gender_entry.insert(0, gender)
# 更新按钮绑定的函数
add_button.config(command=lambda: update(id))
# 更新学生信息
def update(id):
name = name_entry.get()
age = int(age_entry.get())
gender = gender_entry.get()
# 更新语句
sql = f"UPDATE students SET name='{name}', age={age}, gender='{gender}' WHERE id={id}"
try:
cursor.execute(sql)
conn.commit()
# 清空输入框
name_entry.delete(0, END)
age_entry.delete(0, END)
gender_entry.delete(0, END)
# 刷新学生信息列表
query()
except:
conn.rollback()
# 删除学生信息
def delete():
# 获取当前选中的学生信息
selected_index = listbox.curselection()[0]
selected_student = listbox.get(selected_index)
# 解析学生信息
id, name, age, gender = selected_student.split(" ")
# 删除语句
sql = f"DELETE FROM students WHERE id={id}"
try:
cursor.execute(sql)
conn.commit()
# 清空输入框
name_entry.delete(0, END)
age_entry.delete(0, END)
gender_entry.delete(0, END)
# 刷新学生信息列表
query()
except:
conn.rollback()
# 查询按钮
query_button = Button(root, text="查询", command=query)
query_button.grid(row=4, column=0)
# 添加按钮
add_button = Button(root, text="添加", command=add)
add_button.grid(row=4, column=1)
# 修改按钮
modify_button = Button(root, text="修改", command=modify)
modify_button.grid(row=5, column=0)
# 删除按钮
delete_button = Button(root, text="删除", command=delete)
delete_button.grid(row=5, column=1)
# 启动GUI程序
query()
root.mainloop()
# 关闭数据库连接
conn.close()
```
这个示例中,我们创建了一个包含姓名、年龄和性别的学生信息管理系统。通过GUI界面,用户可以查询、添加、修改和删除学生信息,所有操作都会实时更新数据库中的数据。
需要注意的是,上面的示例只是一个简单的实现,实际应用中还需要考虑更多的细节和安全问题。
阅读全文