教你用python實現一個無界面的小型圖書管理系統
一、需求瞭解
功能模塊
圖書信息
二、環境準備
安裝mysql數據庫
參考文章:
MySQL數據庫壓縮版本安裝與配置
MySQL msi版本下載安裝圖文教程
創建數據庫表
- 創建數據庫
CREATE DATABASE bookmanage;
- 使用數據庫
use bookmanage;
- 創建表
create table books(
id int unsigned primary key auto_increment not null,
name varchar(20) default “”,
position varchar(40) default “”,
status enum(‘在庫’, ‘出借’) default ‘在庫’,
borrower varchar(20) default “”
);
- 插入數據
insert into books(name, position) value (‘python從入門到放棄’, ‘A-1-1′);
- 查詢數據
select * from books where id=2;
- 修改數據
update books set name=‘python’;
- 刪除數據
delete from book where id=3;
三、代碼實現
引入pymysql模塊
- 安裝pymysql
命令:pip install pymysql
- 封裝操作數據庫模塊
# -*- coding: utf-8 -*- """ =============================== @Time : 2021/5/18 15:56 @Author : flora.chen @FileName: handle_mysql.py @Software: PyCharm =============================== """ import pymysql class MysqlDB: """ 操作mysql數據庫 """ def __init__(self, host, user, pwd, database=None, port=3306): """ 初始化數據庫鏈接 :param host: 主機地址 :param user: 用戶名 :param pwd: 密碼 :param database: 數據庫名稱,默認為空 :param port: 端口號,默認3306 """ self.conn = pymysql.connect( host=host, user=user, password=pwd, database=database, port=port, cursorclass=pymysql.cursors.DictCursor ) # 創建一個遊標對象 self.cur = self.conn.cursor() def update(self, sql): """ 進行增刪改操作 :param sql: 需要執行的SQL :return: """ # 執行SQL result = self.cur.execute(sql) # 提交事務 self.conn.commit() return result def query(self, sql, one=False): """ 進行查詢操作 :param one: 判斷是要返回所有查詢數據還是第一條,默認是所有 :param sql: 要執行的SQL :return: """ # 執行SQL self.cur.execute(sql) if one: return self.cur.fetchone() else: return self.cur.fetchall() def close(self): """ 斷開遊標,關閉數據庫連接 :return: """ self.cur.close() self.conn.close() if __name__ == "__main__": db = MysqlDB(host="localhost", user="root", pwd="root") print(db.query("select * from bookmanage.books")) # db.update("insert into bookmanage.books(name, position) value ('python從入門到放棄', 'A-1-1');")
圖案管理系統後臺實現
# -*- coding: utf-8 -*- """ =============================== @Time : 2021/5/18 16:39 @Author : flora.chen @FileName: bookmanager.py @Software: PyCharm =============================== """ from handle_mysql import MysqlDB db = MysqlDB(host="localhost", database="bookmanage", user="root", pwd="root") class BookManage: """ 圖書管理系統 """ @staticmethod def print_menu(): """ 菜單打印 :return: """ print("---------------------菜單-------------------------") print("[1]: 添加圖書") print("[2]: 修改圖書") print("[3]: 刪除圖書") print("[4]: 查詢圖書") print("[5]: 圖書列表") print("[6]: 出借圖書") print("[7]: 歸還圖書") print("[8]: 退出") def add_book(self): """ [1]: 添加圖書 :return: """ print("****************添加圖書****************") name = input("請輸入書名:") position = input("請輸入圖書位置:") if name and position: db.update("insert into books(name, position) value ('{}', '{}');".format(name, position)) print("圖書添加成功") else: print("書名或者圖書位置不能為空,請重新輸入!") num = input("繼續添加請輸入1, 回車退回主菜單") if num == "1": self.add_book() def update_book(self): """ [2]: 修改圖書 :return: """ print("****************修改圖書****************") book_id = input("請輸入需要修改的圖書ID:") result = db.query("select * from books where id={};".format(book_id), one=True) if result: print("當前數據為:{}".format(result)) name = input("重新輸入書名,不修改輸入回車:") or result["name"] position = input("重新輸入位置,不修改輸入回車:") or result["position"] db.update("update books set name='{}', position='{}' where id={};".format(name, position, book_id)) print("修改成功") else: print("您輸入的圖書ID不存在,請重新輸入~") num = input("繼續修改請輸入1, 回車退回主菜單") if num == "1": self.update_book() def delete_book(self): """ [3]: 刪除圖書 :return: """ print("****************刪除圖書****************") book_id = input("請輸入需要修改的圖書ID:") result = db.query("select * from books where id={};".format(book_id), one=True) if result: print("當前數據為:{}".format(result)) confirm_num = input("確定需要刪除這本書嗎?確認請按1,取消請按2:") if confirm_num == "1": db.update("delete from books where id={};".format(book_id)) print("刪除成功") else: print("已確認不刪除該書籍~") else: print("系統中未找到該書籍!") num = input("繼續刪除請輸入1, 回車退回主菜單") if num == "1": self.delete_book() def query_book(self): """ [4]: 查詢圖書 :return: """ print("****************查詢圖書****************") name = input("請輸入您要查詢的圖書名稱(模糊匹配):") if name: result = db.query("select * from books where name like '%{}%';".format(name)) if result: print("當前查詢到如下書籍信息:{}".format(result)) else: print("未查詢到相關書籍信息~") else: print("書名不能為空!") num = input("繼續查詢請輸入1, 回車退回主菜單") if num == "1": self.query_book() def book_list(self): """ [5]: 圖書列表 :return: """ print("****************圖書列表****************") result = db.query("select * from books;") for i in result: print("編號:{}, 書籍名:{}, 位置:{}, 狀態:{}, 借閱人:{}".format(i["id"], i["name"], i["position"], i["status"], i["borrower"])) def borrow_book(self): """ [6]: 出借圖書 :return: """ print("****************出借圖書****************") book_id = input("請輸入需要借閱的圖書ID:") result = db.query("select * from books where id={};".format(book_id), one=True) if result: if result["status"] == "出借": print("抱歉,該書已經借出!") else: while True: borrower = input("請輸入借閱者的名字:") if borrower: db.update("update books set borrower='{}' where id={};".format(borrower, book_id)) db.update("update books set status='出借' where id={};".format(book_id)) print("圖書借閱成功~") break else: print("借閱者的名字不能為空, 請重新輸入") else: print("未查詢到相關書籍信息~") num = input("繼續借閱請輸入1, 回車退回主菜單") if num == "1": self.borrow_book() def back_book(self): """ [7]: 歸還圖書 :return: """ print("****************歸還圖書****************") book_id = input("請輸入需要歸還的圖書ID:") result = db.query("select * from books where id={};".format(book_id), one=True) if result: if result["status"] == "在庫": print("該書是在庫狀態,請確認圖書編號是否正確!") else: db.update("update books set status='在庫' where id={};".format(book_id)) db.update("update books set borrower='' where id={};".format(book_id)) print("書籍歸還成功~") else: print("未查詢到相關書籍信息~") num = input("繼續歸還書籍請輸入1, 回車退回主菜單") if num == "1": self.borrow_book() def quit(self): """ [8]: 退出 :return: """ print("****************退出****************") db.close() def main(self): """ 程序運行的流程控制 :return: """ print("---------------歡迎進入圖書管理系統----------------") while True: self.print_menu() num = input("請輸入選項:") if num == "1": self.add_book() elif num == "2": self.update_book() elif num == "3": self.delete_book() elif num == "4": self.query_book() elif num == "5": self.book_list() elif num == "6": self.borrow_book() elif num == "7": self.back_book() elif num == "8": self.quit() break else: print("您的輸入有誤~ 請按照菜單提示輸入,謝謝!") if __name__ == "__main__": book = BookManage() book.main()
到此這篇關於教你用python實現一個無界面的小型圖書管理系統的文章就介紹到這瞭,更多相關Python實現圖書管理系統內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python通過pymysql調用MySQL進行增刪改移查
- Python連接Mysql實現圖書借閱系統
- python實現圖書館借閱系統
- python 管理系統實現mysql交互的示例代碼
- Python MySQL數據庫基本操作及項目示例詳解