Python實(shí)現(xiàn)圖書借閱管理系統(tǒng)
本篇文章將編寫一個python簡易的圖書借閱管理系統(tǒng),可以實(shí)現(xiàn)一些基本的功能。
圖書借閱管理系統(tǒng)需求分析:
1. 書籍的屬性信息:書名, 作者, 借閱狀態(tài)(借出數(shù)量, 未借的數(shù)量)
2. 書籍借閱需要的操作:
1). 錄入書籍信息;
2). 借閱書籍信息;
3). 歸還書籍;
4). 查詢書籍信息;
5). 退出
主要思路:
用戶進(jìn)入系統(tǒng)后,可以通過鍵入數(shù)字1~5去實(shí)現(xiàn)相對應(yīng)的功能,并且可以重復(fù)操作,直到輸入數(shù)字5之后退出系統(tǒng)。
先創(chuàng)建一個空的列表,作為一個存放書籍信息的容器,執(zhí)行程序時(shí)先進(jìn)行初始化,自動添加幾個已有的信息到列表中;
當(dāng)輸入數(shù)字1后,要求用戶輸入要錄入的書籍名稱,若書籍已存在列表中,則報(bào)錯,若書籍不在列表中,則進(jìn)一步要求用戶輸入相應(yīng)的書籍信息,并把它們存放到列表中去;
當(dāng)輸入數(shù)字2后,要求用戶輸入要借閱的書籍名稱,之后判斷該書籍的庫存數(shù)量是否為0,若庫存為0,則返回庫存不足的信息,否則,借閱成功,庫存數(shù)減1,借出數(shù)加1;
當(dāng)輸入數(shù)字3后,要求用戶輸入要?dú)w還的書籍名稱,并且?guī)齑鏀?shù)量加1,借出數(shù)量減1;
當(dāng)輸入數(shù)字4后,可以給用戶以表格的形式返回所有的書籍信息;
當(dāng)輸入數(shù)字5后,退出系統(tǒng)。
在寫圖書借閱管理系統(tǒng)之前,需要寫一個改變字體的顏色的代碼,在借閱系統(tǒng)中出現(xiàn)不同的情況時(shí),會有相應(yīng)的顏色變化。
下面簡單介紹一下Python中怎樣改變輸出字體顏色:
實(shí)現(xiàn)過程:
終端的字符顏色是用轉(zhuǎn)義序列控制的,是文本模式下的系統(tǒng)顯示功能,和具體的語言無關(guān)。
轉(zhuǎn)義序列是以ESC開頭,即用\033來完成(ESC的ASCII碼用十進(jìn)制表示是27,用八進(jìn)制表示就是033)。
書寫格式:
開頭部分:\033[顯示方式;前景色;背景色m + 結(jié)尾部分:\033[0m
注意:
開頭部分的三個參數(shù):顯示方式,前景色,背景色是可選參數(shù),可以只寫其中的某一個;
另外由于表示三個參數(shù)不同含義的數(shù)值都是唯一的沒有重復(fù)的,所以三個參數(shù)的書寫先后順序沒有固定要求,系統(tǒng)都能識別;但是,建議按照默認(rèn)的格式規(guī)范書寫。
對于結(jié)尾部分,其實(shí)也可以省略,但是為了書寫規(guī)范,建議\033[***開頭,\033[0m結(jié)尾。
數(shù)值表示的參數(shù)含義:
顯示方式: 0(默認(rèn)值)、1(高亮)、22(非粗體)、4(下劃線)、24(非下劃線)、 5(閃爍)、25(非閃爍)、7(反顯)、27(非反顯)
前景色: 30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍(lán)色)、35(洋 紅)、36(青色>)、37(白色)
背景色: 40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍(lán)色)、45(洋 紅)、46(青色>)、47(白色)
先創(chuàng)建一個colorFont.py文件,方便之后調(diào)用,并編寫代碼:
OKGREEN = '\033[32m' ERROR = '\033[31m' WARNING = '\033[33m' END = '\033[0m' ? if __name__ == '__main__': ? ? print(OKGREEN + 'OK') ? ? print(ERROR + '錯誤') ? ? print(WARNING + "警告")
測試后,輸出結(jié)果如下:

接下來就是系統(tǒng)的編寫了,首先需要導(dǎo)入colorFont模塊,代碼如下:
from colorFont import *
from prettytable import PrettyTable
class Book(object):
? ? def __init__(self, name, author, borrowed=0, borrow=0):
? ? ? ? """
? ? ? ? :param name:書籍名稱
? ? ? ? :param author: 作者
? ? ? ? :param borrowed: 已借出書籍?dāng)?shù)
? ? ? ? :param borrow: 未借出的書籍?dāng)?shù)
? ? ? ? """
? ? ? ? self.name = name
? ? ? ? self.author = author
? ? ? ? self.borrowed = borrowed
? ? ? ? self.borrow = borrow
?
? ? def __str__(self):
? ? ? ? return '<Book: %s>' %(self.name)
?
class BookManage(object):
? ? books = []
?
? ? def init(self):
? ? ? ? """初始化書籍信息的函數(shù), 添加書籍信息"""
? ? ? ? self.books.append(Book("Python核心編程", 'Wesley Chun', 5, 0))
? ? ? ? self.books.append(Book("Python for data analysis", 'Wes McKinney', 5, 10))
? ? ? ? self.books.append(Book("流暢的Python", 'Luciano Ramalho', 0, 10))
? ? ? ? print(OKGREEN + "初始化書籍信息成功" + END)
?
? ? def find(self, name):
? ? ? ? """
? ? ? ? 根據(jù)用戶傳入的書籍名稱判斷書籍是否存在, 如果存在, 返回該書籍對象; 如果不存在, 返回None
? ? ? ? """
? ? ? ? for book in self.books:
? ? ? ? ? ? if book.name == name:
? ? ? ? ? ? ? ? return book
? ? ? ? else:
? ? ? ? ? ? return None
?
? ? def entering(self):
? ? ? ? name = input("請輸入要錄入的書籍名稱:").strip()
? ? ? ? book = self.find(name)
? ? ? ? if book:
? ? ? ? ? ? print(WARNING + "該書信息已存在,請不要重復(fù)錄入" +END)
? ? ? ? else:
? ? ? ? ? ? author = input("請輸入作者:")
? ? ? ? ? ? borrow = input("請輸入錄入數(shù)量:")
? ? ? ? ? ? borrowed = 0
? ? ? ? ? ? self.books.append(Book(name, author, borrowed, int(borrow)))
? ? ? ? ? ? print(OKGREEN + "錄入書籍信息成功" +END)
?
? ? def borrowBook(self):
? ? ? ? # 刪除字符串左右的空格
? ? ? ? name = input("借閱書籍名稱:").strip()
? ? ? ? # 查找書籍, 如果存在, 返回書籍對象, 不存在, 返回None;
? ? ? ? book = self.find(name)
? ? ? ? if book:
? ? ? ? ? ? if book.borrow > 0:
? ? ? ? ? ? ? ? # 未借出書籍?dāng)?shù)量減1;
? ? ? ? ? ? ? ? book.borrow -= 1
? ? ? ? ? ? ? ? # 借出書籍?dāng)?shù)量加1
? ? ? ? ? ? ? ? book.borrowed += 1
? ? ? ? ? ? ? ? print(OKGREEN + "書籍借閱成功" + END)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? print(WARNING + "書籍%s庫存不足" %(book.name) + END)
? ? ? ? else:
? ? ? ? ? ? print(ERROR + "書籍%s不存在" %(name) + END)
?
? ? def returnBook(self):
? ? ? ? name = input("歸還書籍名稱:").strip()
? ? ? ? book = self.find(name)
? ? ? ? if book:
? ? ? ? ? ? book.borrow += 1
? ? ? ? ? ? book.borrowed -= 1
? ? ? ? ? ? print(OKGREEN + "書籍歸還成功" + END)
? ? ? ? else:
? ? ? ? ? ? print(ERROR + "本圖書館沒有此書" + END)
?
? ? def show(self):
? ? ? ? print("書籍信息顯示".center(50, '*'))
? ? ? ? table = PrettyTable()
? ? ? ? table.field_names = ["編號", "書籍名稱", "作者", "已借出數(shù)量", "庫存數(shù)量"]
? ? ? ? for index, book in enumerate(self.books):
? ? ? ? ? ? table.add_row([index+1, book.name, book.author, book.borrowed, book.borrow])
? ? ? ? print(table)
?
def main():
? ? # 創(chuàng)建書籍管理的對象
? ? bm = BookManage()
? ? # 先初始化書籍信息
? ? bm.init()
? ? prompt = """
? ? ? ? ? ? ? ? 書籍借閱與管理系統(tǒng)
? ? ? ? ? ? ? ??
? ? ? ? ? ? 1).錄入書籍信息
? ? ? ? ? ? 2).借閱書籍信息
? ? ? ? ? ? 3).歸還書籍
? ? ? ? ? ? 4).查詢書籍信息
? ? ? ? ? ? 5).退出系統(tǒng)
? ? ? ? ? ??
? ? ? ? ? ??
? ? 請輸入你的選擇:"""
? ? while True:
? ? ? ? choice = input(prompt)
? ? ? ? if choice == '1':
? ? ? ? ? ? bm.entering()
? ? ? ? elif choice == '2':
? ? ? ? ? ? bm.borrowBook()
? ? ? ? elif choice == '3':
? ? ? ? ? ? bm.returnBook()
? ? ? ? elif choice == '4':
? ? ? ? ? ? bm.show()
? ? ? ? elif choice == '5':
? ? ? ? ? ? exit(0)
? ? ? ? else:
? ? ? ? ? ? print("請輸入正確的選項(xiàng)")
?
if __name__ == '__main__':
? ? main()運(yùn)行程序之后,輸出如下所示:

之后輸入要執(zhí)行的操作相對應(yīng)的數(shù)字,先輸入一個 4 吧,看一下書庫里最開始有什么信息,輸入4后,得到下面的輸出:

再輸入一個 1 ,錄入一個新的信息:

再輸入一個2,借一本書吧:

再輸入 3 還書吧:

再輸入 4 看一下,現(xiàn)在書庫中所有書的情況吧:

最后輸入 5 就可以退出該系統(tǒng)了。
以上就是一個簡單的圖書借閱管理系統(tǒng)的實(shí)現(xiàn)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python模擬實(shí)現(xiàn)圖書管理系統(tǒng)
- python實(shí)現(xiàn)簡易圖書管理系統(tǒng)
- python編寫圖書管理系統(tǒng)
- Python實(shí)現(xiàn)簡易的圖書管理系統(tǒng)
- Python實(shí)現(xiàn)圖書管理系統(tǒng)設(shè)計(jì)
- python面向?qū)ο蠓▽?shí)現(xiàn)圖書管理系統(tǒng)
- wxpython實(shí)現(xiàn)圖書管理系統(tǒng)
- python圖書管理系統(tǒng)
- python實(shí)現(xiàn)圖書管理系統(tǒng)
- Python實(shí)現(xiàn)簡單的圖書管理系統(tǒng)
相關(guān)文章
Python調(diào)用訊飛語音合成API接口來實(shí)現(xiàn)文字轉(zhuǎn)語音
這篇文章主要為大家介紹了Python調(diào)用訊飛語音合成API接口來實(shí)現(xiàn)文字轉(zhuǎn)語音方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
python實(shí)現(xiàn)txt文件格式轉(zhuǎn)換為arff格式
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)txt文件格式轉(zhuǎn)換為arff格式的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
利用Python制作動態(tài)排名圖的實(shí)現(xiàn)代碼
這篇文章主要介紹了利用Python制作動態(tài)排名圖的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
解決python中遇到字典里key值為None的情況,取不出來的問題
今天小編就為大家分享一篇解決python中遇到字典里key值為None的情況,取不出來的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
python實(shí)現(xiàn)停車場管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)停車場管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
手把手教你pycharm專業(yè)版安裝破解教程(linux版)
這篇文章主要介紹了 手把手教你pycharm專業(yè)版安裝破解教程(linux版),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

