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请选择操作选项: ")


相关文章
|
3月前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
68 6
|
4月前
|
存储 缓存 测试技术
Python中的装饰器:功能增强与代码复用的利器
在Python编程中,装饰器是一种强大而灵活的工具,它允许开发者以简洁优雅的方式增强函数或方法的功能。本文将深入探讨装饰器的定义、工作原理、应用场景以及如何自定义装饰器。通过实例演示,我们将展示装饰器如何在不修改原有代码的基础上添加新的行为,从而提高代码的可读性、可维护性和复用性。此外,我们还将讨论装饰器在实际应用中的一些最佳实践和潜在陷阱。
|
17天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
18天前
|
API 开发工具 Python
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
|
2月前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
87 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
3月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
89 33
|
4月前
|
人工智能 数据挖掘 Python
Python编程基础:从零开始的代码旅程
【10月更文挑战第41天】在这篇文章中,我们将一起探索Python编程的世界。无论你是编程新手还是希望复习基础知识,本文都将是你的理想之选。我们将从最基础的语法讲起,逐步深入到更复杂的主题。文章将通过实例和练习,让你在实践中学习和理解Python编程。让我们一起开启这段代码之旅吧!
|
3月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
61 10
|
3月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
127 8
|
3月前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
77 11

热门文章

最新文章