系统模拟登陆界面 二

本文详细阐述了如何优化登录系统,包括错误处理、代码清晰度、注释重要性和路径引用细节。通过分析具体错误案例,作者强调了避免定义错误、字母错误和确保代码可读性的必要性。此外,提供了修正后的代码片段,展示了如何实现更安全、更高效的登录流程。
摘要由CSDN通过智能技术生成


整体思想是;将用户的数据保存在注册的数据库中,用户登录验证,需要调用数据库信息/如果数据库中没有用户信息,则提示不是系统用户。

 

如果用户口令输入错误,则提示口令错误,如果错误次数超过设定次数,则强制退出系统。

 

 

若登陆成功,提示信息登陆成功,系统启动!

 

这期间也遇到了些许问题。

 

比如说  1 定义的错误,不太细心。这些是要坚决杜绝的。

       2 字母写错,这些也是要避免的,不然庞大的代码,如何有很多的时间来调试呢

       3  要写清楚注释,这是比不可少的。

       4 App的引用,注意细节。

下面给出我的错误所在

大家注意看黄色代码,App所代表的路径

下面给出文件的具体路径。看出来有什么不同了么,多写了一个路径。

 

最后附上登录界面

 

原文代码如下 :

Option Explicit

Const maxlogtimes As Integer = 3


Private Sub cmdcancel_Click()

        Dim intresult As Integer
        
        intresult = MsgBox("你选择了推出系统登录,退出将不能启动管理系统!" & vbCrLf _
        & "是否真的退出?", vbYesNo, "登录验证")
        
        If intresult = vbYes Then End
    

End Sub


Private Function check_password(ByVal username As String, ByVal password As String) As Byte


      On Error GoTo gperror
      
      Dim objcn As New Connection, objrs As New Recordset, strcn As String
      
      Dim strsql As String
      
             objcn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & "Data Source=" & App.Path & "\实例2.mdb"
            
             objcn.Open
             
             strsql = "select 口令 from 系统用户 where 用户名='" & username & "'"
             
             Set objrs.ActiveConnection = objcn
             
             objrs.Open (strsql)
             
             If objrs.EOF Then
            
                 check_password = 0
                
        Else
              
               If password <> Trim(objrs.Fields("口令").Value) Then
               
                    check_password = 1
                    
                Else
                    
                     check_password = 2
                     
                End If
                     
          End If
          
        objcn.Close
             
             
        Set objrs = Nothing
        
        Set objcn = Nothing
        
        Exit Function
        
gperror:
        
        check_password = 255
        
        Set objrs = Nothing
        
        Set objcn = Nothing
        
 End Function
 


Private Sub cmdok_Click()
 
        Static intlogtimes As Integer '保存用户请求登录次数
        
        Dim intchecked As Integer, strname As String, strpassword As String
        
        intlogtimes = intlogtimes + 1
        
        If intlogtimes > maxlogtimes Then
               
                '超过允许登录次数,显示提示信息
                
                MsgBox "你已经超过允许验证次数!" & vbCr _
                           & "应用程序将结束!", vbCritical, "登录验证"
                           
               End
                  
         
        Else
        
            strname = Trim(txtusername.Text)
            
            strpassword = Trim(txtpassword.Text)
            
            '检验用户名和口令的合法性
            
            Select Case check_password(strname, strpassword)
          
        
          Case 0
    
             MsgBox "<" & strname & _
             ">不是系统用户,请检查用户名输入是否正确!", vbCritical, "登录验证"
             
               txtusername.SetFocus
               
               txtusername.SelStart = 0
               
               txtusername.SelLength = Len(txtusername)
               
          Case 1
             
               
                MsgBox "口令错误,请重新输入!", vbCritical, "登录验证"
                
               txtpassword = ""
               
                txtpassword.SetFocus
                
        Case 2
               
                Unload Me
                
                 MsgBox "登录成功,将启动系统程序!", vbInformation, "登录验证"
                 
               
       
       Case Else
             
               MsgBox "登录验证未正常完场!,请重新运行登录程序," & vbCrLf
               
           
         End Select
           
          
      End If
           
  End Sub




 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值