python超市售货统计程序_用Python实现简易超市售货系统
今天來實現一個簡單的超市售貨系統
數據存儲形式為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('按回車退出')
```
效果圖:
一起學習python,小白指導,教學分享記得私信我
總結
以上是生活随笔為你收集整理的python超市售货统计程序_用Python实现简易超市售货系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腋臭手术需要多少钱啊?
- 下一篇: python如何获取url中的内容_py