首頁>技術>

說明:此程式適合入門基本練習。

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,退出系統請輸入功能序號

14
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Python實驗-字典攻擊!你的密碼分分鐘被搞定