购物车

import os, sys
import pandas as pd
import csv
import getpass

goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
]
f = open('UerInforMation.csv', 'a')  # 先建一个空的csv文件用来存用户数据,同时以追加的形式打开。
f.close()
products_car = []  # 创建一个空列表,存买的商品
print('*' * 50)
user_list = []  # 存放已经登录的用户
i = 100  # 设置任意的循环数

def shopping(cost):
    balance=int(cost)
    while True:
        user_cash = input('请输入你当前金额:').strip()
        if user_cash.isdigit:
            cash_start = user_cash
            user_cash = int(user_cash)
            user_cash+=balance
            print("这是你目前的总金额%d" %user_cash)
            flag=True
            while flag:
                for i, key in enumerate(goods):
                    print(i, key)
                number = input("请输入选择的物品编号").strip()
                if number.isdigit:
                    number = int(number)
                    if number <= len(goods) - 1:
                        if user_cash >= int(goods[number]['price']):

                            user_cash -= int(goods[number]['price'])
                            cashend = user_cash
                            products_car.append([goods[number]['name'], goods[number]['price']])
                            print("已加入购物车,你的余额为%d" % user_cash)
                            while True:
                                print("继续购买输入Y或者y,退出输入b")
                                userin = input('请输入选择:').strip()
                                if userin == 'Y' or userin == 'y':
                                    break
                                elif userin == 'b':
                                    print("这是你购买的物品")
                                    print('=' * 50)
                                    for key in products_car:
                                        print(key)
                                    print("你的余额为%d" % user_cash)
                                    print('=' * 50)
                                    save(username2, password2, 0, cash_start, products_car, cashend)
                                    sys.exit(0)
                                else:
                                    print("非法输入,重新输入")
                                    continue
                        else:
                            print("你的余额,不能购买该商品你的余额为%d,退出输入b,继续输入Y或y" % user_cash)
                            userin = input('请输入选择:').strip()
                            if userin == 'Y' or userin == 'y':
                                continue
                            elif userin == 'b':
                                print("这是你购买的物品")
                                print('=' * 50)
                                for key in products_car:
                                    print(key)
                                print("你的余额为%d" % user_cash)
                                print('=' * 50)
                                save(username2, password2, 0, cash_start, products_car, cashend)
                                sys.exit(0)
                            else:
                                print("非法输入,重新输入")
                                continue
                    else:
                        print("输入物品编号错误,重新输入")
                else:
                    print("输入物品编号错误,重新输入")
        else:
            print("输入金额有误")

def save(user,code,mark,start,data,end):
    test=[]
    T=[]
    with open('UerInforMation.csv','r',encoding='utf-8')as f:
        reader=csv.reader(f)
        for i,line in enumerate(reader):
                if i==0:
                    continue
                if len(line)==6:
                    test.append(line)
                    i=i+1
        for i,line in enumerate(test):
                if line[0]==user:
                    T.append([user,code,mark,start,data,end])
                else:
                    T.append(line)
    f=open('UerInforMation.csv','w',encoding='utf-8')
    f.close()
    data_tset=pd.DataFrame(columns=['用户名','密码','标记','初始金额','已买商品','所剩金额'])
    data_tset.to_csv('UerInforMation.csv',mode='a',index=False)
    with open('UerInforMation.csv','a+',encoding='utf-8')as f:
        writer=csv.writer(f)
        for row in T:
            writer.writerow(row)


