我們在設計應用軟件時,總希望在進入軟件主窗體之前,顯示用戶登錄窗體,要求用戶輸入密碼,當用戶的密碼得到驗證后,即可進入軟件應用環境。用戶登錄密碼的修改是指進入主窗體后,能夠對登錄密碼進行修改,設置的新密碼將成為下一次登錄時用的密碼,本文就談談如何在VB5.0中實現用戶登錄密碼的修改。
一、實現原理
在VB5.0中,文件共有三類:順序文件;隨機文件;二進制文件。順序文件的主要用途是存取文本文件,按照先后順序進行存取數據,使用簡單容易。要實現密碼的修改設置,可把密碼保存在一順序文件config.txt中,然后對其進行打開、關閉、讀寫等操作。用戶登錄時,先用Open語句打開config.txt文件,用Input#語句從該文件中讀取密碼。設置新密碼時,要求用戶輸入兩次密碼,進行確認,在確認這兩次輸入的密碼一致后,用Open語句建立文件config.txt,用PRint#語句將密碼寫入文件,就將用戶新設置的密碼存入指定的config.txt文件中。
現將與文件操作的語句解釋如下:
1.Open語句
打開順序文件,模式為Input時,表示將數據從磁盤上輸入內存中;模式為Output時,表示將數據從內存寫入磁盤。
2.Close語句
關閉所有已打開的數據文件。
3.Input#語句
用于從順序文件中讀取數據。
4.Print#語句
把內存中的數寫入順序文件。
二、程序的實現
1.新建一個工程,將窗體Form1命名為yhdl,該窗體是整個程序運行后首先出現在用戶面前的,用于用戶登錄,而且必須通過合法性的檢查。將窗體的ControlBox屬性設為False,標題為“用戶登錄”。在窗體中添加文本框(Text1)用于用戶輸入密碼,兩個命令按鈕(Command1、Command2)的標題分別為:“確認”、“取消”,創建好的窗體如下圖所示。用字處理軟件建立一文本文件config.txt,將密碼存于該文件中,將該文件保存在新建工程所在的目錄。將文本框的PassWordChar屬性設為*,程序代碼如下:
DimiAsInteger’用戶登錄程序
DimpasswordstrAsString
PrivateSubCommand1_Click()
Open"config.txt"ForInputAs#1
DoWhileNotEOF(1)
Input#1,passwordstr
Loop
Close#1
i=i 1
Ifi<=3Then
IfText1.Text=passwordstrThen
’輸入正確
UnloadMe
ksxt.Show
’ksxt為筆者設計的考試系統窗體
Else’輸入錯誤
x=MsgBox("用戶密碼輸入錯誤!請再輸一次!",17,"警告")
Text1.SetFocus
EndIf
Else
UnloadMe’輸入次數超過三次,卸載窗體
EndIf
EndSub
PrivateSubCommand2_Click()
UnloadMe’按取消按鈕,卸載登錄窗體
EndSub
PrivateSubForm_Load()
Me.Move(Screen.Width-Me.Width)
/2,(Screen.Height-Me.Height)/2
Show
Text1.SetFocus
i=0’輸入次數初始化
EndSub
2.在工程1中,添加筆者設計的考試系統窗體ksxt,有一密碼設置子菜單,名為szmm
PrivateSubszmm_Click()
mmsz.show’單擊mmsz菜單項顯示密碼設置窗體
EndSub
3.在工程1中,添加窗體Form2,命名為mmsz,標題為“密碼設置”,當用戶需要更改密碼時,可以在程序中調用此窗體。這個窗體需要正確接收用戶輸入的密碼,并且將兩次輸入的密碼進行比較,當符合要求時將密碼存入config.txt文件中。在窗體中添加文本框(text1)用于用戶輸入密碼,添加文本框(text2)用于用戶對輸入的密碼進行確認,,兩個命令按鈕(Command1、Command2)的標題分別為:“確認”、“取消”,創建好的窗體如下圖所示。將兩個文本框的PasswordChar屬性都設為*,程序代碼如下:
PrivateSubCommand1_Click()’密碼設置程序
IfText1.Text=Text2.TextThen
’確認兩次輸入密碼是否一致
passwordstr="text2.text"
Open"config.txt"ForOutputAs#1
Print#1,Text1.Text
Close#1
UnloadMe
Else
x=MsgBox("密碼輸入錯誤!請重新輸入!",17,"警告")
Text2.SetFocus
EndIf
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
PrivateSubForm_Load()
Me.Move(Screen.Width-Me.Width)
/2,(Screen.Height-Me.Height)/2
Show
Text1.SetFocus
EndSub
新聞熱點
疑難解答