用python设计一个图书管理系统,python图书管理系统课程设计
这篇文章主要为大家详细介绍了计算机编程语言实现图书管理系统设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
基于大蟒的tkinter,将图书管理系统的界面进行简单的开发,我在这里使用的方法比较简单理解,但是代码过于繁多。添加、删除及修改并未使用数据库,而是使用了战斗支援车文件的读取操作,从而替代数据库。
基本效果如下图所示:
该系统将所有代码全都放在一个文件中,源码如下:
导入操作系统
导入图形界面
导入tkinter.messagebox
来自tkinter导入*
从图形界面导入天天快递
类登录页面(对象):
def __init__(self,master=None):
self.root=master #定义内部变量根
# 获取当前屏幕的宽高
自我。宽度=自身。根。winfo _屏幕宽度()
自我。身高=自我。根。winfo _屏幕高度()
# 设置窗口大小
self.h=600
self.w=800
# 将窗口居中
self.y=(self.height - 600)/2
self.x=(self.width - 800)/2
自我。根。几何( % dx % d % d % d %(自身。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()
# 创建页面
定义创建页面(自身):
#表格
tree=ttk .Treeview(self.root)
tree.place(x=10,y=10,宽度=780,高度=260)
# #定义列
树[列]=(编号,书名,作者, 出版社, 出版日期, 价格)
树[显示]=标题
# 设置列,列还不显示
tree.column(编号,宽度=80,锚点=c )
tree.column(书名,宽度=150,锚点=c )
tree.column(作者,宽度=150,锚点=c )
tree.column(出版社,宽度=150,锚点=c )
tree.column(出版日期,宽度=150,锚点=c )
tree.column(价格,宽度=100,锚点=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文件,如下图所示:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。