用Python做一個(gè)簡(jiǎn)單的圖書管理系統(tǒng)
制定步驟
1、進(jìn)入提示語:
為了制作一個(gè)友好的“圖書管理系統(tǒng)”,先列出所有功能的菜單。如下:
print("""
***************************
* 歡迎進(jìn)入圖書管理系統(tǒng) *
* 0 .退出 *
* 1 .列出所有書籍 *
* 2 .添加書籍 *
* 3 .修改書籍 *
* 4 .刪除書籍 *
* 5 .借書 *
* 6 .還書 *
***************************
""")2、獲取用戶輸入:
第二步,用戶會(huì)輸入 0~6 的整數(shù),以對(duì)應(yīng)相對(duì)的功能。如果用戶輸入錯(cuò)誤,輸出“輸入錯(cuò)誤,請(qǐng)重新輸入”。
while True:
n=input("輸入序號(hào)(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("輸入錯(cuò)誤,請(qǐng)重新輸入")
print("") #表示換一行擴(kuò)展:
很多語言都提供了“空語句”支持。Python 也不例外,Python 的 pass 語句就是空語句。
有時(shí)候程序需要占一個(gè)位、放一條語句,但又不希望這條語句做任何事情,此時(shí)就可通過 pass 語句來實(shí)現(xiàn)。通過使用 pass 語句,可以讓程序更完整。
如下程序示范了 pass 作為空語句的用法:
s=int(input("請(qǐng)輸入一個(gè)整數(shù): "))
if s>5:
print("大于5")
elif s<5:
pass # 相當(dāng)于占位符
else:
print("等于5")正如從上面程序所看到的,對(duì)于 s 小于 5 的情形,程序暫時(shí)不處理(或不知道如何處理),此時(shí)程序就需要通過空語句來占一個(gè)位,這樣即可使用 pass 語句了。
3、完善各指令程序
如:用戶輸入“0”,即不但需要告訴用戶“已退出程序”,還要完成“退出”功能,代碼如下:
if n=="0":
print("退出成功")
break再比如:用戶輸入“5”( 借書 ),如果庫(kù)存仍有,提示“借書成功”,并減少此書庫(kù)存。否則提示“庫(kù)存不足”。如下程序:
elif n=="5":
xh=intinput()
book=books[xh-1]
if book["num"]>0:
book["num"]-=1
print("借書成功")
else:
print("庫(kù)存不足")請(qǐng)參照以上代碼,完善其他功能。
4、優(yōu)化程序,使代碼更簡(jiǎn)潔
可以定義函數(shù),并循環(huán)使用函數(shù),有助于代碼的簡(jiǎn)潔性。如代碼:
def intinput(n="請(qǐng)輸入序號(hào):"):
while True:
s=input(n)
if s.isnumeric():
return int(s)
else:
print("請(qǐng)輸入整數(shù)")擴(kuò)展:
str.isnumeric() 方法:
檢測(cè)字符串是否只由數(shù)字組成。這種方法是只針對(duì) unicode 對(duì)象。
函數(shù)參數(shù)含義與注意事項(xiàng):
各部分參數(shù)的含義如下:
- 函數(shù)名:其實(shí)就是一個(gè)符合 Python 語法的標(biāo)識(shí)符,但不建議讀者使用 a、b、c 這類簡(jiǎn)單的標(biāo)識(shí)符作為函數(shù)名,函數(shù)名最好能夠體現(xiàn)出該函數(shù)的功能(如上面的 my_len,即表示我們自定義的 len() 函數(shù))。
- 形參列表:設(shè)置該函數(shù)可以接收多少個(gè)參數(shù),多個(gè)參數(shù)之間用逗號(hào)( , )分隔。
- [return [返回值] ]:整體作為函數(shù)的可選參參數(shù),用于設(shè)置該函數(shù)的返回值。也就是說,一個(gè)函數(shù),可以用返回值,也可以沒有返回值,是否需要根據(jù)實(shí)際情況而定。
注:在創(chuàng)建函數(shù)時(shí),即使函數(shù)不需要參數(shù),也必須保留一對(duì)空的“()”,否則 Python 解釋器將提示“invaild syntax”錯(cuò)誤。另外,如果想定義一個(gè)沒有任何功能的空函數(shù),可以使用 pass 語句作為占位符。
函數(shù)的優(yōu)點(diǎn):
- 在python之中使用函數(shù)最大和最直觀的優(yōu)點(diǎn)就是可以將一段代碼封裝起來以便隨時(shí)調(diào)用,這樣能夠極大的提高了程序的簡(jiǎn)潔性和可讀性,還可以讓代碼的邏輯性更加清晰。
- 一般來說使用函數(shù)去封裝的代碼塊都是去實(shí)現(xiàn)某一種功能的,而被封裝成函數(shù)的代碼就能夠不斷地去重復(fù)的調(diào)用。這樣既可以提高python程序的開發(fā)效率,還可以減少一些不必要代碼的編寫。
- 函數(shù)還有優(yōu)點(diǎn)就是它其實(shí)是一個(gè)獨(dú)立于其他外部代碼的模塊,在一個(gè)python程序去執(zhí)行時(shí)如果不手動(dòng)的去調(diào)用函數(shù)的話那么這個(gè)函數(shù)是不會(huì)去執(zhí)行的。而當(dāng)函數(shù)之中出現(xiàn)了錯(cuò)誤的時(shí)候也很容易的就能夠去進(jìn)行修改而不會(huì)對(duì)程序的運(yùn)行造成太大的影響,很好的實(shí)現(xiàn)了模塊化。
- python函數(shù)還可以直接保存在一個(gè)py文件之中然后以模塊的方式去導(dǎo)入,這樣一個(gè)通用的編寫好的python函數(shù)就能夠運(yùn)用在很多不同的程序之中,經(jīng)常使用的內(nèi)置模塊和python第三方庫(kù)內(nèi)其實(shí)存儲(chǔ)的就是一個(gè)個(gè)函數(shù)。
圖書管理系統(tǒng)所有代碼:
def intinput(n="請(qǐng)輸入序號(hào):"):
while True:
s=input(n)
if s.isnumeric():
return int(s)
else:
print("請(qǐng)輸入整數(shù)")
books=[{"name":"Scratch","isbn":"12345","num":2},
{"name":"Python","isbn":"12346","num":5}]
print("""
***************************
* 歡迎進(jìn)入圖書管理系統(tǒng) *
* 0 .退出 *
* 1 .列出所有書籍 *
* 2 .添加書籍 *
* 3 .修改書籍 *
* 4 .刪除書籍 *
* 5 .借書 *
* 6 .還書 *
***************************
""")
while True:
n=input("輸入序號(hào)(0-6):")
if n=="0":
print("退出成功")
break
elif n=="1":
print("序號(hào)\t書名\t書號(hào)\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("請(qǐng)輸入書名:")
book["isbn"]=input("請(qǐng)輸入書號(hào):")
book["num"]=intinput("請(qǐng)輸入數(shù)量:")
books.append(book)
print("添加成功")
elif n=="3":
try:
xh=intinput()
book=books[xh-1]
book["name"]=input("請(qǐng)輸入書名:")
book["isbn"]=input("請(qǐng)輸入書號(hào):")
book["num"]=intinput("請(qǐng)輸入數(shù)量:")
print("修改成功")
except:
print("出錯(cuò)了")
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("庫(kù)存不足")
elif n=="6":
xh=intinput()
try:
book=books[xh-1]
book["num"]-=1
print("還書成功")
except:
print("未查詢到書本")
else:
print("輸入錯(cuò)誤,請(qǐng)重新輸入")
print("")到此這篇關(guān)于用Python做一個(gè)簡(jiǎn)單的圖書管理系統(tǒng)的文章就介紹到這了,更多相關(guān)Python圖書管理系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytorch反向求導(dǎo)更新網(wǎng)絡(luò)參數(shù)的方法
今天小編就為大家分享一篇Pytorch反向求導(dǎo)更新網(wǎng)絡(luò)參數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
python PrettyTable模塊的安裝與簡(jiǎn)單應(yīng)用
prettyTable 是一款很簡(jiǎn)潔但是功能強(qiáng)大的第三方模塊,主要是將輸入的數(shù)據(jù)轉(zhuǎn)化為格式化的形式來輸出,這篇文章主要介紹了python PrettyTable模塊的安裝與簡(jiǎn)單應(yīng)用,感興趣的小伙伴們可以參考一下2019-01-01
python_tkinter彈出對(duì)話框創(chuàng)建2
這篇文章主要介紹了python_tkinter彈出對(duì)話框創(chuàng)建,上以篇文章我們簡(jiǎn)單的對(duì)對(duì)話框創(chuàng)建做了簡(jiǎn)單介紹,本文將繼續(xù)更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-03-03
使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式
今天小編就為大家分享一篇使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python函數(shù)的定義與調(diào)用方法實(shí)例
Python 中函數(shù)的應(yīng)用非常廣泛,函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段,這篇文章主要給大家介紹了關(guān)于Python函數(shù)的定義與調(diào)用的相關(guān)資料,需要的朋友可以參考下2023-06-06
Python使用ntplib庫(kù)同步校準(zhǔn)當(dāng)?shù)貢r(shí)間的方法
NTP網(wǎng)絡(luò)時(shí)間協(xié)議其實(shí)大家平時(shí)或多或少都能接觸到,包括Windows在內(nèi)的操作系統(tǒng)中的很多Internet時(shí)間同步功能都是在NTP的基礎(chǔ)上來做,這里我們來看一下Python使用ntplib庫(kù)同步校準(zhǔn)當(dāng)?shù)貢r(shí)間的方法2016-07-07

