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并提交mysql事务示例
Mar 05 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
python中urlparse模块介绍与使用示例
Nov 19 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Django集成celery发送异步邮件实例
Dec 17 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
Django后端按照日期查询的方法教程
Feb 28 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
Python内置函数reversed()用法分析
2018/03/20 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
python实现126邮箱发送邮件
2020/05/20 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
司机的工作范围及职责
2013/11/13 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
工作检讨书怎么写
2014/10/10 职场文书
中秋晚会致辞
2015/07/31 职场文书
体育教师教学随笔
2015/08/15 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
理解python中装饰器的作用
2021/07/21 Python