⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c考试信息.frm

📁 在线考试系统。用vb编写
💻 FRM
📖 第 1 页 / 共 2 页
字号:
End Sub
Private Sub LoadData()
'装载数据
    Dim list As ListItem
    Dim key As String
    Set rs = Nothing
    '查询考试信息
    SQL = "SELECT * FROM 考试信息表 ORDER BY 开考时间"
    Set rs = SelectSQL(SQL, msg)
    ListView1.ListItems.Clear                   '清空ListView
    If rs.RecordCount = 0 Then                  '如果不存在记录
        '编辑控件可用性
        CmdAdd.Enabled = True: CmdModify.Enabled = False: CmdDelete.Enabled = False
        CmdCancel.Enabled = False: CmdSave.Enabled = False: CmdStart.Enabled = False
        CmdEnd.Enabled = False
    Else
        rs.MoveFirst
        Do Until rs.EOF
            '在ListView中显示考试信息
            key = rs.Fields("考试代码")
            Set list = ListView1.ListItems.Add(, , key, 1)
            rs.MoveNext
        Loop
        rs.MoveFirst                            '返回到第一条记录
        '编辑控件可用性
        CmdAdd.Enabled = True: CmdModify.Enabled = True: CmdDelete.Enabled = True
        CmdCancel.Enabled = False: CmdSave.Enabled = False: CmdStart.Enabled = True
        CmdEnd.Enabled = True
    End If
    '设置控件Enable值
    Call ControlEnable(False)
End Sub
Private Sub ControlEnable(flag As Boolean)
'设置控件的Enable值
    For Index = 0 To 2
        txt(Index).Enabled = flag
    Next Index
    txttime.Enabled = flag
    Cboflag.Enabled = flag
End Sub
Private Sub ShowData()
'在控件中显示数据
    If rs.RecordCount <> 0 Then                     '如果存在记录
        '为控件赋值
        txt(0).Text = rs.Fields("考试代码")
        txttime.Text = rs.Fields("开考时间")
        txt(1).Text = rs.Fields("考试时间")
        txt(2).Text = rs.Fields("考试人数")
        '显示启用标志
        For Index = 0 To 2
            If Cboflag.list(Index) = rs.Fields("考试标志") Then
                Cboflag.listindex = Index
                Exit For
            End If
        Next Index
    End If
End Sub
Private Sub CmdAdd_Click()
'添加操作
    '所有控件重置
    Call ControlClear
    '设置控件Enable值为可用
    Call ControlEnable(True)
    '设置标志flag,表示所进行的操作为添加
    flag = "Add"
    '添加、修改、删除、启动、结束按钮不可用,取消、保存按钮可用
    CmdAdd.Enabled = False: CmdModify.Enabled = False: CmdDelete.Enabled = False
    CmdCancel.Enabled = True: CmdSave.Enabled = True: CmdStart.Enabled = False
    CmdEnd.Enabled = False
End Sub
Private Sub ControlClear()
'重置控件
    For Index = 0 To 2
        Me.txt(Index).Text = ""
    Next Index
    txttime.Text = Now
    Cboflag.listindex = 0
End Sub
Private Sub CmdModify_Click()
'修改操作
    If rs.RecordCount > 0 Then                  '如果存在记录
        '考试代码不可以修改,其他控件可用
        txt(0).Enabled = False
        '设置控件Enable值
        Call ControlEnable(True)
        '设置标志flag,表示所进行的操作为修改
        flag = "Modify"
        '添加、修改、删除、启动、结束按钮不可用,取消、保存按钮可用
        CmdAdd.Enabled = False: CmdModify.Enabled = False: CmdDelete.Enabled = False
        CmdCancel.Enabled = True: CmdSave.Enabled = True: CmdStart.Enabled = False
        CmdEnd.Enabled = False
    Else
         MsgBox ("没有可以修改的数据!")
    End If
End Sub
Private Sub CmdDelete_Click()
'删除操作
    On Error GoTo ErrMsg                        '错误处理
    If rs.RecordCount > 0 Then
        msg = MsgBox("删除该条记录吗?", vbYesNo)
        If msg = vbYes Then
            rs.Delete                           '删除数据
            '清空控件
            Call ControlClear
            Call LoadData                       '重新装载数据
            If rs.RecordCount > 0 Then
                Call ShowData                   '显示数据
            End If
            '设置控件Enable值为不可用
            Call ControlEnable(False)
            '添加、删除、启动、结束按钮可用,修改、取消、保存按钮不可用
            CmdAdd.Enabled = True: CmdModify.Enabled = False: CmdDelete.Enabled = True
            CmdSave.Enabled = False: CmdCancel.Enabled = False: CmdStart.Enabled = True
            CmdEnd.Enabled = True
            MsgBox ("成功删除的数据!")
        End If
    Else
        MsgBox ("没有可删除的数据!")
    End If
    Exit Sub
ErrMsg:                                         '报告出错信息
    MsgBox Err.Description, vbExclamation, "出错"
End Sub
Private Sub CmdSave_Click()
'保存操作
    On Error GoTo ErrMsg                        '错误处理
    If Not CheckData Then Exit Sub              '如果数据不合法就退出
    If flag = "Modify" Then                     '如果是修改数据
        msg = MsgBox("您确实要修改这条数据吗?", vbYesNo)
        If msg = vbYes Then
            Call setData                        '设置数据
        Else
            Exit Sub
        End If
    ElseIf flag = "Add" Then                    '如果是添加新数据
        rs.AddNew
        Call setData                            '设置数据
    End If
    rs.Update                                   '更新数据
    '设置控件的可用性
    CmdModify.Enabled = True: CmdDelete.Enabled = True: CmdAdd.Enabled = True
    CmdSave.Enabled = False: CmdCancel.Enabled = False: CmdStart.Enabled = True
    CmdEnd.Enabled = True
    If flag = "Add" Then
        MsgBox ("成功添加考试,请进行考生分配!")
    Else
        MsgBox ("成功更新数据!")
    End If
    Call LoadData                               '重新装载数据
    '定位到添加或修改记录
    rs.MoveFirst
    rs.Find ("考试代码='" & Trim(Me.txt(0).Text) & "'")
    Call ShowData                               '重新显示数据
    Exit Sub
