当前位置: 首页 > news >正文

图书借阅系统

''' 设计一个简单的图书借阅管理系统。系统初始包含若干本图书,每本图书的信息包括: 书号(字符串) 书名(字符串) 作者(字符串) 库存数量(整数) 另外,系统需记录借阅记录(列表,存储每笔借阅的字典)。程序通过菜单实现以下功能: 查看所有图书:以表格形式显示所有图书的书号、书名、作者、库存。 借书:输入书号和借阅数量,如果库存足够则减少库存,并添加一条借阅记录 (包含书号、书名、借阅数量、借阅日期(可简化为当天日期字符串))。如果库存不足,提示失败。 还书:输入书号和归还数量,增加对应图书的库存,并从借阅记录中删除相应的借阅 (按先进先出原则,或简单按书号匹配)。若归还数量大于该书的借出总量,则提示错误。 查询某本书的借阅情况:输入书号,显示该书当前被借出的总数量和所有借阅记录的详情(借阅数量、借阅日期)。 退出系统:结束程序。 要求: 数据初始化:至少预置 3 本图书和若干条借阅记录(可手动在代码中定义)。 菜单循环,用户输入 1~5 选择功能。 对用户输入做简单的有效性检查(如书号不存在、数量非法等)。 参考代码 python # 初始化图书库存 books = { "B001": {"name": "Python编程", "author": "张三", "stock": 5}, "B002": {"name": "数据结构", "author": "李四", "stock": 3}, "B003": {"name": "算法导论", "author": "王五", "stock": 0} }//字典 # 初始化借阅记录 borrow_records = [ {"book_id": "B001", "book_name": "Python编程", "quantity": 1, "date": "2026-03-25"}, {"book_id": "B002", "book_name": "数据结构", "quantity": 2, "date": "2026-03-26"} ]//元组 ''' str1=""" --- 图书借阅管理系统 --- 1. 查看所有图书 2. 借书(输入书号和借阅数量) 3. 还书(输入书号和归还数量) 4. 按书号查看书籍借阅情况 5. 退出系统 请选择(1-5): """ books = { "B001": {"name": "Python编程", "author": "张三", "stock": 5}, "B002": {"name": "数据结构", "author": "李四", "stock": 3}, "B003": {"name": "算法导论", "author": "王五", "stock": 0} } borrow_records = [ {"book_id": "B001", "book_name": "Python编程", "quantity": 1, "date": "2026-03-25"}, {"book_id": "B002", "book_name": "数据结构", "quantity": 2, "date": "2026-03-26"} ] while True: print(str1) choose = input("请输入选择的功能 :") if choose=="1": print("查看所有图书功能已开启!") for key,value in books.items(): print(f"书号:{key},姓名:{value["name"]},作者:{value["author"]},数量:{value["stock"]}") elif choose=="2": # 借书:输入书号和借阅数量,如果库存足够则减少库存,并添加一条借阅记录 # (包含书号、书名、借阅数量、借阅日期(可简化为当天日期字符串))。如果库存不足,提示失败。 print("借阅书籍功能开启!") book_id = input("请输入书号:") if book_id in books: book_stock = int(input("请输入借阅数量:")) if book_stock<=books[book_id]["stock"]: books[book_id]["stock"]-=book_stock print(f"书号为{book_id}的书籍借阅成功,借阅记录:") list1={ "book_id":book_id, "book_name":books[book_id]["name"], "quantity":book_stock, "date":"2026-03-26", } borrow_records.append(list1) print(borrow_records) else: print(f"书号为{book_id}的书籍库存不够,借阅失败!") else: print(f"书号为{book_id}的书籍不存在,借阅失败!") elif choose=="3": # 还书:输入书号和归还数量,增加对应图书的库存,并从借阅记录中删除相应的借阅 # (按先进先出原则,或简单按书号匹配)。若归还数量大于该书的借出总量,则提示错误。 print("归还书籍功能开启!") book_id = input("请输入书号:") if book_id in books: book_stock = int(input("请输入归还数量:")) # 判断是否在记录里面 where_cunzai=None for i in borrow_records[:]: if i["book_id"]==book_id: where_cunzai = i break if where_cunzai and book_stock<=where_cunzai["quantity"]: books[book_id]["stock"]+=book_stock print(f"书号为{book_id}的书籍归还成功,借阅记录:") where_cunzai["quantity"]-=book_stock if where_cunzai["quantity"]==0: borrow_records.remove(where_cunzai); print(borrow_records) else: print(f"书号为{book_id}的书籍数量不对,归还失败!") else: print(f"书号为{book_id}的书籍不存在,归还失败!") elif choose=="4": # 输入书号,显示该书当前被借出的总数量和所有借阅记录的详情(借阅数量、借阅日期)。 print("按书号查看书籍借阅情况功能已开启!") book_id=input("请输入要查找书籍的书号:") is_cunzai=False total_q=0 for i in borrow_records: if i["book_id"]==book_id: print(f"借阅数量:{i["quantity"]},借阅日期:{i["date"]}") total_q+=i["quantity"] is_cunzai=True if is_cunzai==False: print(f"{book_id}书籍不存在!") elif choose=="5": print("退出系统功能已开启!") print("程序结束") break

http://www.jsqmd.com/news/608791/

相关文章:

  • 使用 C# 删除 PDF 中的数字签名咐
  • 06OpenCVSharp角点检测与检测平整度
  • 2026年4月国内汽车后视镜热弯模具直销厂家,铝行业精炼用热鼎盘/硅酸钙保温管,汽车后视镜热弯模具直销厂家推荐分析 - 品牌推荐师
  • Nginx本地缓存
  • 扫雷游戏(优化)
  • 避坑指南:ESP32C3开发板音频系统常见问题排查(I2S+ES8311实战)
  • AI新手必读:从零开始,彻底搞懂AIGC与大模型(收藏版)
  • 别再死记硬背SAC公式了!用CleanRL代码逐行拆解,手把手教你理解熵正则化与重参数化
  • 抖音无水印下载神器:三分钟掌握批量下载技巧
  • 项目实训——大数据租房推荐智能体(爬虫部分1)
  • 20251906 2025-2026-2 《网络攻防实践》第三周作业
  • 第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组个人题解
  • 【Linux复习】:进程信号
  • Qwen2-VL-2B多模态向量模型教程:图文嵌入向量用于多标签图像分类迁移学习
  • RFID智能柜-RFID智能柜厂家推荐 - 聚澜智能
  • Dell R720服务器安装Ubuntu避坑指南:从BIOS设置到分区优化全流程
  • Nginx本地缓存API
  • 程序控制结构
  • Altium AD20差分对走线实战:如何用交互式布线快速搞定高速信号线
  • ABAQUS用户子程序进阶指南——UMAT参数详解与实战配置
  • 通俗秒懂:储能控制器在电网调频中的关键作用与实现原理
  • 软件需求工程教案
  • Golang如何设置HTTP路由_Golang HTTP路由教程【实用】
  • 一张图看懂巴菲特 48 年投资帝国:知识图谱效果全展示
  • 别再手动配环境了!用ModelScope官方镜像5分钟搞定AI模型运行环境(附最新CPU/GPU镜像地址)
  • 【转载】ROS 中 CMakeLists.txt 文件使用的讲解与总结
  • Workstation 避坑指南:网络总连不上?深度解析常见网络配置故障与底层排错逻辑
  • 【计算机网络八股】【欧弟求职】TCP相关
  • 一台服务器跑4个独立站,我是怎么做到的?
  • 魔兽争霸III终极优化指南:免费解决老游戏在现代电脑的兼容性问题