使用Python構建一個簡單的圖書管理系統

Python是一種強大而靈活的編程語言,它可以用于構建各種類型的應用程序,包括圖書管理系統。在這篇文章中,我們將學習如何使用Python和一些常見的庫來創建一個簡單的圖書管理系統。

1. 設計數據庫模型

首先,我們需要設計數據庫模型,這將決定我們的應用程序如何存儲和管理圖書信息。我們可以使用SQLite作為我們的數據庫引擎,并使用Peewee庫來定義和管理模型。

from peewee import *db = SqliteDatabase('library.db')class Book(Model):title = CharField()author = CharField()year = IntegerField()available = BooleanField(default=True)class Meta:database = dbdb.connect()
db.create_tables([Book])

在這個模型中,我們定義了一個名為Book的類,它具有標題、作者、年份和可用性等屬性。

2. 實現基本功能

接下來,我們將實現一些基本功能,例如添加書籍、顯示書籍列表和搜索書籍等。

def add_book(title, author, year):Book.create(title=title, author=author, year=year)def list_books():books = Book.select()for book in books:print(f"{book.title} by {book.author} ({book.year})")def search_books(query):books = Book.select().where(Book.title.contains(query) | Book.author.contains(query))for book in books:print(f"{book.title} by {book.author} ({book.year})")

3. 編寫用戶界面

現在,我們將編寫一個簡單的命令行用戶界面,使用戶能夠與我們的圖書管理系統進行交互。

def main():while True:print("\n1. 添加書籍")print("2. 顯示書籍列表")print("3. 搜索書籍")print("4. 退出")choice = input("\n請選擇操作:")if choice == '1':title = input("請輸入書名:")author = input("請輸入作者:")year = int(input("請輸入年份:"))add_book(title, author, year)elif choice == '2':print("\n書籍列表:")list_books()elif choice == '3':query = input("請輸入搜索關鍵詞:")print("\n搜索結果:")search_books(query)elif choice == '4':breakelse:print("無效的選擇!")if __name__ == "__main__":main()

4. 測試

現在,我們已經完成了圖書管理系統的編碼,讓我們來測試一下吧!

在命令行中運行程序,并按照提示執行相應的操作,添加書籍、顯示書籍列表、搜索書籍等。確保一切運行正常。

總結

在本文中,我們學習了如何使用Python和Peewee庫構建一個簡單的圖書管理系統。盡管這個系統還比較簡單,但你可以根據自己的需求進一步擴展它,比如添加借閱功能、圖書分類等。Python的簡潔和易用性使得構建這樣的應用程序變得非常簡單。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11159.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11159.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11159.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【退役之重學 Java】初步認識 AQS

一、AQS 是什么 Abstract Queued Synchronizer ,翻譯過來就是“抽象的排好隊的同步器”。 AQS 是一個用來構建鎖和同步器的框架。是用來構建鎖或者其他同步器組件的重量級基礎框架及整個JUC體系的基石,通過內置的FIFO隊列來完成線程獲取資源的排隊工作&…

centos7時間同步教程

針對問題:在我們使用虛擬機配置好centos7后,發現服務器時間和當前時間對不上 通過命令查看時間不同步 date 或者 date -R修改/etc/sysconfig/clock文件如下內容,保存 vi /etc/sysconfig/clockZONE“Asia/Shanghai” UTCtrue ARCfalse重寫/e…

251 基于matlab的動態粒子群算法

基于matlab的動態粒子群算法。普通粒子群算法無法感知外界環境的變化,在外界環境發生改變時無法實時進行響應,因而缺乏動態環境尋優能力。在普通粒子群算法基本上通過增加敏感粒子得到一種動態粒子群算法,該算法通過實時計算敏感粒子的適應度…

2024年第七屆可再生能源與電力工程國際會議(REPE 2024)即將召開!

2024年第七屆可再生能源與電力工程國際會議(REPE 2024)將于2024年9月25-27日在中國北京召開, 由清華大學主辦。REPE 2024將匯聚國內外知名專家學者通過主旨報告、分組討論和互動交流等形式,分享最新的研究成果、技術進展和應用案例&#xff0…

【教程向】從零開始創建瀏覽器插件(二)深入理解 Chrome 擴展的 manifest.json 配置文件

第二步:深入理解 Chrome 擴展的 manifest.json 配置文件 上一次我們已經著手完成了一個自己的瀏覽器插件,鏈接在這里:我是鏈接 在本篇博客中,我們將更詳細地探討 Chrome 擴展中的 manifest.json 文件。這個文件是每個瀏覽器擴展…

docker容器實現https訪問

前言: 【云原生】docker容器實現https訪問_docker ssl訪問-CSDN博客 一術語介紹 ①key 私鑰 明文--自己生成(genrsa ) ②csr 公鑰 由私鑰生成 ③crt 證書 公鑰 簽名(自簽名或者由CA簽名) ④證書&#xf…