ErrMsg:                                         '报告出错信息
    MsgBox Err.Description, vbExclamation, "出错"
End Sub
Private Function CheckData() As Boolean
'检查数据的合法性
    Dim rst As ADODB.Recordset
    Dim msgt As String
    msgt = ""
    '检查数据
    If Trim(txt(0).Text) = "" Then                                      '检查考试代码是否为空
        msgt = "考试代码为空; "
        '光标定位
        txt(0).SetFocus
        txt(0).SelStart = 0
        txt(0).SelLength = Len(txt(0).Text)
    ElseIf Not Len(Trim(txt(0).Text)) = 10 Then                         '检查考试代码是否为10位
        msgt = msgt & "考试代码不是10位; "
        '光标定位
        txt(0).SetFocus
        txt(0).SelStart = 0
        txt(0).SelLength = Len(txt(0).Text)
    ElseIf Trim(txt(1).Text) = "" Then  'Or Not IsDate(txt(1).Text)      '检查考试时间是否为空或者是否合法
        msgt = msgt & "考试时间为空或者输入的不合法; "
        '光标定位
        txt(1).SetFocus
        txt(1).SelStart = 0
        txt(1).SelLength = Len(txt(1).Text)
    ElseIf Trim(txt(2).Text) = "" Or Not IsNumeric(txt(2).Text) Then    '检查考试人数是否为空或者是否为数字
        msgt = msgt & "考试人数为空或者输入的不是为数字; "
        '光标定位
        txt(2).SetFocus
        txt(2).SelStart = 0
        txt(2).SelLength = Len(txt(2).Text)
    End If
    
    If Not msgt = "" Then                                               '如果不为空,给出错误提示
        MsgBox (msgt)
        CheckData = False                                               '返回False
        Exit Function
    End If
    
    '检查唯一性
    SQL = " select * from 考试信息表 where 考试代码='" & Trim(txt(0).Text) & "'"
    Set rst = SelectSQL(SQL, msg)
    '如果是进行添加操作且已经存在该记录,提示重复添加
    If flag = "Add" And rst.RecordCount > 0 Then
        MsgBox ("该信息已经存在,重复添加!")
        '光标定位
        txt(0).SetFocus
        txt(0).SelStart = 0
        txt(0).SelLength = Len(txt(0).Text)
        rst.Close
        CheckData = False                                               '返回False
        Exit Function
    End If
    CheckData = True                                                    '合法返回True
End Function
Private Sub setData()
'为字段设置数据
    rs.Fields("考试代码") = Me.txt(0).Text
    rs.Fields("开考时间") = Me.txttime.Text
    rs.Fields("考试时间") = Me.txt(1).Text
    rs.Fields("考试人数") = Me.txt(2).Text
    rs.Fields("考试标志") = Trim(Me.Cboflag.Text)
End Sub
Private Sub cmdCancel_Click()
'取消操作
    Call ShowData                               '重新在控件中显示信息
    '设置控件Enable值为不可用
    Call ControlEnable(False)
    '修改、删除、添加、启动、结束按钮可用,保存和取消按钮不可用
    CmdAdd.Enabled = True: CmdModify.Enabled = True: CmdDelete.Enabled = True
    CmdSave.Enabled = False: CmdCancel.Enabled = False:: CmdStart.Enabled = True
    CmdEnd.Enabled = True
End Sub
Private Sub ListView1_Click()
'在控件中显示该考试信息的具体信息
    Dim key As String
    If rs.RecordCount > 0 Then
        key = Right(Trim(ListView1.SelectedItem), 10)
        SQL = " SELECT * FROM 考试信息表 WHERE 考试代码='" & key & "'"
        Set rs = SelectSQL(SQL, msg)
        If rs.RecordCount = 1 Then              '如果选中了具体的考试
            Call ShowData                       '重新显示数据
        End If
    End If
End Sub
Private Sub CmdStart_Click()
'启动一场考试,而且只能是考试标志为“新建考试”
    Dim rst As ADODB.Recordset
    SQL = " Select * from 考试信息表 where 考试标志='新建考试'"
    Set rst = SelectSQL(SQL, msg)
    If rst.EOF = False Then
        rst.Fields("考试标志") = "考试启动"
        rst.Update
        MsgBox "启动完成!"
        Call ShowData                           '重新显示数据
    Else
        MsgBox "没有要启动的考试!"
    End If
End Sub
Private Sub CmdEnd_Click()
'结束一场考试,而且只能是考试标志为“考试启动”
    Dim rst As ADODB.Recordset
    SQL = " Select * from 考试信息表 where 考试标志='考试启动'"
    Set rst = SelectSQL(SQL, msg)
    If rst.EOF = False Then
        rst.Fields("考试标志") = "考试结束"
        rst.Update
        MsgBox "考试结束!"
        Call ShowData                           '重新显示数据
    Else
        MsgBox "没有要结束的考试!"
    End If
End Sub
Private Sub CmdExit_Click()
'退出操作
    工作人员管理.Enabled = True
    Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
'退出操作
    工作人员管理.Enabled = True
    rs.Close
    Unload Me
End Sub


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -