购物车程序

Posted 一个好人的博客园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了购物车程序相关的知识,希望对你有一定的参考价值。

购物车程序:

1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表

2、允许用户根据商品编号购买商品

3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒

4、可随时退出,退出时,打印已购买商品和余额

5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示

6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买

7、允许查询之前的消费记录

 

 

#_*_coding:utf-8_*_
\'\'\'
user_passwd 文件内容
{\'user01\':\'123456\',\'user02\':\'123456\',\'user03\':\'123456\'}

user_cart 文件内容
{\'user01\': {"工资":\'\', \'余额\':\'\', \'购物车\': []},\'user02\': {"工资":\'\', \'余额\':\'\', \'购物车\': []},\'user03\': {"工资":\'\', \'余额\':\'\', \'购物车\': []},}

product_list 文件内容(仅供打印)
货号:001 |商品名称:iphone 6 |价格:5888元
货号:002 |商品名称:Mac Pro |价格:12000元
货号:003 |商品名称:Coffer |价格:31元
货号:004 |商品名称:Python Alex |价格120元

product_price 文件内容
{\'001\':\'5888\',\'002\':\'12000\',\'003\':\'31\',\'004\':\'120\'}

\'\'\'

import os
from prettytable import PrettyTable


def pretty_table_list(*arg):  # 定义一个打印meun表的函数
    goodslist = PrettyTable(["ID", "功能菜单"])
    goodslist.align["功能菜单"] = "l"  # l 左对齐 r右对齐,默认居中
    goodslist.padding_width = 2  # 填充的宽度 [左右两边的像素]
    goodslist.add_row(["1", "查询商品列表"])
    goodslist.add_row(["2", "查询购物车"])
    goodslist.add_row(["3", "开始购物"])
    goodslist.add_row(["4", "退出"])
    print(goodslist)


def check_user():  # 定义个用户登录模块,然并卵,挺low的
    with open(\'user_passwd\',\'r\',encoding=\'utf-8\') as f:
        a =f.readline()  # 文件内的字符串存在形式{\'user01\': \'123456\', \'user02\': \'123456\', \'user03\': \'123456\'}
        username = eval(a) # 此时字符串已经成功字典
    while True:
        user_name = input(\'输入用户名:\\n\')
        if user_name not in username:
            continue
        else:
            break
    keep_going = True
    while keep_going:
        userpasswd = input(\'输入{0}密码:\\n\'.format(user_name))
        if userpasswd == username[user_name]:
            return user_name
        elif len(userpasswd) ==0 or userpasswd != username[user_name]:
            a = input(\'按回车继续,或任意键退出。\\n\')
            if len(a) == 0:
                keep_going = True
            elif len(a) != 0:
                keep_going = False
                return False


def print_product_list(*arg):  # 定义一个打印商品列表的函数
    with open(\'product_list\',\'r\',encoding=\'utf-8\') as f:
        for line in f:
            print(line.strip())


def fetch_cart_list(name):  # 定义个查看购物车的函数
    with open(\'user_cart\', \'r\', encoding=\'utf-8\') as old_cart:
        for line in old_cart:
            cart = eval(line)  # 将user_cart文件读出的内容,转换成字典给cart
        if len(cart[name][\'购物车\']) == 0:
            print("购物车为空")  # 033这个我还是不会用
        else:
            print(cart[name][\'购物车\'])
    pass


def buy(name):  # 定义一个购物车的函数
    with open(\'user_cart\',\'r\',encoding=\'utf-8\') as old_cart,\\
            open(\'product_price\',\'r\',encoding=\'utf-8\') as p_p,\\
            open(\'product_name\',\'r\',encoding=\'utf-8\') as p_n: # 打开老用户购物车文件,写一个新购物车文件
        for line in old_cart:
            cart = eval(line)  # 将user_cart文件读出的内容,转换成字典给cart
        for line in p_p:
            price = eval(line)  # 将product_price文件读出的内容,转换成字典给price
        for line in p_n:
            goods = eval(line)  # 将product_name文件读出的内容,转换成字典给goods

        # print(type(cart),cart)
        # print(type(price),price)
        # print(type(goods),goods)
        # print(type(cart[name][\'购物车\']), cart[name][\'购物车\'])

        keep_going = True
        while True:
            balance = input("输入预算金额:\\n")  # 用这个方法可以把用户输入非数字内容的报错消除,挺low的,但是可以用
            try:
                balance = int(balance)
                break
            except:
                continue

        while keep_going:
            print_product_list()  #调用读货物架的函数
            cart_number = input("输入需要的物品编号:\\n")
            if cart_number in goods:
                if balance - int(price[cart_number]) > 0:
                    a = goods[cart_number]
                    cart[name][\'购物车\'].append(a)
                    print(a)
                    balance = balance - int(price[cart_number])
                    kp = input("继续购买按任意键,或按q退出")
                    if kp != \'q\' or len(kp) == 0:
                        keep_going = True
                    else:
                        keep_going = False
                elif balance - int(price[cart_number]) < 0:
                    print("余额不足,请重新输入。\\n")
                    print(cart[name][\'购物车\'])
                    kp = input("继续购买按任意键,或按q退出")
                    if kp != \'q\' or len(kp) == 0:
                        keep_going = True
                    else:
                        keep_going = False

        with open(\'user_cart-new\', \'w\', encoding=\'utf-8\') as new_cart:
            new_cart.write(str(cart))
    os.rename(\'user_cart\',\'user_cart_bk\')
    os.rename(\'user_cart-new\',\'user_cart\')
    os.remove(\'user_cart_bk\')


def main():  # 程序开始的地方
    name = check_user()
    while True:
        pretty_table_list()
        meun_dic = {
            \'1\': print_product_list,
            \'2\': fetch_cart_list,
            \'3\': buy,
            \'4\': exit
        }
        choice = input(">>>输入操作编号").strip()
        if len(choice) == 0 or choice not in meun_dic:
            continue
        elif choice == 4:
            break
        else:
            meun_dic[choice](name)

if __name__ == "__main__":
    main()
View Code

 

以上是关于购物车程序的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

将对象列表从片段传递到 recyclerView 适配器

Vue实现购物小球抛物线的方法实例

如何使用实时数据从 RecyclerView 中删除项目?

python-三级菜单和购物车程序代码(补发)

购物车程序代码(购物基本功能)