python 用tkinter 链接mysql写一个成绩管理系统
时间: 2023-08-04 14:23:24 浏览: 195
好的,下面是一个使用 Tkinter 和 MySQL 实现的简单成绩管理系统。在这个系统中,你可以添加、查询、更新和删除学生的成绩信息。
先安装依赖包 PyMySQL,使用 pip 命令即可:
```
pip install pymysql
```
然后创建一个 MySQL 数据库和表,用来存储学生的成绩信息。在这个例子中,我们创建一个名为 `student` 的数据库和一个名为 `score` 的表,表结构如下:
```sql
CREATE TABLE `score` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`subject` varchar(20) NOT NULL,
`score` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
接下来是 Python 代码,注释中会详细说明每一步的作用:
```python
import tkinter as tk
import pymysql
class App:
def __init__(self, root):
# 创建数据库连接
self.conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
db='student',
charset='utf8mb4'
)
# 创建界面
self.root = root
self.root.title('成绩管理系统')
self.root.geometry('400x300')
# 创建控件
tk.Label(self.root, text='姓名:').grid(row=0, column=0)
tk.Label(self.root, text='科目:').grid(row=1, column=0)
tk.Label(self.root, text='成绩:').grid(row=2, column=0)
self.name_entry = tk.Entry(self.root)
self.name_entry.grid(row=0, column=1)
self.subject_entry = tk.Entry(self.root)
self.subject_entry.grid(row=1, column=1)
self.score_entry = tk.Entry(self.root)
self.score_entry.grid(row=2, column=1)
tk.Button(self.root, text='添加', command=self.add_score).grid(row=3, column=0)
tk.Button(self.root, text='查询', command=self.query_score).grid(row=3, column=1)
tk.Button(self.root, text='更新', command=self.update_score).grid(row=4, column=0)
tk.Button(self.root, text='删除', command=self.delete_score).grid(row=4, column=1)
def add_score(self):
# 获取用户输入的学生信息
name = self.name_entry.get()
subject = self.subject_entry.get()
score = self.score_entry.get()
# 插入学生信息到数据库
cursor = self.conn.cursor()
sql = 'INSERT INTO score (name, subject, score) VALUES (%s, %s, %s)'
cursor.execute(sql, (name, subject, score))
self.conn.commit()
tk.messagebox.showinfo('提示', '添加成功')
def query_score(self):
# 获取用户输入的学生姓名
name = self.name_entry.get()
# 查询学生信息
cursor = self.conn.cursor()
sql = 'SELECT subject, score FROM score WHERE name = %s'
cursor.execute(sql, name)
result = cursor.fetchall()
# 显示查询结果
if result:
text = ''
for row in result:
text += row[0] + ': ' + str(row[1]) + '\n'
tk.messagebox.showinfo('查询结果', text)
else:
tk.messagebox.showinfo('提示', '没有找到该学生的成绩信息')
def update_score(self):
# 获取用户输入的学生信息
name = self.name_entry.get()
subject = self.subject_entry.get()
score = self.score_entry.get()
# 更新学生信息到数据库
cursor = self.conn.cursor()
sql = 'UPDATE score SET score = %s WHERE name = %s AND subject = %s'
cursor.execute(sql, (score, name, subject))
if cursor.rowcount > 0:
self.conn.commit()
tk.messagebox.showinfo('提示', '更新成功')
else:
tk.messagebox.showinfo('提示', '没有找到该学生的成绩信息')
def delete_score(self):
# 获取用户输入的学生信息
name = self.name_entry.get()
subject = self.subject_entry.get()
# 删除学生信息
cursor = self.conn.cursor()
sql = 'DELETE FROM score WHERE name = %s AND subject = %s'
cursor.execute(sql, (name, subject))
if cursor.rowcount > 0:
self.conn.commit()
tk.messagebox.showinfo('提示', '删除成功')
else:
tk.messagebox.showinfo('提示', '没有找到该学生的成绩信息')
def __del__(self):
# 关闭数据库连接
self.conn.close()
# 启动程序
root = tk.Tk()
app = App(root)
root.mainloop()
```
在代码中,我们使用了 Tkinter 创建了一个简单的界面,包括了添加、查询、更新和删除成绩信息的按钮和输入框。当用户点击按钮时,程序会根据用户的输入来执行相应的数据库操作,例如添加、查询、更新和删除成绩信息。
这是一个简单的成绩管理系统,你可以根据实际需要进行修改和扩展。
阅读全文