源代码在最后哈!!!耐心翻到最后就有了!
项目成果展示视频如下:
图书管理系统演示视频
项目简介
内容简述:
1. 项目背景:
目前各种信息管理系统层出不穷,同时随着
python
语言成为最简单最好用
最方便的一门编程语言,很多人机交互界面都会用
python
语言来进行编写。基
于此,本组通过该图书管理系统锻炼自身
python
编程能力。
2. 工作概述:
基于
python
语言和
tkinter
库,做出一个带有可视化人机交互页面的图书管
理系统,主要包括登录页,登录反馈,主界面,数据存储以及操作文件四部分。
3. 最终结果描述:
最终实现:通过判断账户密码是否正确;区分管理员和普通用户;主界面
图书入库、信息展示查询,借阅图书,关于四个功能;通过前端用户操作影响
后端数据存储并反馈结果给前端;
相关技术:
1. TKINTER
库的使用:
本项目主要使用
tkinter
库内方法来呈现界面,如
lable
,
entey
,
button
等方法
的各种运用,参数的定义(如
textvariable
,),界面各元素的排布等。
2. 面向对象的编写方式:
本系统共五个程序文件,为了方便文件间分工明确以及方便调用,五个文
件皆以类的描述为主体,通过定义多个类,在类内定义所需变量和方法,来做
到模块调用,不同文件方法引用等功能。
3. 后端数据存储方式:
由于前期数据较少,故目前采用
JSON
文件来进行存储用户密码数据、图书
信息数据、用户借阅数据等,后期数据较多,为方便查看起见,会更新为数据
库文件存储数据,如
mysql
,
sqlite
,
mongo
等数据库;
由于
json
文件以字典类型存储数据,故数据调用是采用字典的操作方式与
方法
项目程序环境构建
本程序基于 python
语言,用到了
tkinter
库
json
库以及
time
库,在
pycharm
编译器编写并运行成功。
程序共分为五个程序文件(.
PY
)和三个数据库存储文件(.
json
)如下:
使用说明:将压缩包内所有文件放到一个文件夹下,运行 LoginPage
程序文件即
可运行界面程序。通过在
pycharm
内打开
json
文件即可查看用户密码数据(登录时须
输入
users.json
文件中的账户名和密码,其中第一个字典内存储管理员账户密码)、借
阅数据(
jieyue.json
),图书信息数据
(tuhsu.json)
等。
详细描述
方案/算法描述:
总体思路如图:
实现描述:
各程序文件功能以及调用:
db.py:
负责读取以及写入三个数据存储
json
文件,读取文件数据反馈到前端用户
界面,以及将前端用户操作作用到
json
文件中。具体实现代码如下:
self.users=json.loads(open('users.json',mode='r',encoding='utf-8').read())
self.tushus=json.loads(open('tushus.json',mode='r',encoding='utf-8').read())
self.jieyues=json.loads(open('jieyue.json',mode='r',encoding='utf8').read())
(以读写方式打开三个数据文件)
def baocun(self):
with open("tushus.json", 'w', encoding='utf-8') as f:
json.dump(self.tushus, f,ensure_ascii=False)
def insert1(self,jys):
self.jieyues.append(jys)
def baocun1(self):
with open("jieyue.json", 'w', encoding='utf8') as f:
json.dump(self.jieyues, f,ensure_ascii=False)
(操作文件内数据所编写的方法)
LoginPage.py:
该文件为主文件,给出一个登录界面,首先通过引用
db.py
文件内
类,来比较界面内输入的账户名以及密码在密码库中是否存在并给出登录反馈;若
为管理员则启动
MinaPage
文件,若为普通用户则启动
MinaPage2
文件。具体实
现代码以及运行结果如下:
(登录界面)
import tkinter as tk
from tkinter import messagebox
from db import db
from MinaPage import MianPage
from MinaPage2 import MianPage2
(引用库以及其他文件)
(登陆失败显示的警告页)
tk.Label(self.page).grid(row=0,column=0)
tk.Label(self.page,text='账户:').grid(row=1,column=1)
tk.Entry(self.page,textvariable=self.username).grid(row=1,column=2)
tk.Label(self.page,text='密码:').grid(row=2,column=1,pady=10)
tk.Entry(self.page,textvariable=self.password).grid(row=2,column=2)
tk.Button(self.page,text='登录',command=self.login).grid(row=3,column=1,pady=10)
tk.Button(self.page,text='退出',command=self.page.quit).grid(row=3,column=2)
(登录界面的代码)
def login(self):
name=self.username.get()
pwd=self.password.get()
flag,message=db.check_login(name,pwd)
if name=='admin' and pwd=='123456':
print('管理员登录成功!')
self.page.destroy()
self.jianbie = 1
MianPage(root)
else:
if flag:
print('用户登陆成功!')
self.page.destroy()
MianPage2(root)
else:
messagebox.showwarning(title='警告', message=message)
(判断登录是否成功以及调用
db
和
MianPage
文件的代码
)
MIanPage.py 和 MianPage2.py:
1. 两文件唯一区别在于管理员所用的 MianPage 文件可以使用图书入库功能,而
MianPage2 文件无法点击图书入库按钮也就无法使用该功能。
2. 此文件为主要界面文件,编写了主界面四个功能菜单的按钮,并且调用 views
文件来实现各个功能内具体内容。
具体代码实现以及运行结果如下:(主界面菜单显示)
class MianPage:
def __init__(self,master:tk.Tk):
self.root=master
self.root.title('图书信息管理系统 v0.0.1')
self.root.geometry('600x400')
self.create_page()
def create_page(self):
self.about_frame=AboutFrame(self.root)
# tk.Label(self.about_frame,text='关于作品:本作品由tkinter制作').pack()
# tk.Label(self.about_frame,text='关于作者:').pack()
# tk.Label(self.about_frame, text='版权所有:').pack()
self.jieyue_frame = jieyue_frame(self.root)
# tk.Label(self.jieyue_frame, text='借阅图书界面').pack()
self.Search_frame = SearchFrame(self.root)
self.ruku_frame = RukuFrame(self.root)
menubar= tk.Menu(self.root)
menubar.add_command(label='图书入库',command=self.show_Ruku)
menubar.add_command(label='信息查询',command=self.show_Search)
menubar.add_command(label='借阅图书',command=self.show_jieyue)
menubar.add_command(label='关于',command=self.show_about)
self.root['menu']=menubar
def show_about(self):
self.ruku_frame.pack_forget()
self.Search_frame.pack_forget()
self.jieyue_frame.pack_forget()
self.about_frame.pack()
def show_jieyue(self):
self.ruku_frame.pack_forget()
self.Search_frame.pack_forget()
self.jieyue_frame.pack()
self.about_frame.pack_forget()
def show_Search(self):
self.ruku_frame.pack_forget()
self.Search_frame.pack()
self.jieyue_frame.pack_forget()
self.about_frame.pack_forget()
def show_Ruku(self):
self.ruku_frame.pack()
self.Search_frame.pack_forget()
self.jieyue_frame.pack_forget()
self.about_frame.pack_forget()
(调用 views 文件内方法来实现具体内容显现)
views.py:
此文件负责四个功能的具体内容实现,具体代码和运行结果如下:(关于界面的代码以及结果显现)
(图书入库界面,调用了 db 文件来实现点击录入按钮使 tushu.json 文件加入输入的图书信息功能)
(信息查询界面,调用 db 文件来读取 tushu.json 文件内数据并显示在前端用户界
面)(借阅图书界面,调用 db 文件来使得点击确认借阅后可以将借阅记录存入
jieyue.json 文件中去)
(借阅图书界面,调用 db 文件来使得点击确认借阅后可以将借阅记录存入
jieyue.json 文件中去)
源代码点击下方链接:https://download.csdn.net/download/weixin_59559647/88063296