第2周作业1

1.优化购物程序,购买时允许用户选择购买多少件,

2.允许多用户登录,下一次登录后,继续按上次的余额继续购买 ,可以充值 (每个用户有独立的保存文件)

3.允许用户查看之前的购买记录(记录要显示商品购买时间)

4.商品列表分级展示,比如:

  第一层菜单:

  1.家电类

  2.衣服类

  3.手机类

  4.车类

  ...

  选择一个,车类,进入第2层

  1。BMW X3 33333

  2.Audi Q5 33333

  3.Pasate 33335

  4.Tesla Model_3 430000

  5.Tesla Model S 888888

购物车:

1. 商品信息- 数量、单价、名称

2. 用户信息- 帐号、密码、余额

3. 用户可充值

4. 购物历史信息

5. 允许用户多次购买,每次可购买多件

6. 余额不足时进行提醒

7. 用户退出时 ,输出档次购物信息

8. 用户下次登陆时可查看购物历史

9. 商品列表分级显示

 

 5.显示已购买商品时,如果有重复的商品,不打印多行,而是在一行展示,如

  id   p_name        num    total_price

        1.  TeslaModelS   2         3434343434

   2.  Coffe        2   60

   3. Bike         1         700

###

Blog一定要写

readme一定要写

流程图 一定画

一定不要copy

会用到 文件 ,datetime模块,json

折磨啊,已经被搞晕,还有需要完善的地方。

 

