Python实现仓库管理系统


Posted in Python onMay 30, 2022

本文实例为大家分享了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实现仓库管理系统

Python实现仓库管理系统

Python实现仓库管理系统

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

Python 相关文章推荐
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
Python数据集切分实例
Dec 08 Python
Django框架创建mysql连接与使用示例
Jul 29 Python
python异步编程 使用yield from过程解析
Sep 25 Python
使用python远程操作linux过程解析
Dec 04 Python
python字典setdefault方法和get方法使用实例
Dec 25 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
基于keras中的回调函数用法说明
Jun 17 Python
Python基于traceback模块获取异常信息
Jul 23 Python
python单向链表实例详解
May 25 #Python
利用Python实现模拟登录知乎
May 25 #Python
python双向链表实例详解
May 25 #Python
Python实现双向链表基本操作
May 25 #Python
python实现双向链表原理
May 25 #Python
Python代码实现双链表
详解NumPy中的线性关系与数据修剪压缩
You might like
PHPThumb图片处理实例
2014/05/03 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
js身份证验证超强脚本
2008/10/26 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
收集的几个Python小技巧分享
2014/11/22 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
Python中的推导式使用详解
2015/06/03 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
pandas 将索引值相加的方法
2018/11/15 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
详解Python3中的 input() 函数
2020/03/18 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
经典演讲稿范文
2013/12/30 职场文书
问卷调查计划书
2014/01/10 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
运动会跳远广播稿
2015/08/19 职场文书
MySQL常用慢查询分析工具详解
2022/08/14 MySQL