Python图书借阅管理系统实战
# 题目描述
# 设计一个简单的图书借阅管理系统。系统初始包含若干本图书,每本图书的信息包括:
# 书号(字符串)
# 书名(字符串)
# 作者(字符串)
# 库存数量(整数)
# 另外,系统需记录借阅记录(列表,存储每笔借阅的字典)。程序通过菜单实现以下功能:
# 查看所有图书:以表格形式显示所有图书的书号、书名、作者、库存。
# 借书:输入书号和借阅数量,如果库存足够则减少库存,并添加一条借阅记录(包含书号、书名、借阅数量、借阅日期(可简化为当天日期字符串))。如果库存不足,提示失败。
# 还书:输入书号和归还数量,增加对应图书的库存,并从借阅记录中删除相应的借阅(按先进先出原则,或简单按书号匹配)。若归还数量大于该书的借出总量,则提示错误。
# 查询某本书的借阅情况:输入书号,显示该书当前被借出的总数量和所有借阅记录的详情(借阅数量、借阅日期)。
# 退出系统:结束程序。
# 要求:
# 数据初始化:至少预置 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"}
# ]
today = "2026-04-03"
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}
}
while True:
print(str1)
choose = input("请输入你要选择的功能:")
# 查看所有图书:以表格形式显示所有图书的书号、书名、作者、库存。
if choose == "1":
print(f"书号:书名:作者:库存:")
for id,info in books.items():
print(f"{id}{info["name"]}{info["author"]}{info["stock"]}")
# 借书:输入书号和借阅数量,如果库存足够则减少库存,
# 并添加一条借阅记录(包含书号、书名、借阅数量、借阅日期
# (可简化为当天日期字符串))。如果库存不足,提示失败。
elif choose == "2":
id = input("请输入书号:")
if id not in books:
print("该图书不存在!")
continue
num = int(input("请输入借阅数量:"))
if num < 0:
print("请输入正确数量!")
else :
if books[id]["stock"] < num:
print(f"库存不足,当前库存为{books[id]["stock"]}")
continue
books[id]["stock"] -= num
jieshu = {
"book_id":id,
"book_name": books[id]["name"],
"quantity": num,
"date": today
}
jieshu.append(jieshu)
print("借书成功!")
print(f"《{books[id]['name']}》库存剩余:{books[id]['stock']}")
# 还书:输入书号和归还数量,增加对应图书的库存,
# 并从借阅记录中删除相应的借阅(按先进先出原则,或简单按书号匹配)。
# 若归还数量大于该书的借出总量,则提示错误。
elif choose == "3":
id = input("请输入书号:")
if id not in books:
print("图书不存在")
continue
total = 0
for r in jieshu:
if r["book_id"] == id:
total += r["quantity"]
if total == 0:
print("没有借阅记录")
continue
num = int(input("请输入归还数量:"))
if num <= 0:
print("数量没有大于1")
continue
if num > total:
print(f"归还数量不能超过借出总量{total}")
continue
need = num
i=0
while i<len(jieshu) and need >0:
r = jieshu[i]
if r["book_id"] == id:
if r["quantity"] <= need:
need -= r["quantity"]
del jieshu[i]
else:
r["quantity"] -= need
need = 0
else:
i += 1
books[id]["stock"] += num
print(f"还书成功!《{books[id]['name']}》当前库存:{books[id]['stock']}")
# 查询某本书的借阅情况:输入书号,
# 显示该书当前被借出的总数量和所有借阅记录的详情
# (借阅数量、借阅日期)。
elif choose == "4":
id = input("请输入书号:")
if id not in books:
print("图书不存在")
continue
records = []
for r in jieshu :
if r["book_id"] == id:
records.append(r)
if not records:
print(f"《{books[id]['name']}》没有借阅记录")
continue
total = 0
for r in records:
total += r["quantity"]
print(f"\n《{books[id]['name']}》 累计借出:{total} 本")
print(f"{'借阅日期'}{'借阅数量'}")
for r in records:
print(f"{r['date']}{r['quantity']}")
# 退出系统:结束程序。
elif choose == "5":
print("程序已退出!")
break
else:
print("输入错误,请输入 1-5!")
更多推荐

所有评论(0)