码迷,mamicode.com
首页 > 编程语言 > 详细

python购物车(第二周)

时间:2017-10-21 00:18:33      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:状态   读取   bsp   [1]   span   ping   数据类型   check   代码   

一.作业需求:

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

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

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

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

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

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

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

二.思路

1.涉及的内容有文件操作,还有字典、列表、元组、等操作

2.将用户,密码,商城余额,购物商品,商品数量存成字典,保存数据,写入模块可以使用json,pickle

3.可以将用户,密码,余额写在一个文件,将另一个文件存该用户的购物车列表,也可以写在一起(我这里写在了一起)

4.将商品写成列表中的元组,例如: P_list = [(‘Iphone‘,‘5700‘)]

5.商城余额减去商品价格做判断,用文件操作字典,不够可以充值并修改字典文件的value值

6.将购物的商品列表最后写入到文件的字典中,方便下次查询使用例如:user_list[user][‘salary‘]

三.流程图

待更新:

四.初始化用户信息代码:

技术分享
user_list = {
    test1: {
        username: test000,
        userpasswd: 123456,
        salary: ‘‘,
        shop_car: ‘‘,
        shop_car_list: ‘‘
    }
}

f = open(shopping_db, wb)
pickle.dump(user_list, f)
f.close()
View Code

五.购物车代码

技术分享
f = open(shopping_db, rb) #读取字典操作
user_list = pickle.load(f)
f.close()

def wirte_logout():  #写入字典操作
    f = open(shopping_db, wb)
    pickle.dump(user_list, f)
    f.close()
    return
goods_list = [            #商品列表
    (IPone, 5800),
    (Mac Pro, 12000),
    (MI盒子, 199),
    (LG显示器23.6, 849)
]
def index_page():
    page = ‘‘‘
[0]老用户登录 [1]新用户登陆 [2]浏览商品

‘‘‘
    welcome = ( ‘‘‘\033[32;1m欢迎登陆购物车作业系统\033[0m‘‘‘)
    print(welcome,\n,page)
    return

def login():
    print(\n)
    global user
    count = 0
    while True:
        if count < 3:
            user = input(用户名: )
            password = input(密 码: )
            if user in user_list.keys():
                if user == user_list[user][username] and password == user_list[user][userpasswd]:
                    print(\n‘‘欢迎登录!你的余额是:\033[32;1m  %s\033[0m % user_list[user][salary],\n)
                    break
                else:
                    print(用户名或密码不正确,请重新登录!)
            else:
                user_choice = input(您不是老用户,是新用户的话按y写入系统按n重新登陆:(y/n))
                if user_choice == y:
                    add_user()
                    break
                elif user_choice == n:
                    pass
            count += 1
        else:
            sys.exit(超出登录次数!登录失败)
    return


def add_user():
    global user
    exit_flag = False
    print(\n)
    while not exit_flag:
        username = input(请输入你的用户名:)
        if username in user_list.keys():
            print(\n用户名已存在,请输入其他名称\n)
        else:
            exit_flag = True
    userpasswd = input(请输入你的密码)
    user_list[username] = {}
    user_list[username][username] = username
    user_list[username][userpasswd] = userpasswd
    user_list[username][salary] = ‘‘
    user_list[username][shop_car] = ‘‘
    user_list[username][shop_car_list] = ‘‘
    print(\n %s,欢迎首次登陆请选购商品 % username, \n)
    user = user_list[username][username]
    return

def print_product_list():
    print(\n产品列表:\n)
    for item in enumerate(goods_list):
        index = item[0]
        p_name = item[1][0]
        p_price = item[1][1]
        print(index, :, p_name, p_price)
    return


def printending():
    print(之前购买的商品.center(50, -))
    for item in user_list[user][shop_car]:
        a = user_list[user][shop_car].index(item)
        print(\033[32;1m  商品:%s  价格:%s  数量:%s \033[0m % (
        user_list[user][shop_car][a][0], user_list[user][shop_car][a][1], user_list[user][shop_car_list][a]))
    print(End.center(58, -))
    print(\033[32;1m  余额是:%s\033[0m % user_list[user][salary])
    print(End.center(58,-),\n)
    return



exit_flag = False

while not exit_flag:
    index_page()

    index_user_choice = input(请输入您要进行的操作:)

    if index_user_choice == 0:
        login()
        exit_flag = True
    elif index_user_choice == 1:
        add_user()
        exit_flag = True
    elif index_user_choice == 2:
        print_product_list()
    else:
        print(输入操作无效!)

print(Begin The Shopping.center(80, -), \n)

exit_flag2 = False

while not exit_flag2:
    if not user_list[user][salary]:
        salary = input(你的余额为0,请输入金额: )
        if salary.isdigit():
            salary = int(salary)
            user_list[user][salary] = salary
        else:
            print(数据类型不正确,请输入一个正确的数字!)
            continue
    else:
        salary = user_list[user][salary]
    if not user_list[user][shop_car]:
        shop_car = []
        shop_car_list = []
    else:
        shop_car = user_list[user][shop_car]
        shop_car_list = user_list[user][shop_car_list]
    print_product_list()
    print(‘‘‘
[q=quit,c=check,l=logout,r=rechage]
‘‘‘)
    user_choice = input(请问你想购买什么?)
    print (shop_car)
    if user_choice.isdigit():
        user_choice = int(user_choice)
        if user_choice < len(goods_list):
            p_item = goods_list[user_choice]
            if p_item[1] <= salary:
                if p_item not in shop_car:
                    shop_car.append(p_item)
                    shop_car_list.append(1)
                    user_list[user][shop_car] = shop_car
                    user_list[user][shop_car_list] = shop_car_list
                    salary -= p_item[1]
                    user_list[user][salary] = salary
                    print(\033[32;1m 添加了:%s,价格是:%s,余额:%s\033[0m % (p_item[0], p_item[1], user_list[user][salary]), \n)
                else:
                    item_num = shop_car_list[shop_car.index(p_item)] + 1
                    shop_car_list[shop_car.index(p_item)] = item_num
                    user_list[user][shop_car_list] = shop_car_list
                    salary -= p_item[1]
                    user_list[user][salary] = salary
                    print(\033[32;1m 在购物车上添加了:%s,价格是:%s,你的余额是:%s\033[0m % (p_item[0], p_item[1], user_list[user][salary]), \n)
            else:
                print(\033[32;1m你的余额是: %s,余额不足购买!\033[0m % user_list[user][salary], \n)
        else:
            print(你选择的商品不存在!, \n)
    else:
        if user_choice == q or user_choice == quit:
            printending()
            print(Bye %s % user)
            wirte_logout()
            exit_flag2 = True
        elif user_choice == c or user_choice == check:
            printending()
        elif user_choice == l or user_choice == logout:
            printending()
            login()
        elif user_choice == r or user_choice == rechage:
            salary_change = input(请输入充值金额:)
            if salary_change.isdigit():
                salary_change = int(salary_change)
                salary += salary_change
                user_list[user][salary] = salary
            else:
                print(数据类型不正确,请输入一个正确的数字!)
                continue
        else:
            print(请输入合法字符!, \n)
View Code

 

python购物车(第二周)

标签:状态   读取   bsp   [1]   span   ping   数据类型   check   代码   

原文地址:http://www.cnblogs.com/sean-yao/p/7702389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!