前言
使用mysql数据库存储数据,使用python中tkinter库建立一个简单的图书管理系统
提示:以下是本篇文章正文内容,下面案例可供参考
一、MySQL是什么?
MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,增加了速度并提高了灵活性。
- MySQL的使用教程
https://www.runoob.com/mysql/mysql-tutorial.html
二、Tkinter库
Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。
由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于小白而言,搭建一个简单的图形界面 Tkinter 还是一个不错的选择。
- Tkinterl的使用教程
https://www.runoob.com/python/python-gui-tkinter.html
三、Code步骤
1.引入库
import tkinter as tk
import tkinter.ttk as ttk
from pymysql import connect
from tkinter.messagebox import showinfo
from tkinter.constants import END, N, SINGLE
2.使用tkinter搭建系统
代码如下(示例):
#主窗口
root=tk.Tk()
root.title("YU_book_manage_system")
root.geometry("750x500+100+100")
#菜单
menubar=tk.Menu(root)
filemenu=tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label="菜单",menu=filemenu)
filemenu.add_command(label="打开")
filemenu.add_command(label="保存")
filemenu.add_command(label="退出",command=root.destroy)
root.config(menu=menubar)
#面板&框架
pw=tk.PanedWindow(root,orient="vertical",sashrelief="sunken")
pw.pack(fill="both",expand=1)
pw1=tk.PanedWindow(pw,orient="horizontal",sashrelief="sunken")
pw2=tk.PanedWindow(pw,orient="horizontal",sashrelief="sunken")
top_frame,left_frame,mid_frame,right_frame=ttk.Frame(pw1,height=125,relief="flat"),\
ttk.Frame(pw2,relief="sunken"),\
ttk.Frame(pw2,relief="raised"),\
ttk.Frame(pw2,relief="ridge")
pw.add(pw1),pw.add(pw2),pw1.add(top_frame),pw2.add(left_frame),pw2.add(mid_frame),pw2.add(right_frame)
labelframe=tk.LabelFrame(left_frame,text="图书信息",font=("迷你简魏碑",16),labelanchor=N)
ttk.Label(labelframe,text=("编号","图书名称","图书作者","出版日期","图书数量"),font=("华文行楷",11),anchor="n").pack()
#列表框&滚动条
scrollbar=ttk.Scrollbar(labelframe)
listbox=tk.Listbox(labelframe,width=60,font=("黑体",11),height=20,yscrollcommand=scrollbar,selectmode=SINGLE)
listbox.select_set(0)
#链接滚动条&列表框
scrollbar.config(command=listbox.yview)
labelframe.pack(expand=0),scrollbar.pack(side="right",fill="y",pady=2),listbox.pack(side="left",pady=2)
#初始listbox
show_book()
#填充文本&输入框
ttk.Label(top_frame,text="图书管理系统",font=("方正字迹-吕建德行楷繁体",25)).pack(pady=30)
ttk.Label(mid_frame,text="图书编号",font=("黑体",10)).place(x=0,y=55)
ttk.Label(mid_frame,text="图书名称",font=("黑体",10)).place(x=0,y=120)
ttk.Label(mid_frame,text="图书作者",font=("黑体",10)).place(x=0,y=185)
ttk.Label(mid_frame,text="出版日期",font=("黑体",10)).place(x=0,y=250)
ttk.Label(mid_frame,text="图书数量",font=("黑体",10)).place(x=0,y=315)
#entry变量
v1=tk.StringVar()
v2=tk.StringVar()
v3=tk.StringVar()
v4=tk.StringVar()
v5=tk.StringVar()
e1=ttk.Entry(mid_frame,width=16,textvariable=v1)
e2=ttk.Entry(mid_frame,width=16,textvariable=v2)
e3=ttk.Entry(mid_frame,width=16,textvariable=v3)
e4=ttk.Entry(mid_frame,width=16,textvariable=v4)
e5=ttk.Entry(mid_frame,width=16,textvariable=v5)
#单独放置(由于get方法)
e1.pack(padx=5,pady=80)
e2.place(x=5,y=145)
e3.place(x=5,y=205)
e4.place(x=5,y=270)
e5.place(x=5,y=335)
#消息发送
button1=ttk.Button(right_frame,text="查询图书",command=find_book).pack(pady=64)
button2=ttk.Button(right_frame,text="增加图书",command=add_book).pack()
button3=ttk.Button(right_frame,text="修改图书",command=mod_book).pack(pady=64)
button4=ttk.Button(right_frame,text="删除图书",command=del_book).pack()
button5=ttk.Button(mid_frame,text="写入",command=get_data).place(x=20,y=15)
root.mainloop()
图书管理界面截图

