iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
0
自我挑戰組

Python 30天學習日誌系列 第 26

Day26-檔案應用(帳號、密碼管理系統)

昨天已經有些許檔案處理的概念,今天就趕緊試試應用吧!

目標:製作出簡單的帳號、密碼管理系統

要有能夠新增、刪除、修改及顯示帳號密碼的系統,以下為預期模樣:
https://ithelp.ithome.com.tw/upload/images/20181110/20112078KTbaLcoNTc.png

下面就是我參考書中範例撰寫的程式碼:

#定義主畫面
def menu():
    print("帳號、密碼管理系統")
    print("=========================")
    print("1. 輸入帳號、密碼")
    print("2. 顯示帳號、密碼")
    print("3. 修  改  密  碼")
    print("4. 刪除帳號、密碼")
    print("0. 結  束  程  式")
    print("=========================")

#讀取記事本裡的資料
def ReadData(): 
    #with/as節省close()方法
    with open('password.txt','r', encoding = 'UTF-8-sig') as f:    
        filedata = f.read()
        if filedata != "":
            data = eval(filedata)   #字串轉字典
            return data
        else:
            return dict()

#輸入帳號密碼
def input_data():       
    while True:
        name =input("請輸入帳號(Enter==>停止輸入)")
        if name=="":
            print()
            break
        if name in data:
            print("{}帳號已存在!".format(name))
            continue
        password=input("請輸入密碼:")
        data[name]=password
        with open('password.txt','w',encoding = 'UTF-8-sig') as f:
            f.write(str(data))
        print("{}已被儲存完畢".format(name))
        print()
        break

#顯示帳號密碼
def display_data():
    print("帳號\t密碼")              #\t用來跟下面對齊
    print("================")
    for key in data:
        print("{}\t{}".format(key,data[key]))
    input("按任意鍵返回主選單")
    print()
    

#修改帳號密碼  
def edit_data():
    while True:
        name =input("請輸入要修改的帳號(Enter==>停止輸入)")
        if name=="":
            print()
            break
        if not name in data:
            print("{} 帳號不存在!".format(name))
            continue
        print("原來密碼為:{}".format(data[name]))
        password=input("請輸入新密碼:")
        data[name]=password
        with open('password.txt','w',encoding = 'UTF-8-sig') as f:
            f.write(str(data))
            input("密碼更改完畢,請按任意鍵返回主選單")
            print()
            break

#刪除帳號        
def delete_data():
    while True:
        name =input("請輸入要刪除的帳號(Enter==>停止輸入)")
        if name=="":
            print()
            break
        if not name in data:
            print("{} 帳號不存在!".format(name))
            continue
        print("確定刪除{}的資料!:".format(name))
        yn=input("(Y/N)?")
        if (yn=="Y" or yn=="y"):
            del data[name]
            with open('password.txt','w',encoding = 'UTF-8-sig') as f:
                f.write(str(data))
                input("已刪除完畢,請按任意鍵返回主選單")
                break
        elif(yn=="N" or yn=="n"):
            print('好好思考')
            print()
            break
        else:
            print('錯誤!亂打一通!!')
            print()
            break



### 主程式在這裡開始 ###

data=dict()
data = ReadData()  # data已經回傳成dict()

while True:
    menu()
    choice = int(input("請輸入您的選擇:"))
    print()
    if choice==1:
        input_data()
    elif choice==2:
        display_data()
    elif choice==3:
        edit_data()
    elif choice==4:
        delete_data()
    else:
        break    
 
print("系統執行完畢!")

基本上要先定義好四大項(新增、刪除、修改、顯示),比較麻煩的就是資料轉換跟與.txt互動吧?還有在執行前要先確保有password.txt的記事本,我原本以為在ReadData()那裡就會自己生成一個了/images/emoticon/emoticon19.gif
總之先這樣吧~~

參考資料

  • 書名-Python初學特訓班 /文淵閣工作室-編著

上一篇
Day25-檔案處理
下一篇
Day27-安裝使用PyGame套件
系列文
Python 30天學習日誌30

尚未有邦友留言

立即登入留言