我们在设计应用软件时,总希望在进入软件主窗体之前,显示用户登录窗体,要求用户输入密码,当用户的密码得到验证后,即可进入软件应用环境。用户登录密码的修改是指进入主窗体后,能够对登录密码进行修改,设置的新密码将成为下一次登录时用的密码,本文就谈谈如何在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属性设为*,程序代码如下: Dim i As Integer ’用户登录程序 Dim passwordstr As String Private Sub Command1_Click() Open "config.txt" For Input As #1 Do While Not EOF(1) Input #1, passwordstr Loop Close #1 i = i + 1 If i < = 3 Then If Text1.Text = passwordstr Then ’输入正确 Unload Me ksxt.Show ’ksxt为笔者设计的考试系统窗体 Else ’输入错误 x = MsgBox("用户密码输入错误!请再输一次!", 17, "警告") Text1.SetFocus End If Else Unload Me ’输入次数超过三次,卸载窗体 End If End Sub Private Sub Command2_Click() Unload Me ’按取消按钮,卸载登录窗体 End Sub Private Sub Form_Load() Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 Show Text1.SetFocus i = 0 ’输入次数初始化 End Sub 2 .在工程1中,添加笔者设计的考试系统窗体ksxt,有一密码设置 子菜单,名为 szmm Private Sub szmm_Click() mmsz.show ’单击mmsz 菜单项显示密码设置窗体 End Sub 3 .在工程1中,添加窗体Form2,命名为mmsz,标题为“密码设置”,当用户需要更改密码时,可以在程序中调用此窗体。这个窗体需要正确接收用户输入的密码,并且将两次输入的密码进行比较,当符合要求时将密码存入config.txt文件中。在窗体中添加文本框(text1)用于用户输入密码,添加文本框(text2)用于用户对输入的密码进行确认,,两个命令按钮(Command1、Command2)的标题分别为:“确认”、“取消”,创建好的窗体如下图所示。将两个文本框的PasswordChar属性都设为*,程序代码如下: Private Sub Command1_Click() ’密码设置程序 If Text1.Text = Text2.Text Then ’确认两次输入密码是否一致 passwordstr = "text2.text" Open "config.txt" For Output As #1 Print #1, Text1.Text Close #1 Unload Me Else x = MsgBox("密码输入错误!请重新输入!", 17, "警告") Text2.SetFocus End If End Sub
Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 Show Text1.SetFocus End Sub  
|