1. 程式人生 > >Python專案2---實現使用者登入介面(含檔案操作)

Python專案2---實現使用者登入介面(含檔案操作)

第一步:讀取使用者賬號密碼檔案,將其內容按賬號為key,密碼為值,儲存在一個字典中
第二步:讓使用者輸入賬號和密碼
第三步:判斷賬號是否在字典的key中
	1有,檢查是否賬號被鎖定(判斷行開始是否有!)
		沒有鎖定
			再檢查密碼是否匹配
			1匹配:登入成功
			2不匹配:重新輸入or退出
			密碼錯誤3次,鎖定賬號
		鎖定
			提示資訊
	2沒有,讓使用者重新輸入賬號or退出
第四步:鎖定密碼錯誤3次的賬號,在賬號檔案中該賬號密碼對應的行新增一個!放在密碼開始

from fun import *
with open("users data.txt","r") as f:
    user_data = f.read()
    user_data = user_data.split('\n')
    data_dict = dict([it.split(',') for it in user_data])#將生的成列表轉換成字典
    f.close()
i = 1
while(i):
    ID = input("請輸入賬號:")
    password = input("請輸入密碼:")
    if ID in data_dict.keys():
        if data_dict[ID][0] == '!':
            print("您的賬號已經被鎖定,請聯絡管理員!")
            break
        else:
            for times in range(3):
                if password == data_dict[ID]:
                    print("登入成功")
                    i = 0
                    break
                else:
                    if times != 2:
                        choice =  input("密碼錯誤,按1重新輸入,按2退出:")
                        if choice == '1':
                            password = input("請輸入密碼:")
                            continue
                        else:
                            print("您已經退出登入系統")
                            i = 0
                            break
                    else:
                        print("密碼錯誤3次,您的賬戶已經被凍結")
                        lock(user_data,ID)
                        i = 0
                        break
    else:
        choice = input("賬戶不存在,按1重新輸入,按2退出:")
        if choice == '1':
            continue
        else:
            print("您已經退出登入系統")
            break


fun.py
import os,shutil
def lock(user_data,ID):
    with open("user_data_lock.txt","w") as f:
        for it in user_data:
            if it.split(',')[0] == ID:
                it = it.split(',')[0]+',!'+it.split(',')[1]
                f.write(it+'\n')
            else:
                f.write(it+'\n')
        f.close()
    os.unlink("users data.txt")
    shutil.move("user_data_lock.txt","users data.txt")

賬戶檔案格式: