首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用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,小白指导,教学分享记得私信我

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201230A0HZ5K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券