赞
踩
技术栈:Python3.7+mysql8.0+Tkinter
基本功能:用户登录、注册,录入书籍、修改书籍、查询书籍、删除书籍、统计书籍、排序书籍、导出书籍信息到本地功能,涵盖管理系统的增删改查。
完整代码见文末链接~~~
需要安装的库:
- import pymysql
- import pandas as pd
- from tkinter import *
- from tkinter import ttk
- from tkinter import messagebox
数据库初始操作:
- # 初始化数据库
- db = pymysql.connect(host='localhost',
- user='root', # 用户名
- password='178401', # 数据库密码
- database='book_database') # 数据库名字
在使用之前,需要确保已经下载安装好mysql,并且将数据库密码配置为自己的mysql密码。
进入mysql,创建名为book_database的数据库
create database book_database;
出现如上图所示的OK,就可以顺利运行代码了,建表操作已经在代码中集成。
系统初始如下:
初始化登录界面代码如下:
- class Login():
- def __init__(self):
- self.login_root=Tk()
- self.login_root.title('书籍管理系统')
- self.login_root.minsize(250, 150)
- self.judge=False
-
- def login_tk(self): #登录主界面
- Button(self.login_root, text='登录系统', width=30, height=2,command=self.test_log).grid(row=0, column=0, padx=5, pady=5)
- Button(self.login_root, text='用户注册', width=30, height=2,command=self.registered).grid(row=1, column=0, padx=5, pady=5)
- Button(self.login_root, text='初始化数据库', width=30, height=2,command=self.create_table).grid(row=2, column=0, padx=5, pady=5)
- Button(self.login_root, text='退出系统', width=30, height=2,command=self.login_root.destroy).grid(row=3, column=0, padx=5, pady=5)
- self.login_root.mainloop()
'运行
在第一次使用项目时,要点击第三个初始化数据库按钮用来建立表单,如果已有表单,此按钮会清空原有数据建立新的空白表单。
初始化数据库代码如下:
- def create_table(self): #初始化数据库
- ms1 = messagebox.askyesno('提示!', '确定初始化数据库?这将清楚之前数据')
- if ms1:
- cursor.execute('drop table if exists book_database')
- create_card_message_sql = 'create table book_database(id char(20),name char(20),author char(20),press char(20),category char(20))'
- cursor.execute(create_card_message_sql)
-
- cursor.execute('drop table if exists test_id')
- create_test_id_sql='create table test_id(user_name char(20),password char(20))'
- cursor.execute(create_test_id_sql)
- messagebox.showinfo('提示!', '初始化数据库成功!')
- else:
- pass
'运行
初始化完成后,第一步使用时应先点注册,会弹出注册界面:
注册页面代码如下:
- def registered(self):#注册界面
- registered_root=Tk()
- registered_root.title('注册')
- Label(registered_root, text='用户名:').grid(row=0, column=0, padx=5, pady=5)
- Label(registered_root, text='密码:').grid(row=1, column=0, padx=5, pady=5)
- Label(registered_root, text='请再次输入密码:').grid(row=2, column=0, padx=5, pady=5)
- user_name = Entry(registered_root)
- user_name.grid(row=0, column=1, padx=5, pady=5)
- password_A = Entry(registered_root)
- password_A.grid(row=1, column=1, padx=5, pady=5)
- password_B = Entry(registered_root)
- password_B.grid(row=2, column=1, padx=5, pady=5)
-
- def b1_fc():
- if user_name.get() and password_A.get() and password_B.get():
- if password_A.get() == password_B.get():
- sql="insert into test_id(user_name,password) values ('%s','%s')"%(user_name.get(),password_A.get())
- cursor.execute(sql)
- db.commit()
- messagebox.showinfo('提示!','注册成功!')
- registered_root.destroy()
- else:
- messagebox.showinfo('提示!','两次输入密码不一致,请重新输入~')
- password_A.delete(0,END)
- password_B.delete(0,END)
- else:
- messagebox.showinfo('提示!','用户名和密码不可以为空!')
- Button(registered_root, text='注册',command=b1_fc).grid(row=3, column=0, padx=5, pady=5)
- Button(registered_root, text='返回', command=registered_root.destroy).grid(row=3, column=2, padx=5, pady=5)
'运行
注册完成后,账号密码信息会被添加到数据库中,就可以用注册的账号密码来登录了,登录界面如下:
登录相关代码如下:
- def test_log(self): #登录系统
- test_log_root=Tk()
- test_log_root.title('登录')
- Label(test_log_root,text='请输入用户名:').grid(row=0,column=0,padx=5,pady=5)
- Label(test_log_root,text='请输入密码:').grid(row=1,column=0,padx=5,pady=5)
- user_name=Entry(test_log_root)
- user_name.grid(row=0,column=1,padx=5,pady=5)
- password=Entry(test_log_root)
- password.grid(row=1,column=1,padx=5,pady=5)
-
- def b1_fc():
- if user_name.get() and password.get():
- sql="select * from test_id where user_name='%s'"%user_name.get()
- a = pd.read_sql(sql, db)
- if len(a):
- if a['password'][0]==password.get():
- messagebox.showinfo('提示!','登录成功!')
- test_log_root.destroy()
- self.login_root.destroy()
- self.judge=True
- else:
- messagebox.showinfo('提示','密码错误!请重新输入')
- password.delete(0,END)
- else:
- messagebox.showinfo('提示','用户名不存在!')
- user_name.delete(0,END)
- password.delete(0,END)
- else:
- messagebox.showinfo('提示','用户名或密码不能为空!')
-
- Button(test_log_root,text='登录',command=b1_fc).grid(row=2,column=0,padx=5,pady=5)
- Button(test_log_root,text='返回',command=test_log_root.destroy).grid(row=2,column=2,padx=5,pady=5)
'运行
登录完成,就来到了系统的主页面:
初次登录的时候大家主页面是没用数据的,要手动点录入书籍按钮来添加书籍数据进去。
录入书籍、修改书籍、统计书籍、保存信息(导出所有信息到本地就是你这个程序存在那里,导出的csv文件就在哪里),删除书籍、查询书籍、排序书籍,按钮全都绑定了function可以正常使用,具体效果图如下:
统计书籍
导出书籍
大家可以自行探索,几年前写的代码了比较粗糙敬请谅解,有需要的可以在框架上自行探索,小白不懂的欢迎留言。
完成代码:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。