用Python做一個簡單的圖書管理系統(tǒng)
制定步驟
1、進入提示語:
為了制作一個友好的“圖書管理系統(tǒng)”,先列出所有功能的菜單。如下:
print(""" *************************** * 歡迎進入圖書管理系統(tǒng) * * 0 .退出 * * 1 .列出所有書籍 * * 2 .添加書籍 * * 3 .修改書籍 * * 4 .刪除書籍 * * 5 .借書 * * 6 .還書 * *************************** """)
2、獲取用戶輸入:
第二步,用戶會輸入 0~6 的整數(shù),以對應相對的功能。如果用戶輸入錯誤,輸出“輸入錯誤,請重新輸入”。
while True: n=input("輸入序號(0-6):") if n=="0": pass elif n=="1": pass elif n=="2": pass elif n=="3": pass elif n=="4": pass elif n=="5": pass elif n=="6": pass else: print("輸入錯誤,請重新輸入") print("") #表示換一行
擴展:
很多語言都提供了“空語句”支持。Python 也不例外,Python 的 pass 語句就是空語句。
有時候程序需要占一個位、放一條語句,但又不希望這條語句做任何事情,此時就可通過 pass 語句來實現(xiàn)。通過使用 pass 語句,可以讓程序更完整。
如下程序示范了 pass 作為空語句的用法:
s=int(input("請輸入一個整數(shù): ")) if s>5: print("大于5") elif s<5: pass # 相當于占位符 else: print("等于5")
正如從上面程序所看到的,對于 s 小于 5 的情形,程序暫時不處理(或不知道如何處理),此時程序就需要通過空語句來占一個位,這樣即可使用 pass 語句了。
3、完善各指令程序
如:用戶輸入“0”,即不但需要告訴用戶“已退出程序”,還要完成“退出”功能,代碼如下:
if n=="0": print("退出成功") break
再比如:用戶輸入“5”( 借書 ),如果庫存仍有,提示“借書成功”,并減少此書庫存。否則提示“庫存不足”。如下程序:
elif n=="5": xh=intinput() book=books[xh-1] if book["num"]>0: book["num"]-=1 print("借書成功") else: print("庫存不足")
請參照以上代碼,完善其他功能。
4、優(yōu)化程序,使代碼更簡潔
可以定義函數(shù),并循環(huán)使用函數(shù),有助于代碼的簡潔性。如代碼:
def intinput(n="請輸入序號:"): while True: s=input(n) if s.isnumeric(): return int(s) else: print("請輸入整數(shù)")
擴展:
str.isnumeric() 方法:
檢測字符串是否只由數(shù)字組成。這種方法是只針對 unicode 對象。
函數(shù)參數(shù)含義與注意事項:
各部分參數(shù)的含義如下:
- 函數(shù)名:其實就是一個符合 Python 語法的標識符,但不建議讀者使用 a、b、c 這類簡單的標識符作為函數(shù)名,函數(shù)名最好能夠體現(xiàn)出該函數(shù)的功能(如上面的 my_len,即表示我們自定義的 len() 函數(shù))。
- 形參列表:設置該函數(shù)可以接收多少個參數(shù),多個參數(shù)之間用逗號( , )分隔。
- [return [返回值] ]:整體作為函數(shù)的可選參參數(shù),用于設置該函數(shù)的返回值。也就是說,一個函數(shù),可以用返回值,也可以沒有返回值,是否需要根據(jù)實際情況而定。
注:在創(chuàng)建函數(shù)時,即使函數(shù)不需要參數(shù),也必須保留一對空的“()”,否則 Python 解釋器將提示“invaild syntax”錯誤。另外,如果想定義一個沒有任何功能的空函數(shù),可以使用 pass 語句作為占位符。
函數(shù)的優(yōu)點:
- 在python之中使用函數(shù)最大和最直觀的優(yōu)點就是可以將一段代碼封裝起來以便隨時調用,這樣能夠極大的提高了程序的簡潔性和可讀性,還可以讓代碼的邏輯性更加清晰。
- 一般來說使用函數(shù)去封裝的代碼塊都是去實現(xiàn)某一種功能的,而被封裝成函數(shù)的代碼就能夠不斷地去重復的調用。這樣既可以提高python程序的開發(fā)效率,還可以減少一些不必要代碼的編寫。
- 函數(shù)還有優(yōu)點就是它其實是一個獨立于其他外部代碼的模塊,在一個python程序去執(zhí)行時如果不手動的去調用函數(shù)的話那么這個函數(shù)是不會去執(zhí)行的。而當函數(shù)之中出現(xiàn)了錯誤的時候也很容易的就能夠去進行修改而不會對程序的運行造成太大的影響,很好的實現(xiàn)了模塊化。
- python函數(shù)還可以直接保存在一個py文件之中然后以模塊的方式去導入,這樣一個通用的編寫好的python函數(shù)就能夠運用在很多不同的程序之中,經常使用的內置模塊和python第三方庫內其實存儲的就是一個個函數(shù)。
圖書管理系統(tǒng)所有代碼:
def intinput(n="請輸入序號:"): while True: s=input(n) if s.isnumeric(): return int(s) else: print("請輸入整數(shù)") books=[{"name":"Scratch","isbn":"12345","num":2}, {"name":"Python","isbn":"12346","num":5}] print(""" *************************** * 歡迎進入圖書管理系統(tǒng) * * 0 .退出 * * 1 .列出所有書籍 * * 2 .添加書籍 * * 3 .修改書籍 * * 4 .刪除書籍 * * 5 .借書 * * 6 .還書 * *************************** """) while True: n=input("輸入序號(0-6):") if n=="0": print("退出成功") break elif n=="1": print("序號\t書名\t書號\t數(shù)量") index=1 for book in books: print("%d\t%s\t%s\t%d"%(index,book["name"],book["isbn"],book["num"])) index+=1 elif n=="2": book=dict() book["name"]=input("請輸入書名:") book["isbn"]=input("請輸入書號:") book["num"]=intinput("請輸入數(shù)量:") books.append(book) print("添加成功") elif n=="3": try: xh=intinput() book=books[xh-1] book["name"]=input("請輸入書名:") book["isbn"]=input("請輸入書號:") book["num"]=intinput("請輸入數(shù)量:") print("修改成功") except: print("出錯了") elif n=="4": s=intinput() if 1<=s<=len(books): del books[xh-1] print("刪除成功") else: print("超出范圍") elif n=="5": xh=intinput() book=books[xh-1] if book["num"]>0: book["num"]-=1 print("借書成功") else: print("庫存不足") elif n=="6": xh=intinput() try: book=books[xh-1] book["num"]-=1 print("還書成功") except: print("未查詢到書本") else: print("輸入錯誤,請重新輸入") print("")
到此這篇關于用Python做一個簡單的圖書管理系統(tǒng)的文章就介紹到這了,更多相關Python圖書管理系統(tǒng)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python爬取用戶觀影數(shù)據(jù)并分析用戶與電影之間的隱藏信息!
看電影前很多人都喜歡去 『豆瓣』 看影評,所以我爬取44130條 『豆瓣』 的用戶觀影數(shù)據(jù),分析用戶之間的關系,電影之間的聯(lián)系,以及用戶和電影之間的隱藏關系,需要的朋友可以參考下2021-06-06django修改models重建數(shù)據(jù)庫的操作
這篇文章主要介紹了django修改models重建數(shù)據(jù)庫的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python+matplotlib+numpy繪制精美的條形統(tǒng)計圖
這篇文章主要介紹了Python+matplotlib+numpy繪制精美的條形統(tǒng)計圖,具有一定借鑒價值,需要的朋友可以參考下2018-01-01Python 實現(xiàn)數(shù)據(jù)結構-堆棧和隊列的操作方法
隊、棧和鏈表一樣,在數(shù)據(jù)結構中非常基礎一種數(shù)據(jù)結構,同樣他們也有各種各樣、五花八門的變形和實現(xiàn)方式。這篇文章主要介紹了Python 實現(xiàn)數(shù)據(jù)結構-堆棧和隊列的操作方法,需要的朋友可以參考下2019-07-07OpenCV-Python實現(xiàn)通用形態(tài)學函數(shù)
本文將結合實例代碼,介紹OpenCV-Python實現(xiàn)通用形態(tài)學函數(shù),包含開運算,閉運算等復雜的形態(tài)學運算,需要的朋友們下面隨著小編來一起學習學習吧2021-06-06