class06_demo

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

书号(字符串)

书名(字符串)

作者(字符串)

库存数量(整数)

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

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

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

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

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

退出系统:结束程序。

要求:

数据初始化:至少预置 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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 之前做查询一直觉得直接拼 SQL 比较方便,用了 SQLAlchemy 的 ORM 查询之后,发现也还可以,还提高...
    喜叔z阅读 803评论 0 0
  • 本文发表于2016年6月,写于作者学生时期。文中使用到的技术和框架可能不是当下最佳实践,甚至很不“优雅”。但对于刚...
    小白白程序猿阅读 225评论 0 0
  • 一、引言:小明的图书馆新挑战 1.1 故事开篇:并发借阅的混乱 小明的"码农图书馆"越办越红火,读者越来越多。但新...
    登录成功阅读 31评论 0 1
  • 一、先创建一个库并建立数据以便查询。 二、查询练习题。-- 1) 找出姓李的读者姓名(NAME)和所在单位(COM...
    onenotebookes阅读 674评论 0 0
  • from flask import Flask, render_template, request, flash,...
    菜田的守望者w阅读 283评论 0 0

友情链接更多精彩内容