赞
踩
开发环境说明:
windows 11 专业版
python 3.7 (所用模块pymysql)
MYSQL 8.0
需要源代码看主页联系
程序实现的功能效果如下:
可实现图书的增删查改,并且还有借书和还书的功能!
首先设计数据库表,表的结构字段类型如下:
- id:图书的编号;
-
- name:图书的名字;
-
- position:图书存放的位置信息;
-
- status:表示图书的借阅状态,是否被借
-
- borrower:表示借书的人名
然后撰写代码:
该项目的python代码结构,一个作为主文件,控制台显示功能,另一个作为连接mysql数据库的。
操作数据库代码:
完整代码请访问博主的主页联系、或访问:
腾讯文档腾讯文档-在线文档https://docs.qq.com/doc/p/71239d69a76f56cf1521717ae6b22c27cf876f10
- class MysqlDB:
- """
- 操作mysql数据库
- """
- def __init__(self, host, user, pwd, database=None, 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):
- """
- 进行查询操作
- """
- # 执行SQL
- self.cur.execute(sql)
- if one:
- return self.cur.fetchone()
- else:
- return self.cur.fetchall()
'运行
- def close(self):
- """
- 断开游标,关闭数据库连接
- """
- self.cur.close()
- self.conn.close()
'运行
图书管理系统核心代码:
菜单函数:
- 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()
'运行
搜索图书代码:(该搜索的sql语句是模糊查询,可根据自己的需求更改!)
- 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 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("您的输入有误~ 请按照菜单提示输入,谢谢!")
'运行
运行各功能效果如下所示:
输入:1 ------>添加图书信息:
此时,数据库的表中也实现成功添加图书:
输入2实现修改图书:
数据库同步实现修改:
输入功能3,删除图书时:
数据库的表中,该书也被删除:
查询图书:-------当添加《mysql原理》的图书在数据库中,并查询:
图书列表:相当于查询表内所有的数据
出借图书-------出借图书后,数据库的表中也随之更新出借人的信息:
出借图书后,数据库的表中也随之更新出借人的信息:
归还图书----当归还图书后,数据库的表里,也随之取消了出借人的名字:
数据库内的借书人也随之取消:
需要源码加主页的联系方式!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。