# -*- coding: utf-8 -*-
# @Author : Code_流苏
# @Time : 2022/12/25 18:32
import tkinter as tk
from pymysql import *
import tkinter.messagebox as mb
# 使用connect方法对数据库进行连接
conn = connect(host='127.0.0.1', user="root", passwd="123456", db="mysql", port=3306, charset="utf8mb4")
# 使用conn.cursor方法,用于操作的"一双手"
cur = conn.cursor()
def add(): # 增加记录
global second
global add_sno
global add_name
global add_Chinese
global add_Math
global add_Physics
global add_English
second = tk.Toplevel() # 创建一个顶级窗口
second.title("增加一条学生记录")
second.geometry('300x300') #调整窗口大小
# 主Frame
frame = tk.Frame(second) #框架(Frame)控件在屏幕上显示一个矩形区域,多用来作为容器。
frame.pack()
# 两个子(左右)Frame,注意子frame是在主frame的框架下
frame_l = tk.Frame(frame)
frame_r = tk.Frame(frame)
frame_l.pack(side='left')
frame_r.pack(side='right')
tk.Label(frame_l, text='学号 ').pack()
add_sno = tk.Entry(frame_r, show=None)
add_sno.pack()
tk.Label(frame_l, text='姓名 ').pack()
add_name = tk.Entry(frame_r, show=None)
add_name.pack()
tk.Label(frame_l, text='语文成绩 ').pack()
add_Chinese = tk.Entry(frame_r, show=None)
add_Chinese.pack()
tk.Label(frame_l, text='数学成绩 ').pack()
add_Math = tk.Entry(frame_r, show=None)
add_Math.pack()
tk.Label(frame_l, text='物理成绩 ').pack()
add_Physics = tk.Entry(frame_r, show=None)
add_Physics.pack()
tk.Label(frame_l, text='英语成绩 ').pack()
add_English = tk.Entry(frame_r, show=None)
add_English.pack()
# 将录入的成绩保存进数据库中
b1 = tk.Button(second, text='确定', width=15, height=2, command=add_1)
b1.pack()
second.mainloop()
def add_1(): # 增加记录
s0 = add_sno.get()
s1 = add_name.get()
s2 = add_Chinese.get()
s3 = add_Math.get()
s4 = add_Physics.get()
s5 = add_English.get()
# sql='select sno from info1 where '
# if s0
# a1 = "insert into info1(sno,name,Chinese,Math,Physics,English) values ("
# sql1 = a1 + s0 + "," + s1 + "," + s2 + "," + s3 + "," + s4 + "," + s5 + ")" # 插入语句合并
a1 = "insert into info1(sno,name,Chinese,Math,Physics,English) values ("
sql1 = a1 + s0 + "," + s1 + "," + s2 + "," + s3 + "," + s4 + "," + s5 + ")" # 插入语句合并
# sql_1 = 'alter database mysql character set utf8;'
try:
# cur.execute(sql_1)
# cur.execute("set name 'utf8'")
# sql1.encode('utf8')
cur.execute(sql1)
conn.commit() # 提交事务
except Exception as e:
conn.rollback() # 事件回滚
mb.showinfo(title='提示', message=e)
return
conn.commit()
mb.showinfo(title='提示', message="添加成功")
second.destroy()
def delete(): # 删除
global del_sno
global third
third = tk.Toplevel() # 顶级窗口
third.title("删除一条学生记录")
third.geometry('260x260')
frame = tk.Frame(third)
frame.pack()
frame_l = tk.Frame(frame)
frame_r = tk.Frame(frame)
frame_l.pack(side='left')
frame_r.pack(side='right')
tk.Label(frame_l, text='请输入学号 ').pack()
del_sno = tk.Entry(frame_r, show=None)
del_sno.pack()
b1 = tk.Button(third, text='确定', width=8, height=1, command=delete_1)
b1.pack()
third.mainloop()
def delete_1(): # 删除
id1 = del_sno.get()
sql3 = "delete from info1 where sno=" + id1
try:
i = cur.execute(sql3)
except Exception as e:
mb.showinfo(title='提示', message=e)
if i != 0: # mysql会返回一个值,当命令执行成功为1,失败为0
conn.commit() # 提交事务
else:
conn.rollback() # 回滚事务,即要回退掉之前的操作
mb.showinfo(title='提示', message="删除失败")
return
mb.showinfo(title='提示', message="删除成功")
third.destroy()
def change(): # 修改
global fouth
global change_sno
global change_Chinese
global change_Math
global change_Physics
global change_English
fouth = tk.Toplevel() # 顶级窗口
fouth.title("修改一条学生记录")
fouth.geometry('300x300')
# 主Frame
frame = tk.Frame(fouth)
frame.pack()
# 两个子(左右)Frame,注意子frame是在主frame的框架下
frame_l = tk.Frame(frame)
frame_r = tk.Frame(frame)
frame_l.pack(side='left')
frame_r.pack(side='right')
tk.Label(frame_l, text='学号 ').pack()
change_sno = tk.Entry(frame_r, show=None)
change_sno.pack()
# tk.Label(frame_l, text='姓名 ').pack()
# change_name = tk.Entry(frame_r, show=None)
# change_name.pack()
tk.Label(frame_l, text='语文成绩 ').pack()
change_Chinese = tk.Entry(frame_r, show=None)
change_Chinese.pack()
tk.Label(frame_l, text='数学成绩 ').pack()
change_Math = tk.Entry(frame_r, show=None)
change_Math.pack()
tk.Label(frame_l, text='物理成绩 ').pack()
change_Physics = tk.Entry(frame_r, show=None)
change_Physics.pack()
tk.Label(frame_l, text='英语成绩 ').pack()
change_English = tk.Entry(frame_r, show=None)
change_English.pack()
# 将录入的成绩保存进数据库中
b1 = tk.Button(fouth, text='确定', width=15, height=2, command=update_1)
b1.pack()
fouth.mainloop()
def update_1(): # 修改学生成绩
s0 = change_sno.get()
s1 = change_Chinese.get()
s2 = change_Math.get()
s3 = change_Physics.get()
s4 = change_English.get()
a1 = "update info1 set Chinese=" + s1 + ",Math=" + s2 + ",Physics=" + s3 + ",English=" + s4 + " where sno=" + s0
sql1 = a1
try:
cur.execute(sql1)
conn.commit()
except Exception as e:
conn.rollback()
mb.showinfo(title='提示', message=e)
return
conn.commit()
mb.showinfo(title='提示', message="修改成功")
fouth.destroy()
def query(): # 查询所有
global select_sno
fifth = tk.Toplevel()
fifth.title("查询学生记录")
fifth.geometry('400x300')
b1 = tk.Button(fifth, text='确定', width=8, height=1, command=select_1)
b1.pack()
fifth.mainloop()
def select_1():
fifth_1 = tk.Toplevel()
fifth_1.geometry('400x100')
t = tk.Text(fifth_1, height=8)
t.pack()
order = 'select * from info1'
cur.execute(order)
db = cur.fetchall() # 1
# 查询时获取结果集中的所有行
for i in db:
t.insert('end', i)
t.insert('end', '\n')
def quire(): # 查询一条
global quire_sno
global sixth
sixth = tk.Toplevel()
sixth.title("查询一条学生记录")
sixth.geometry('260x260')
frame = tk.Frame(sixth)
frame.pack()
frame_l = tk.Frame(frame)
frame_r = tk.Frame(frame)
frame_l.pack(side='left')
frame_r.pack(side='right')
tk.Label(frame_l, text='请输入学号 ').pack()
quire_sno = tk.Entry(frame_r, show=None)
quire_sno.pack()
b1 = tk.Button(sixth, text='确定', width=8, height=1, command=quire_1)
b1.pack()
sixth.mainloop()
def quire_1(): # 查询一条
id2 = quire_sno.get()
sql_order = "select * from info1 where sno=" + id2
try:
j = cur.execute(sql_order)
# mysql会返回一个值,当命令执行成功为1,失败为0
except Exception as e:
mb.showinfo(title='提示', message=e)
if j != 0:
sixth_1 = tk.Toplevel()
sixth_1.geometry('400x100')
frame = tk.Frame(si
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
百度 而可这世界杯一来,就更是水火不容了,你看球不理我了,我受到冷落了,我看个球你也管等等诸如此类的争吵大战,可谓接连不断、硝烟四起。
项目名称:学生成绩管理系统(Python + Tkinter + MySQL) 1.项目简介 这是一个基于 Python 语言、图形界面使用 `Tkinter` 开发的学生成绩管理系统,数据库使用 `MySQL`,通过 `pymysql` 实现数据库连接。适合作为计算机相关专业的课程设计、实训或期末项目参考。 2.功能模块 * 用户注册与登录(含数据库校验) * 添加学生成绩 * 删除学生成绩 * 修改学生成绩 * 查询单个学生成绩 * 浏览所有学生成绩 * 图形化界面操作,界面简洁直观 3.技术栈 * Python 3.x * Tkinter(GUI 界面库) * PyMySQL(数据库连接) * MySQL 数据库(需提前创建好 `info1` 和 `info2` 表) 4.文件结构 * 主程序代码:`main.py` * 登录窗口、功能菜单与子窗口界面集成于同一个文件,便于学习和修改 * 附带图标与背景图(如有上传请一并说明) 5.注意事项 * 启动前请确保本地 MySQL 服务运行正常,且用户 `root` 密码为 `123456`(可在代码中修改) * 请提前创建好数据库及相关表,字段结构参考代码中的 SQL 操作语句 * 若使用中文路径或数据,请确保系统默认编码为 UTF-8,避免乱码 6.适用场景 - 大学生课设/实训项目 - Python GUI 初学者练习 - 数据库增删改查(CRUD)教学案例 - 简单的信息管理系统开发参考
资源推荐
资源详情
资源评论































收起资源包目录












共 9 条
- 1
资源评论


Code_流苏

- 粉丝: 10w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 高校院所科技成果转化数智服务平台:构建产学研协同新生态_4.docx
- 高校院所科技成果转化数智服务平台:构建产学研协同新生态_3.docx
- 高校院所科技成果转化数智服务平台:构建产学研协同新生态_5.docx
- 高校院所科技成果转化数智服务平台:构建产学研协同新生态_8.docx
- 高校院所科技成果转化数智服务平台:构建创新资源精准对接新范式.docx
- 高校院所科技成果转化数智服务平台:构建生态价值网络,实现学术产业双赢.docx
- 高校院所科技成果转化数智服务平台:构建生态协同新范式.docx
- 高校院所科技成果转化数智服务平台:技术经理人的新引擎.docx
- 高校院所科技成果转化数智服务平台:构建协同创新生态新范式.docx
- 高校院所科技成果转化数智服务平台:构建生态协同新范式_1.docx
- 高校院所科技成果转化数智服务平台:生态赋能新范式.docx
- 高校院所科技成果转化数智服务平台:生态赋能型营销软文.docx
- 高校院所科技成果转化数智服务平台:生态协同赋能创新.docx
- 高校院所科技成果转化数智服务平台:生态协同赋能创新转化.docx
- 高校院所科技成果转化数智服务平台:生态协同赋能创新转化_1.docx
- 高校院所科技成果转化数智服务平台的创新价值.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
