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中操作MySQL入门实例
Feb 08 Python
python操作redis的方法
Jul 07 Python
Python实现完整的事务操作示例
Jun 20 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
pandas series序列转化为星期几的实例
Apr 11 Python
Python Process多进程实现过程
Oct 22 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
jupyter notebook实现显示行号
Apr 13 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
什么是python的必选参数
Jun 21 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
python文件路径操作方法总结
Dec 21 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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
PHP session会话的安全性分析
2011/09/08 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
javascript event 事件解析
2011/01/31 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
跟老齐学Python之用while来循环
2014/10/02 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
解决安装python库时windows error5 报错的问题
2018/10/21 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
Python 实现简单的客户端认证
2020/07/29 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
房地产销售经理岗位职责
2014/01/01 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
社区综治工作汇报
2014/10/27 职场文书
2014年项目经理工作总结
2014/11/24 职场文书