当前位置:   article > 正文

基于Python+Mysql数据库的图书管理系统课设(控制台程序)_数据库图书馆管理系统myaql+pyth

数据库图书馆管理系统myaql+pyth

开发环境说明:

windows 11 专业版

python 3.7 (所用模块pymysql

PyCharm 专业版

MYSQL 8.0

需要源代码看主页联系

程序实现的功能效果如下:

可实现图书的增删查改,并且还有借书和还书的功能!

首先设计数据库表,表的结构字段类型如下:

  1. id:图书的编号;
  2. name:图书的名字;
  3. position:图书存放的位置信息;
  4. status:表示图书的借阅状态,是否被借
  5. borrower:表示借书的人名

 然后撰写代码:

该项目的python代码结构,一个作为主文件,控制台显示功能,另一个作为连接mysql数据库的。

操作数据库代码:

完整代码请访问博主的主页联系、或访问:

腾讯文档腾讯文档-在线文档https://docs.qq.com/doc/p/71239d69a76f56cf1521717ae6b22c27cf876f10

  1. class MysqlDB:
  2. """
  3. 操作mysql数据库
  4. """
  5. def __init__(self, host, user, pwd, database=None, port=3306):
  6. self.conn = pymysql.connect(
  7. host=host,
  8. user=user,
  9. password=pwd,
  10. database=database,
  11. port=port,
  12. cursorclass=pymysql.cursors.DictCursor
  13. )
  14. # 创建一个游标对象
  15. self.cur = self.conn.cursor()
  1. def update(self, sql):
  2. """
  3. 进行增删改操作
  4. :param sql: 需要执行的SQL
  5. :return:
  6. """
  7. # 执行SQL
  8. result = self.cur.execute(sql)
  9. # 提交事务
  10. self.conn.commit()
  11. return result
'
运行
  1. def query(self, sql, one=False):
  2. """
  3. 进行查询操作
  4. """
  5. # 执行SQL
  6. self.cur.execute(sql)
  7. if one:
  8. return self.cur.fetchone()
  9. else:
  10. return self.cur.fetchall()
'
运行
  1. def close(self):
  2. """
  3. 断开游标,关闭数据库连接
  4. """
  5. self.cur.close()
  6. self.conn.close()
'
运行

图书管理系统核心代码:

菜单函数:

  1. def print_menu():
  2. """
  3. 菜单打印
  4. :return:
  5. """
  6. print("---------------------菜单-------------------------")
  7. print("[1]: 添加图书")
  8. print("[2]: 修改图书")
  9. print("[3]: 删除图书")
  10. print("[4]: 查询图书")
  11. print("[5]: 图书列表")
  12. print("[6]: 出借图书")
  13. print("[7]: 归还图书")
  14. print("[8]: 退出")
'
运行

添加图书函数:

  1. def add_book(self):
  2. """
  3. [1]: 添加图书
  4. :return:
  5. """
  6. print("****************添加图书****************")
  7. name = input("请输入书名:")
  8. position = input("请输入图书位置:")
  9. if name and position:
  10. db.update("insert into books(name, position) value ('{}', '{}');".format(name, position))
  11. print("图书添加成功")
  12. else:
  13. print("书名或者图书位置不能为空,请重新输入!")
  14. num = input("继续添加请输入1, 回车退回主菜单")
  15. if num == "1":
  16. self.add_book()
'
运行

修改图书信息函数:

  1. def update_book(self):
  2. """
  3. [2]: 修改图书
  4. :return:
  5. """
  6. print("****************修改图书****************")
  7. book_id = input("请输入需要修改的图书ID:")
  8. result = db.query("select * from books where id={};".format(book_id), one=True)
  9. if result:
  10. print("当前数据为:{}".format(result))
  11. name = input("重新输入书名,不修改输入回车:") or result["name"]
  12. position = input("重新输入位置,不修改输入回车:") or result["position"]
  13. db.update("update books set name='{}', position='{}' where id={};".format(name, position, book_id))
  14. print("修改成功")
  15. else:
  16. print("您输入的图书ID不存在,请重新输入~")
  17. num = input("继续修改请输入1, 回车退回主菜单")
  18. if num == "1":
  19. self.update_book()
'
运行

删除图书函数代码:

  1. def delete_book(self):
  2. """
  3. [3]: 删除图书
  4. :return:
  5. """
  6. print("****************删除图书****************")
  7. book_id = input("请输入需要修改的图书ID:")
  8. result = db.query("select * from books where id={};".format(book_id), one=True)
  9. if result:
  10. print("当前数据为:{}".format(result))
  11. confirm_num = input("确定需要删除这本书吗?确认请按1,取消请按2:")
  12. if confirm_num == "1":
  13. db.update("delete from books where id={};".format(book_id))
  14. print("删除成功")
  15. else:
  16. print("已确认不删除该书籍~")
  17. else:
  18. print("系统中未找到该书籍!")
  19. num = input("继续删除请输入1, 回车退回主菜单")
  20. if num == "1":
  21. self.delete_book()
'
运行

搜索图书代码:(该搜索的sql语句是模糊查询,可根据自己的需求更改!

  1. def query_book(self):
  2. """
  3. [4]: 查询图书
  4. :return:
  5. """
  6. print("****************查询图书****************")
  7. name = input("请输入您要查询的图书名称(模糊匹配):")
  8. if name:
  9. result = db.query("select * from books where name like '%{}%';".format(name))
  10. if result:
  11. print("当前查询到如下书籍信息:{}".format(result))
  12. else:
  13. print("未查询到相关书籍信息~")
  14. else:
  15. print("书名不能为空!")
  16. num = input("继续查询请输入1, 回车退回主菜单")
  17. if num == "1":
  18. self.query_book()
'
运行

查询所有图书:

  1. def book_list(self):
  2. """
  3. [5]: 图书列表
  4. :return:
  5. """
  6. print("****************图书列表****************")
  7. result = db.query("select * from books;")
  8. for i in result:
  9. print("编号:{}, 书籍名:{}, 位置:{}, 状态:{}, 借阅人:{}".format(i["id"], i["name"], i["position"], i["status"],
  10. i["borrower"]))
'
运行

借书人借阅图书:

  1. def borrow_book(self):
  2. """
  3. [6]: 出借图书
  4. :return:
  5. """
  6. print("****************出借图书****************")
  7. book_id = input("请输入需要借阅的图书ID:")
  8. result = db.query("select * from books where id={};".format(book_id), one=True)
  9. if result:
  10. if result["status"] == "出借":
  11. print("抱歉,该书已经借出!")
  12. else:
  13. while True:
  14. borrower = input("请输入借阅者的名字:")
  15. if borrower:
  16. db.update("update books set borrower='{}' where id={};".format(borrower, book_id))
  17. db.update("update books set status='出借' where id={};".format(book_id))
  18. print("图书借阅成功~")
  19. break
  20. else:
  21. print("借阅者的名字不能为空, 请重新输入")
  22. else:
  23. print("未查询到相关书籍信息~")
  24. num = input("继续借阅请输入1, 回车退回主菜单")
  25. if num == "1":
  26. self.borrow_book()
'
运行

归还图书函数代码:

  1. def back_book(self):
  2. """
  3. [7]: 归还图书
  4. :return:
  5. """
  6. print("****************归还图书****************")
  7. book_id = input("请输入需要归还的图书ID:")
  8. result = db.query("select * from books where id={};".format(book_id), one=True)
  9. if result:
  10. if result["status"] == "在库":
  11. print("该书是在库状态,请确认图书编号是否正确!")
  12. else:
  13. db.update("update books set status='在库' where id={};".format(book_id))
  14. db.update("update books set borrower='' where id={};".format(book_id))
  15. print("书籍归还成功~")
  16. else:
  17. print("未查询到相关书籍信息~")
  18. num = input("继续归还书籍请输入1, 回车退回主菜单")
  19. if num == "1":
  20. self.borrow_book()
'
运行

主函数:用于实现各功能的函数调用:

  1. def main(self):
  2. """
  3. 程序运行的流程控制
  4. :return:
  5. """
  6. print("---------------欢迎进入图书管理系统----------------")
  7. while True:
  8. self.print_menu()
  9. num = input("请输入选项:")
  10. if num == "1":
  11. self.add_book()
  12. elif num == "2":
  13. self.update_book()
  14. elif num == "3":
  15. self.delete_book()
  16. elif num == "4":
  17. self.query_book()
  18. elif num == "5":
  19. self.book_list()
  20. elif num == "6":
  21. self.borrow_book()
  22. elif num == "7":
  23. self.back_book()
  24. elif num == "8":
  25. self.quit()
  26. break
  27. else:
  28. print("您的输入有误~ 请按照菜单提示输入,谢谢!")
'
运行

运行各功能效果如下所示:

输入:1       ------>添加图书信息

此时,数据库的表中也实现成功添加图书:

 输入2实现修改图书:

 数据库同步实现修改:

输入功能3,删除图书时:

数据库的表中,该书也被删除:

查询图书:-------当添加《mysql原理》的图书在数据库中,并查询:

图书列表:相当于查询表内所有的数据

出借图书-------出借图书后,数据库的表中也随之更新出借人的信息:

 出借图书后,数据库的表中也随之更新出借人的信息:

归还图书----当归还图书后,数据库的表里,也随之取消了出借人的名字:

数据库内的借书人也随之取消:

 需要源码加主页的联系方式!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/859544
推荐阅读
相关标签
  

闽ICP备14008679号