您好,登錄后才能下訂單哦!
本篇內容介紹了“Python實現圖書管理系統設計的代碼怎么寫”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
基于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實現圖書管理系統設計的代碼怎么寫”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。