• 第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.查看购买记录
    2.充值
    3.查询余额
    4.购物
    5.查看购物车
    [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 '
                                                        '33[31;1m[%s]33[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 33[41;1m[%s]33[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 '
                                                        '33[31;1m[%s]33[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 33[41;1m[%s]33[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 '
                                                        '33[31;1m[%s]33[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 33[41;1m[%s]33[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 '
                                                        '33[31;1m[%s]33[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 33[41;1m[%s]33[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
Copyright © 2020-2023  润新知