千家信息网

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安全错误 数据库的锁怎样保障安全 中国人民银行网站查数据库 企家有道网络技术有限公司待遇 联通网络安全的彩页 合肥小学校园网络安全 如何知道哪些人浏览过服务器文件 云服务器搭建专用网盘 网络安全威胁感知系统 对网络安全网络文明的认识 网络安全地址怎么更改 青少年网络安全上网公约 武汉软件开发从业者技能树怎么点 学软件开发都需要哪些课程 数据库怎么移动文件夹里 网络安全培训心得体会100字 是不是每台电脑都有服务器 怎么看软件开发外包 网络安全正确使用方法 数据库in么使用 服务器安全设置一 医药机构网络安全怎么检查 台式电脑管理服务器 消灭病毒服务器等级会传承吗 求剑网三成女捏脸数据库 服务器主机怎么当游戏 梅州产品追溯软件开发 c嵌入式软件开发工程师 校园网网络安全 新闻稿 十四运网络安全保障工作方案 小企业如何网络安全 数据库orcle版本的区别
0