新手写的图书管理系统(菜鸟Python)

该代码实现了一个简单的图书管理系统,包括用户登录、查询书籍、借书和还书功能。用户需输入用户名和密码登录,登录成功后可按编号选择操作,如查询特定书名或作者的书籍信息,借书或还书等。系统会更新书籍的库存状态。
摘要由CSDN通过智能技术生成
library = [{"bookname": "西游记", "author": "施耐庵", "price": 34, "stock": 5},
           {"bookname": "悲惨世界", "author": "雨果", "price": 44, "stock": 5},
           {"bookname": "巴黎圣母院", "author": "雨果", "price": 55, "stock": 5},
           {"bookname": "西游记", "author": "司汤达", "price": 50, "stock": 5},
           {"bookname": "战争与和平", "author": "托尔斯泰", "price": 66, "stock": 5},
           {"bookname": "童年", "author": "高尔基", "price": 40, "stock": 5},
           {"bookname": "呼啸山庄", "author": "勃朗特", "price": 54, "stock": 5},
           {"bookname": "飘", "author": "米切尔", "price": 88, "stock": 5},
           {"bookname": "荷马史诗", "author": "荷马", "price": 99, "stock": 5}]


def select_all_book():
    """
    查询所有书籍
    :return:
    """
    for dict_select_library in library:
        print(f"书籍名称:《{dict_select_library.get('bookname')}》".ljust(20) +
              f"作者:{dict_select_library.get('author')}".ljust(20) +
              f"价格:{dict_select_library.get('price')}".ljust(20) +
              f"库存:{dict_select_library.get('stock')}")


def login():
    """
    验证用户登入:
    失败三次则退出程序
    :return:
    """
    for i in range(3):
        user_name = input("用户名:")
        user_password = input("密码:")
        if user_name == 'admin' and user_password == '1234':
            print("登入成功")
            break
        elif i == 2:
            print("用户锁定")
            exit()
        else:
            print("请检查用户名密码")
            print(f"还剩余{3 - (i + 1)}机会")


def main_menu():
    """
    主菜单:
    用户展示页面
    :return:
    """
    global user_input
    print("=======================欢迎您进入======================")
    print("======================图书管理系统======================")
    print(f"借书管理\t\t\t\t[请按 1]")
    print(f"还书管理\t\t\t\t[请按 2]")
    print(f"查询书籍(书名/作者)\t[请按 3]")
    print(f"查看所有书籍\t\t\t[请按 4]")
    print(f"退出系统\t\t\t\t[请按 5]")
    user_input = int(input("请根据菜单进行选择:"))


def book_inquiry(library_select, user_select_one_book):
    """
    通过查询作者/书名展示
    :param library_select:
    :param user_select_one_book:
    :return:
    """
    list_value_all = []
    for dict_library_all in library_select:
        list_value01 = []
        for value01 in dict_library_all.values():
            list_value01.append(value01)
        for select_value in range(len(list_value01) - 1):
            if user_select_one_book == list_value01[select_value]:
                list_value_all.append(list_value01)
                print(f"书籍名称:《{list_value01[0]}》".center(10) + f"作者:{list_value01[1]}".center(
                    10) + f"价格:{list_value01[2]}".center(10) + f"库存:{list_value01[3]}")
    return list_value_all


def main():
    """
    程序主方法
    :return:
    """
    login()
    while True:
        main_menu()
        if user_input == 1:
            user_select = input("请输入借书书名:")
            # 查询书籍
            book_inquiry_list = book_inquiry(library, user_select)
            if len(book_inquiry_list) == 1:
                for be in library:
                    if be['bookname'] == user_select:
                        be['stock'] -= 1
                        select_all_book()
                        print("借阅成功")
            else:
                flag = True
                while flag:
                    user_admin = input("选择对应作者名字")
                    for be in library:
                        if be['bookname'] == user_select and be['author'] == user_admin:

                            k = int(input("请输入借阅书籍的数量"))
                            if k >= 1:
                                if (be['stock'] - k) >= 0:
                                    be['stock'] -= k
                                    print("借阅成功")
                                    select_all_book()
                                    flag = False
                                else:
                                    print("超出数量")
                            else:
                                print("数量有误")


        elif user_input == 2:
            user_select = input("请输还书书名:")
            book_inquiry_list = book_inquiry(library, user_select)
            if len(book_inquiry_list) == 1:
                for be in library:
                    if be['bookname'] == user_select:
                        be['stock'] += 1
                        select_all_book()
                        print("借阅成功")
            else:
                flag = True
                while flag:
                    user_admin = input("选择对应作者名字")
                    for be in library:
                        if be['bookname'] == user_select and be['author'] == user_admin:
                            k = int(input("请输入归还书籍的数量"))
                            if k >= 1:  # 判断库存剩余
                                be['stock'] += k
                                print("借阅成功")
                                select_all_book()
                                flag = False
                            else:
                                print("输入有误")

        elif user_input == 3:
            user_select = input("请输入查询书名:")
            book_inquiry(library, user_select)

        elif user_input == 4:
            select_all_book()
        elif user_input == 5:
            print("感谢您的使用,欢迎下次光临!")
            break
        else:
            print("您的输入有误请重新输入")


main()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值