基于python+MySQL编写图书管理系统
创始人
2025-01-16 08:34:27
0

目录

一、功能

二、表

三、代码编写


一、功能

二、表

books表:

 reader表:

 

三、代码编写

import pymysql import datetime  # 建立数据库连接 connection = pymysql.connect(     host='localhost',  # 数据库主机名     port=3306,               # 数据库端口号,默认为3306     user='root',             # 数据库用户名     passwd='123456',         # 数据库密码     db='tushuguanlixitong',  # 数据库名称     charset='utf8'           # 字符编码 )   def query(sql, one=False):     cursor = connection.cursor()     cursor.execute(sql)     if one:         return cursor.fetchone()     else:         return cursor.fetchall()   def update(sql):     cursor = connection.cursor()     result = cursor.execute(sql)     # 提交事务     connection.commit()     return result   def select_book():     # 创建一个数据库游标对象     cursor = connection.cursor() # 定义SQL查询语句,从图书信息表表中选择所有数据     sql = 'select*from books;'     # 执行SQL查询语句     cursor.execute(sql)     # 提交事务,确保数据被正确写入数据库     connection.commit()     # 从游标中获取查询结果,保存到data变量中     data = cursor.fetchall()     # 导入pandas库中的DataFrame类     from pandas import DataFrame     # 显示DataFrame的前5行数据     df = DataFrame(data, columns=['book_name', 'book_id', 'book_status', 'book_ISBN', 'author', 'press', 'borrower',                                  'loan_time'])     df.head()     print(df.head())   class Book:      def __init__(self, book_name, book_id, book_status, book_isbn, author, press):         self.book_name = book_name         self.author = author         self.book_id = book_id         self.book_status = book_status         self.book_ISBN = book_isbn         self.press = press   def add_book():     cursor = connection.cursor()     sql = ('INSERT INTO books (book_name,book_id,book_status,book_ISBN,author,press)'            'VALUES(%s,%s,%s,%s,%s,%s)')     print('请输入添加图书信息:')     book = Book(None, None, None, None, None, None)     book.book_name = input('请输入图书名:')     book.book_id = input('请输入图书编号:')     book.book_status = input('请输入图书状态:')     book.book_ISBN = input('请输入图书ISBN码:')     book.author = input('请输入图书作者:')     book.press = input('请输入图书出版社:')     values = (book.book_name, book.book_id, book.book_status, book.book_ISBN, book.author, book.press)     cursor.execute(sql, values)     connection.commit()     print('图书添加成功')   def delete_book():     cursor = connection.cursor()     book_id = input("输入需要删除的图书号:")     result = query("select  * FROM books where book_id = {}".format(book_id), one=True)      if result:         print("图书信息:".format(result))         chooice = input("是否删除? 1.yes,2.no")         if chooice == '1':             update("DELETE FROM books where book_id = {}".format(book_id))             print("成功删除")          else:             print("放弃删除")      else:         print("未查询到相关书籍信息~")      num = input("继续删除请输入1, 回车退回主菜单")     if num == "1":         delete_book()   def update_book():     cursor = connection.cursor()     book_id = input("输入需要删除的图书号:")     result = query("select  * FROM books where book_id = {}".format(book_id), one=True)     if result:         print("图书信息:".format(result))         book_name = input("请输入修改书名:")         book_status = input("请输入图书状态:")         author = input("请输入修改作者:")         press = input("请输入修改出版社:")         update("update books set book_name = '{}',book_status = '{}',author = '{}',press = '{}' where book_id = {};"                .format(book_name, book_status, author, press, book_id))         print("更新成功")     else:         print("未查询到相关书籍信息~")      num = input("继续更新请输入1, 回车退回主菜单")     if num == "1":         update_book()   def select_reader():     # 创建一个数据库游标对象     cursor = connection.cursor() # 定义SQL查询语句,从图书信息表表中选择所有数据     sql = 'select*from reader;'     # 执行SQL查询语句     cursor.execute(sql)     # 提交事务,确保数据被正确写入数据库     connection.commit()     # 从游标中获取查询结果,保存到data变量中     data = cursor.fetchall()     # 导入pandas库中的DataFrame类     from pandas import DataFrame     # 显示DataFrame的前5行数据     df = DataFrame(data, columns=['姓名', '编号', '身份', '部门'])     df.head()     print(df.head()) # 查询读者名单   class Read:      def __init__(self, read_name, read_id, read_identity, read_department):         self.read_name = read_name         self.read_id = read_id         self.read_identity = read_identity         self.read_department = read_department   def add_reader():     cursor = connection.cursor()     sql = 'INSERT INTO reader (read_name,read_id,read_identity,read_department) VALUES(%s,%s,%s,%s)'     print('添加人员:')     read = Read(None, None, None, None)     read.read_name = input('请输入读者姓名')     read.read_id = input('请输入读者编号')     read.read_identity = input('请输入读者身份')     read.read_department = input('请输入读者所在部门')     values = (read.read_name, read.read_id, read.read_identity, read.read_department)     cursor.execute(sql, values)     connection.commit()     print('读者添加成功!')   def borrow_book():     cursor = connection.cursor()     book_id = input("请输入需要借阅的图书号:")     result = query("select * from books where book_id={};".format(book_id), one=True)     print(result)     if result:         if result[2] == "出借":             print("抱歉,该书已经借出!")          else:             while True:                 borrower = input("请输入借阅者的名字:")                 if result:                     return_time = input("请输入还书的时间;")                     update("update books set return_time='{}' where book_id={};".format(return_time, book_id))                     if borrower:                         update("update books set borrower='{}' where book_id={};".format(borrower, book_id))                         update("update books set book_status='出借' where book_id={};".format(book_id))                         print("图书借阅成功~")                         break                  else:                     print("没有这个读者,请重新输入")     else:         print("未查询到相关书籍信息~")      num = input("继续借阅请输入1, 回车退回主菜单")     if num == "1":         borrow_book()   def back_book():     cursor = connection.cursor()     book_id = input('请输入要归还的图书书号:')     result = query("select * from books where book_id={};".format(book_id), one=True)     if result:         if result[2] == '在架':             print("抱歉,该书在架请确认编号是否正确!")         else:             update("update books set borrower='' where book_id={};".format(book_id))             update("update books set book_status='在架' where book_id={};".format(book_id))             print("归还成功~")     else:         print("未查询到相关书籍信息~")      num = input("继续还书请输入1, 回车退回主菜单")     if num == "1":         back_book()   def time():     cursor = connection.cursor()     now = datetime.datetime.now()     cursor .execute("SELECT * FROM books WHERE return_time < %s", (now,))     book_name = cursor.fetchall()     print("图书归还超期:")     print(book_name) # 查询临期图书(距离当前时间一周内到期)     cursor.execute("SELECT * FROM books WHERE return_time BETWEEN %s AND %s",                    (now, now + datetime.timedelta(days=10)))     due_soon_books = cursor.fetchall()     print("距离图书(到期还有10天):")   def menu():  # 图书管理系统菜单      while True:         print("""                    图书管理系统            1.查询图书            2.增加图书            3.借阅图书            4.归还图书            5.修改图书            6.删除图书            7.导入读者名单            8.查看读者名单            9.超期和临期查询            10.退出系统            """)         choice = input('请选择:')          if choice == '1':             select_book()         elif choice == '2':             add_book()         elif choice == '3':             borrow_book()         elif choice == '4':             back_book()         elif choice == '5':             update_book()         elif choice == '6':             delete_book()         elif choice == '7':             add_reader()         elif choice == '8':             select_reader()         elif choice == '9':             time()         elif choice == '10':             print('欢迎下次使用~~~~~~~')             break         else:             print('请输入正确序号')  menu()