while True:
    print("输入数字1创建用户:")  # 选择输入或者创建用户或者退出
    print("输入数字2登录:")
    print("输入数字3退出:")
    number = input()
    if number == '1':  # 数字1创建用户
        while 1:
            username = input("请输入用户名:")
            # 首先判断是否是第一次创建用户这里我用的是判断最开始的csv文件是否为空
            # 如果为空直接创建用户
            if os.path.getsize('UerInforMation.csv') == 0:
                # password=getpass.getpass("请输入密码:").strip()#为csv文件添加header,其实也可以用下面添加行的方法
                password = input("请输入密码:").strip()
                data_tset = pd.DataFrame(columns=['用户名', '密码', '标记', '初始金额', '已买商品', '所剩金额'])
                data_tset.to_csv('UerInforMation.csv', mode='a', index=False)
                with open('UerInforMation.csv', 'a+',
                          encoding='utf-8')as f:  # 向csv文件添加一行用户数据
                    csv_write = csv.writer(f)  # 这里0表示未被锁定如果为1表示已锁定
                    data_row = [username, password, '0', '0', 'None', '0']
                    csv_write.writerow(data_row)
                df = pd.read_csv('UerInforMation.csv')
                print('创建成功,是否退出创建,退出输入Y或者y,继续创建输入任意数字')
                quit = input("退出创建回到主页面输入Y或者y:").strip()
                if quit == 'y' or quit == 'Y':
                    break
                else:
                    continue
            else:  # 如果不为空再判断创建用户是否已经存在或已被锁定
                df = pd.read_csv('UerInforMation.csv')
                flag = 0
                for i in range(len(df)):
                    if str(df.iloc[i][2]) == '1' and str(df.iloc[i][0]) == username:
                        print("非法操作,用户%s已被锁定,系统将自动退出" % username)
                        sys.exit(1)
                    if str(df.iloc[i][0]) == username:
                        print("用户%s已存在,请回到主界面重新选择" % username)
                        flag = 1
                        break
                if flag == 1:
                    break
                if flag == 0:  # 判断通过后添加到csv文件
                    # password=getpass.getpass("请输入密码:").strip()
                    password = input("请输入密码:").strip()
                    with open('UerInforMation.csv', 'a+', encoding='utf-8')as f:
                        csv_write = csv.writer(f)
                        data_row = [username, password, '0', '0', 'None', '0']
                        csv_write.writerow(data_row)
                    print('创建成功,是否退出创建,退出输入Y或者y,继续创建输入任意数字')
                    quit = input("退出创建回到主页面输入Y或者y:").strip()
                    if quit == 'y' or quit == 'Y':
                        break
                    else:
                        continue
    # 数字2登录
    if number == '2':
        print("=" * 50)
        if os.path.getsize('UerInforMation.csv') == 0:
            print("检测到您并未创建用户,请先创建用户再进行登录")
            continue
        df = pd.read_csv('UerInforMation.csv')
        username2 = input("输入用户:").strip()
        # 判断该用户是否注册
        flag4 = 0
        for i in range(len(df)):
            if str(df.iloc[i][0]) == username2:
                flag4 = 1
                index = i

        if flag4 == 0:
            print("别乱来啊,你没有注册该用户,请注册后登录")
            continue
        # 判断用户是否被锁定
        for i in range(len(df)):
            if str(df.iloc[i][0]) == username2 and str(df.iloc[i][2]) == '1':
                print("用户已被锁定,系统将自动退出")
                sys.exit(1)
        # 验证密码是否正确
        print('=' * 50)
        n = 3
        flag2 = 0

        while n > 0:
            # password2=getpass.getpass("请输入密码:").strip()
            password2 = input("请输入密码:").strip()
            for i in range(len(df)):
                if str(df.iloc[i][0]) == username2 and str(df.iloc[i][1]) == password2:
                    # print("success2")
                    # df里的数据类型不同不能比较所以导出数据转类型再比较

                    flag2 = 1
                    break
            # 密码正确跳出循环
            if flag2 == 1:
                index = i
                break
            if flag2 == 0:
                n = n - 1
                print("密码错误,你还有%d次机会重新输入" % n)
        # 密码正确存入user_list并显示已经登录的用户
        if flag2 == 1:
            user_list.append(username2)
            print("******** 欢迎%s登录********" % username2)
            # 检查是否购买过商品,如果没有买过直接购买

            if str(df.iloc[index][4]) == 'None':
                shopping(0)

            # 买过商品,先询问是否打印历史购物信息
            else:
                # 先打印消费记录,然后输入金额会累积到上次余额
                print("这是你上次购买的商品")
                print(df.iloc[index][4])
                #                 for i,key in enumerate(df.iloc[index][4]):
                #                     print(i,key)

                print("这是你上次的余额%d" % df.iloc[index][5])

                # print("dvar",type(df.iloc[index][5]))
                shopping(df.iloc[index][5])
        # 密码错误,锁定用户并自动退出
        if flag2 == 0:
            save(username2, password2, 1, df.iloc[index][3], df.iloc[index][4], df.iloc[index][5])
            print("用户已被锁定,系统将会自动退出")
            sys.exit(1)
    # 数字3退出
    if number == '3':
        break
    i = i - 1
    if number != '1' and number != '2' and number != 3:
        print("乱输入啥呢你,再给你次机会好好输入")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值