购物车

product_list = [['Iphone7', 5800],
                ['Coffee', 30],
                ['疙瘩汤', 10],
                ['Python Book', 99],
                ['Bike', 199],
                ['ViVo X9', 2499],

                ]
# 定义一个空字典用于存放商品
shopping_cart = {}
# 定义一个空列表用于存放用户信息
current_userinfo = []
db_file = r'db.txt'
while True:
    print('''
    1 登录
    2 注册
    3 购物
    ''')
    shopping = input("请选择你的操作:")
    if shopping == '1':
        over = True
        count = 0
        while over:
            if count == 3:
                print("错误次数过多退出")
                break
            username = input("请输入用户名:")
            userpasswd = input("请输入密码:")
            with open(db_file, 'r', encoding='utf-8') as user:
                for line in user:
                    line = line.strip('\n')
                    user_info = line.split(',')
                    username_of_db = user_info[0]
                    pwd_of_db = user_info[1]
                    balance_of_db = int(user_info[2])
                    if username == username_of_db and userpasswd == pwd_of_db:
                        print("登录成功")
                        # 将用户名字和余额存入列表中
                        current_userinfo = [username_of_db, balance_of_db]
                        print('用户信息为:', current_userinfo)
                        over = False
                        break
                else:
                    print('用户或密码错误')
                    count += 1
    elif shopping == '2': #开始注册你的用户
        username = input("请输入你的用户名:")
        while True:
            pwd1 = input("请输入你的密码:")
            pwd2 = input("请在此输入密码:")
            if pwd1 != pwd2:
                print('两次输入的不一致,请重新输入')
            else:
                break
        money = input("请输入你的余额:")
        with open(db_file, 'a', encoding='utf-8') as f:
            f.write('%s,%s,%s\n' % (username, pwd1, money))
    elif shopping == '3': #开始选购
        if len(current_userinfo)==0:
            print("请登录。。。。。")
        else:
            print("登录成功,开始购物")
            username_of_db=current_userinfo[0]
            balance_of_db=current_userinfo[1]
            print('尊敬的用户%s您的余额为%s祝您购物愉快'%(username_of_db,balance_of_db))
            over=True
            while over:
                for index,product in enumerate(product_list):
                    print(index,product)
                shopping=input("请输入商品编号,输入’q‘ 退出: ")
                if shopping.isdigit():
                    shopping=int(shopping)
                    if shopping <0 or shopping>= len(product_list):continue
                    pname=product_list[shopping][0]
                    pprice=product_list[shopping][1]
                    if balance_of_db >pprice:
                        if pname in shopping_cart: #判断商品是否已经在购物车中
                            shopping_cart[pname]['count']+=1
                        else:
                            shopping_cart[pname]={'pprice':pprice,'count':1}
                            balance_of_db-=pprice # 扣钱
                            current_userinfo[1]=balance_of_db #更新用户余额
                            print("Added product" + pname + " into shopping_cart,\033[42;1myour current\033[0m balance " + str(balance_of_db))
                    else:
                        print("余额不足,商品总额是{price},你还差{lack_price}".format(price=pprice,lack_price=(pprice-balance_of_db)))
                    print(shopping_cart)
                elif shopping =='q':
                    print('''
                    ---------------------------------已购买商品列表---------------------------------
                    id          商品                   数量             单价               总价
                    ''')
                    total_cost=0
                    for y,key in enumerate(shopping_cart):
                        print('%22s%18s%18s%18s%18s' %(
                            y,
                            key,
                            shopping_cart[key]['count'],
                            shopping_cart[key]['pprice'],
                            shopping_cart[key]['pprice'] * shopping_cart[key]['count']
                        ))
                        total_cost+=shopping_cart[key]['pprice'] * shopping_cart[key]['count']
                    print("""
                    您的总花费为:%s
                    您的余额为:%s
                    """ %(total_cost,balance_of_db))
                    while over:
                        inp=input("确认购买(yes/no): ")
                        if inp not in ['Y','y','N','n','yes','no']:continue
                        if inp in ['Y','y','yes']:
                            src_file=db_file
                            dst_filer=r'%s.swap' %db_file
                            with open(src_file,'r',encoding='uft-8') as read_f,\
                                open(dst_filer,'w',encoding='utf-8') as write_f:
                                for line in read_f:
                                    if line.startswith(username_of_db):
                                        l=line.strip('\n').split(',')
                                        l[-1]=str(balance_of_db)
                                        line=','.join(1)+'\n'
                                    write_f.write(line)
                            os.remove(src_file)
                            os.rename(dst_filer,src_file)
                            print('购买成功,请耐心发货')
                        shopping_cart={}
                        current_userinfo={}
                        over=False
                else:
                    print('非法操作')
    else:
        print('非法输入')

 

posted @ 2020-07-25 22:48  请别对我太好  阅读(122)  评论(0编辑  收藏  举报