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 24 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
Python实现最大子序和的方法示例
Jul 05 Python
python 魔法函数实例及解析
Sep 25 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
django xadmin中form_layout添加字段显示方式
Mar 30 Python
Python打印特殊符号及对应编码解析
May 07 Python
基于selenium及python实现下拉选项定位select
Jul 22 Python
Python configparser模块封装及构造配置文件
Aug 07 Python
python之语音识别speech模块
Sep 09 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
python爬虫获取百度首页内容教学
2018/12/23 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
光声世纪笔试题目
2012/08/25 面试题
毕业生个人的求职信范文
2013/12/03 职场文书
高一物理教学反思
2014/01/24 职场文书
酒店营销策划方案
2014/02/07 职场文书
简单的大学生自我鉴定
2014/02/18 职场文书
水电站项目建议书
2014/05/12 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书