相关内容

热门资讯

为了进一步!微信小程序免费黑科... 为了进一步!微信小程序免费黑科技透视,新道游app辅助器教材教程(有挂规律)1、玩家可以在微信小程序...
如何分辨真伪!新超凡软件辅助,... 【福星临门,好运相随】;如何分辨真伪!新超凡软件辅助,微乐陕西小程序脚本,新版2025教程(原来有开...
实测发现!微乐贵阳捉鸡麻将挂软... 您好:微乐贵阳捉鸡麻将挂软件这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用...
带你了解!牛总管一定要牛辅助,... 带你了解!牛总管一定要牛辅助,雀友会潮汕图片辅助器,wepoke教程(原来有开挂辅助神器)是一款可以...
推荐十款!爱玩联盟辅助下载,悟... 推荐十款!爱玩联盟辅助下载,悟空大厅微信辅助,解说技巧(原来有开挂辅助黑科技);推荐十款!爱玩联盟辅...
最新技巧!雀友会辅助潮汕麻将脚... 最新技巧!雀友会辅助潮汕麻将脚本,微信小程序微乐怎么才能发好牌,2025版教程(原来有开挂辅助助手)...
玩家亲测!欢乐达人脚本,wep... 玩家亲测!欢乐达人脚本,wepoker插件下载,科技教程(原来有开挂辅助app);作为系统规律正版授...
推荐攻略!悟空大厅辅助助手下载... 推荐攻略!悟空大厅辅助助手下载安装,hhpoker是正规的吗,揭秘教程(原来有开挂辅助器);是一种具...
玩家必看!花花生活圈私人局辅助... 玩家必看!花花生活圈私人局辅助器,新青鸟辅助,高科技教程(原来有开挂辅助器);AI辅助机器人普及解说...
技术分享!兴动平台辅助下载,财... 技术分享!兴动平台辅助下载,财神十三张脚本辅助,wepoke教程(原来有开挂辅助挂);最新版2026...