# 题目描述

# 设计一个简单的图书借阅管理系统。系统初始包含若干本图书,每本图书的信息包括:

# 书号(字符串)

# 书名(字符串)

# 作者(字符串)

# 库存数量(整数)

# 另外,系统需记录借阅记录(列表,存储每笔借阅的字典)。程序通过菜单实现以下功能:

# 查看所有图书:以表格形式显示所有图书的书号、书名、作者、库存。

# 借书:输入书号和借阅数量,如果库存足够则减少库存,并添加一条借阅记录(包含书号、书名、借阅数量、借阅日期(可简化为当天日期字符串))。如果库存不足,提示失败。

# 还书:输入书号和归还数量,增加对应图书的库存,并从借阅记录中删除相应的借阅(按先进先出原则,或简单按书号匹配)。若归还数量大于该书的借出总量,则提示错误。

# 查询某本书的借阅情况:输入书号,显示该书当前被借出的总数量和所有借阅记录的详情(借阅数量、借阅日期)。

# 退出系统:结束程序。

# 要求:

# 数据初始化:至少预置 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!")

更多推荐