首頁 > 軟體

Python實現倉庫管理系統

2022-05-30 18:01:36

本文範例為大家分享了Python實現倉庫管理系統的具體程式碼,供大家參考,具體內容如下

注意:在Linux環境執行

程式碼

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :store_system.py
# @Time      :2020/3/3 23:10
# @Author    :anqixiang
# @Function  :模擬倉庫管理系統
'''
1.商品清單儲存在/opt/shop_info.txt檔案中
2.可以檢視、增加、刪除商品和修改商品價格
3.在任何位置輸入b返回上級選單,輸入q退出
'''
import os
from subprocess import run

#輸出顏色
def cecho(num,content):
    print('33[%sm%s33[0m' %(num, content))

#選b返回上一層,選q退出
def choice_action(action):
    while action != "b":
        if action == "q":
            exit(0)
        else:
            break
    return action

#展示商品
def view_shop(file_name):
    commodity = []              #所有商品儲存到該列表
    if not os.path.isfile(file_name):
        os.mknod(file_name)
    else:
        with open(file_name, 'r') as file:
            for each in file:
                commodity.append(each.splitlines())
    if len(commodity) == 0:
        cecho(35, "貨倉空空如也,請速速新增商品!")
        #列印商品資訊
    else:
        print('%-10s%-8s%-12s' % ('序號', '名字', '價格'))
        for index, value in enumerate(commodity):
            alist = value[0].split(":")         #把字串轉成列表,以「:」分割
            print('%-12s%-10s%-8s' % (index + 1, alist[0], alist[1]))
    return commodity

#增加商品,每增加一個就儲存到檔案
def add_shop(file_name):
    while True:
        add_dict = {}
        shop_name = input(">>>輸入商品名:").strip()
        if choice_action(shop_name) == "b":
            break
        shop_price = input(">>>輸入商品價格(元):").strip()
        if choice_action(shop_price) == "b":
            break
        elif shop_price.isdigit():
            add_dict[shop_name] = shop_price        #商品名作key,價格作值,存入字典
            for i in add_dict:
                with open(file_name, 'a+')as file:
                    file.write('%s:%sn' % (i, add_dict[i]))
                    print("33[92m%s存入成功33[0m" % shop_name)
                view_shop(file_name)
        else:
            cecho(31, "Invalid Option")

#刪除商品
def del_shop(file_name):
    menu_info = "商品清單"
    print(menu_info.center(26,'-'))
    commodity = view_shop(file_name)
    while True:
        del_num = input(">>>商品序號:").strip()
        if choice_action(del_num) == "b":
            break
        elif del_num.isdigit():
            del_num = int(del_num)
            rc = run("sed -i '/%s/d' %s" % (commodity[del_num-1][0], file_name), shell=True)
            if not rc.returncode:
                cecho(92, "刪除成功")
            else:
                cecho(31,"刪除失敗")
            view_shop(file_name)
        else:
            cecho(31, "Invalid Option")

#修改商品價格
def update_price(file_name):
    menu_info = "商品清單"
    print(menu_info.center(26,'-'))
    commodity = view_shop(file_name)
    while True:
        update_num = input(">>>商品序號:").strip()
        if choice_action(update_num) == "b":
            break
        elif update_num.isdigit():
            update_num = int(update_num)
        else:
            cecho(31, "Invalid Option")

        new_price = input(">>>新的價格(元):").strip()
        if choice_action(new_price) == "b":
            break
        elif new_price.isdigit():
            new_price = int(new_price)
            alist = commodity[update_num-1][0].split(':')   #將商品名和價格轉成一個列表,如['coffee', '30']
            alist[1] = new_price        #修改價格
            rc = run("sed -i '/%s/c %s:%s' %s" % (alist[0], alist[0], alist[1], file_name), shell=True)
            if not rc.returncode:
                cecho(92, "修改成功")
            else:
                cecho(31,"修改失敗")
            view_shop(file_name)
        else:
            cecho(31, "Invalid Option")

#主程式
def show_menu():
    cmds = {'0': view_shop, '1': add_shop, '2': del_shop, '3': update_price}
    prompt = '''(0)檢視商品資訊
(1)增加商品
(2)刪除商品
(3)修改商品價格
(b)返回上級選單
(q)退出
輸入(0/1/2/3/b/q):'''
    fname='/opt/shop_info.txt'      #儲存商品資訊
    while True:
        choice = input(prompt).strip()
        if choice not in '0123bq':
            cecho(31, "Invalid Option")
        elif choice_action(choice) == "b":
            cecho(31, "已經是第一級選單")
        else:
            cmds[choice](fname)

if __name__ == "__main__":
    try:
        show_menu()
    except KeyboardInterrupt as e:
        print()
        cecho(31, "非正常退出,請下次輸入字母q進行退出!")

效果圖

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com