






# 题目描述
# 设计一个简单的图书借阅管理系统。系统初始包含若干本图书,每本图书的信息包括:
# 书号(字符串)
# 书名(字符串)
# 作者(字符串)
# 库存数量(整数)
# 另外,系统需记录借阅记录(列表,存储每笔借阅的字典)。程序通过菜单实现以下功能:
# 查看所有图书:以表格形式显示所有图书的书号、书名、作者、库存。
# 借书:输入书号和借阅数量,如果库存足够则减少库存,并添加一条借阅记录
# (包含书号、书名、借阅数量、借阅日期(可简化为当天日期字符串))。如果库存不足,提示失败。
# 还书:输入书号和归还数量,增加对应图书的库存,并从借阅记录中删除相应的借阅
# (按先进先出原则,或简单按书号匹配)。若归还数量大于该书的借出总量,则提示错误。
# 查询某本书的借阅情况:输入书号,显示该书当前被借出的总数量和所有借阅记录的详情(借阅数量、借阅日期)。
# 退出系统:结束程序。
# 要求:
# 数据初始化:至少预置 3 本图书和若干条借阅记录(可手动在代码中定义)。
# 菜单循环,用户输入 1~5 选择功能。
# 对用户输入做简单的有效性检查(如书号不存在、数量非法等)。
# 参考代码
# python
# 初始化图书库存
import datetime
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:退出
=======================
"""
while True:
choose=input("请输入数字1-5")
if choose=="1":
print(str1)
for book_id in books:
book=books[book_id]
print(f"{book_id}{book['name']}{book['author']}{book['stock']}")
elif choose == "2":
print("借书")
books_id = input("请输入书号")
if books_id in books:
stock = int(input("请输入借阅数量"))
if stock > 0:
book = books[books_id]
if stock > book["stock"]:
print("当前库存不足,借书失败")
else:
book["stock"] -= stock
day = datetime.date.today()
borrow_records.append({
"book_id": books_id,
"book_name": book["name"],
"quantity": stock,
"date": day
})
print(f"借书成功:{book["name"]},借出{stock}本")
else:
print("请输入正确的数量")
continue
else:
print("该书不存在")
elif choose == "3":
print("还书")
books_id = input("请输入书号")
is_cunzai = False
for i in borrow_records:
if i["book_id"] == books_id:
is_cunzai = True
break
else:
print("该书未被借阅")
if is_cunzai:
stock = int(input("请输入数量"))
if stock > 0:
for i in borrow_records:
if i["book_id"] == books_id and i["quantity"] == stock:
books[books_id]["stock"] += stock
index = 0
for k in borrow_records:
if k["book_id"] == i["book_id"] and k["quantity"] == i["quantity"]:
borrow_records.pop(index)
index += 1
break
print(f"{k["book_name"]}归还成功")
else:
print("请输入正确的数量")
elif choose == "4":
print("查询借阅情况")
books_id = input("请输入书号")
is_cunzai = False
for i in borrow_records:
if i["book_id"] == books_id:
is_cunzai = True
break
else:
print("该书未被借阅")
if is_cunzai:
sum = 0
for i in borrow_records:
if i["book_id"] == books_id:
print(i["book_name"], i["quantity"], i["date"])
sum += i["quantity"]
print(f"借出总数为{sum}")
elif choose=="5":
print("退出成功")
break
else:
print("输入错误,请输入1-5之间的数字!")