www.pudn.com > cjg2.rar > frmSysLogon.frm


VERSION 5.00 
Begin VB.Form SystemLogon  
   BorderStyle     =   3  'Fixed Dialog 
   Caption         =   "自测考试系统用户登录" 
   ClientHeight    =   2175 
   ClientLeft      =   45 
   ClientTop       =   330 
   ClientWidth     =   4425 
   ControlBox      =   0   'False 
   LinkTopic       =   "Form1" 
   ScaleHeight     =   2175 
   ScaleWidth      =   4425 
   ShowInTaskbar   =   0   'False 
   StartUpPosition =   2  '屏幕中心 
   Begin VB.TextBox txtName  
      Height          =   315 
      Left            =   1582 
      TabIndex        =   0 
      Text            =   "Text1" 
      Top             =   240 
      Width           =   1935 
   End 
   Begin VB.TextBox txtPwd  
      Height          =   315 
      IMEMode         =   3  'DISABLE 
      Left            =   1582 
      PasswordChar    =   "*" 
      TabIndex        =   1 
      Text            =   "Text2" 
      Top             =   645 
      Width           =   1935 
   End 
   Begin VB.CommandButton cmdOk  
      Caption         =   "确定" 
      Default         =   -1  'True 
      Height          =   315 
      Left            =   1159 
      TabIndex        =   3 
      Top             =   1620 
      Width           =   945 
   End 
   Begin VB.CommandButton cmdCancel  
      Cancel          =   -1  'True 
      Caption         =   "退出" 
      Height          =   315 
      Left            =   2321 
      TabIndex        =   4 
      Top             =   1620 
      Width           =   945 
   End 
   Begin VB.ComboBox cmbType  
      Height          =   300 
      ItemData        =   "frmSysLogon.frx":0000 
      Left            =   1582 
      List            =   "frmSysLogon.frx":0002 
      Style           =   2  'Dropdown List 
      TabIndex        =   2 
      Top             =   1080 
      Width           =   1935 
   End 
   Begin VB.Label Label1  
      AutoSize        =   -1  'True 
      Caption         =   "用户名" 
      Height          =   180 
      Left            =   907 
      TabIndex        =   7 
      Top             =   300 
      Width           =   540 
   End 
   Begin VB.Label Label2  
      AutoSize        =   -1  'True 
      Caption         =   "口  令" 
      Height          =   180 
      Left            =   907 
      TabIndex        =   6 
      Top             =   705 
      Width           =   540 
   End 
   Begin VB.Label Label3  
      AutoSize        =   -1  'True 
      Caption         =   "身  份" 
      Height          =   180 
      Left            =   907 
      TabIndex        =   5 
      Top             =   1110 
      Width           =   540 
   End 
End 
Attribute VB_Name = "SystemLogon" 
Attribute VB_GlobalNameSpace = False 
Attribute VB_Creatable = False 
Attribute VB_PredeclaredId = True 
Attribute VB_Exposed = False 
Option Explicit 
Const MaxLogTimes As Integer = 3    '定义允许尝试登录的最大次数 
Dim objAdmin As Recordset           '用于保存管理员登录信息 
Dim objStudent As Recordset          '用于保存学生登录信息 
Dim objTeacher As Recordset          '用于保存教师登录信息 
Private Sub Form_Load() 
    '清空用户名和口令文本框 
    txtName = "" 
    txtPwd = "" 
    '创建身份列表 
    cmbType.AddItem "学生" 
    cmbType.AddItem "阅卷教师" 
    cmbType.AddItem "系统管理员" 
    cmbType.ListIndex = 2                        '设置默认身份 
    '创建与数据库的联接 
    Dim objCn As New Connection                  '定义并实例化联接对象 
    With objCn                                   '建立数据库联接 
        .Provider = "SQLOLEDB" 
        .ConnectionString = "User ID=sa;PWD=123;Data Source=(local);" & _ 
                            "Initial Catalog=自测考试" 
        .Open 
    End With 
    '访问数据库获得管理员登录信息 
    Set objAdmin = New Recordset                 '实例化objAdmin对象 
    With objAdmin 
        .CursorLocation = adUseClient           '指定使用客户端游标 
        .CursorType = adOpenStatic              '指定使用静态游标 
        .Open "SELECT * FROM 管理员", objCn     '获取管理员登录信息 
        Set .ActiveConnection = Nothing         '断开与数据库的联接 
    End With 
    '访问数据库获得学生登录信息 
    Set objStudent = New Recordset              '实例化objstudent对象 
    With objStudent 
        .CursorLocation = adUseClient 
        .CursorType = adOpenStatic 
        .Open "SELECT 学号,考号 FROM 学生信息", objCn   '获取学生登录信息 
        Set .ActiveConnection = Nothing                 '断开与数据库的联接 
    End With 
    '访问数据库获得教师登录信息 
    Set objTeacher = New Recordset              '实例化objTeacher对象 
    With objTeacher 
        .CursorLocation = adUseClient 
        .CursorType = adOpenStatic 
        .Open "SELECT 姓名,口令 FROM 阅卷教师", objCn   '获取教师登录信息 
        Set .ActiveConnection = Nothing                 '断开与数据库的联接 
    End With 
    objCn.Close             '关闭数据库连接 
    Set objCn = Nothing     '释放数据库连接 
