基于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()

相关内容

热门资讯

透视软件!wpk辅助器,aap... 透视软件!wpk辅助器,aapoker发牌逻辑(详细辅助新版2025教程);1.aapoker发牌逻...
透视辅助!哈糖大菠萝有挂吗5个... 透视辅助!哈糖大菠萝有挂吗5个常用方法,福建开心王国辅助(原来真的有挂)1)福建开心王国辅助辅助挂:...
智星德州菠萝透视插件工具!hh... 您好,智星德州菠萝透视插件工具这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很...
透视新版“aapoker辅助包... 透视新版“aapoker辅助包”好像是真的有挂(辅助挂)详细辅助实用技巧1、系统规律教程、辅助透视等...
透视安卓版!wpk私人局有透视... 透视安卓版!wpk私人局有透视吗,瑞安玉海楼茶苑辅助器(好像是真的有挂)在进入瑞安玉海楼茶苑辅助器辅...
透视科技!hhpoker开辅助... 透视科技!hhpoker开辅助软件,fishpoker透视(详细辅助科技教程);支持多人共享记分板与...
wpk脚本下载!wepoker... wpk脚本下载!wepoker轻量版书签,hhpoker透视脚本安卓(详细辅助德州教程)1、hhpo...
透视教程!wepoker软件靠... 透视教程!wepoker软件靠谱么,凑一桌关春天辅助器怎么安装(都是真的有挂)该软件可以轻松地帮助玩...
透视ai!wpk透视脚本链接,... 透视ai!wpk透视脚本链接,德扑HHpoker有挂吗(详细辅助必赢方法);1分钟了解详细教程(微信...
透视app“aapoker辅助... 透视app“aapoker辅助器怎么用”一贯真的是有挂(辅助挂)详细辅助系统教程1、ai辅助优化,发...