3.定义函数(发送消息,操作mysql数据库)
函数建议放在前面,代码如下(示例):
#添加图书
def add_book():
try:
conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
cur=conn.cursor()
cur.execute("select *from books")
data=cur.fetchall()
param2=e2.get()
param3=e3.get()
param4=e4.get()
param5=int(e5.get())
for item in data:
if item[1]==param2 and item[2]==param3:
param5+=1
cur.execute("update books set bnumber=%s where btitle=%s and bauthor=%s",(param5,param2,param3))
conn.commit()
show_book()
showinfo("窗口","图书存在,数量加一")
return()
cur.execute("insert into books(btitle,bauthor,byu_date,bnumber)values(%s,%s,%s,%s)",(param2,param3,param4,param5))
conn.commit()
show_book()
showinfo("窗口","添加成功")
except:
showinfo("窗口","输入格式错误")
#删除图书
def del_book():
conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
cur=conn.cursor()
param1=int(e1.get())
param2=e2.get()
param3=e3.get()
param4=e4.get()
param5=int(e5.get())
if param5>1:
param5-=1
cur.execute("update books set id=%s,btitle=%s,bauthor=%s,byu_date=%s,bnumber=%s where btitle=%s and bauthor=%s",(param1,param2,param3,param4,param5,param2,param3))
conn.commit()
show_book()
showinfo("窗口","图书存在,数量减一")
return()
else:
cur.execute("delete from books where id=%s and btitle=%s",(param1,param2))
conn.commit()
cur.execute("alter table books drop id")
cur.execute("alter table books add id int(12) primary key not null auto_increment first")
show_book()
showinfo("窗口","删除成功")
#更新图书
def show_book():
conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
cur=conn.cursor()
cur.execute("select *from books")
data=cur.fetchall()
listbox.delete(0,END)
for item in data:
listbox.insert("end",item)
cur.close()
conn.close()
#修改图书
def mod_book():
try:
conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
cur=conn.cursor()
param1=int(e1.get())
param2=e2.get()
param3=e3.get()
param4=e4.get()
param5=int(e5.get())
cur.execute("update books set id=%s,btitle=%s,bauthor=%s,byu_date=%s,bnumber=%s where id=%s",(param1,param2,param3,param4,param5,param1))
conn.commit()
show_book()
showinfo("窗口","修改成功")
except:
showinfo("窗口","输入格式错误")
#查询图书
def find_book():
try:
conn=connect(host="localhost",port=3306,database="book_manage",user="root",password="yusql",charset="utf8")
cur=conn.cursor()
param=e2.get()
cur.execute("select *from books")
data=cur.fetchall()
for item in data:
if item[1]==param:
showinfo("窗口",item)
cur.close()
conn.close()
except:
showinfo("窗口","无该图书")
#得到选中列表框数据
def get_data():
value=listbox.get(listbox.curselection())
v1.set(value[0])
v2.set(value[1])
v3.set(value[2])
v4.set(value[3])
v5.set(value[4])
总结
本文仅仅简单使用了tkinter搭建了一个简单的图书管理系统,你也可以搭建其他的信息管理系统或者对代码进行改进,添加更多的功能。
本文介绍了使用Python的tkinter库结合MySQL数据库,构建一个简单的图书管理系统。详细讲解了MySQL数据库的基本概念,以及tkinter库在GUI应用中的作用。通过引入相关库,搭建系统界面,并定义操作数据库的函数,实现了图书信息的管理。这是一个适合初学者实践的基础项目,为进一步的功能扩展提供了可能。
2万+

被折叠的 条评论
为什么被折叠?



