本系统基于V1.0,在此基础上进行部分方法的封装,方面后续代码的更改与完善。主要将购物相关的方法抽取出来,通过python中的模块导入,实现购物方法的调用,从而实现整个超市购物系统。
主要的代码如下:
goodsOperation.py
# 定义仓库字典对象
repository = dict()
# 定义购物清单对象
shop_list = []
# 定义一个函数来初始化商品
def init_repository():
# 初始化商品,每个元祖代表一个商品
goods1 = ("1000001", "疯狂Ruby讲义", "88.4")
goods2 = ("1000002", "疯狂Swift讲义", "38.11")
goods3 = ("1000003", "疯狂Java讲义", "58.3")
goods4 = ("1000004", "疯狂Andriod讲义", "108.7")
goods5 = ("1000005", "疯狂IOS讲义", "45.3")
# 把商品入库,条码作为key
repository[goods1[0]] = goods1
repository[goods2[0]] = goods2
repository[goods3[0]] = goods3
repository[goods4[0]] = goods4
repository[goods5[0]] = goods5
# 显示超市购物清单,就是遍历代表仓库的dict字典
def show_goods() :
print("欢迎光临 疯狂超市!")
print("疯狂超市的商品清单: ")
print("%13s%40s%10s" % ("条码", "商品名称", "单价"))
# 遍历repository中的所有value来显示商品清单
for goods in repository.values() :
print("%15s%40s%12s" %goods)
# 显示购物清单,就是遍历代表购物清单的list列表
def show_list() :
print("=" * 100)
# 如果清单不为空,则输出清单的内容
if not shop_list:
print("还未购买商品")
else:
print("%13s%20s%30s%13s%40s%10s" % ("id", "条码", "商品名称", "单价", "数量", "小计"))
print("-" * 100)
# 记录总计的价钱
sum = 0
# 遍历代表购物清单的list
for i,item in enumerate(shop_list) :
# 转换ID为索引加一
id = i +1
# 获取改购物明细的第一个元素:商品条码
code = item[0]
# 根据获取的条码读取商品,再获取商品名称
name = repository[code][1]
# 根据获取的条码读取商品,获取商品单价
price = repository[code][2]
# 获取改购物明细的第二个元素:商品数量
number = item[1]
# 小计
amount = float(price) * number
# 计算总价钱
sum = sum + float(amount)
line = "%13s%20s%30s%13s%40s%10s" % (id, code, name, price, number, amount)
print(line)
print("-" * 100)
print(" 总计: ", sum)
print("=" * 100)
# 添加购买的商品 就是向用户购物清单的list中添加一项
def add():
# 等待输入条码
code = input("请输入商品条码:\n")
# 没有找到对应的商品,提示条码错误
if code not in repository:
print("条码错误,请重新输入")
return
# 根据条码查找商品
goods = repository[code]
# 等待输入数量
number = input("请输入商品购买数量 : \n")
# 将商品和购买数量封装成list后加入购物清单
shop_list.append([code, int(number)])
# 修改购买的商品数量,就是修改代表用户购物清单的list列表元素
def edit():
id = input("请输入要修改的购物明细id :\n")
# id-1 即为得到的购物明细项的索引
index = int(id) - 1
# 根据索引获取某个购物明细项
item = shop_list[index]
# 提示输入新的购买数量
number = input("请输入新的购买数量:\n")
# 修改item 的number
item[1] = int(number)
# 删除已购买的商品明细项,就是删除代表用户购物清单的list列表的元素
def delete():
id = input("请输入要删除的购物明细的id:\n")
index = int(id) - 1
# 直接根据索引项从清单中删除购物明细项
del shop_list[index]
main.py
import goodsOperation #导入购物操作方法
import os
# 打印清单 退出程序
def payment():
# 打印清单
goodsOperation.shop_list()
print("\n" * 3)
print("欢迎下次光临!")
# 退出程序
os.exit(0)
cmd_dic = {'a': goodsOperation.add, 'e': goodsOperation.edit, 'd': goodsOperation.delete, 'p': payment, 's': goodsOperation.show_goods}
# 显示命令提示
def show_command():
# 等待命令
cmd = input("请输入操作指令: \n" + " 添加(a) 修改(e) 删除(d) 结算(p) 超市商品(s)\n")
# 用户输入的字符没有对应的指令
if cmd not in cmd_dic:
print("指令错误,请重新输入")
else:
cmd_dic[cmd]()
goodsOperation.init_repository() #调用导入的模块进行初始化商品信息和购物清单
goodsOperation.show_goods()
while True:
goodsOperation.show_list()
show_command()
运行main.py,实现的效果如下: