今天来实现一个简单的超市售货系统
数据存储形式为json的数据
首先是读取数据,这里用到的Python的json库,用于处理json类型的数据
def load():
j = open('goods.txt', 'r', encoding='utf-8')
readers = j.readlines()
for i in readers:
data[i.split('-')[0]] = json.loads(i.split('-')[-1].replace('\n', '').replace("\'", '\"'))
for i in data:
for j in data[i]:
data[i][j] = [data[i][j], random.randint(100, 1000)]
然后就是超市的主体部分,实现了用户购买多次购买商品,并打印订单
def sale():
print('欢迎来到XXX超市')
while True:
print(' '.join(list(data.keys())))
category = input('请选择你想购买的类别:')
if category not in data.keys():
print('您输入的类别不存在,情重新输入')
continue
commoditys = data[category]
while True:
print('进入商品选购')
print(' '.join([k+str(v[0]) for k,v in commoditys.items()]))
commodity = input('请输入你购买的商品:')
if commodity not in commoditys.keys():
print('您输入的商品不存在,请重新输入')
continue
number = int(input('请输入购买商品的数量:'))
data[category][commodity][1] -= number
detailed_list.append([commodity, commoditys[commodity][0], number, commoditys[commodity][0]*number, data[category][commodity][1]])
print('当前的购物清单为')
print('商品名 数量 总价')
for i in detailed_list:
print(i[0], i[2], i[3])
if input('是否继续选择商品,是输入y:') != 'y':
break
if input('是否继续选择购物,是输入y:') != 'y':
break
print('=' * 50)
print(' 商品名称|单价| 数量| 小计| 库存|')
print('-' * 50)
for i in detailed_list:
print('{:>6}|{:>2}|{:>8}|{:>8}|{:>8}|'.format(i[0], str(i[1]), str(i[2]), str(i[3]), str(i[4])))
print('-' * 50)
print(' 总消费:%.2f '%(sum([i[3] for i in detailed_list])))
print('=' * 50)
print('欢迎再来!')
全部代码如下:
import json
import random
def load():
j = open('goods.txt', 'r', encoding='utf-8')
readers = j.readlines()
for i in readers:
data[i.split('-')[0]] = json.loads(i.split('-')[-1].replace('\n', '').replace("\'", '\"'))
for i in data:
for j in data[i]:
data[i][j] = [data[i][j], random.randint(100, 1000)]
def sale():
print('欢迎来到XXX超市')
while True:
print(' '.join(list(data.keys())))
category = input('请选择你想购买的类别:')
if category not in data.keys():
print('您输入的类别不存在,情重新输入')
continue
commoditys = data[category]
while True:
print('进入商品选购')
print(' '.join([k+str(v[0]) for k,v in commoditys.items()]))
commodity = input('请输入你购买的商品:')
if commodity not in commoditys.keys():
print('您输入的商品不存在,请重新输入')
continue
number = int(input('请输入购买商品的数量:'))
data[category][commodity][1] -= number
detailed_list.append([commodity, commoditys[commodity][0], number, commoditys[commodity][0]*number, data[category][commodity][1]])
print('当前的购物清单为')
print('商品名 数量 总价')
for i in detailed_list:
print(i[0], i[2], i[3])
if input('是否继续选择商品,是输入y:') != 'y':
break
if input('是否继续选择购物,是输入y:') != 'y':
break
print('=' * 50)
print(' 商品名称|单价| 数量| 小计| 库存|')
print('-' * 50)
for i in detailed_list:
print('{:>6}|{:>2}|{:>8}|{:>8}|{:>8}|'.format(i[0], str(i[1]), str(i[2]), str(i[3]), str(i[4])))
print('-' * 50)
print(' 总消费:%.2f '%(sum([i[3] for i in detailed_list])))
print('=' * 50)
print('欢迎再来!')
if __name__ == '__main__':
detailed_list = []
data = {}
load()
sale()
print('当前库存为:\n', data)
input('按回车退出')
效果图: