用户登录系统

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

# 先建一个空的csv文件用来存用户数据,同时以追加的形式打开。
f = open('UerInforMation.csv', 'a')
f.close()
print('*' * 50)
# 存放已经登录的用户
user_list = []
# 设置任意的循环数
i = 100
while i > 0:
    # 选择输入或者创建用户或者退出
    print("输入数字1创建用户:")
    print("输入数字2登录:")
    print("输入数字3退出:")
    number = input()
    # 数字1创建用户
    if number == '1':
        while 1:
            username = input("请输入用户名:")
            # 首先判断是否是第一次创建用户这里我用的是判断最开始的csv文件是否为空
            # 如果为空直接创建用户
            if os.path.getsize('UerInforMation.csv') == 0:
                # print("success")
                # 为csv文件添加header,其实也可以用下面添加行的方法
                #password = getpass.getpass("请输入密码:").strip()
                password = input("请输入密码:").strip()
                data_tset = pd.DataFrame(columns=['用户名', '密码', '标记'])
                data_tset.to_csv('UerInforMation.csv', mode='a', index=False)
                # 向csv文件添加一行用户数据
                # 这里0表示未被锁定如果为1表示已锁定
                with open('UerInforMation.csv', 'a+', encoding='utf-8')as f:
                    csv_write = csv.writer(f)
                    data_row = [username, password, '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
                # 判断通过后添加到csv文件
                if flag == 0:
                    #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]
                        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
                break
        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)
        # 判断用户是否已经登录
        flag3 = 0
        for user in user_list:
            if user == username2:
                flag3 = 1
                print("用户%s已登录!请勿重复" % username2)
                break
        if flag3 == 1:
            continue
        # 验证密码是否正确
        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:
                break
            if flag2 == 0:
                n = n - 1
                print("密码错误,你还有%d次机会重新输入" % n)
        # 密码正确存入user_list并显示已经登录的用户
        if flag2 == 1:
            user_list.append(username2)
            print("******** 欢迎%s登录********" % username2)
            print("下面是已登录的用户,是否继续登录")
            for name in user_list:
                print(name)
            print("继续登录输入Y或者y,输入任意数字退出系统")
            choice = input()
            if choice == 'Y' or choice == 'y':
                continue
            else:
                sys.exit(0)
        # 密码错误,锁定用户并自动退出
        if flag2 == 0:
            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) == 3:
                        test.append(line)
                        i = i + 1
                for i, line in enumerate(test):
                    if line[0] == username2:
                        T.append([line[0], line[1], '1'])
                        print("sivnr")
                    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)
            #             data_tset=pd.DataFrame(columns=['用户名','密码','标记'])
            #             data_tset.to_csv('UerInforMation.csv',mode='a',index=False)
            print("用户已被锁定,系统将会自动退出")
            sys.exit(1)
    # 数字3退出
    if number == '3':
        break
    i = i - 1
    if number != '1' and number != '2' and number != 3:
        print("乱输入啥呢你,再给你次机会好好输入")

 

你可能感兴趣的:(pychon开荒)