【学生信息管理系统】——优化篇(一)

优化内容

首先,从整个系统上来说,几乎每个窗体都需要重复做一些简单的优化工作,比如说添加用户使用的界面背景、调整用户使用窗体的大小、子窗体位于主窗体上的相对位置、子窗体是否可移出主窗体、调整界面字体字号、用户输入所使用的文本框字符类型的限制、文本框字符长度的限制、按钮键盘功能的设置、Tab键控制文本框的顺序、控件名称的一致性等内容,通过简单的代码或者对象的属性设置,来满足用户使用的基本需求。

其次,对于系统里面某一块功能的优化。以用户实际使用情况为基础,以满足用户的实际需求为导向,通过严谨的逻辑推理、结构分析,使用相应的代码片段实现相应的功能。
1、登录窗体
A、登录界面——系统的首界面只能是登录界面,即在系统开始运行的时候将登录窗体设置成模式窗体,模式窗体时在一个界面只能存在着一个窗体,如果想加载别的窗体则应先下载这个窗体,就像我们登录的钉钉界面,在未成功登录钉钉之前是进入不了钉钉主界面的。这个功能是由模块中的sub main函数来实现的:

Sub Main()
    Dim fLogin As New frmLogin
    fLogin.Show vbModal             '显示登录窗体
    '判断是否授权用户
    If Not fLogin.OK Then
        'Login Failed so exit app
        End
    End If
    Unload fLogin

    '判断是否将进入系统
    Set fMainForm = New FrmMain     '显示主窗体实例
    fMainForm.Show
End Sub

B、判断用户名——判断用户名有两层判断,一是判断用户名是否为空,一是判断用户名是否存在数据库中。这里就用到了if函数的嵌套。

判断是否为空:
If Trim(txtUserName.Text = "") Then  '1、如果用户名为空,则弹出提示框
            MsgBox "用户名不能为空,请您重新输入用户名!", vbOKOnly + vbExclamation, "警告"
            txtUserName.SetFocus    '用户名文本框获得焦点
        Else                        '2、如果用户名不为空

            txtSQL = "select * from user_info where user_ID= '" & txtUserName.Text & "'"      '查询指定用户名的记录
            Set mrc = ExecuteSQL(txtSQL, MsgText)        '执行查询语句


            '判断指定用户表里是否有所输入的用户信息

            If mrc.EOF = True Then      '如果记录集搜索到了最后一条信息,没有找到该用户信息,则弹出提示框
                MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
                txtUserName.Text = ""       '将所输入的用户名清空
                txtPassword.Text = ""       '将所输入的密码清空
                txtUserName.SetFocus        '用户名文本框获得焦点
            Else                                             '若有该用户信息,则进行判断密码是否正确一步

C、判断密码是否正确

                 '判断输入密码是否正确
                If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then    '将所输入的密码和数据库中记录信息进行对比
                    '若密码正确
                    OK = True
                    mrc.Close   '记录集关闭
                    Me.Hide '登录窗体隐藏
                    UserName = Trim(txtUserName.Text)
                    FrmMain.Show    'FrmMain窗体显示出来
                Else
                    '否则,密码不正确
                    MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"     '弹出提示信息
                    txtPassword.Text = ""       '密码文本框清空
                    txtPassword.SetFocus        '密码文本框获得焦点
                End If

D、保护用户信息安全性——限制登录次数
为保障系统用户的安全性,需要限制登陆次数,用户不能无限的登录系统,这个实现的方式是定义一个变量来记录登录次数:

定义变量:Dim miCount As Integer      '记录确定次数
'记载输入密码次数
        miCount = miCount + 1       '密码次数累加1,进行新的次数赋值
        If miCount = 3 Then         '若密码输入三次,第三次仍是错误的,会弹出密码错误提醒
            End                     '结束程序
        End If

注意:在加载登录窗体时,需要将记录输入密码次数的变量设置初始值:miCount = 0 ‘输入密码次数初始值为0

2、修改密码窗体
从安全性的角度来看,源代码中给出的修改密码步骤是不严谨的,用户的信息安全没有得到很好地保证,所以,我在源代码实现修改密码的功能基础之上,又添加了一步原密码的验证,并且成功修改密码后,用户需返回到系统登录界面重新登录系统。
填写完密码单击确定按钮后,首先判断原密码输入框与用户在登录窗体输入的密码是否一致,此时会有两种情况,一是两者不一致,二是两者一致。当第一种情况出现时弹出提示框提示用户;当第二种情况出现,再判断新设置的密码和原密码是否相同,这时又会有两种情况,一是新密码与原密码相同,弹出提示框提示用户,二是新密码与原密码不同,当这种情况出现时,最后再判断两次新密码输入是否相同。实现这个功能的代码如下:

'单击确定按钮
Private Sub cmdOK_Click()
    '定义变量
    Dim txtSQL, MsgText As String
    Dim mrc As ADODB.Recordset

    ' 判断原密码输入框与登录窗体输入的密码是否一致
    If Trim(txtold.Text) <> Trim(frmLogin.txtPassword.Text) Then    '1.若两者不一致,则弹出提示框
            MsgBox "原密码输入不正确!", vbOKOnly + vbExclamation, "警告"   '提示用户原密码输入与登录时密码不一致
            txtold.SetFocus     '原密码文本框获得焦点
            txtold.Text = ""    '文本框清空
            txtPassWord1.Text = ""
            txtPassWord2.Text = ""
            Exit Sub
    Else        '2.若两者一致

        '判断新密码是否与原密码相同
        If Trim(txtPassWord1.Text) = Trim(txtold.Text) Then  '1.若新密码与原密码相同,弹出提示框
            MsgBox "与原密码相同"       '提示用户新密码与原密码相同
            txtPassWord1.Text = ""      '新密码文本框清空
            txtPassWord2.Text = ""
            Exit Sub
        Else        '2.若新密码与原密码不相同

            '判断新密码输入是否相同
            If Trim(txtPassWord1.Text) <> Trim(txtPassWord2.Text) Then      '1.若两次输入的新密码不相同
                MsgBox "密码输入不正确!", vbOKOnly + vbExclamation, "警告" '弹出提示框 提示用户两次输入的密码不一致
                txtPassWord1.SetFocus   '新密码文本框获得焦点
                txtPassWord1.Text = ""  '新密码文本框清空
                txtPassWord2.Text = ""
            Else        '2.若两次输入的新密码相同

                txtSQL = "select * from user_info where user_ID = '" & UserName & "'"   '查询记录集中的该用户信息
                Set mrc = ExecuteSQL(txtSQL, MsgText)   '执行查询语句
                mrc.Fields(1) = txtPassWord1.Text   '将新设置的密码赋给记录集


                mrc.Update   '更新数据库
                mrc.Close   '关闭数据集对象
                MsgBox "密码修改成功!", vbOKOnly + vbInformation, "修改密码"   '提示用户修改密码成功

                '文本框清空
                txtold.Text = ""
                txtPassWord1.Text = ""
                txtPassWord2.Text = ""

                Me.Hide '隐藏该窗体
                FrmMain.Hide    '隐藏主窗体
            End If
        End If
    End If

    frmLogin.Show   '显示登录窗体,用修改后的密码重新登录系统

End Sub

猜你喜欢

转载自blog.csdn.net/LZ15932161597/article/details/82154763