C入門筆記

1. c文件執行過程 C語言程序的執行過程可以分為四個基本步驟:預處理、編譯、匯編和鏈接。下面是這些步驟的簡要概述: 預處理:在這個步驟中,預處理器將源代碼中以 # 開頭的指令進行處理,例如 #include 和 #define。預…

一般社保測試

SI 分析和 PI 分析主要有以下區別: SI 分析: 主要關注信號在傳輸過程中的質量,如信號的失真、反射、串擾等問題。 側重于確保信號的準確傳輸和接收,以實現可靠的數字或模擬信號通信。 PI 分析: 著重于電源分配網絡…

STM32快速入門(定時器之輸出PWM波形)

STM32快速入門(定時器之輸出PWM波形) 前言 本節主要講解STM32利用通用定時器,利用CCR和CNT寄存器,輸出指定占空比和頻率的PWM波形。其功能的應用有:實現LED呼吸燈的效果、控制步進電機、控制直流電機轉速等。 導航 …

Java 類加載過程

什么是類加載 Java 類加載是指將 Java 字節碼文件加載到 Java 虛擬機(JVM)中,并將其轉化為可以執行的可執行代碼的過程。當 Java 程序在運行時引用某個類時,JVM 會首先檢查是否已經加載該類,如果沒有加載,則…

ue5地編模塊學習記錄

ue5網站功能3d溜溜網下載模型https://anyconv.com/max-to-fbx-converter/3dmax轉換fbx模型解決問題記錄 一、光源 搜索光源搜索不到的時候可以點擊 窗口> 對場景內的光照進行處理

【Java】數組訓練案例

訓練案例1 需求描述: 定義一個含有五個元素的數組,并為每個元素賦值,求數組中所有元素的最小值。 操作步驟描述: 1) 定義5個元素數組。 2) 可以使用初始化數組的兩種方式之一為數組元素賦值。 3&#xff09…

最佳解決Maven同一依賴多版本共存問題,重復依賴(同一個jar包,多個版本)-maven-shade-plugin

先看鏈接:原文鏈接 參照原文鏈接生成的文件(下面是我放的位置) mvn指令 mvn install:install-file -DfileD:\mavenrepository/maven-shade.jar -DgroupIdcom.wj -DartifactIdmaven-shade -Dversion1.1 -Dpackagingjar如果配置了maven_home 和java_home可以任意打開cmd執行(…

Google: 在新知識上微調大語言模型是否會鼓勵產生幻覺?

摘要 當大型語言模型通過監督式微調進行對齊時,它們可能會遇到在預訓練期間沒有獲得的新事實信息。人們經常推測,這可能會教導模型產生事實上不正確的回應的行為,因為模型被訓練成生成沒有基于其預先存在的知識的事實。在這項工作中,Google研究了這種暴露在新知識下對微調后模…

基于springboot實現高校教師電子名片系統項目【項目源碼+論文說明】計算機畢業設計

基于springboot實現高校教師電子名片系統演示 摘要 傳統信息的管理大部分依賴于管理人員的手工登記與管理,然而,隨著近些年信息技術的迅猛發展,讓許多比較老套的信息管理模式進行了更新迭代,名片信息因為其管理內容繁雜&#xff…

C++的數據結構(五):樹和存儲結構及示例

在計算機科學中,樹是一種抽象數據類型(ADT)或是實現這種抽象數據類型的數據結構,用來模擬具有樹狀結構性質的數據集合。這種數據結構以一系列連接的節點來形成樹形結構。在C中,樹的概念和存儲結構是實現各種復雜算法和…

Java--初識類和對象

前言 本篇講解Java類和對象的入門版本。 學習目的: 1.理解什么是類和對象。 2.引入面向對象程序設計的概念 3.學會如何定義類和創建對象。 4.理解this引用。 5.了解構造方法的概念并學會使用 考慮到篇幅過長問題,作者決定分多次發布。 面向對象的引入 J…

Docker之grep: (standard input): binary file matches

使用 docker compose logs -f | grep 命令時遇到了 grep: (standard input): binary file matches 錯誤。 這個錯誤通常發生在 grep 嘗試搜索包含二進制內容的文件時。docker compose logs 命令會輸出容器的日志,而這些日志可能包含二進制數據,導致 gre…

MySQL查詢篇-集合運算

文章目錄 union (并集)union distinctunion all intersect(交集)intersect allintersect distinct except 差集except distinctexcept distinctexcept all union (并集) union distinct 使用前提:a和c數據類型一致&a…

互聯網摸魚日報(2024-05-13)

互聯網摸魚日報(2024-05-13) 36氪新聞 當綠色飛行成為潮流,這家航空公司定下了新目標 | 最前線 回收雨水澆花,廚余垃圾變肥料,我們打卡了阿里北京新園區 | 最前線 本周雙碳大事:中美就氣候問題進行會談;鋰電池行業迎…