简单购物车

Posted 肌力兔子。

tags:

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

数据结构:
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
......
]

功能要求:
基础要求:

1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表

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

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

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

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


扩展需求:

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

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

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-04-29 12:16:23
# @Author  : hjc (284738209@qq.com)
# @Link    : http://www.cnblogs.com/tootooman/
# @Version : 2


import os
import re
import time
import json

goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
]

userdb = \'userdb\'
if not os.path.isfile(userdb):
    db = open(userdb, \'w\', encoding=\'utf8\')
    db.write(\'{}\')
    db.close()

shopping_car = {}


flag = True

while flag:
    username = input(\'用户名:\').strip()
    password = input(\'密码:\').strip()
    with open(userdb, \'r+\') as users:
        users_data = json.load(users)
        if username in users_data:
            if password == users_data[username]:
                # os.path.isfile(username)
                check = input(\'是否要查看消费历史[y:查看/任意键:进入商城]:\').strip()
                f = open(username, \'r\', encoding=\'utf8\')
                if check == \'y\':
                    print(\'start\'.center(60, \'-\'))
                    for line in f:
                        print(line)
                    print(\'end\'.center(60, \'-\'))

                ret = \'\'
                f.seek(0)
                for line in f:
                    ret = re.findall(\'余额.*\', line)
                salary = int(ret[0].split(\'\')[-1])

                f.close()
                break
            else:
                print(\'用户名或密码错误。\')

        else:
            print(\'你不是会员!系统已自动帮你注册会员!\')
            users.seek(0)
            users_data[username] = password
            json.dump(users_data, users)
            while 1:
                salary = input(\'兜里有多少钱::\').strip()
                if salary.isdigit():
                    salary = int(salary)
                    f = open(username, \'w\', encoding=\'utf8\')
                    f.close()
                    flag = False
                    break
                else:
                    print(\'你兜里的不是钱!\')

while 1:
    title = \'\'\'
    %s
    %s
    %s
    \'\'\' % (\'\'.center(60, \'*\'), \'商品列表\'.center(60, \' \'), \'\'.center(60, \'*\'))
    print(title)
    for i in range(len(goods)):
        info = \'\'\'
        商品编号:%s    商品名称:%s    商品价格:%s
        \'\'\' % (i, goods[i][\'name\'], goods[i][\'price\'])
        print(info)
    choice = input(\'输入商品编号[q:结算]:\').strip()
    if choice.isdigit():
        choice = int(choice)
        if choice >= 0 and choice < len(goods):
            if salary >= goods[choice][\'price\']:
                goods_name = goods[choice][\'name\']
                goods_price = goods[choice][\'price\']
                salary -= goods_price
                if shopping_car.get(goods_name):
                    shopping_car[goods_name][\'total\'] += 1
                    print(\'\\033[1;32m%s\\033[0m已放到购物车,购买后兜里还剩 \\033[1;31m%s\\033[0m\' % (
                        goods_name, salary))
                else:
                    shopping_car[goods_name] = {}
                    shopping_car[goods_name][\'price\'] = goods_price
                    shopping_car[goods_name][\'total\'] = 1
                    print(\'\\033[1;32m%s\\033[0m已放到购物车,购买后兜里还剩 \\033[1;31m%s\\033[0m\' % (
                        goods_name, salary))
            else:
                print(\'兜里钱不够!兜里还剩 \\033[1;31m%s\\033[0m !\' % (salary,))
                while 1:
                    get_money = input(\'要不要借一点?[n:不要]:\').strip()
                    if get_money.isdigit():
                        get_money = int(get_money)
                        salary += get_money
                        print(\'借 钱 成 功!当前余额为:%s\' % (salary,))
                        break
                    elif get_money == \'n\':
                        break
                    else:
                        print(\'信不信我揍你。。。\')
        else:
            print(\'没有相关商品。\')
    elif choice == \'q\':
        if len(shopping_car) != 0:
            pay_time = time.strftime(\'%Y-%m-%d %H:%M:%S\', time.localtime())
            print(\'购物车信息:买完兜里还剩 \\033[1;31m%s\\033[0m\' % (salary))
            with open(username, \'a+\', encoding=\'utf8\') as f:
                f.write(\'%s\\n\' % (pay_time.center(50, \'=\')))
                for item in shopping_car:
                    shopping_list = \'\'\'
                    商品名称:%s    商品价格:%s    已买数量:%s    合计:%s
                    \'\'\' % (item,
                           shopping_car[item][\'price\'],
                           shopping_car[item][\'total\'],
                           shopping_car[item][\'total\'] *
                           shopping_car[item][\'price\'],
                           )
                    print(shopping_list.strip())
                    f.write(\'%s\\n\' % (shopping_list.strip()))
                f.write(\'余额:%s\\n\' % (salary))
            break
        else:
            print(\'没有买任何东西。\')
            break
View Code

 

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

Python简单的购物车小代码

简单的购物车代码

商城系统简单购物车结构设计代码实现

原生JavsScript实现简单购物车面向对象原生代码

用java代码写一个简单的网上购物车程序

python学习实例:写一个简单商城购物车的代码