Python分分钟实现图书管理系统(含代码)

简介: Python分分钟实现图书管理系统(含代码)

Python分分钟实现图书管理系统(含代码)


废话不多说,直接上代码。

import sys
# 打印书库中的所有书的函数
def book_detail(books):
    for book_name, book_info in books.items():
        if book_info is not None:
            print('bookName:{}  ISBN:{}  title:{}  author:{}  number:{}  borrowNumber:{}'
                  .format(book_name, book_info['ISBN'], book_info['title'], book_info['author'], book_info['number'],
                          book_info['borrow_num']))
# 检查借书情况
def check_borrow(book):
    for book_info in books.values():
        # {}跟%s差不多的效果,你翻译的时候注意
        print('{}被借出{}本'.format(book_info['title'], book_info['borrow_num']))
# 查找书籍ISBN
def search_book(books):
    flag = 'y'
    # 添加书籍
    while (flag == 'y'):
        title = input('输入你想查找的书籍的名字:')
        i = 0
        for book_info in books.values():
            i = 1
            if title in book_info.values():
                print('您所查找的书籍的信息如下:')
                print('title:{}  ISBN:{}'.format(book_info['title'], book_info['ISBN']))
        if i == 0:  # i=0说明没有找到符合输入的书籍
            print('没有该书!')
        # 防止出现错误输入
        while (True):
            flag = input('''如果你想要继续查找书籍请输入'y',想退出请输入'n':''')
            if flag == 'y' or flag == 'n':
                break
            else:
                print('请输入小写的y或n!')
# 添加书籍数量的函数
def add_book(books):
    flag = True
    # 添加书籍
    while (flag):
        next_flag = True
        isbn = input('输入你想添加的书籍的ISBN编号或者输入 exit 退出:')
        if isbn == 'exit':
            break
        no_book = True
        for book_info in books.values():
            if isbn in book_info.values():
                no_book = False
                print("1. 修改在库数目")
                print('2. 修改书籍名称')
                print('3. 修改书籍作者')
                print('4. 退出')
                option_menu = input('书籍在库, 请输入要进行的操作:')
                if option_menu == '4':
                    break
                elif option_menu == '1':
                    try:
                        add_num = eval(input('请输入添加数量:'))
                    except Exception:
                        print("添加书籍在库数目时请输入数字")
                        next_flag = False
                        break
                    if add_num < 0:
                        print('输入错误, 请输入正整数')
                        next_flag = False
                        break
                    book_info['number'] += int(add_num)
                elif option_menu == '2':
                    new_title = input('请输入需要修改成的名称:')
                    book_info['title'] = new_title
                elif option_menu == '3':
                    new_author = input('请输入需要修改成作者的名称:')
                    book_info['author'] = new_author
                else:
                    print('请输入正确的操作代码')
                    next_flag = False
                    break
            else:
                no_book = True
        if no_book:
            new_book_info = {}
            title = input('输入你想添加的书籍的名称:')
            author = input('输入你想添加的书籍的作者:')
            # 需要做异常处理,防止错误输入
            try:
                number = eval(input('输入你想添加的书籍的在库数目:'))
            except Exception as e:
                print("添加书籍在库数目时请输入数字")
                next_flag = False
            new_book_info['ISBN'] = isbn
            new_book_info['title'] = title
            new_book_info['author'] = author
            new_book_info['number'] = number
            new_book_info['borrow_num'] = 0
            key = 'book_' + str(len(books) + 1)
            books[key] = new_book_info
            print('书籍【' + title + '】添加成功')
        # 防止出现错误输入
        while (next_flag):
            flag_continue = input('''如果你想要继续添加书籍请输入'y',想退出请输入'n':''')
            if flag_continue.lower() == 'y':
                break
            else:
                flag = False
                break
# 借书函数
def borrow_book(books):
    flag = 'y'
    # 添加书籍
    while (flag == 'y'):
        isbn = input('输入你想借的书籍的ISBN编号:')
        i = 0
        for book_info in books.values():
            i = 1
            if isbn in book_info.values():
                b_num = input('请输入要借的的数量:')
                if book_info['number'] >= int(b_num):
                    book_info['number'] -= int(b_num)
                    book_info['borrow_num'] += int(b_num)
                else:
                    print('对不起,库存不足!')
        if i == 0:  # i=0说明没有找到符合输入的ISBN号
            print('没有该ISBN编号!')
        # 防止出现错误输入
        while (True):
            flag = input('''如果你想要继续借书籍请输入'y',想退出请输入'n':''')
            if flag == 'y' or flag == 'n':
                break
            else:
                print('请输入小写的y或n!')
# 还书函数
def return_book(books):
    flag = 'y'
    # 添加书籍
    while (flag == 'y'):
        isbn = input('Enter the ISBN number of the book you want to return')
        i = 0
        for book_info in books.values():
            i = 1
            if isbn in book_info.values():
                r_num = input('Please enter the amount to be returned')
                if book_info['borrow_num'] >= int(r_num):
                    book_info['number'] += int(r_num)
                    book_info['borrow_num'] -= int(r_num)
                else:
                    print('''I'm sorry, there aren't so many books on loan''')
        if i == 0:
            print('sorry we do not have this ISBN')
        while (True):
            flag = input('''If you want to continue returning books, type 'y' and 'n' to exit:''')
            if flag == 'y' or flag == 'n':
                break
            else:
                print('Please enter a lowercase y or n!')
