基于python的超市系统V1.0--控制台实现

本案例来源于《疯狂python讲义》,将开发一个控制台超市系统,用户可以在控制台通过提供的命令进行购物。部分内容有更改,主要用到的知识有列表,字典等数据结构的用法,将使用到如下的数据:

1、使用元组代表商品,元组的多个元素分别代表:商品条码,商品名称和商品单价。

2、使用字典dic来表示系统当前仓库中的所有商品,dic的key代表商品条码,value则是商品元组

3、使用list来记录用户的购物清单,list列表的元素代表购物明细,每个明细也是一个list列表。

本程序使用的代码如下:

import os

# 定义仓库字典对象
repository = dict()

# 定义购物清单对象
shop_list = []


# 定义一个函数来初始化商品
def init_repository():
    # 初始化商品,每个元祖代表一个商品
    goods1 = ("1000001", "疯狂Ruby讲义", "88.4")
    goods2 = ("1000002", "疯狂Swift讲义", "38.11")
    goods3 = ("1000003", "疯狂Java讲义", "58.3")
    goods4 = ("1000004", "疯狂Andriod讲义", "108.7")
    goods5 = ("1000005", "疯狂IOS讲义", "45.3")
    # 把商品入库,条码作为key
    repository[goods1[0]] = goods1
    repository[goods2[0]] = goods2
    repository[goods3[0]] = goods3
    repository[goods4[0]] = goods4
    repository[goods5[0]] = goods5


# 显示超市购物清单,就是遍历代表仓库的dict字典
def show_goods():
    print("欢迎光临 疯狂超市!")
    print("疯狂超市的商品清单: ")
    print("%13s%40s%10s" % ("条码", "商品名称", "单价"))
    # 遍历repository中的所有value来显示商品清单
    for goods in repository.values() :
        print("%15s%40s%12s" %goods)

# 显示购物清单,就是遍历代表购物清单的list列表
def show_list() :
    print("=" * 100)
    # 如果清单不为空,则输出清单的内容
    if not shop_list:
        print("还未购买商品")
    else:

        # title = "%-5s|%15s|%40s|%10s|%4s|10s" % ("ID", "条码", "商品名称", "单价", "数量", "小计")
        print("%13s%20s%30s%13s%40s%10s" % ("id", "条码", "商品名称", "单价", "数量", "小计"))
        # print("%13s%40s%10s" % ("条码", "商品名称", "单价"))
        print("-" * 100)
        # 记录总计的价钱
        sum = 0

        # 遍历代表购物清单的list
        for i, item in enumerate(shop_list):
            # 转换ID为索引加一
            id = i + 1
            # 获取改购物明细的第一个元素:商品条码
            code = item[0]
            # 根据获取的条码读取商品,再获取商品名称
            name = repository[code][1]
            # 根据获取的条码读取商品,获取商品单价
            price = repository[code][2]
            # 获取改购物明细的第二个元素:商品数量
            number = item[1]
            # 小计
            amount = float(price) * number
            # 计算总价钱
            sum = sum + float(amount)
            line = "%13s%20s%30s%13s%40s%2s" % (id, code, name, price, number, amount)
            print(line)
        print("-" * 100)
        print("                         总计: ", sum)
    print("=" * 100)


# 添加购买的商品 就是向用户购物清单的list中添加一项
def add():
    # 等待输入条码
    code = input("请输入商品条码:\n")
    # 没有找到对应的商品,提示条码错误
    if code not in repository:
        print("条码错误,请重新输入")
        return
    # 根据条码查找商品
    goods = repository[code]
    # 等待输入数量
    number = input("请输入商品购买数量 : \n")
    # 将商品和购买数量封装成list后加入购物清单
    shop_list.append([code, int(number)])

# 修改购买的商品数量,就是修改代表用户购物清单的list列表元素
def edit():
    id = input("请输入要修改的购物明细id :\n")
    # id-1 即为得到的购物明细项的索引
    index = int(id) - 1
    # 根据索引获取某个购物明细项
    item = shop_list[index]
    # 提示输入新的购买数量
    number = input("请输入新的购买数量:\n")
    # 修改item 的number
    item[1] = int(number)


# 删除已购买的商品明细项,就是删除代表用户购物清单的list列表的元素
def delete():
    id = input("请输入要删除的购物明细的id:\n")
    index = int(id) - 1
    # 直接根据索引项从清单中删除购物明细项
    del shop_list[index]

# 打印清单 退出程序
def payment() :
    # 打印清单
    shop_list()
    print("\n" * 3)
    print("欢迎下次光临!")
    # 退出程序
    os._exit(0)


cmd_dic = {'a': add, 'e': edit,'d': delete,'p': payment, 's': show_goods}


# 显示命令提示
def show_commad():
    # 等待命令
    cmd = input("请输入操作指令: \n" + "   添加(a)  修改(e)  删除(d)  结算(p)  超市商品(s)\n")
    # 用户输入的字符没有对应的指令
    if cmd not in cmd_dic:
        print("指令错误,请重新输入")
    else:
        cmd_dic[cmd]()


init_repository()
show_goods()
while True:
    show_list()
    show_commad()

运行结果如下:

发布了28 篇原创文章 · 获赞 17 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/boy123456_happy/article/details/101034719
今日推荐