說明:此程式適合入門基本練習。
Python GUI製作影片解析神器,全網影片免費看
https://www.bilibili.com/video/BV1tz4y1o7Yc/
目標
瞭解面向物件開發過程中類內部功能的分析方法。
瞭解常用系統功能
系統需求使用面向物件程式設計思想完成圖書管理系統的開發。具體如下:
系統要求:圖書資訊儲存到檔案中
程式檔案分析設計角色分析:圖書,管理系統
注意事項:
一個角色一個程式檔案
專案的主入口,可以定義為main.py
主要功能
基於面向物件:實現圖書:
修改功能,
查詢功能,
顯示所有,
儲存到檔案中,
載入資料等功能。
程式檔案
程式入口:main.py
圖書檔案:book.py
管理系統檔案:systemmgr.py
1.1.4 程式程式碼圖書檔案程式碼
圖書檔案:book.py
需求:圖書包括:書名,型別,sn號等。
新增__str__魔法方法,方便檢視圖書物件資訊
程式碼:
class Book(object): def __init__(self,name,type,sn): self.name=name self.type=type self.sn=sn def __str__(self): return f'{self.name},{self.type},{self.sn}'
管理檔案程式程式碼
需求:
系統功能迴圈使用,根據使用者輸入的功能序號執行不同的功能
步驟:
載入資料
顯示功能選單
根據使用者輸入進行不同操作功能
定義該管理系統的類:用於初始化,類中儲存管理系統的程式碼。
定義一個一個list_page空圖書列表,方便儲存。
def __init__(self): self.list_page=[]
新增一個靜態方法用於顯示功能選單
@staticmethod def show_menu(): print("請選擇如下功能") print("1,新增新書") print("2,刪除新書") print("3,修改新書") print("4,查詢相關書") print("5,顯示所有書") print("6,儲存書資訊") print("7,載入書資訊") print("9,退出系統")
程式入口函式,啟動程式執行的函式 run()
def run(self): while True: self.show_menu() int_num=int(input("請輸入功能序號")) if int_num==1:#新增 self.add_book() if int_num == 2:#刪除 self.del_book() elif int_num==3:#修改 self.update_book() elif int_num==4:#查詢 self.search_book() elif int_num==5:#顯示 self.show_book() elif int_num==6:#儲存 self.save_book() elif int_num == 7:#載入 self.load_book() elif int_num == 9: print("退出系統") break else: print("輸入錯誤!")
程式入口檔案程式程式碼
功能:匯入系統管理模組,啟動圖書管理系統。
main.py
from xm19code.systemgr import Systemmgrif __name__=='__main__': rr = Systemmgr() rr.run()
程式程式碼清單:
具體程式碼如下圖:
class Book(object): def __init__(self,name,type,sn): self.name=name self.type=type self.sn=sn def __str__(self): return f'{self.name},{self.type},{self.sn}'
from xm19code.systemgr import Systemmgrif __name__=='__main__': rr = Systemmgr() rr.run()
#from book import *from xm19code.book import *class Systemmgr(object): def __init__(self): self.list_page=[] #迴圈 @staticmethod def show_menu(): print("請選擇如下功能") print("1,新增新書") print("2,刪除新書") print("3,修改新書") print("4,查詢相關書") print("5,顯示所有書") print("6,儲存書資訊") print("7,載入書資訊") print("9,退出系統") def run(self): while True: self.show_menu() int_num=int(input("請輸入功能序號")) if int_num==1:#新增 self.add_book() if int_num == 2:#刪除 self.del_book() elif int_num==3:#修改 self.update_book() elif int_num==4:#查詢 self.search_book() elif int_num==5:#顯示 self.show_book() elif int_num==6:#儲存 self.save_book() elif int_num == 7:#載入 self.load_book() elif int_num == 9: print("退出系統") break else: print("輸入錯誤!") def add_book(self): #根據使用者輸入的欄位新增 name=input("請輸入書的名稱") type=input("請輸入書的分類") sn = input("請輸入書的sn") book=Book(name,type,sn) self.list_page.append(book) print(self.list_page) print(book) def update_book(self): names = input("請輸入要修改的圖書:") for i in self.list_page: if i.name==names: i.name=input("請輸入要修改的圖書名稱:") i.type = input("請輸入要修改的圖書型別:") i.sn = input("請輸入要修改的圖書SN:") print(f'修改了圖書資訊成功:圖書{i.name} ,型別{i.type},sn為:{i.sn}') break else: print("沒有該圖書!") def del_book(self): names=input("請輸入要刪除的圖書:") # for 迴圈查詢 for i in self.list_page: if i.name == names: self.list_page.remove(i) print("刪除成功!") break else: print("沒有該圖書") def show_book(self): print('圖書名稱\t\t\t型別\t\t\tSN') for i in self.list_page: print(f'{i.name}\t\t\t{i.type}\t\t\t{i.sn}') def save_book(self): # 開啟檔案 f = open('book.data', 'w') # 檔案寫人 把list【圖書物件】轉換為字典 new_list = [i.__dict__ for i in self.list_page] print(new_list) f.write(str(new_list)) # 檔案關閉 f.close(); def search_book(self): names=input("請輸入要查詢的圖書名稱:") #for 迴圈查詢 for i in self.list_page: if i.name==names: print(f'查詢到的圖書資訊:圖書{i.name} ,' f'型別{i.type},sn為:{i.sn}') break else: print("沒有該圖書") def load_book(self): try: f=open('book.data','r') except: f=open('book.data','w') else: data=f.read() #檔案讀取的資料都是字串且字串內部為字典資料 # 故需要轉換資料型別在轉換字典為物件儲存到圖書列表中 new_list=eval(data) self.list_page=[Book(i['name'],i['type'],i['sn']) for i in new_list] print('圖書\t\t型別\t\tSN') for i in self.list_page: print(f'{i.name}\t\t{i.type}\t\t{i.sn}') finally: #關閉檔案 f.close()
程式程式碼執行結果:C:\Python\Python38\python.exe D:/pythonProject/xm19code/main.py請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號7圖書 型別 SNpy py 1234請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號2請輸入要刪除的圖書:22沒有該圖書請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號3請輸入要修改的圖書:22沒有該圖書!請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號1請輸入書的名稱1請輸入書的分類1請輸入書的sn1[<xm19code.book.Book object at 0x000000000277F7C0>, <xm19code.book.Book object at 0x00000000025159D0>]1,1,1請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號6[{'name': 'py', 'type': 'py', 'sn': '1234'}, {'name': '1', 'type': '1', 'sn': '1'}]請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號1請輸入書的名稱2請輸入書的分類2請輸入書的sn2[<xm19code.book.Book object at 0x000000000277F7C0>, <xm19code.book.Book object at 0x00000000025159D0>, <xm19code.book.Book object at 0x000000000277F7F0>]2,2,2請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號4請輸入要查詢的圖書名稱:1查詢到的圖書資訊:圖書1 ,型別1,sn為:1請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號4請輸入要查詢的圖書名稱:1查詢到的圖書資訊:圖書1 ,型別1,sn為:1請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號6[{'name': 'py', 'type': 'py', 'sn': '1234'}, {'name': '1', 'type': '1', 'sn': '1'}, {'name': '2', 'type': '2', 'sn': '2'}]請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號7圖書 型別 SNpy py 12341 1 12 2 2請選擇如下功能1,新增新書2,刪除新書3,修改新書4,查詢相關書5,顯示所有書6,儲存書資訊7,載入書資訊9,退出系統請輸入功能序號
最新評論