python写超市管理系统_用Python实现简易超市售货系统

这篇博客介绍了一个使用Python编写的简单超市售货系统,通过读取JSON格式的商品数据,用户可以进行商品选择、购买及查看购物清单。系统支持用户连续购买商品并实时更新库存,最终显示总消费金额。
摘要由CSDN通过智能技术生成

今天来实现一个简单的超市售货系统

数据存储形式为json的数据

首先是读取数据,这里用到的Python的json库,用于处理json类型的数据

```python

def load(): # 数据读取

j = open('goods.txt', 'r', encoding='utf-8')

# 逐行读取文件中的数据

readers = j.readlines()

# 将数据整理后存入data

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)]

```

然后就是超市的主体部分,实现了用户购买多次购买商品,并打印订单

```python

def sale():

print('欢迎来到XXX超市')

while True:

# 让用户输入购买物品的类别

print(' '.join(list(data.keys())))

category = input('请选择你想购买的类别:')

# 判断用户输入的类别是否存在

if category not in data.keys():

print('您输入的类别不存在,情重新输入')

continue

# 将用户选择的类别内的商品都放入commoditys进行保存

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('欢迎再来!')

```

全部代码如下:

```python

import json

import random

def load(): # 数据读取

j = open('goods.txt', 'r', encoding='utf-8')

# 逐行读取文件中的数据

readers = j.readlines()

# 将数据整理后存入data

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进行保存

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()

# print(data)

# 客户开始选购

sale()

print('当前库存为:\n', data)

input('按回车退出')

```

效果图:

210417bc06d4b84114fc2044a6a46057.png

一起学习python,小白指导,教学分享记得私信我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值