End Sub 
Private Sub cmdCancel_Click() 
    '请求用户确认是否真的退出系统登录 
    If MsgBox("你选择了退出系统登录,退出将不能启动管理系统!" & vbCrLf _ 
              & "是否真的退出?", vbYesNo + vbQuestion, "登录验证") = vbYes Then 
        Unload Me               '卸载登录窗体 
    End If 
End Sub 
Private Sub cmdOk_Click() 
    '静态常量intLogTimes用于保存用户请求验证的次数 
    Static intLogTimes As Integer 
    intLogTimes = intLogTimes + 1     '保存当前登录次数 
    If intLogTimes > MaxLogTimes Then 
        '超过允许的登录次数,显示提示信息 
        MsgBox "你已经超过允许的登录验证次数!" & vbCr _ 
               & "应用程序将结束!", vbCritical, "登录验证" 
        End         '结束应用程序 
    End If 
    '检验是否输入用户名 
    If Trim(txtName) = "" Then 
        MsgBox "请输入用户名!", vbExclamation, "登录验证" 
        txtName = "" 
        txtName.SetFocus 
        Exit Sub 
    End If 
    '检验是否输入登录口令 
    If Trim(txtPwd) = "" Then 
        MsgBox "请输入登录口令!", vbExclamation, "登录验证" 
        txtPwd = "" 
        txtPwd.SetFocus 
        Exit Sub 
    End If 
    '根据用户身份创建用于检验用户名和口令的合法性的Recorset对象 
    Dim objLog As New Recordset 
    Select Case cmbType 
        Case "学生" 
            Set objLog = objStudent.Clone 
        Case "阅卷教师" 
            Set objLog = objTeacher.Clone 
        Case "系统管理员" 
            Set objLog = objAdmin.Clone 
    End Select 
    Dim strPwdField As String 
    With objLog      '检验用户名和口令的合法性 
        If .RecordCount > 0 Then 
            .MoveFirst 
            Select Case cmbType 
                Case "学生" 
                    .Find "学号='" & Trim(txtName) & "'" 
                    strPwdField = "考号" 
                Case "阅卷教师" 
                    .Find "姓名='" & Trim(txtName) & "'" 
                    strPwdField = "口令" 
                Case "系统管理员" 
                    .Find "用户名='" & Trim(txtName) & "'" 
                    strPwdField = "口令" 
            End Select 
            If .EOF Then 
                MsgBox "用户名输入错误!请检查输入和登录身份是否正确!", vbCritical, "登录验证" 
                txtName.SetFocus 
                txtName.SelStart = 0 
                txtName.SelLength = Len(txtName) 
            ElseIf .Fields(strPwdField) <> Trim(txtPwd) Then 
                MsgBox "口令错误!请检查输入和登录身份是否正确!", vbCritical, "登录验证" 
                txtPwd.SetFocus 
                txtPwd = "" 
            Else 
                '保存当前用户信息 
                CurrentUserName = Trim(txtName) 
                CurrentUserStatus = cmbType 
                MsgBox "欢迎使用自测考试系统!", vbInformation, "登录成功" 
                Unload Me                   '关闭登录窗体 
                mdiSystemMain.Show         '显示系统主窗体 
            End If 
        End If 
     End With 
     Set objLog = Nothing               '释放objLog对象 
End Sub 
 
Private Sub Form_Unload(Cancel As Integer) 
    Set objAdmin = Nothing                  '释放objAdmin对象 
    Set objStudent = Nothing                 '释放objstudent对象 
    Set objTeacher = Nothing                 '释放objTeacher对象 
End Sub