昨天已經有些許檔案處理的概念,今天就趕緊試試應用吧!
要有能夠新增、刪除、修改及顯示帳號密碼的系統,以下為預期模樣:
下面就是我參考書中範例撰寫的程式碼:
#定義主畫面
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()那裡就會自己生成一個了
總之先這樣吧~~