if __name__ == '__main__':
    # 初始图书馆图书信息
    books = {
        'book_1': {
            'ISBN': '12345678910121',
            'title': '假如给我三天光明',
            'author': '海伦凯勒',
            'number': 2,
            'borrow_num': 0},
        'book_2': {
            'ISBN': '12345678910122',
            'title': '红与黑',
            'author': '司汤达',
            'number': 2,
            'borrow_num': 0},
        'book_3': {
            'ISBN': '12345678910123',
            'title': '鲁滨逊漂流记',
            'author': '笛福',
            'number': 2,
            'borrow_num': 0},
    }
    # 初始化用户信息
    print('1. >>>>>>管理员<<<<<<')
    print('2. >>>>>>普通用户<<<<<<')
    user = input('^^^^^^请输入你的身份^^^^^^')
    if user == '1':
        password = input('^^^^^^请输入你的登陆密码^^^^^^')
        if password == 'admin':
            print("========欢迎登陆========")
        else:
            print('密码错误,自动退出系统')
            sys.exit(0)
            pass
        print('0. ******查  看  书   籍******')
        print('1. ******添  加  书   籍******')
        print('4. ******查看书籍借阅情况******')
        print('5. ******查      书******')
        print('6. ******退  出  系   统******')
    elif user == '2':
        print("========欢迎光临结束系统========")
        print("========关于我们的书籍========")
        print('0. ******查  看  书   籍******')
        print('2. ******借      书******')
        print('3. ******还      书******')
        print('4. ******查看书籍借阅情况******')
        print('5. ******查      书******')
        print('6. ******退  出  系   统******')
    else:
        print('输入错误,自动退出系统')
        sys.exit(0)
    # 操作选项
    option = input("\n请选择操作选项: ")
    while (option != '6'):
        if option == '0':
            print('~~~~~~图 书 列 表~~~~~~')
            book_detail(books)
        elif option == '1':
            print('您选择的是:【添加书籍】')
            add_book(books)
        elif option == '2':
            print('您选择的是:【借书】')
            borrow_book(books)
        elif option == '3':
            print('您选择的是:【还书】')
            return_book(books)
        elif option == '4':
            print('您选择的是:【查看书籍借阅情况】')
            check_borrow(books)
        elif option == '5':
            print('您选择的是:【查书】')
            search_book(books)
        else:
            print('不好意思,我不知道您要干什么,请重新选择')
        if user == '1':
            print('0. ******查  看  书   籍******')
            print('1. ******添  加  书   籍******')
            print('4. ******查看书籍借阅情况******')
            print('5. ******查      书******')
            print('6. ******退  出  系   统******')
        elif user == '2':
            print('0. ******查  看  书   籍******')
            print('2. ******借      书******')
            print('3. ******还      书******')
            print('4. ******查看书籍借阅情况******')
            print('5. ******查      书******')
            print('6. ******退  出  系   统******')
        option = input("\n请选择操作选项: ")


相关文章
|
21天前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
28 6
|
1月前
|
存储 缓存 测试技术
Python中的装饰器:功能增强与代码复用的利器
在Python编程中,装饰器是一种强大而灵活的工具,它允许开发者以简洁优雅的方式增强函数或方法的功能。本文将深入探讨装饰器的定义、工作原理、应用场景以及如何自定义装饰器。通过实例演示,我们将展示装饰器如何在不修改原有代码的基础上添加新的行为,从而提高代码的可读性、可维护性和复用性。此外,我们还将讨论装饰器在实际应用中的一些最佳实践和潜在陷阱。
|
1月前
|
人工智能 数据挖掘 Python
Python编程基础:从零开始的代码旅程
【10月更文挑战第41天】在这篇文章中,我们将一起探索Python编程的世界。无论你是编程新手还是希望复习基础知识,本文都将是你的理想之选。我们将从最基础的语法讲起,逐步深入到更复杂的主题。文章将通过实例和练习,让你在实践中学习和理解Python编程。让我们一起开启这段代码之旅吧!
|
14天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
57 8
|
22天前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
44 11
|
23天前
|
测试技术 Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界中,装饰器是那些能够为我们的代码增添魔力的小精灵。它们不仅让代码看起来更加优雅,还能在不改变原有函数定义的情况下,增加额外的功能。本文将通过生动的例子和易于理解的语言,带你领略装饰器的奥秘,从基础概念到实际应用,一起开启Python装饰器的奇妙旅程。
35 11
|
19天前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
20天前
|
程序员 测试技术 数据安全/隐私保护
深入理解Python装饰器:提升代码重用与可读性
本文旨在为中高级Python开发者提供一份关于装饰器的深度解析。通过探讨装饰器的基本原理、类型以及在实际项目中的应用案例,帮助读者更好地理解并运用这一强大的语言特性。不同于常规摘要,本文将以一个实际的软件开发场景引入,逐步揭示装饰器如何优化代码结构,提高开发效率和代码质量。
44 6
|
24天前
|
Python
如何提高Python代码的可读性?
如何提高Python代码的可读性?
38 4
|
24天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。