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("乱输入啥呢你,再给你次机会好好输入")