库存系统¶

仓库中有若干不同产品
进入系统后,系统读取历史文件,并返回所有产品的当前库存,同时显示菜单
选择“出库”或者“入库”进入到出入库系统,输入产品、数量进行出入库操作,系统显示该产品库存
选择“退出系统”退出
产品所有的出入库记录均存于一个文本文件中
文本文档记录每一次的存取操作和产品的当前库存
文档记录的属性包括:产品名、出库或者入库、数量、库存量

In [ ]:
import re


def read_stock():
    f = open('stock_info.txt',encoding = 'utf-8')
    current_stock = {}
    while True:
        lines = f.readlines(100)
        if not lines:
            break
        for i in lines:
            #桌子,入库,2,2
            cols = re.split(',',i)
            current_stock[cols[0]]=float(cols[-1])
    f.close()
    return current_stock


def update_stock(p, op, amount, updated_stock):
    f = open('stock_info.txt', 'a', encoding='utf-8')
    f.write('{},{},{},{}\n'.format(p, op, amount, updated_stock))
    f.close()

def stock_in():
    product = input('输入入库产品:')
    amount = float(input('输入入库数量:'))
    current_stock = read_stock()
    if product in current_stock.keys():
        current_stock[product] = current_stock[product] + amount
    else:
        current_stock[product] = amount
    print('入库成功!{}库存更新为{}'.format(product, current_stock[product]))
    update_stock(product, '入库', amount, current_stock[product])


def stock_out():
    product = input('输入出库产品:')
    amount = float(input('输入出库数量:'))
    current_stock = read_stock()
    if product in current_stock.keys():
        if current_stock[product] >= amount:
            current_stock[product] = current_stock[product] - amount
            update_stock(product, '出库', amount, current_stock[product])
            print('出库成功!{}库存更新为{}'.format(product, current_stock[product]))
        else:
            print('库存不足!')
    else:
        print('没有该产品!')
    
    
stocks = read_stock()
print('当前库存为:')
for k,v in stocks.items():
    print('{}\t{}'.format(k,v))
while True:
    op_input = input('请选择操作:1、出库;2、入库;3、退出系统:')
    if op_input == '1':
        #出库
        stock_out()
    elif op_input == '2':
        #入库
        stock_in()
    elif op_input == '3':
        #退出系统
        print('谢谢使用,现在退出系统。')
        break
    else:
        print('输入有误!')