某农业学校python(十一)

 实验5.2:综合GUI编程-学生信息管理

题目描述:利用sqlite3、tkinter、tkinter.messagebox库完成2项编程任务。

(1)使用SQLiteStudio.exe工具(见Q群)设计test.db数据库,创建图2-1所示学生数据表student(sid, sname, ssex, sage, sclass),输入如图2-2所示数据。

                      

                                                           图2-1 数据表结构

                    

                                                            图2-2 数据表内容

(2)设计如图3所示学生管理界面,实现学生“录入”、“删除”、“修改”、“查询”、“查看”和关闭6个子功能。(以下给出单个“查询”和所有“查看”功能图示)

                                       

                                   

                                                                      图3

提示

(1)学生数据表年龄字段设置为smallint类型,其它可全部为varchar类型;

(2)利用tkinter生成窗体、标签、文本框、命令按钮和列表框;

(3)利用grid和place实现窗体布局和控件定位;

(4)利用SQL语句Insert、Delete、Update和Select实现添、删、改、查功能。

import sqlite3
import tkinter as tk
from tkinter import *
from tkinter.messagebox import *
from statistics import variance

# 总体的框架
w = tk.Tk()
w.geometry('800x600')
w.title("学生信息管理")

# 总页面的布局
zhu = tk.Label(w, text="学生管理平台", fg="blue", font=('黑体', 20, "bold"))
zhu.place(x=320, y=15)

hao = tk.Label(w, text="学  号", fg="red", font=('黑体', 14, "bold"))
hao.place(x=100, y=70)
hao1 = tk.Entry(w, width=20)
hao1.place(x=190, y=70)

ming = tk.Label(w, text="姓  名", fg="black", font=('黑体', 14, "bold"))
ming.place(x=100, y=110)
ming1 = tk.Entry(w, width=20)
ming1.place(x=190, y=110)

nian = tk.Label(w, text="年  龄", fg="black", font=('黑体', 14, "bold"))
nian.place(x=100, y=150)
nian1 = tk.Entry(w, width=20)
nian1.place(x=190, y=150)

xing = tk.Label(w, text="性  别", fg="black", font=('黑体', 14, "bold"))
xing.place(x=440, y=110)
xing1 = tk.Entry(w, width=20)
xing1.place(x=530, y=110)

ban = tk.Label(w, text="班  级", fg="black", font=('黑体', 14, "bold"))
ban.place(x=440, y=150)
ban1 = tk.Entry(w, width=20)
ban1.place(x=530, y=150)

# 设置显示框!!最重要的是其中的输出内容一定要保证显示!!
xian = tk.StringVar()
kuang = tk.Listbox(listvariable=xian)
kuang.place(x=100, y=240, width=600, height=300)

# 创建数据库
f = open("student1.db", 'w+')
f.close()
co = sqlite3.connect(r"C:\Users\qssss\PycharmProjects\pythonProject\venv\实验5\student1.db")
cu = co.cursor()
cu.execute('DROP TABLE IF EXISTS student')
cu.execute("CREATE TABLE student (sid char(7) Primary Key,\
           sname varchar(8) not null,ssex char(2) not null,\
           sage smalint,sclass varchar(8) not null)")

# 录入
def log():
    sql = "INSERT INTO student(sid,sname,ssex,sage,sclass) VALUES(?,?,?,?,?)"
    cu.execute(sql, (hao1.get(), ming1.get(), xing1.get(), nian1.get(), ban1.get()))
    co.commit()

# 删除
def delete():
    cu.execute("select sid,sname,sage,ssex,sclass from student where sid='%s'" % hao1.get())
    cu.execute("SELECT *FROM student")
    temp = cu.fetchall()
    if len(temp)!=0:
        sql = "DELETE FROM student where sid='%s'" % hao1.get()
        cu.execute(sql)
    else:
        showwarning(title='错误', message="未找到该学生信息,不可删除!")
    co.commit()

# 修改
def update():
    cu.execute("select sid,sname,sage,ssex,sclass from student where sid='%s'" % hao1.get())
    cu.execute("SELECT *FROM student")
    temp = cu.fetchall()
    if len(temp) != 0:
        sql = "UPDATE student SET sname='%s',sage='%s',ssex='%s',sclass='%s' where sid='%s'" % (ming1.get(), nian1.get(), xing1.get(), ban1.get(), hao1.get())
        cu.execute(sql)
    else:
        showwarning(title='错误', message="未找到该学生信息,不可修改!")
    co.commit()

# 查询
def select():
    cu.execute("select sid,sname,sage,ssex,sclass from student where sid='%s'" % hao1.get())
    # cu.execute("SELECT *FROM student")
    temp = cu.fetchall()
    if len(temp) != 0:
        xian.set(temp)
    else:
        showwarning(title='错误', message="未找到该学生信息!")

# 查看全部
def chakanall():
    cu.execute("select sid,sname,sage,ssex,sclass from student where sid='%s'" % hao1.get())
    cu.execute("SELECT *FROM student")
    temp = cu.fetchall()
    if len(temp) != 0:
        xian.set(temp)
    else:
        showwarning(title='错误', message="未找到信息!")

# 关闭
def close():
    w.destroy()

# 再进行录入等6个操作的布局加操作
lr = tk.Button(w, text="录入", command=log)
lr.place(x=100, y=190, width=80)
sc = tk.Button(w, text="删除", command=delete)
sc.place(x=200, y=190, width=80)
xg = tk.Button(w, text="修改", command=update)
xg.place(x=300, y=190, width=80)
cx = tk.Button(w, text="查询", command=select)
cx.place(x=400, y=190, width=80)
ck = tk.Button(w, text="查看全部", command=chakanall)
ck.place(x=500, y=190, width=80)
gb = tk.Button(w, text="关闭", command=close)
gb.place(x=600, y=190, width=80)

w.mainloop()
co.close()

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值