日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python實現圖書借閱管理系統_python

作者:Mr_fengzi ? 更新時間: 2022-05-11 編程語言

本篇文章將編寫一個python簡易的圖書借閱管理系統,可以實現一些基本的功能。

圖書借閱管理系統需求分析:

1. 書籍的屬性信息:書名, 作者, 借閱狀態(借出數量, 未借的數量)
2. 書籍借閱需要的操作:

1). 錄入書籍信息;
2). 借閱書籍信息;
3). 歸還書籍;
4). 查詢書籍信息;
5). 退出

主要思路:

用戶進入系統后,可以通過鍵入數字1~5去實現相對應的功能,并且可以重復操作,直到輸入數字5之后退出系統。

先創建一個空的列表,作為一個存放書籍信息的容器,執行程序時先進行初始化,自動添加幾個已有的信息到列表中;

當輸入數字1后,要求用戶輸入要錄入的書籍名稱,若書籍已存在列表中,則報錯,若書籍不在列表中,則進一步要求用戶輸入相應的書籍信息,并把它們存放到列表中去;

當輸入數字2后,要求用戶輸入要借閱的書籍名稱,之后判斷該書籍的庫存數量是否為0,若庫存為0,則返回庫存不足的信息,否則,借閱成功,庫存數減1,借出數加1;

當輸入數字3后,要求用戶輸入要歸還的書籍名稱,并且庫存數量加1,借出數量減1;

當輸入數字4后,可以給用戶以表格的形式返回所有的書籍信息;

當輸入數字5后,退出系統。

在寫圖書借閱管理系統之前,需要寫一個改變字體的顏色的代碼,在借閱系統中出現不同的情況時,會有相應的顏色變化。

下面簡單介紹一下Python中怎樣改變輸出字體顏色:

實現過程:

終端的字符顏色是用轉義序列控制的,是文本模式下的系統顯示功能,和具體的語言無關。

轉義序列是以ESC開頭,即用\033來完成(ESC的ASCII碼用十進制表示是27,用八進制表示就是033)。

書寫格式:

開頭部分:\033[顯示方式;前景色;背景色m + 結尾部分:\033[0m

注意:

開頭部分的三個參數:顯示方式,前景色,背景色是可選參數,可以只寫其中的某一個;

另外由于表示三個參數不同含義的數值都是唯一的沒有重復的,所以三個參數的書寫先后順序沒有固定要求,系統都能識別;但是,建議按照默認的格式規范書寫。

對于結尾部分,其實也可以省略,但是為了書寫規范,建議\033[***開頭,\033[0m結尾。

數值表示的參數含義:

顯示方式: 0(默認值)、1(高亮)、22(非粗體)、4(下劃線)、24(非下劃線)、 5(閃爍)、25(非閃爍)、7(反顯)、27(非反顯)

前景色: 30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍色)、35(洋 紅)、36(青色>)、37(白色)

背景色: 40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍色)、45(洋 紅)、46(青色>)、47(白色)

先創建一個colorFont.py文件,方便之后調用,并編寫代碼:

OKGREEN = '\033[32m'
ERROR = '\033[31m'
WARNING = '\033[33m'
END = '\033[0m'
?
if __name__ == '__main__':
? ? print(OKGREEN + 'OK')
? ? print(ERROR + '錯誤')
? ? print(WARNING + "警告")

測試后,輸出結果如下:

接下來就是系統的編寫了,首先需要導入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: 已借出書籍數
? ? ? ? :param borrow: 未借出的書籍數
? ? ? ? """
? ? ? ? self.name = name
? ? ? ? self.author = author
? ? ? ? self.borrowed = borrowed
? ? ? ? self.borrow = borrow
?
? ? def __str__(self):
? ? ? ? return '' %(self.name)
?
class BookManage(object):
? ? books = []
?
? ? def init(self):
? ? ? ? """初始化書籍信息的函數, 添加書籍信息"""
? ? ? ? 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):
? ? ? ? """
? ? ? ? 根據用戶傳入的書籍名稱判斷書籍是否存在, 如果存在, 返回該書籍對象; 如果不存在, 返回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 + "該書信息已存在,請不要重復錄入" +END)
? ? ? ? else:
? ? ? ? ? ? author = input("請輸入作者:")
? ? ? ? ? ? borrow = input("請輸入錄入數量:")
? ? ? ? ? ? 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:
? ? ? ? ? ? ? ? # 未借出書籍數量減1;
? ? ? ? ? ? ? ? book.borrow -= 1
? ? ? ? ? ? ? ? # 借出書籍數量加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 = ["編號", "書籍名稱", "作者", "已借出數量", "庫存數量"]
? ? ? ? for index, book in enumerate(self.books):
? ? ? ? ? ? table.add_row([index+1, book.name, book.author, book.borrowed, book.borrow])
? ? ? ? print(table)
?
def main():
? ? # 創建書籍管理的對象
? ? bm = BookManage()
? ? # 先初始化書籍信息
? ? bm.init()
? ? prompt = """
? ? ? ? ? ? ? ? 書籍借閱與管理系統
? ? ? ? ? ? ? ??
? ? ? ? ? ? 1).錄入書籍信息
? ? ? ? ? ? 2).借閱書籍信息
? ? ? ? ? ? 3).歸還書籍
? ? ? ? ? ? 4).查詢書籍信息
? ? ? ? ? ? 5).退出系統
? ? ? ? ? ??
? ? ? ? ? ??
? ? 請輸入你的選擇:"""
? ? 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("請輸入正確的選項")
?
if __name__ == '__main__':
? ? main()

運行程序之后,輸出如下所示:

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

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

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

再輸入 3 還書吧:

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

最后輸入 5 就可以退出該系統了。

以上就是一個簡單的圖書借閱管理系統的實現。

原文鏈接:https://blog.csdn.net/Mr_fengzi/article/details/93380156

欄目分類
最近更新