当前位置: 首页 > 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"}

]

import datetime

def get_today_date():

return datetime.date.today().strftime("%Y-%m-%d")

while True:

print("图书管理借阅系统")

print("1.查看所有图书")

print("2.借书")

print("3.还书")

print("4.查询某本书的借阅情况")

print("5.退出系统")

choice=input("输入1-5选择功能:")

if choice=="1":

for num,n in books.items():

print(f"书号:{num},书名:{n['name']},作者:{n['author']},库存:{n['stock']}本")

elif choice=="2":

uid=input("请输入借阅书号:")

if uid in books:

unum=int(input("请输入借阅数量:"))

if unum<=books[uid]['stock']:

books[uid]['stock']-=unum

borrow_records.append({

"book_id":uid,

"book_name":books[uid]["name"],

"quantity":unum,

"date":get_today_date()

})

print("借书成功!")

else:

print("库存不足!借阅失败")

else:

print("书号不存在!请重新输入!")

continue

elif choice=="3":

book_id=input("请输入归还书号:")

if book_id not in books:

print("书号不存在!请重新输入!")

continue

else:

uquantity=int(input("请输入归还数量:"))

if uquantity<=0:

print("借阅数量应大于0!")

continue

total=0

for r in borrow_records:

if r["book_id"]==book_id:

total+=r["quantity"]

if uquantity>total:

print("还书数量不能大于借书数量")

else:

books[book_id]['stock']+=uquantity

remain=uquantity

new_records=[]

for r in borrow_records:

if r["book_id"]==book_id and remain>0:

if r["quantity"]<=remain:

remain-=r["quantity"]

else:

r["quantity"]-=remain

remain=0

new_records.append(r)

else:

new_records.append(r)

borrow_records=new_records

print("还书成功!")

elif choice=="4":

uid=input("输入要查询的书号:")

total_borrow=0

for r in borrow_records:

if r["book_id"]==uid:

print(f"日期:{r['date']},数量:{r['quantity']}")

total_borrow+=r["quantity"]

print(f"总借出:{total_borrow}")

elif choice=="5":

print("系统退出!")

break

else:

print("输入错误!")



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

相关文章:

  • LLM Security Engineer:2026 北美薪资天花板的“隐藏入口”
  • 3个模块+1个快速通道:彻底解决macOS上Fiji启动失败的终极指南
  • 开发环境救星:用gemma-3-12b-it为OpenClaw打造智能调试助手
  • Simula Arduino库:面向机器人开发的行为树嵌入式框架
  • 忍者像素绘卷入门必看:理解‘圣洁像素美学’设计语言与用户体验关系
  • 告别审稿追踪焦虑:Elsevier Tracker如何帮我每月节省6小时学术管理时间
  • 破解软件供应链管理困局:企业级制品管理体系建设实践指南
  • PETRv2-BEV企业级部署指南:SpringBoot微服务集成
  • AIGlasses_for_navigation与MySQL数据库交互:导航日志存储与查询分析
  • C语言结构体详解:复杂数据处理必备,零基础也能看懂
  • FaceFusion小白教程:零基础学会换脸,支持卡通脸一键替换
  • Oracle OCP 19c(1Z0-082 + 1Z0-083)最全面、考试必背、生产必用命令大全
  • PC-DMIS报告模板的深度解析与实战定制指南
  • 从B站视频到毕业设计:三相四桥臂的三种主流控制方案到底怎么选?(MPC/3D-SVPWM/载波调制深度对比)
  • 超轻量模型安全加固:DeepSeek-R1-Distill-Qwen-1.5B输入过滤与越狱防护实践
  • Aravis相机管理库安装避坑指南:从meson升级到GStreamer配置全流程
  • 杰理之A2DP 开关【篇】
  • 北京墨想空间艺术装饰有限公司联系方式查询:高端墙面地面艺术饰面系统服务商的选择参考与使用指南 - 品牌推荐
  • BetterGI原神自动化工具:新手快速上手指南
  • 原神帧率解锁指南:3步突破60FPS限制,释放硬件全部性能!
  • 零代码!SpringBoot+微信测试号实现扫码登录完整指南(避坑版)
  • Lenovo Legion Toolkit:拯救者笔记本性能优化终极指南
  • 小白友好教程:OpenClaw镜像预装Qwen3-14B的浏览器自动化
  • 别再死记硬背了!用Wireshark抓包实战,5分钟搞懂ICMP协议(附Ping/Traceroute分析)
  • 龙虾-OpenClaw一文详细了解-手搓OpenClaw-1
  • 从SSR到DeltaK:群体结构分析的完整流程与可视化实践
  • MTools AI智能工具实测:50页PDF快速摘要,附带原文引用
  • 北京墨想空间艺术装饰有限公司联系方式查询:高端墙面地面艺术饰面系统服务商的合作渠道与选用参考 - 品牌推荐
  • 如何突破信息壁垒?Bypass Paywalls Clean的全方位应用指南
  • Llama-3.2-3B保姆级教程:Ollama一键部署,小白也能玩转文本生成