题目描述
设计一个简单的图书借阅管理系统。系统初始包含若干本图书,每本图书的信息包括:
书号(字符串)
书名(字符串)
作者(字符串)
库存数量(整数)
另外,系统需记录借阅记录(列表,存储每笔借阅的字典)。程序通过菜单实现以下功能:
查看所有图书:以表格形式显示所有图书的书号、书名、作者、库存。
借书:输入书号和借阅数量,如果库存足够则减少库存,并添加一条借阅记录(包含书号、书名、借阅数量、借阅日期(可简化为当天日期字符串))。如果库存不足,提示失败。
还书:输入书号和归还数量,增加对应图书的库存,并从借阅记录中删除相应的借阅(按先进先出原则,或简单按书号匹配)。若归还数量大于该书的借出总量,则提示错误。
查询某本书的借阅情况:输入书号,显示该书当前被借出的总数量和所有借阅记录的详情(借阅数量、借阅日期)。
退出系统:结束程序。
要求:
数据初始化:至少预置 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"}
]
from datetime import date
str2 = """
1.查看所有图书
2.借书
3.还书
4.查询某本书的借阅情况
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(str2)
choose = input("输入(1~5)选择功能:")
if choose == "1":
print(f"{'书号':<10}{'书名':<12}{'作者':<10}{'库存':<6}")
print("="*40)
for key,value in books.items():
print(f"{key:<10}{value['name']:<12}{value['author']:<10}{value['stock']:<6}")
elif choose == "2":
book_id = input("请输入书号:")
if book_id in books:
num = int(input("请输入借阅数量:"))
if 0 < num <= books[book_id]["stock"]:
books[book_id]["stock"] -= num
today = date.today()
books_records = {
"book_id" : book_id ,
"book_name" : books[book_id]["name"],
"quantity" : num ,
"date" : today
}
borrow_records.append(books_records)
else:
print("库存不足,借阅失败!!")
elif choose == "3":
book_id = input("请输入书号:")
if book_id in books:
num = int(input("请输入归还数量:"))
num2 = 0
records = None
for i in borrow_records:
if book_id in i:
num2 = i["quantity"]
records = i
break
if num > num2 or num < 0:
print("错误")
else:
books[book_id]["stock"] += num
if records:
records["quantity"] -= num
if records["quantity"] == 0:
borrow_records.remove(records)
print("归还成功")
elif choose == "4":
book_id = input("请输入书号:")
is_true = True
for i in borrow_records:
if book_id in i:
print(f"{i['book_name']}的借阅情况:借阅时间{i['date']}借阅数量{i['quantity']}")
is_true = False
break
if is_true:
print("该书没有被借阅")
elif choose == "5":
print("退出成功!!")
break