# auth marcuya
'''
作業:編寫登陸模塊
1.輸入用戶名和密碼
2.認證成功顯示歡迎信息
3.輸錯3次後鎖定用戶
設計思路:
1.用戶信息保存文件有5個字段:序號,用戶名,密碼,密碼輸入錯誤次數,是否鎖定
2.密碼輸入錯誤次數大於2,鎖定字段為TRUE,用戶不能登陸'''
import openpyxl
while True:
#獲取用戶輸入的用戶名和密碼
print()
_username = input("please input username:")
_password = input("please input password:")
# 打開文件
userInfoFile = openpyxl.load_workbook("homeWork1CountInfo.xlsx")
userInfoSheet = userInfoFile.active
#errorcount = userInfoSheet.cell(row=2, column=4)
#print(errorcount.value)
#errorcount.value = 3
#userInfoFile.save("homeWork1CountInfo.xlsx")
#逐行輪詢
for rows in userInfoSheet.iter_rows():
no = rows[0]
username = rows[1]
password = rows[2]
errorCount = rows[3]
lock = rows[4]
#print("{} {} {} {} {}".format(no.value, username.value, password.value, errorCount.value, lock.value))
if _username == username.value:
#賬戶被鎖定
if lock.value == True:
print("too many error count to input, the user {user} is locked,please contact administrator!".format(user=username.value))
break
#密碼正確,此處需要把值統一為字符類型對比
elif _password == str(password.value):
print("welcome user {user} login !".format(user = username.value))
#將輸入錯誤次數置0
userInfoSheet.cell(row=(no.value + 1), column=4).value = 0
userInfoFile.save("homeWork1CountInfo.xlsx")
break
else:
#密碼錯誤,密碼輸入錯誤次數+1
errorCount.value = errorCount.value + 1
userInfoSheet.cell(row=(no.value+1), column=4).value = errorCount.value
userInfoFile.save("homeWork1CountInfo.xlsx")
print("invalid username or password")
#密碼輸入錯誤次數大於等於3,鎖定賬戶
if errorCount.value > 2:
lock.value = True
userInfoSheet.cell(row=(no.value+1), column=5).value = True
userInfoFile.save("homeWork1CountInfo.xlsx")
break
else:
break