pyhon---图书馆借阅系统
题目描述
设计一个简单的图书借阅管理系统。系统初始包含若干本图书,每本图书的信息包括:
书号(字符串)
书名(字符串)
作者(字符串)
库存数量(整数)
另外,系统需记录借阅记录(列表,存储每笔借阅的字典)。程序通过菜单实现以下功能:
查看所有图书:以表格形式显示所有图书的书号、书名、作者、库存。
借书:输入书号和借阅数量,如果库存足够则减少库存,并添加一条借阅记录(包含书号、书名、借阅数量、借阅日期(可简化为当天日期字符串))。如果库存不足,提示失败。
还书:输入书号和归还数量,增加对应图书的库存,并从借阅记录中删除相应的借阅(按先进先出原则,或简单按书号匹配)。若归还数量大于该书的借出总量,则提示错误。
查询某本书的借阅情况:输入书号,显示该书当前被借出的总数量和所有借阅记录的详情(借阅数量、借阅日期)。
退出系统:结束程序。
要求:
数据初始化:至少预置 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"}
]
代码展示:
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(
'''=====图书借阅系统=====
1 查看所有图书
2 借书
3 还书
4 查询借阅情况
5 退出
''')
c = int(input("请选择:"))
# 1 查看图书
if c == 1:
for i in books:
print(i, books[i]["name"], books[i]["author"], books[i]["stock"], sep="\t")
# 2 借书
elif c == 2:
bid = input("书号:")
if bid not in books:
print("书号不存在")
continue
n = int(input("数量:"))
if n <= 0:
print("数量必须大于0")
elif books[bid]["stock"] < n:
print("库存不足")
else:
books[bid]["stock"] -= n
borrow_records.append({
"book_id": bid,
"book_name": books[bid]["name"],
"quantity": n,
"date": "2026-04-07"
})
print("借书成功")
# 3 还书
elif c == 3:
bid = input("书号:")
if bid not in books:
print("书号不存在")
continue
total = sum(r["quantity"] for r in borrow_records if r["book_id"] == bid)
try:
n = int(input("归还数量:"))
except:
print("输入错误")
continue
if n <= 0 or n > total:
print("数量错误或超过借出总数")
else:
books[bid]["stock"] += n
temp = []
for r in borrow_records:
if r["book_id"] == bid and n > 0:
if r["quantity"] <= n:
n -= r["quantity"]
else:
r["quantity"] -= n
n = 0
temp.append(r)
else:
temp.append(r)
borrow_records = temp
print("还书成功")
# 4 查询借阅
elif c == 4:
bid = input("书号:")
if bid not in books:
print("书号不存在")
continue
rs = [r for r in borrow_records if r["book_id"] == bid]
total = sum(r["quantity"] for r in rs)
print("总借出:", total)
for r in rs:
print(r["quantity"], "本", r["date"])
# 5 退出
elif c == 5:
print("退出成功")
break
else:
print("输入无效")
