初识python之图书管理系统

#!/usr/bin/env
# coding:utf-8

import time


library = [
    {'bookname': '水浒', 'author': '施耐庵', 'price': 100, 'number': 40},
    {'bookname': '水浒', 'author': '五十', 'price': 100, 'number': 40},
    {'bookname': '西游记', 'author': '吴承恩', 'price': 100, 'number': 40},
    {'bookname': '红楼梦', 'author': '曹雪芹', 'price': 100, 'number': 0},
    {'bookname': '西游记', 'author': '二楼请', 'price': 100, 'number': 5},
    {'bookname': '天珠变', 'author': '唐三少', 'price': 100, 'number': 40},
    {'bookname': '金瓶梅', 'author': '丁惟宁', 'price': 100, 'number': 40},
    {'bookname': '坏蛋是怎样练成的', 'author': '六道', 'price': 100, 'number': 40}
]
print('---------欢迎进入图书管理系统---------------')
book_name_list = []  # 创建列表存储所有书名
for book in library:
    book_name_list.append(book['bookname'])
print(book_name_list)
Flag = True
while Flag:
    oper = input('\n1. 借书  \n2. 还书  \n3. 查询  \n4. 查询所有  \n5. 退出 \n请选择您需要的服务:')
    if oper == '1':
        book_list = []  # 创建列表存储所有想借的书
        print('1.借书模块')
        # 输入书名 ---》
        book_name = input('请输入您要借的书:')
        for book in library:  # 遍历所有书,如果书名和要借的书相同,并书的数量不能为零。
            if book_name == book['bookname'] and book['number'] != 0:
                book_list.append(book)  # 将满足条件的所有书都加入到列表中
                # print(book_list)
            elif book_name not in book_name_list:
                print('查无此书,请重新选择')
                break
            elif book_name == book['bookname'] and book['number'] == 0:
                print('抱歉,这本书已经借出去完了!')
                continue
        # if not book_list:
        #     print('')
        # else:
        #     print(book_list)
        if len(book_list) != 0:
            print(book_list)
        if len(book_list) > 1:  # 如果列表长度>1,说明有相同名字不同作者的书
            author_answer = input('请输入您要哪个作者写的:')

            for book in library:
                if author_answer == book['author'] and book_name == book['bookname']:
                    book['number'] -= 1
                    print('您已经成功借了' + str(author_answer) + '的这本书')
                    break
            else:
                print('抱歉,没有此作者写的这本书。')
        elif len(book_list) == 1:
            for book in library:
                if book_name == book['bookname']:
                    book['number'] -= 1
            print('您已经成功借了' + str(book_name) + '这本书')
        else:  # 说明只有一个作者写的这本书
            for book in library:
                if book_name == book['bookname']:
                    book['number'] -= 1
                    break

    elif oper == '2':
        Flag1 = True
        print('2. 还书模块')
        while Flag1:
            name = input('请输入您要还的书名:')
            author = input('请输入您要还书的作者是:')
            for book in library:
                if name == book['bookname'] and author == book['author']:
                    book['number'] += 1
                    print(str(name) + '归还成功')
                    Flag1 = False
                    break

            else:
                print('书名和作者输入有错误,请从新输入')
    elif oper == '3':
        print('3.查询模块(书名/作者)')
        book_name = input('请输入您要查询的书名:')
        for book in library:
            if book_name == book['bookname']:
                print(book)
    elif oper == '4':
        print('查询所有模块')
        for book in library:
            print(f"图书名:{book['bookname']},作者:{book['author']},价格:{book['price']},库存剩余{book['number']}")
    elif oper == '5':
        print('5.退出')
        print('系统退出中....')
        time.sleep(1)
        print('系统正常退出')
        break
    else:
        print('请重新选择')

下面这个功能其实想加上的,奈何还没怎么看的懂。
输入等待,超时退出

from threading import Timer
import os

input_msg = "啥也没输入"


def work(msg=input_msg):
    print("\n你输入信息为:", msg)
    os._exit(0)  # 执行完成,退出程序


def input_with_timeout(timeout=5):
    t = Timer(timeout, work)
    t.start()
    msg = input("请输入信息:")
    input_msg = msg
    if len(input_msg) > 0:
        t.cancel()
        work(msg)


input_with_timeout()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值