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文件写入实例分析
Apr 08 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
python 消费 kafka 数据教程
Dec 21 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
pytorch实现查看当前学习率
Jun 24 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 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开启安全模式后禁用的函数集合
2011/06/26 PHP
简单的php文件上传(实例)
2013/10/27 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
javascript动态加载三
2012/08/22 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
Python绘制七段数码管实例代码
2017/12/20 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
冰淇淋店创业计划书范文
2013/12/27 职场文书
学生周末长期请假条
2014/02/15 职场文书
大学生军训感想
2014/02/16 职场文书
疾病防治方案
2014/05/31 职场文书
暑期学习心得体会
2014/09/02 职场文书
党性心得体会
2014/09/03 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
师德师风学习材料
2014/12/19 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
Redis 异步机制
2022/05/15 Redis