#!/usr/bin/python3
'''
控制台超市系统
1、仓库是字典格式,key是条码,value是商品的属性元组:包含条码、名字、单价
2、购买清单是二维列表格式,子列表是每款商品的[条码,数量]
2、打印商品列表:详细信息
3、增删改查函数 :购买清单
4、while循环判断增、删、改、查 然后输出清单
'''
# 定义仓库词典,存放商品
warehouse=dict()
# 初始化仓库
def init_warehouse():
# 初始化商品清单
good1=('001','S600',1000000)
good2=('002','T300',20000)
good3=('003','M1',180000)
good4=('004','k300',190000)
good5=('005','XPERIA',6000)
# 入库
warehouse[good1[0]]=good1
warehouse[good2[0]]=good2
warehouse[good3[0]]=good3
warehouse[good4[0]]=good4
warehouse[good5[0]]=good5
# 遍历打印商品清单
def graph_goods():
print('商品清单:')
print("%13s%40s%10s" % ("条码", "商品名称", "单价"))
for i in warehouse.values():
print('%15s%40s%12s'%i)
# 打印购物详细清单
shopList=[] # 购买清单是二维列表格式,子列表是每款商品的[条码,数量],通过购买清单整合成最终的购物详细清单
def graph_list():
print("=" * 100)
if not shopList:
print('请添加购买商品')
else:
title = "%-5s|%15s|%40s|%10s|%4s|%10s" % \
("ID", "条码", "商品名称", "单价", "数量", "小计")
print(title)
print("-" * 100)
# 定义总价
sum=0
# 定义id
id = 0
for i,item in enumerate(shopList):
# 商品列表序号id、条码、数量
id += 1
code=item[0]
num=item[1]
# 从仓库中找到商品名、单价
name=warehouse[code][1]
price=warehouse[code][2]
# 单品总价
amount=price*num
# 总价
sum+=amount
line = "%-5s|%17s|%40s|%12s|%6s|%12s" % \
(id, code, name, price, num, amount)
print(line)
print("-" * 100)
print(" 总计: " , sum)
print("=" * 100)
# 增加购买商品操作
def add():
code=input("请输入购买商品条码:\n")
if code not in warehouse.keys():
print("商品不存在")
return
num=input("请输入购买数量")
# 将购买的商品及数量添加到购买清单中
shopList.append([code,int(num)])
# 改变购买商品数量,即修改购买清单list中的数量
def edit():
id = input("请输入要修改的购物明细项的ID:\n")
# id减1得到购买清单的索引,即哪款商品
index = int(id) - 1
# 提示输入新的购买数量
number = input("请输入新的购买数量:\n")
# 修改shopList里面的num
shopList[index][1] = int(number)
# 删除购买清单的一个元素。
def delete():
id = input("请输入要删除的购物明细项的ID: ")
index = int(id) - 1
# 直接根据索引从购买清单里面删除
del shopList[index]
# 结算方法
def payment():
# 打印清单
graph_list()
print('\n'*3) # 空三行
print('购物结束')
# 通过os模块中的_exit(0)方法来控制退出
import os
os._exit(0)
# 操作词典中存储的value是方法,需要省略(),否则会直接执行
cmd_dict={'a':add,'e':edit,'d':delete,'p':payment,'g':graph_goods}
# 给出提示命令
def show_command():
cmd=input('请输入操作命令:\n'+'添加(a) 修改(e) 删除(e) 结算(p) 显示车市商品(g)')
if cmd not in cmd_dict:
print('输入有误')
else:
cmd_dict[cmd]()
# main
init_warehouse()
graph_goods()
# 显示清单和操作命令提示
while True:
graph_list()
show_command()