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 相关文章推荐
windows下安装python paramiko模块的代码
Feb 10 Python
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
浅谈python字符串方法的简单使用
Jul 18 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
python+matplotlib演示电偶极子实例代码
Jan 12 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
解决python中画图时x,y轴名称出现中文乱码的问题
Jan 29 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
python requests模拟登陆github的实现方法
Dec 26 Python
python matplotlib实现将图例放在图外
Apr 17 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 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
开发大型PHP项目的方法
2006/10/09 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
php微信开发之关注事件
2018/06/14 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
清空上传控件input file的值
2010/07/03 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
JS原型对象通俗"唱法"
2012/12/27 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
Python 如何创建一个线程池
2020/07/28 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
银行职业规划书范文
2013/12/28 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
群众路线领导对照材料
2014/08/23 职场文书
党员个人自我评价
2015/03/03 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
Win11更新失败并提示0xc1900101
2022/04/19 数码科技