#!/usr/bin/env python
# -*-coding:utf-8-*-
# __author__="Liudong"
import json
if __name__ == '__main__':
    # user_info={'root':[123,5000],'sys':[123,10000],'admin':[123,200000]}
    # json.dump(user_info, open('user_info.txt','w'))#把用户信息以user:pass:amount的格式写入文本文件
    # purchase_log={'root':[['iphone7' ,2 ,'2016-6-10'],['西装',1 ,'2015-5-2']],
    #             'sys':[['乐视电视',1,'2016-9-20'] ,['华为',5,'2016-7-15']],
    #             'admin':[['乐视电视',1,'2016-8-10'] ,['运动服',3,'2016-10-10']]
    #              }
    # json.dump(purchase_log,open('purchase_log.txt','w',encoding='utf-8'))

    shop_car = []
    welcom_msg = 'Welcome to Shopping Home'.center(50, '-')
    print(welcom_msg)
    for i in range(3):
        username = input('Please input your username:[q=quit]')
        if username == 'q':
            exit()
        with open('user_info.txt', 'r', encoding='utf-8') as user_account:  # 读取用户信息
            user_info = json.load(user_account)  # 用json读取文件,字典格式
        for user_name in user_info.keys():  # 判断用户名是否存在
            # print(user_info[user_name][0])
            # print(user_name)
            # print(username)
            j = 0
            while j < 3:  # 给3次输入密码机会
                password = input('Please input your password:')
                if password == str(user_info[user_name][0]):
                    print('login successed! Have a happy shopping Time!')
                    while True:
                        print('#' * 50)
                        print('1.查看购买记录\n2.充值\n3.查询余额\n4.购物\n5.查看购物车\n[q:quit]')
                        user_want = input('What do you do?')
                        if user_want == 'q':
                            exit()
                        if user_want == '1':
                            print('user %s purchase log list:'.center(50, '*') % user_name)
                            with open('purchase_log.txt', 'r', encoding='utf-8') as purchase_log:  # 读取购买记录文件
                                user_purchase_log = json.load(purchase_log)
                                print(user_purchase_log[username])
                        if user_want == '2':
                            print('*' * 50)
                            charge_amount = input('please input amount you want to charge:')
                            # user_info_amountw = json.load('user_info.txt', 'r')
                            user_info[username][1] += int(charge_amount)
                            # print(user_info)
                            json.dump(user_info, open('user_info.txt', 'w'))
                            print('charge successed!')
                        if user_want == '3':
                            print('*' * 50)
                            print('your account is ¥%s' % user_info[user_name][1])
                        if user_want == '4':
                            product_list = {
                                '家电类': [('乐视电视', 7000), ('海尔冰箱', 5000), ('小天鹅洗衣机', 2000)],
                                '衣服类': [('西装', 8000), ('休闲夹克', 2000), ('运动服', 800)],
                                '手机类': [('Iphone7', 7000), ('小米Note', 2000), ('华为', 1000)],
                                '车类': [('奔驰ML', 800000), ('特斯拉', 700000), ('奥迪Q7', 750000)]}
                            class_list = []  # 获取序列号和字典key组成的列表
                            class2 = []
                            while True:
                                print("Products list".center(50, '-'))
                                for index, item in enumerate(product_list):  # 打印序列号和类别
                                    print(index, item)
                                    class_list = [index, item]  # 将序列号和商品类别key保存成列表
                                    class2.append(str(class_list[1]))  # class2用于保存用户选择商品类key值
                                # print(class2)                             #存储类别用于后面选择对应类别
                                print('End'.center(50, '-'))
                                class1_choice = input('choose class number 0-3 to enter:(q:quit)').strip()
                                if class1_choice == '0':  # 用户选择第一类商品
                                    class_choice = product_list[class2[0]]  # 根据商品类别和对应的下标号,获取商品列表
                                    # print(class_choice)
                                    for item in enumerate(class_choice):  # 从第1级类中,枚举各个商品
                                        index = item[0]
                                        # print(item)
                                        p_name = item[1][0]
                                        p_price = item[1][1]
                                        print(index, '.', p_name, p_price)
                                    buy_item = input('What do you want to buy?:[q=quit,c=check]')
                                    if buy_item.isdigit():  # 肯定为选择商品
                                        buy_item = int(buy_item)
                                        if buy_item < len(class_choice):
                                            # print(class1_choice)
                                            # print(class_list)
                                            p_item = [p_name[1]]
                                            # print(p_item)
                                            # print(user_info[user_name][1])
                                            if p_price <= user_info[user_name][1]:  # 买的起
                                                shop_car.append(p_item)  # 放入购物车
                                                user_info[user_name][1] -= p_price  # 扣钱
                                                print(
                                                    'Added [%s] into your shop car,your current balance is '
                                                    '\033[31;1m[%s]\033[0m' % (p_item, user_info[user_name][1]))
                                                # 字体加颜色
                                            else:
                                                print('Your balance is [%s],cannot afford this product..' %
                                                      user_info[user_name][1])

                                    else:
                                        if class1_choice == 'q' or class1_choice == 'quit':
                                            print('purchased products as blew:'.center(40, '*'))
                                            for item in shop_car:
                                                print(item)
                                                print('END'.center(40, '*'))
                                                print('Your balance is [%s]' % user_info[user_name][1])
                                                print('bye.')
                                            exit()
                                        elif class1_choice == 'c' or class1_choice == 'check':
                                            print('purchased products as blew:'.center(40, '*'))
                                            for item in shop_car:
                                                print(item)
                                            # 背景加颜色
                                            print('Your balance is \033[41;1m[%s]\033[0m' % user_info[user_name][1])
                                if class1_choice == '1':  # 用户选择第一类商品
                                    class_choice = product_list[class2[0]]  # 根据商品类别和对应的下标号,获取商品列表
                                    # print(class_choice)
                                    for item in enumerate(class_choice):  # 从第1级类中,枚举各个商品
                                        index = item[0]
                                        # print(item)
                                        p_name = item[1][0]
                                        p_price = item[1][1]
                                        print(index, '.', p_name, p_price)
                                    buy_item = input('What do you want to buy?:[q=quit,c=check]')
                                    if buy_item.isdigit():  # 肯定为选择商品
                                        buy_item = int(buy_item)
                                        if buy_item < len(class_choice):
                                            # print(class1_choice)
                                            # print(class_list)
                                            p_item = [p_name[1]]
                                            # print(p_item)
                                            # print(user_info[user_name][1])
                                            if p_price <= user_info[user_name][1]:  # 买的起
                                                shop_car.append(p_item)  # 放入购物车
                                                user_info[user_name][1] -= p_price  # 扣钱
                                                print(
                                                    'Added [%s] into your shop car,your current balance is '
                                                    '\033[31;1m[%s]\033[0m' % (p_item, user_info[user_name][1]))
                                                # 字体加颜色
                                            else:
                                                print('Your balance is [%s],cannot afford this product..' %
                                                      user_info[user_name][1])

                                    else:
                                        if class1_choice == 'q' or class1_choice == 'quit':
                                            print('purchased products as blew:'.center(40, '*'))
                                            for item in shop_car:
                                                print(item)
                                                print('END'.center(40, '*'))
                                                print('Your balance is [%s]' % user_info[user_name][1])
                                                print('bye.')
                                            exit()
                                        elif class1_choice == 'c' or class1_choice == 'check':
                                            print('purchased products as blew:'.center(40, '*'))
                                            for item in shop_car:
                                                print(item)
                                            # 背景加颜色
                                            print('Your balance is \033[41;1m[%s]\033[0m' % user_info[user_name][1])
                                if class1_choice == '2':  # 用户选择第一类商品
                                    class_choice = product_list[class2[0]]  # 根据商品类别和对应的下标号,获取商品列表
                                    # print(class_choice)
                                    for item in enumerate(class_choice):  # 从第1级类中,枚举各个商品
                                        index = item[0]
                                        # print(item)
                                        p_name = item[1][0]
                                        p_price = item[1][1]
                                        print(index, '.', p_name, p_price)
                                    buy_item = input('What do you want to buy?:[q=quit,c=check]')
                                    if buy_item.isdigit():  # 肯定为选择商品
                                        buy_item = int(buy_item)
                                        if buy_item < len(class_choice):
                                            # print(class1_choice)
                                            # print(class_list)
                                            p_item = [p_name[1]]
                                            # print(p_item)
                                            # print(user_info[user_name][1])
                                            if p_price <= user_info[user_name][1]:  # 买的起
                                                shop_car.append(p_item)  # 放入购物车
                                                user_info[user_name][1] -= p_price  # 扣钱
                                                print(
                                                    'Added [%s] into your shop car,your current balance is '
                                                    '\033[31;1m[%s]\033[0m' % (p_item, user_info[user_name][1]))
                                                # 字体加颜色
                                            else:
                                                print('Your balance is [%s],cannot afford this product..' %
                                                      user_info[user_name][1])

                                    else:
                                        if class1_choice == 'q' or class1_choice == 'quit':
                                            print('purchased products as blew:'.center(40, '*'))
                                            for item in shop_car:
                                                print(item)
                                                print('END'.center(40, '*'))
                                                print('Your balance is [%s]' % user_info[user_name][1])
                                                print('bye.')
                                            exit()
                                        elif class1_choice == 'c' or class1_choice == 'check':
                                            print('purchased products as blew:'.center(40, '*'))
                                            for item in shop_car:
                                                print(item)
                                            # 背景加颜色
                                            print('Your balance is \033[41;1m[%s]\033[0m' % user_info[user_name][1])
                                if class1_choice == '3':  # 用户选择第一类商品
                                    class_choice = product_list[class2[0]]  # 根据商品类别和对应的下标号,获取商品列表
                                    # print(class_choice)
                                    for item in enumerate(class_choice):  # 从第1级类中,枚举各个商品
                                        index = item[0]
                                        # print(item)
                                        p_name = item[1][0]
                                        p_price = item[1][1]
                                        print(index, '.', p_name, p_price)
                                    buy_item = input('What do you want to buy?:[q=quit,c=check]')
                                    if buy_item.isdigit():  # 肯定为选择商品
                                        buy_item = int(buy_item)
                                        if buy_item < len(class_choice):
                                            # print(class1_choice)
                                            # print(class_list)
                                            p_item = [p_name[1]]
                                            # print(p_item)
                                            # print(user_info[user_name][1])
                                            if p_price <= user_info[user_name][1]:  # 买的起
                                                shop_car.append(p_item)  # 放入购物车
                                                user_info[user_name][1] -= p_price  # 扣钱
                                                print(
                                                    'Added [%s] into your shop car,your current balance is '
                                                    '\033[31;1m[%s]\033[0m' % (p_item, user_info[user_name][1]))
                                                # 字体加颜色
                                            else:
                                                print('Your balance is [%s],cannot afford this product..' %
                                                      user_info[user_name][1])

                                    else:
                                        if class1_choice == 'q' or class1_choice == 'quit':
                                            print('purchased products as blew:'.center(40, '*'))
                                            for item in shop_car:
                                                print(item)
                                                print('END'.center(40, '*'))
                                                print('Your balance is [%s]' % user_info[user_name][1])
                                                print('bye.')
                                            exit()
                                        elif class1_choice == 'c' or class1_choice == 'check':
                                            print('purchased products as blew:'.center(40, '*'))
                                            for item in shop_car:
                                                print(item)
                                            # 背景加颜色
                                            print('Your balance is \033[41;1m[%s]\033[0m' % user_info[user_name][1])

                        if user_want == '5':
                            print(shop_car)
                else:
                    print('Invalid username or password...')
                    print('this is the %d time(s)' % (j + 1))
                    j += 1
            else:
                print('Forget password? Please send a mail to Administrator,bye')
                user_account.close()
                exit()
View Code

 

转载于:https://www.cnblogs.com/ld1977/p/5987328.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值