Python实现仓库管理系统

 更新时间:2022年05月30日 14:31:19   作者:运维@小兵  
这篇文章主要为大家详细介绍了Python实现仓库管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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('\033[%sm%s\033[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:%s\n' % (i, add_dict[i]))
                    print("\033[92m%s存入成功\033[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进行退出!")

效果图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python学习之字符串常用操作详解

    Python学习之字符串常用操作详解

    字符串是Pyhon中的常用的数据类型,这篇文章主要为大家详细介绍一下python字符串的一些常用操作,文中示例代码讲解详细,需要的朋友可以参考下
    2022-09-09
  • Python使用指定字符长度切分数据示例

    Python使用指定字符长度切分数据示例

    今天小编就为大家分享一篇Python使用指定字符长度切分数据示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • pytorch加载自己的数据集源码分享

    pytorch加载自己的数据集源码分享

    这篇文章主要介绍了pytorch加载自己的数据集源码分享,标准的数据集流程梳理分为数据准备以及加载数据库–>数据加载器的调用或者设计–>批量调用进行训练或者其他作用,需要的朋友可以参考下
    2022-08-08
  • Python入门之字典的使用教程

    Python入门之字典的使用教程

    Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。本文将为大家详细讲讲字典的使用教程,需要的可以参考一下
    2022-09-09
  • Python提取PDF发票信息保存Excel文件并制作EXE程序的全过程

    Python提取PDF发票信息保存Excel文件并制作EXE程序的全过程

    之前零散的用过一点python做数据处理,这次又遇到一个数据处理的小功能,下面这篇文章主要给大家介绍了关于Python提取PDF发票信息保存Excel文件并制作EXE程序的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • 对python打乱数据集中X,y标签对的方法详解

    对python打乱数据集中X,y标签对的方法详解

    今天就为大家分享一篇对python打乱数据集中X,y标签对的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 使用Python在Word中查找并高亮指定文本

    使用Python在Word中查找并高亮指定文本

    当你需要在长文档或报告中快速找到特定的关键词或短语,Word中提供的查找并高亮这一功能可以帮助你迅速定位这些内容,本文将介绍如何使用Python在Word中查找并突出显示指定的文本,需要的朋友可以参考下
    2024-03-03
  • python读取文件指定行内容实例讲解

    python读取文件指定行内容实例讲解

    在本篇文章里小编给大家整理的是关于python读取文件指定行内容实例讲解,需要的朋友们可以参考下。
    2020-03-03
  • Python OpenCV 调用摄像头并截图保存功能的实现代码

    Python OpenCV 调用摄像头并截图保存功能的实现代码

    这篇文章主要介绍了Python OpenCV 调用摄像头并截图保存功能,本文通过两段实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • PyQt5执行耗时操作导致界面卡死或未响应的原因及解决办法

    PyQt5执行耗时操作导致界面卡死或未响应的原因及解决办法

    这篇文章主要给大家介绍了关于PyQt5执行耗时操作导致界面卡死或未响应的原因及解决办法,由于耗时的操作会独占系统cpu资源,让界面卡死在那里,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12

最新评论