-
2020-12-04 10:55:37
'''
GUI图书馆管理系统
@author:Arsenal_Ramsey
@time:2019/5/31
@进度:。。。
'''
import wx
studentDatabase=dict()
bookDatabase=dict()
borrowDatabase=dict()
class STUDENTADD(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="添加学生",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
wx.StaticText(self.bitmap,-1,"学号",pos=(10,50),style=wx.ALIGN_RIGHT)
wx.StaticText(self.bitmap,-1,"姓名",pos=(10,100),style=wx.ALIGN_RIGHT)
self.SID=wx.TextCtrl(self.bitmap,-1,pos=(100,50),size=(160,20))
self.SNAM=wx.TextCtrl(self.bitmap,pos=(100,100),size=(160,20))
self.buttonOK=wx.Button(parent=self.bitmap,label='OK',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonOK,self.buttonOK)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbuttonOK(self,event):
'''OK'''
StudentId=self.SID.GetValue()
StudentName=self.SNAM.GetValue()
studentDatabase.update({StudentId:StudentName})
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class STUDENTDEL(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="删除学生",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
label1=wx.StaticText(self.bitmap,-1,"学号",pos=(10,50),style=wx.ALIGN_RIGHT)
self.SID=wx.TextCtrl(self.bitmap,-1,pos=(100,50),size=(160,20))
self.buttonOK=wx.Button(parent=self.bitmap,label='OK',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonOK,self.buttonOK)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbuttonOK(self,event):
'''OK'''
StudentId=self.SID.GetValue()
studentDatabase.pop(StudentId)
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class STUDENTSER(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="学生数据库",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
self.result=wx.StaticText(self.bitmap,-1,'查询到的信息',pos=(150,120))
self.buttonOK=wx.Button(parent=self.bitmap,label='OK',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonOK,self.buttonOK)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbuttonOK(self,event):
'''OK'''
a="{学号:姓名}:"+str(studentDatabase)
self.result.SetLabel(a)
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class STUDENT(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="学生信息管理",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
self.buttonAdd=wx.Button(parent=self.bitmap,label='添加',pos=(150,50))
self.Bind(wx.EVT_BUTTON,self.OnbuttonAdd,self.buttonAdd)
self.buttonDel=wx.Button(parent=self.bitmap,label='删除',pos=(150,100))
self.Bind(wx.EVT_BUTTON,self.OnbuttonDel,self.buttonDel)
self.buttonSer=wx.Button(parent=self.bitmap,label='查询',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonSer,self.buttonSer)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbuttonAdd(self,event):
'''添加学生事件'''
app=wx.App()
frame=STUDENTADD(None)
frame.Show()
app.MainLoop()
def OnbuttonDel(self,event):
'''删除学生事件'''
app=wx.App()
frame=STUDENTDEL(None)
frame.Show()
app.MainLoop()
def OnbuttonSer(self,event):
app=wx.App()
frame=STUDENTSER(None)
frame.Show()
app.MainLoop()
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class BOOKADD(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="添加图书",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
wx.StaticText(self.bitmap,-1,"ISDN",pos=(10,50),style=wx.ALIGN_RIGHT)
wx.StaticText(self.bitmap,-1,"书名",pos=(10,100),style=wx.ALIGN_RIGHT)
self.BID=wx.TextCtrl(self.bitmap,-1,pos=(100,50),size=(160,20))
self.BNAM=wx.TextCtrl(self.bitmap,pos=(100,100),size=(160,20))
self.buttonOK=wx.Button(parent=self.bitmap,label='OK',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonOK,self.buttonOK)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbuttonOK(self,event):
'''OK'''
BookId=self.BID.GetValue()
BookName=self.BNAM.GetValue()
bookDatabase.update({BookId:BookName})
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class BOOKDEL(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="删除图书",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
wx.StaticText(self.bitmap,-1,"ISDN",pos=(10,50),style=wx.ALIGN_RIGHT)
self.BID=wx.TextCtrl(self.bitmap,-1,pos=(100,50),size=(160,20))
self.buttonOK=wx.Button(parent=self.bitmap,label='OK',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonOK,self.buttonOK)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbuttonOK(self,event):
'''OK'''
BookId=self.BID.GetValue()
bookDatabase.pop(BookId)
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class BOOKSER(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="图书数据库",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
self.result=wx.StaticText(self.bitmap,-1,'查询到的信息',pos=(150,120))
self.buttonOK=wx.Button(parent=self.bitmap,label='OK',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonOK,self.buttonOK)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbuttonOK(self,event):
'''OK'''
a="{ISDN:书名}:"+str(bookDatabase)
self.result.SetLabel(a)
def OnbuttonQuit(self,event):
self.Close(True)
class BOOK(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="图书信息管理",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
self.buttonAdd=wx.Button(parent=self.bitmap,label='添加',pos=(150,50))
self.Bind(wx.EVT_BUTTON,self.OnbookAdd,self.buttonAdd)
self.buttonDel=wx.Button(parent=self.bitmap,label='删除',pos=(150,100))
self.Bind(wx.EVT_BUTTON,self.OnbookDel,self.buttonDel)
self.buttonSer=wx.Button(parent=self.bitmap,label='查询',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonSer,self.buttonSer)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbookAdd(self,event):
'''添加图书事件'''
app=wx.App()
frame=BOOKADD(None)
frame.Show()
app.MainLoop()
def OnbookDel(self,event):
'''删除图书事件'''
app=wx.App()
frame=BOOKDEL(None)
frame.Show()
app.MainLoop()
def OnbuttonSer(self,event):
app=wx.App()
frame=BOOKSER(None)
frame.Show()
app.MainLoop()
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class BORROW(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="借阅图书",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
wx.StaticText(self.bitmap,-1,'学号',pos=(30,20),style=wx.ALIGN_RIGHT)
wx.StaticText(self.bitmap,-1,'ISDN',pos=(30,50),style=wx.ALIGN_RIGHT)
wx.StaticText(self.bitmap,-1,'书名',pos=(30,80),style=wx.ALIGN_RIGHT)
wx.StaticText(self.bitmap,-1,'天数',pos=(30,120),style=wx.ALIGN_RIGHT)
self.SID=wx.TextCtrl(self.bitmap,-1,pos=(90,20),size=(160,20))
self.ISDN=wx.TextCtrl(self.bitmap,pos=(90,50),size=(160,20))
self.BNAME=wx.TextCtrl(self.bitmap,pos=(90,80),size=(160,20))
self.DAYS=wx.TextCtrl(self.bitmap,pos=(90,120),size=(160,20))
self.buttonOK=wx.Button(parent=self.bitmap,label='OK',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbookOK,self.buttonOK)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbookOK(self,event):
StudentId=self.SID.GetValue()
Isdn=self.ISDN.GetValue()
BookName=self.BNAME.GetValue()
Days=self.DAYS.GetValue()
borrowDatabase.update({StudentId:(Isdn,BookName,Days)})
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class RETURN(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="归还图书",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
wx.StaticText(self.bitmap,-1,'学号',pos=(30,20),style=wx.ALIGN_RIGHT)
wx.StaticText(self.bitmap,-1,'ISDN',pos=(30,50),style=wx.ALIGN_RIGHT)
wx.StaticText(self.bitmap,-1,'书名',pos=(30,80),style=wx.ALIGN_RIGHT)
self.SID=wx.TextCtrl(self.bitmap,-1,pos=(90,20),size=(160,20))
self.ISDN=wx.TextCtrl(self.bitmap,pos=(90,50),size=(160,20))
self.BNAME=wx.TextCtrl(self.bitmap,pos=(90,80),size=(160,20))
self.buttonOK=wx.Button(parent=self.bitmap,label='OK',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbookOK,self.buttonOK)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbookOK(self,event):
StudentId=self.SID.GetValue()
Isdn=self.ISDN.GetValue()
BookName=self.BNAME.GetValue()
borrowDatabase.pop(StudentId)
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class SEARCH(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title='查询',size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
wx.StaticText(self.bitmap,-1,'请输入你要查询的学生的学号:',pos=(50,50))
self.SID=wx.TextCtrl(self.bitmap,-1,pos=(60,80),size=(160,20))
self.result=wx.StaticText(self.bitmap,-1,'查询到的借阅信息',pos=(50,120))
self.buttonOk=wx.Button(parent=self.bitmap,label='确定',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonOK,self.buttonOk)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbuttonOK(self,event):
StudentId=self.SID.GetValue()
for key in borrowDatabase.keys():
if StudentId in key:
a=str(borrowDatabase.get(StudentId))
self.result.SetLabel(a)
else:
self.result.SetLabel('Not Found!!!')
def OnbuttonQuit(self,event):
self.Close(True)
class BORROW_RETURN(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="借阅信息管理",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
self.buttonBookBorrow=wx.Button(parent=self.bitmap,label='借书',pos=(150,50))
self.Bind(wx.EVT_BUTTON,self.OnbuttonBookBorrow,self.buttonBookBorrow)
self.buttonBookReturn=wx.Button(parent=self.bitmap,label='还书',pos=(150,100))
self.Bind(wx.EVT_BUTTON,self.OnbuttonBookReturn,self.buttonBookReturn)
self.buttonSearch=wx.Button(parent=self.bitmap,label='查询',pos=(150,150))
self.Bind(wx.EVT_BUTTON,self.OnbuttonSearh,self.buttonSearch)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnbuttonBookBorrow(self,event):
'''借书事件'''
app=wx.App()
frame=BORROW(None)
frame.Show()
app.MainLoop()
def OnbuttonBookReturn(self,event):
'''还书事件'''
app=wx.App()
frame=RETURN(None)
frame.Show()
app.MainLoop()
def OnbuttonSearh(self,event):
'''查询事件'''
app=wx.App()
frame=SEARCH(None)
frame.Show()
app.MainLoop()
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class MANGER(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="图书馆管理系统",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
self.buttonStudent = wx.Button(parent=self.bitmap, label='学生信息管理',pos=(150,50))
self.Bind(wx.EVT_BUTTON, self.OnButtonStudent, self.buttonStudent)
self.buttonBook = wx.Button(parent=self.bitmap, label='图书信息管理',pos=(150,100))
self.Bind(wx.EVT_BUTTON, self.OnButtonBook, self.buttonBook)
self.buttonBorrow = wx.Button(parent=self.bitmap, label='借阅信息管理',pos=(150,150))
self.Bind(wx.EVT_BUTTON, self.OnButtonBorrow, self.buttonBorrow)
self.buttonQuit=wx.Button(parent=self.bitmap,label='退出',pos=(150,200))
self.Bind(wx.EVT_BUTTON,self.OnbuttonQuit,self.buttonQuit)
def OnButtonStudent(self,event):
'''学生信息管理事件'''
app=wx.App()
frame=STUDENT(None)
frame.Show()
app.MainLoop()
def OnButtonBook(self,event):
'''图书信息管理事件'''
app=wx.App()
frame=BOOK(None)
frame.Show()
app.MainLoop()
pass
def OnButtonBorrow(self,event):
app=wx.App()
frame=BORROW_RETURN(None)
frame.Show()
app.MainLoop()
'''借阅关系事件'''
pass
def OnbuttonQuit(self,event):
'''退出事件'''
self.Close(True)
class LOGIN(wx.Frame):
def __init__(self,superion):
wx.Frame.__init__(self,parent=superion,title="登录",size=(400,400))
panel=wx.Panel(self)
image_file = 'image.jpg'
to_bmp_image = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap = wx.StaticBitmap(self, -1, to_bmp_image, (0, 0))
image_width = to_bmp_image.GetWidth()
image_height = to_bmp_image.GetHeight()
wx.StaticText(self.bitmap,-1,'账号:',pos=(20,50),style=wx.ALIGN_RIGHT)
wx.StaticText(self.bitmap,-1,'密码:',pos=(20,100),style=wx.ALIGN_RIGHT)
self.username=wx.TextCtrl(self.bitmap,-1,pos=(70,50),size=(200,20))
self.password=wx.TextCtrl(self.bitmap,pos=(70,100),size=(200,20),style=wx.TE_PASSWORD)
self.buttonOK = wx.Button(parent=self.bitmap, label='登录', pos=(150,150))
self.Bind(wx.EVT_BUTTON, self.OnButtonCheck, self.buttonOK)
self.buttonRes = wx.Button(parent=self.bitmap, label='注册', pos=(150,200))
self.Bind(wx.EVT_BUTTON, self.OnButtonRes, self.buttonRes)
def OnButtonCheck(self, event):
user=self.username.GetValue()
psw=self.password.GetValue()
if user == '20177710746' and psw == '20177710746':
app=wx.App()
fram=MANGER(None)
fram.Show()
app.MainLoop()
else:
wx.MessageBox('你输入的账号或密码有误!')
def OnButtonRes(self,event):
wx.MessageBox("嘿嘿告诉你个秘密---账号:20177710746 密码:20177710746")
if __name__ == '__main__':
app=wx.App()
fram=LOGIN(None)
fram.Show()
app.MainLoop()
更多相关内容 -
python界面图书管理系统—GUI界面版
2020-06-07 01:15:54设计一个GUI界面的系统,模拟图书管理,一个面向学生和学校管理员的系统,图书信息以txt文件存在本地。 管理员:查询图书 增加图书 删除图书 学生:借阅图书 归还图书 任何一个操作都会将所更新的图书... -
基于python+mysql的图书管理系统,有gui
2019-05-05 17:38:55入门级别的图书管理系统,有数据库文件,有简单界面,可以实现图书信息的增加、修改、删除和查看,很简单,有两个主要界面 -
使用 Python 和 Tkinter 的基于 GUI 的图书馆管理系统.zip
2022-01-10 13:51:24图书馆管理系统是一个基于 GUI 的桌面应用程序,它是用 python 制作的。 描述 图书馆管理系统是一个使用python的桌面应用程序。它有一个 sqlite3 数据库,可以将数据存储到本地数据库中,不需要任何额外的软件。它... -
python实现图书管理系统(带gui)
2022-01-20 14:37:05利用python实现了简单的图书管理系统0. 简介
这是这学期一门关于python的课程的大作业,我用了pyqt5来做界面,实现了一个简单的图书管理系统,其功能包括图书信息和读者信息的增删查找,源代码放在最后。
1.实现思路与基本架构
该项目的实现主要经过了以下几步:
step1 界面设计
首先设计各个模块的位置以及界面的安排。经过考虑,我设计了四个模块,分别是图书信息维护、读者信息维护、图书信息查询、读者信息查询。
图书信息维护模块包含了图书信息的添加,有从文件中添加和自己手动添加两种方式。读者信息维护也同理。
而图书信息查询模块则是输入要查询的图书信息,在图书馆中进行图书的查阅,输出图书的各种信息。读者信息查询也是一样的。step2 数据结构设计
为了便于之后的操作,数据结构我设置的比较精细。大体来说,整个主程序(不包括界面部分)使用了三个类,分别是Library类、reader类和book类。具体的数据结构框架如下图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传step3 相关函数接口编写
在定义完数据结构后,需要对Library类定义一些方法,便于后面与图形界面的交互操作。这里我写了一些操作接口,包含
drop_reader()
,search_book()
等操作。step4 整合界面
这一步需要将之前写的界面和主程序进行整合,并定义槽函数,将主程序的函数与界面连接起来,完成图形化交互。
2. 程序运行逻辑
程序的运行流程如下:
step1
利用
pickle
模块从数据中实例化Library
类,并实例化My_window
类。step2
用户在主菜单中点击相应的模块跳转到对应的
frame
step3
在每个功能区等待用户输入数据,输入数据完成点击
button
触发对应的事件函数,并进行相应的数据操作。step4
点击“退出系统”按键后,利用
pickle
模块将图书馆实例保存到数据文件中,下一次打开程序时会自动读取。3. 操作说明
3.1 图书信息维护界面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
该界面可以实现图书信息的批量读取以及单条信息的添加。
如果要批量读取图书信息,只需将文件放入路径下的/data
文件夹,并输入对应文件名,点击导入即可。
文件格式如下:三体 978 重庆出版社 2008 刘慈欣 昆虫记 546 商务印书馆 2012 法布尔 童年 277 商务印书馆 2014 高尔基 电磁学 3-43 中国科学技术大学出版社 2017 叶邦角 量子力学学习指导 413 中国科学技术大学出版社 2019 张鹏飞 固体物理学 4834 高等教育出版社 1988 黄昆
如果需要添加单条读者信息,只需要在对应输入框内写好图书信息,点击添加图书即可。
3.2 读者信息维护界面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
操作方式同上。
读者信息文件格式如下:张三 13728574382 是 安义 15709122812 是 黄文 938123882 否 王子 289871912 是 何云零 13827005831 否
3.3 图书信息查询界面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
该页面可以实现图书信息的查询,图书的借阅、入库、出库、删除、修改
在输入要查询的图书信息后,如果输入的信息正确,将会显示查找到的图书,并附带有一定的操作。点击对应按钮可以对图书进行相应的操作。
3.4 读者信息查询界面
该界面可以实现读者借阅记录的查询,读者信息的修改以及删除
用法同上。
源代码:https://gitee.com/ignorejjj/book/tree/master
-
Python图书管理系统
2018-07-04 22:53:05一个基于Python的图书管理系统, 主要实现书籍的增删改查。 -
python实现的学生信息管理系统—GUI界面版
2020-06-07 01:18:38设计一个GUI界面的学生信息管理系统,方便保存学生的部分信息。 有五类功能: 1、 增加学生信息:输入姓名、学号、年龄、手机号 2、 修改学生信息:输入新的姓名、学号、年龄、手机号 3、 删除学生信息:以学号为... -
Python实现GUI学生信息管理系统
2020-09-20 22:03:45主要介绍了Python实现GUI学生信息管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
基于python图书馆管理系统设计实例详解
2021-02-10 04:02:18写完这个项目后,导师说这个你... 到此这篇关于基于python图书馆管理系统设计实例详解的文章就介绍到这了,更多相关基于python图书馆管理系统设计内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉!
这个项目不是我的作业, 只是无意中被拉进来了,然后就承担了所有,肝了一周多,终于完成,但这个也算是一个很大的项目了吧,对于我现在来说,写这个项目遇到了很多困难,这是真的,其中涉及到数据库的使用,就遇到了一点瓶颈, 但这不算什么,还是要被我搞定的。
梦想就像这个远处夕阳,终究触手可及!
Python项目:
项目前提:
这个项目涉及到的知识点有很多, 知识串联起来就会显得复杂,但这也是锻炼自己的一个能力。 下面先描述这个项目的大致结构。
成品图
架构图
数据库图
思维导图
项目感想:
画这个思维导图的时候,我想了很久,是不是所有功能都需要去实现,我们把这个项目的入口分别学生端和教师端, 那是否就有对应的存储数据的模块呢, 于是我想到了使用数据库, 使用数据库去建立对应的表,然后不就可以分别保存了吗,而在这个项目中, 界面的选择也是很关键, 如果不适用界面,还是使用一个原生代码交互式, 那么这个项目的挑战性就很不人性化,也不友好, 这个我还是选择了tkinter库, 简单上手, 用来设计简单的界面最好不过了, 然后就是关于 程序的框架 如何去设计, 这个没有现存的框架去套用, 所以我使用了面对对象的思维去阐述,毕竟老师和学生都有很多相同点, 在这里使用函数的继承和多态最好不过了,然后连接到数据库,这个数据库我是用MySQL去搭建的, 其他的数据库也是一样的道理,其他的也就顺手写完了。整体来说, 这个项目提升还有很大,只不过我现在能力不足, 也快考试了,没这么多时间去搞,生活还得向前走,加油!
因为这个项目代码太多了, 在这里就不分享出来,有需要的可以私聊找我!
如果觉得文章很长,可以根据目录进行跳转阅读! 也可以收藏关注点击,谢谢。
项目框架:
在__init__函数中:
这是一个构造函数, 在这里单独的拿出来,就是方便程序的运行,也方便打印一些help信息。 在下面这些代码中, 导入了很多模块,对的, 这些不是第三方库哦, 这是我自己编写的类函数,在下面的实例中,你们也可以看到,使用这样的方便,在编写代码的时候可以方便很多,你们一定要用!
# # -*- coding : utf-8 -*-
# @Time : 2020/7/1 21:29
# @author : 沙漏在下雨
# @Software : PyCharm
# @CSDN : https://me.csdn.net/qq_45906219
from TeacherLogin import TeacherLogin
from StudentLogin import StudentLogin
from mysql_login import Mysql
from Login import Login
text = """
author: 沙漏在下雨
time: 七月计划
尝试使用python 搭建一个 图书馆管理系统
使用tkinter作为简易的GUI界面
功能上满足日常所需
数据保存在本地数据库中
"""
print(text)
print(help(StudentLogin))
print(help(TeacherLogin))
print(help(Mysql))
print(help(Login))
Login()
Login登入模块:
讲道理,我应该先阐述一下注册的, 不然都没有账号,怎么点击登入。但是因为我把主要模块写在了login中了, 看下面的图:
这里登入方式有二种, 注册方式也有二种, 分别是管理员和学生,在login模块中, 设置了一个注册按钮, 点击注册按钮, 整个界面就会跳转到注册界面中, 这个稍后再说, 所以整体构架还是存放到login中, 我觉得会很方便一点, 主要是便于传root 和 password 中。
我们先看看login模块的大致函数,然后细讲:
整个__init__ 中, 是生成这个界面的函数, 包括一些必要的值,也构造在其中, 然后根据用户输入的账号密码, 进行身份的验证, 这个模块写到test_db() 中, 如果账号正确, 那么就进入对应的模块中, 不对,那么就会有错误弹窗警告,比如这个,或者其他的。
怎么进行身份的验证呢 ? 这个其实也很简单, 连接到数据库之后,就向数据库执行检索命令, 根据账号进行初步查找, 然后如果账号密码都正确的话, 那不就是身份正常了吗, 所以思路正确。
登入成功之后, 就会对数据库进行表单的更新, 我把这个功能写在了update中, 会更新最后登入时间, 时间的获取我写在了get_time中, 这样就能简单的实现, 一个登入模块的设置了。
数据库中:
我觉得还是有必要先讲一下数据库, 了解一下数据库的大致构造, 不然你们看的很晕,我也不好讲这些。
我建立了一个数据库 book , 里面新建了三个表单, student, teacher, books,分别学生,老师, 图书表, 互不干扰,相互工作。
在student:
表的大致构造如上, 其实也就是简单的信息, 复杂的我暂时也做不了, 然后teacher 表单 信息 其实和 students 是一样的, 只不过这样设计, 可以封开, 更好管理!
在books中;
books字段的设计,其实也不是很难, 把一些基本信息加入就可以了,然后这个books中, 我写了一个小爬虫, 把表单信息补充了一下, 先充实一下,方便接下来的操作。
然后我们讲一下这个模块中, 这是一个连接数据库的一个父类,这就很方便其他的类进行继承, 或者重写操作, 所以,这个类的实现是十分简单的,也就是进行数据库的连接, 关闭, 获得数据库的游标 和 db值, 让其他类去继承这些, 就可以进行数据库的简单操作了,。
然后我们看看如何注册账号,
Register注册模块:
差点我就忘记注册这个模块的设计了, 最开始的账号是我自己直接在数据库中填入的,我说怎么感觉少了很多来着, 后面急急忙忙的补上去。
注册GUI:
注册分为二种注册, 一个管理员, 一个学生, 在登入的界面进行选择,然后注册的界面也会发生相对于的变化。
变化就是 把 这个管理员注册 改成 学生注册 哈哈哈哈哈哈
注册的时候,也会进行数据的检测, 比如账号是否被注册咯, 密码是不是过于简单之类的, 先给出注册的函数吧
我们在输入框中输入的信息,会通过init函数进行传值, 所有的都会成为本地变量, 在start_reg中 会进行信息检测, 然后给出一些错误弹窗,比如这样:
然后你就要重新思考一个帅气的名字, 就可以方便你的注册了,当所有的正常之后,就会运行reg_people 函数, 进行表单的提交,实际上就是更新数据库, 更新对应的数据库, 如果是学生注册就更新student 反之更新teacher表,这样就完成了注册模块。 然后就可以很简单的登入了, 在这里给一下爬虫程序先
爬虫程序:
这个代码就不解释了,需要私聊
学生界面 students:
我们选择学生登入, 正确输入, 就会跳转至学生界面:
界面GUI
登入之后,显示这样的界面, 虽然有点丑,,没事,。
函数大致:
基本上的功能都能实现,也有对应的异常处理方式, 以及弹窗提示, 换句话说, 你想得到的东西,在这里都能实现, 需要就私聊吧,写着太累了,一个个描诉。
管理员界面teacher:
不同于学生界面, 管理员界面的功能更加复杂,不, 更加丰富,界面:
界面就是这样的,tk界面外观勉勉强强, 还行吧。
函数功能也是一样的,你想的我都能实现,还是一句话,没有你们想不到的,只有我老八做不到的,奥里给,肝了。
后记:
一个多礼拜, 千行代码, 肝了兄弟们, 需要的私聊我, 还是个学生,你懂的。
到此这篇关于基于python图书馆管理系统设计实例详解的文章就介绍到这了,更多相关基于python图书馆管理系统设计内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
-
Python图书管理系统(课设)
2021-12-13 22:01:34使用python的GUI编程开发一个简易的图书管理系统基于python的tkinter,将图书管理系统的界面进行简单的开发,我在这里使用的方法比较简单理解,但是代码过于繁多。添加、删除及修改并未使用数据库,而是使用了csv文件的读取操作,从而替代数据库。
基本效果如下图所示:
该系统将所有代码全都放在一个文件中,源码如下:
import os import tkinter import tkinter.messagebox from tkinter import * from tkinter import ttk class LoginPage (object): def __init__(self, master=None): self.root = master #定义内部变量root # 获取当前屏幕的宽高 self.width = self.root.winfo_screenwidth() self.height = self.root.winfo_screenheight() # 设置窗口大小 self.h = 600 self.w = 800 # 将窗口居中 self.y = (self.height - 600) / 2 self.x = (self.width - 800) / 2 self.root.geometry("%dx%d+%d+%d" %(self.w,self.h,self.x,self.y)) # 不允许修改窗口大小 self.root.resizable(False,False) self.addnum = StringVar() self.addname = StringVar() self.addauthor = StringVar() self.addchu = StringVar() self.adddate = StringVar() self.addpri = StringVar() self.altnum = StringVar() self.altname = StringVar() self.altauthor = StringVar() self.altchu = StringVar() self.altdate = StringVar() self.altpri = StringVar() self.createPage() # 创建页面 def createPage(self): #表格 tree = ttk.Treeview(self.root) tree.place(x=10,y=10,width=780,height=260) # #定义列 tree["columns"] = ("编号","书名","作者", "出版社", "出版日期", "价格") tree['show'] = 'headings' # 设置列,列还不显示 tree.column("编号", width=80,anchor ='c') tree.column("书名", width=150,anchor ='c') tree.column("作者", width=150,anchor ='c') tree.column("出版社", width=150,anchor ='c') tree.column("出版日期", width=150,anchor ='c') tree.column("价格", width=100,anchor ='c') #设置表头 tree.heading("编号", text="编号") tree.heading("书名", text="书名") tree.heading("作者", text="作者") tree.heading("出版社", text="出版社") tree.heading("出版日期", text="出版日期") tree.heading("价格", text="价格") #添加数据 f = open('图书.csv','r',encoding='utf-8') for line in f.readlines(): info = line[:-1].split(",") tree.insert("", 0, values=(info[0],info[1],info[2],info[3],info[4],info[5])) f.close() # 添加编号 addnum = Label(self.root, text="编号",font=('微软雅黑',10,''),anchor='w') addnum.place(x=42.5,y=280,height=20,width=80) addnuminput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.addnum) addnuminput.place(x=122.5,y=279,height=24,width=105) # 添加书名 addname = Label(self.root, text="书名",font=('微软雅黑',10,''),anchor='w') addname.place(x=42.5,y=310,height=20,width=80) addnameinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.addname) addnameinput.place(x=122.5,y=309,height=24,width=105) # 添加作者 addauthor = Label(self.root, text="作者",font=('微软雅黑',10,''),anchor='w') addauthor.place(x=42.5,y=340,height=20,width=80) addauthorinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.addauthor) addauthorinput.place(x=122.5,y=339,height=24,width=105) # 添加出版社 addchu = Label(self.root, text="出版社",font=('微软雅黑',10,''),anchor='w') addchu.place(x=42.5,y=370,height=20,width=80) addchuinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.addchu) addchuinput.place(x=122.5,y=369,height=24,width=105) # 添加出版日期 adddate = Label(self.root, text="出版日期",font=('微软雅黑',10,''),anchor='w') adddate.place(x=42.5,y=400,height=20,width=80) adddateinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.adddate) adddateinput.place(x=122.5,y=399,height=24,width=105) # 添加价格 addpri = Label(self.root, text="价格",font=('微软雅黑',10,''),anchor='w') addpri.place(x=42.5,y=430,height=20,width=80) addpriinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.addpri) addpriinput.place(x=122.5,y=429,height=24,width=105) # 添加按钮 add = Button(self.root,command=self.click, text ="添加书本",font=('微软雅黑',10,''),activeforeground='#ffffff',fg='#ffffff',activebackground='#7cba59',bd=2,bg='#2aa515') add.place(x=105,y=500,height=35,width=100) # 修改编号 altnum = Label(self.root, text="编号",font=('微软雅黑',10,''),anchor='w') altnum.place(x=292.5,y=280,height=20,width=80) altnuminput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.altnum) altnuminput.place(x=372.5,y=279,height=24,width=105) # 修改书名 altname = Label(self.root, text="书名",font=('微软雅黑',10,''),anchor='w') altname.place(x=292.5,y=310,height=20,width=80) altnameinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.altname) altnameinput.place(x=372.5,y=309,height=24,width=105) # 修改作者 altauthor = Label(self.root, text="作者",font=('微软雅黑',10,''),anchor='w') altauthor.place(x=292.5,y=340,height=20,width=80) altauthorinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.altauthor) altauthorinput.place(x=372.5,y=339,height=24,width=105) # 修改出版社 altchu = Label(self.root, text="出版社",font=('微软雅黑',10,''),anchor='w') altchu.place(x=292.5,y=370,height=20,width=80) altchuinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.altchu) altchuinput.place(x=372.5,y=369,height=24,width=105) # 修改出版日期 altdate = Label(self.root, text="出版日期",font=('微软雅黑',10,''),anchor='w') altdate.place(x=292.5,y=400,height=20,width=80) altdateinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.altdate) altdateinput.place(x=372.5,y=399,height=24,width=105) # 修改价格 altpri = Label(self.root, text="价格",font=('微软雅黑',10,''),anchor='w') altpri.place(x=292.5,y=430,height=20,width=80) altpriinput = Entry(self.root,font=('微软雅黑',10,''),textvariable=self.altpri) altpriinput.place(x=372.5,y=429,height=24,width=105) # 修改按钮 alter = Button(self.root,command=self.altclick, text ="修改书本",font=('微软雅黑',10,''),activeforeground='#ffffff',fg='#ffffff',activebackground='#7cba59',bd=2,bg='#2aa515') alter.place(x=350,y=500,height=35,width=100) # 保存按钮 pre = Button(self.root,command=self.show, text ="保存书本信息",font=('微软雅黑',10,''),activeforeground='#ffffff',fg='#ffffff',activebackground='#7cba59',bd=2,bg='#2aa515') pre.place(x=595,y=500,height=35,width=100) # 写入判断输入框是否有空值 def Isspace(self,text): temp = 0 for i in text: if not i.isspace(): temp = 1 break if temp==1: return 0 else: return 1 # 检查写入是否有空值 def click(self): addnum = self.addnum.get() addname = self.addname.get() addauthor = self.addauthor.get() addchu = self.addchu.get() adddate = self.adddate.get() addpri = self.addpri.get() if self.Isspace(addnum) or self.Isspace(addname) or self.Isspace(addauthor) or self.Isspace(addchu) or self.Isspace(adddate) or self.Isspace(addpri) : tkinter.messagebox.showerror(title='提示', message ="请填写所有信息") else: self.write(addnum,addname,addauthor,addchu,adddate,addpri) # 写入信息 def write(self,addnum,addname,addauthor,addchu,adddate,addpri): f = open('图书.csv','r',encoding='utf-8') for line in f.readlines(): info = line[:-1].split(",") if len(info)<6: break if info[0] ==addnum and info[1] ==addname: tkinter.messagebox.showinfo(title='结果', message ="已存在该图书信息!") f.close() return f.close() f = open('图书.csv','a',encoding='utf-8') f.write('{},{},{},{},{},{}\n'.format(addnum,addname,addauthor,addchu,adddate,addpri)) f.close() tkinter.messagebox.showinfo(title='提示', message ="写入成功,点击保存后更新") # 检查修改信息是否空白 def altclick(self): altnum = self.altnum.get() altname = self.altname.get() altauthor = self.altauthor.get() altchu = self.altchu.get() altdate = self.altdate.get() altpri = self.altpri.get() if self.Isspace(altnum) or self.Isspace(altname) or self.Isspace(altauthor) or self.Isspace(altchu) or self.Isspace(altdate) or self.Isspace(altpri) : tkinter.messagebox.showerror(title='提示', message ="输入项为空") else: self.modify(altnum,altname,altauthor,altchu,altdate,altpri) # 修改信息 def modify(self,altnum,altname,altauthor,altchu,altdate,altpri): temp = 0 with open("图书.csv","r",encoding="utf-8") as f: lines = f.readlines() with open("图书.csv","w",encoding="utf-8") as f_w: for line in lines: info = line[:-1].split(",") if info[0] ==altnum: temp = 1 f_w.write('{},{},{},{},{},{}\n'.format(altnum,altname,altauthor,altchu,altdate,altpri)) continue f_w.write(line) if temp==0: tkinter.messagebox.showerror(title='提示', message ="没有该信息") else: tkinter.messagebox.showinfo(title='提示', message ="修改成功,点击保存后更新") # 保存信息并显示 def show(self): self.createPage() root = Tk() root.title('图书管理') LoginPage(root) root.mainloop()
在运行代码前需要在同级文件夹下创建一个名为“图书”的csv文件,如下图所示:
各位看官满意的话记得点个赞哦 !
-
python图书管理系统gui 相关实例(示例源码)下载 - 好例子网
2020-11-21 02:30:48开发语言:Python | 大小:19.05M | 发布时间:2019-05-27 | 发布人:李易峰相关标签:立即下载开发语言:Python | 大小:0.21M | 发布时间:2020-08-23 | 发布人:聂嘉辉相关标签:立即下载开发语言:Python | 大小... -
图书管理系统GUI+数据库
2021-02-03 10:14:55图书管理系统GUI+数据库 -
Python实现带GUI和连接数据库的图书管理系统
2020-12-04 17:51:01文章目录前言二、建立数据库library2.1 book表2.2 borrow表2.3 user表三、各个... 前言 大三上学期的程序设计实训大作业,挑了其中一个我认为最简单的的《图书管理系统》来写。用python写是因为py有自带的GUI,即tkint -
python实现图书管理系统
2021-03-10 16:03:22系统环境: python 3.6 ,django 1.11.9 ,mysql 5.7 运行截图 项目目录 实现代码 Models部分代码: from django.db import models # Create your models here. class Publisher(models.Model): name=models.... -
python课大作业 图书管理系统(带Gui).zip
2022-01-10 13:30:30该界面可以实现图书信息的批量读取以及单条信息的添加。 如果要批量读取图书信息,只需将文件放入路径下的/data文件夹,并输入对应文件名,点击导入即可。 文件格式如下: 三体 978 重庆出版社 2008 刘慈欣 昆虫记 ... -
基于Python(tkinter)+sqlite3的图书信息管理系统(GUI图形界面)_数据库图书信息管理系统
2020-12-30 21:40:56自己的Python课设,水平有限但是是原创。可以拿来学习或者应付作业。 -
基于Python的图书信息管理系统(tkinter、MySQL).zip
2021-03-19 11:26:00这是一个基于Python的图书信息管理系统,使用MySQL数据库管理数据,用tkinter做GUI界面。功能齐全,分管理员和读者两个部分,可注册、修改密码、切换登录。对读者系统,内含个人信息展示,可修改个人信息,查询、... -
Python+tkinter库实现简单图书管理系统
2021-11-27 20:52:36使用mysql数据库存储数据,使用python中tkinter库建立一个简单的图书管理系统 提示:以下是本篇文章正文内容,下面案例可供参考 一、MySQL是什么? MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的... -
Python图书管理系统(一)
2022-04-07 15:35:30最近在写一个项目——图书管理系统 在完成这个项目的道路上我写了2个基础的图书管理系统。 ①用IO完成数据存储的图书管理系统 ②用MySQL完成数据存储的图书管理系统 今天先来更新第一个用IO操作的图书管理系统... -
图书信息管理系统python+mysql.zip
2019-12-23 21:55:15基于python+mysql的图书管理系统,有数据库文件,有图书的增删改查 需wxpython,有简单界面,适合刚入门的同学 -
python图书管理系统基本增删改查函数实现
2022-04-04 12:38:45password": "123456"}] def menu(): while True: print("=" * 41, "欢迎使用图书管理系统".center(35), "=" * 41, "1. 注册".center(40), "2. 登录".center(40), "3. 删除".center(40), "4. 修改".center(40), "5. ... -
数据库系统设计大作业 图书馆管理系统 图形界面 python
2020-12-04 12:38:16数据库方面推荐使用MySQL workbench(免费)或者Navicat,系统通过python编程实现,需安装的库有PyQt5 pyqt5-tools pymysql 打包在了资源里,放到python路径下的Lib文件夹里即可,也可用pip install来安装,上课时... -
Python简单实现图书管理系统
2022-01-08 20:20:51管理系统 数据库设计 1.数据库需求分析 2.流程图 3.E-R图 系统设计 系统涉及的简要分析 labrary_system系统 Labrary_books系统 涉及文件: (1)学生、老师名单 stu_table.csv (2)图书借阅信息 save_... -
基于python的图书管理系统设计与实现的系统测试_基于python图书馆管理系统设计实例详解...
2020-12-01 06:24:34基于python图书馆管理系统设计实例详解,在这里,插入图片,界面,数据库,项目基于python图书馆管理系统设计实例详解易采站长站,站长之家为您整理了基于python图书馆管理系统设计实例详解的相关内容。写完这个项目后,... -
谈基于Python的图书管理系统
2021-03-16 20:21:57在拿到这个项目的时候,首先是查阅了基于Python的图书管理系统可以怎么做,可以通过什么方式搭建,可以以什么样式展现。 据我目前了解到的信息,可以做成这样: 1、命令行形式运作,如输出“Hello World!"般,这个... -
用Python Django框架写一个图书管理系统LMS
2020-12-01 10:17:34redirect 默认的302(临时重定向),30* 都是重定向,301是永久重定向,对于seo工程师用永久重定向比较多,如果要变为永久重定向,只需要 在redirect()里面增加这段代码即可 permanent=True Django写图书管理系统 ... -
python+mysql带有gui的图书管理系统2.0
2020-07-25 13:49:05user.frame() def exit2(): root.destroy() manage.frame() def frame(): global root root = tk.Tk() root.title('YTU图书系统') photo=tk.PhotoImage(file=BACK_PATH) root.geometry("700x260") theLabel = tk.... -
毕设——Python实现带GUI和连接数据库的图书管理系统!
2020-12-05 13:32:56大三上学期的程序设计实训大作业,挑了其中一个我认为最简单的的《图书管理系统》来写。用python写是因为py有自带的GUI,即tkinter模块,对初次接触GUI的新手会比较友好。编译器我用的是Pycharm,你需要检查你的... -
python实现图书管理系统,图形化界面版
2019-03-01 22:09:16# 图书管理系统UI界面 import wx import datetime class wxGUI(wx.App): # 登陆界面 def Login(self): self.frame_Login = wx.Frame(None, title="Login(20177830115邵薪冉)", size=(500, ...