用Python实现简易超市售货系统

今天来实现一个简单的超市售货系统
数据存储形式为json的数据

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

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

全部代码如下:

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实现简易超市售货系统_第1张图片
一起学习python,小白指导,教学分享记得私信我

你可能感兴趣的:(python)