Python实现图书管理系统设计的代码怎么写
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,本篇内容介绍了"Python实现图书管理系统设计的代码怎么写"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有
千家信息网最后更新 2025年02月19日Python实现图书管理系统设计的代码怎么写
本篇内容介绍了"Python实现图书管理系统设计的代码怎么写"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
基于python的tkinter,将图书管理系统的界面进行简单的开发,我在这里使用的方法比较简单理解,但是代码过于繁多。添加、删除及修改并未使用数据库,而是使用了csv文件的读取操作,从而替代数据库。
基本效果如下图所示:
该系统将所有代码全都放在一个文件中,源码如下:
import osimport tkinterimport tkinter.messageboxfrom 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实现图书管理系统设计的代码怎么写"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
微软
出版
图书
书名
价格
作者
信息
出版社
日期
代码
提示
系统
管理
文件
管理系统
书本
按钮
数据
设计
成功
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发包含的项目范围
湖南专业软件开发服务品质保障
三级网络技术上机考什么
博库数据库怎么检索中华期刊
梅林固件怎么搭建服务器
会计师对软件开发项目审计
网络安全 网评文章
徐州app软件开发多少钱
重装服务器没有光盘
扬州专业服务器供应商
大疆网络安全岗位
软件开发过程中的打包
电机软件开发板
软件开发的主要程序
网络安全全民行动
网络安全的主要问题是什么
网络技术的前景分析
数据库类型组成
深圳软件开发tcrjcn
人间地狱进入服务器闪退
计算机网络技术实验TCP
平板电脑能做软件开发吗
四川网络技术服务
工业互联网和中国科技
于占起中国影响力人物数据库
大学数据库基础与应用题目
美丽中国软件开发商
vc2008数据库
软件开发云技术
网络安全应急 物资 备件