当前位置:   article > 正文

Python 基于hash表的简单图书管理系统_python设计一个简单的图书管理系统

python设计一个简单的图书管理系统

import redis

# 定义 Redis 中保存图书信息的哈希键名
BOOKS_HASH_KEY = "books"

# 创建 Redis 连接
redis_rs = redis.Redis(host='127.0.0.1', port=6379)#

#一级菜单

  1. def zhucaidan():
  2.     print("-------------------------图 书 管 理 系 统-------------------------")
  3.     while True:
  4.         print("请输入您的选择:")
  5.         print("1、登录")
  6.         print("2、注册")
  7.         print("3、退出")
  8.         option = input("请输入您要执行的操作:\n")
  9.         if option == "1":
  10.             login()
  11.         elif option == "2":
  12.             register()
  13.         elif option == "3":
  14.             print("已弹出程序!!!")
  15.             break
  16.         else:
  17.             print("无效选项,请重新输入!\n")
  18. # 登录模块
  19. def login():
  20.     print("------------------------登录模块------------------------")
  21.     username = input("请输入用户名:")
  22.     password = input("请输入密码:")
  23.     # 从 Redis 中获取保存的用户密码
  24.     sPassword = redis_rs.hget("users", username)
  25.     if sPassword is None:
  26.         print("用户不存在,请先注册!")
  27.         return
  28.     elif password != sPassword.decode():
  29.         print("密码不正确,请重新输入!")
  30.         return
  31.     print("登录成功,欢迎尊贵的超级VIP " + username + " 用户!")
  32.     ER_caidan()

# 注册模块

  1. def register():
  2.     print("-----注册------")
  3.     username = input("请输入用户名:")
  4.     password = input("请输入密码:")
  5.     # 使用 Redis 的哈希集合功能存储用户和密码
  6.     result = redis_rs.hsetnx("users", username, password)
  7.     if result == 0:
  8.         print("用户名已经存在,请重新输入!")
  9.     else:
  10.         print("注册成功!")

# 二级菜单

  1. def ER_caidan():
  2.     while True:
  3.         print()
  4.         print("--------------------二级菜单--------------------")
  5.         print("1. 添加图书")
  6.         print("2. 删除图书")
  7.         print("3. 修改图书信息")
  8.         print("4. 显示所有图书")
  9.         print("5. 借书")
  10.         print("6. 还书")
  11.         print("7. 返回上级")
  12.         print("8. 删库跑路!!!")
  13.         print("9. 退出")
  14.         erji = input("请输入您的要执行的操作:\n")
  15.         if erji == "1":
  16.             TJ_TS()
  17.         elif erji == "2":
  18.             SC_TC()
  19.         elif erji == "3":
  20.             XG_TS_XX()
  21.         elif erji == "4":
  22.             XS_TS_XX()
  23.         elif erji == "5":
  24.             JS_XT()
  25.         elif erji == "6":
  26.             HS_XT()
  27.         elif erji == "7":
  28.             print("已返回上级菜单")
  29.             continue
  30.         elif erji == "8":
  31.             print("你已执行销毁数据数据库!")
  32.             redis_rs.flushall()
  33.             break
  34.         elif erji == "9":
  35.             print("已退出程序!!!!")
  36.             return
  37.         else:
  38.             print("无效选项,请重新输入!\n")

# 添加图书

  1. def TJ_TS():
  2.     print("添加图书")
  3.     ts_id = input("请输入图书ID:")
  4.     title = input("请输入图书标题:")
  5.     author = input("请输入图书作者:")
  6.     existingBook = redis_rs.hget(BOOKS_HASH_KEY, ts_id)
  7.     if existingBook is not None:
  8.         print("该图书已经存在,请勿重复添加!")
  9.         return
  10.     redis_rs.hset(BOOKS_HASH_KEY, ts_id, title + "|" + author + "|可借阅")
  11.     print("图书添加成功!")

# 删除图书

  1. def SC_TC():
  2.     print("删除图书")
  3.     ts_id = input("请输入要删除的图书ID:")
  4.     result = redis_rs.hdel(BOOKS_HASH_KEY, ts_id)
  5.     if result == 0:
  6.         print("该图书不存在,请重新输入!")
  7.     else:
  8.         print("图书删除成功!")

# 修改图书信息

  1. def XG_TS_XX():
  2.     print("修改图书信息")
  3.     ts_id = input("请输入要修改的图书信息的图书ID:")
  4.     existingBook = redis_rs.hget(BOOKS_HASH_KEY, ts_id)
  5.     if existingBook is None:
  6.         print("该图书并不存在,请重新输入!!!!")
  7.         return
  8.     print("请输入更新后的标题(空值代表不用修改!!!)")
  9.     newTitle = input()
  10.     print("请输入更新后的作者(空值代表不用修改!!!)")
  11.     newAuthor = input()
  12.     print("请输入更新后图书的可用状态(可借阅、已借出。空值代表不用修改!!!)")
  13.     newStat = input()
  14.     bookInfo = existingBook.decode().split("|")
  15.     title = bookInfo[0]
  16.     author = bookInfo[1]
  17.     stat = bookInfo[2]
  18.     if newTitle != "":
  19.         title = newTitle
  20.     if newAuthor != "":
  21.         author = newAuthor
  22.     if newStat != "":
  23.         stat = newStat
  24.     redis_rs.hset(BOOKS_HASH_KEY, ts_id, title + "|" + author + "|" + stat)
  25.     print("图书信息修改成功!")

# 显示图书信息

  1. def XS_TS_XX():
  2.     print("显示图书信息")
  3.     books = redis_rs.hgetall(BOOKS_HASH_KEY)
  4.     if not books:
  5.         print("暂无图书信息")
  6.         return
  7.     for ts_id, book_info in books.items():
  8.         book_info = book_info.decode()
  9.         title, author, stat = book_info.split("|")
  10.         print("图书ID: " + ts_id.decode() + ", 标题: " + title + ", 作者: " + author + ", 可用状态: " + stat)

# 借书

  1. def JS_XT():
  2.     print("借书")
  3.     ts_id = input("请输入要借阅的图书ID:")
  4.     book_info = redis_rs.hget(BOOKS_HASH_KEY, ts_id)
  5.     if book_info is None:
  6.         print("该图书不存在,请重新输入!")
  7.         return
  8.     book_info = book_info.decode()
  9.     title, author, stat = book_info.split("|")
  10.     if stat == "可借阅":
  11.         redis_rs.hset(BOOKS_HASH_KEY, ts_id, title + "|" + author + "|已借出")
  12.         print("借书成功!")
  13.     else:
  14.         print("很抱歉,该图书已被借出!")

# 还书

  1. def HS_XT():
  2.     print("还书")
  3.     ts_id = input("请输入要归还的图书ID:")
  4.     book_info = redis_rs.hget(BOOKS_HASH_KEY, ts_id)
  5.     if book_info is None:
  6.         print("该图书不存在,请重新输入!")
  7.         return
  8.     book_info = book_info.decode()
  9.     title, author, stat = book_info.split("|")
  10.     if stat == "已借出":
  11.         redis_rs.hset(BOOKS_HASH_KEY, ts_id, title + "|" + author + "|可借阅")
  12.         print("还书成功!")
  13.     else:
  14.         print("该图书已入库不需要归还!")

if __name__ == '__main__':
    zhucaidan()

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

闽ICP备14008679号