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

📄 frmkaoshi.frm

📁 自己用vb开发的局域网考试系统
💻 FRM
📖 第 1 页 / 共 5 页
字号:
     RtbWDTM.Text = "   " + adoRS.Fields("问题").Value + "(" & adoRS.Fields("分数").Value & ")" + vbCrLf
     '显示答案
     RtbWDDA.Text = adoRS.Fields("考生答案").Value
  End If
 Set adoRS = Nothing
End Sub
'预览填空题
Sub ViewTK(ByVal TMid As Long) '题目id
  Dim adoRS As Recordset
  Set adoRS = New Recordset
  adoRS.CursorLocation = adUseClient

  Dim DaanArr() As String
  adoRS.Open "select * from 试卷填空题 where ID=" & TMid, LocalConn, adOpenStatic, adLockOptimistic
  If Not adoRS.EOF Then
     '显示
     RtbTK.Text = "   " + adoRS.Fields("问题").Value + "(" & adoRS.Fields("分数").Value & ")" + vbCrLf
     '显示空和答案
     Dim i As Integer
     For i = 1 To 30
       LabDaan(i).Visible = False
       TxTDaan(i).Visible = False
       TxTDaan(i).Text = ""
     Next i
     'rtbTK.Tag里面保存空个数,以后可以用
     RtbTK.Tag = adoRS.Fields("空数").Value
     For i = 1 To adoRS.Fields("空数").Value
       LabDaan(i).Visible = True
       TxTDaan(i).Visible = True
     Next i
    '显示答案
     If Len(adoRS.Fields("考生答案").Value) > 0 Then
       DaanArr = Split(adoRS.Fields("考生答案").Value, "▲▲")
       For i = 0 To UBound(DaanArr)
        TxTDaan(i + 1).Text = DaanArr(i)
       Next i
     End If
  End If
 Set adoRS = Nothing
End Sub
'看选择题
Sub ViewTM(ByVal adoTMRs As Recordset)
  Dim DAArr() As String
  Dim i As Integer
  
  TXTView.Text = "  " + adoTMRs.Fields("问题").Value + "(" + str(adoTMRs.Fields("分数").Value) + "分" + ")" + vbCrLf
  
  TXTView.Text = TXTView.Text + "    A、" + adoTMRs.Fields("A").Value + vbCrLf + vbCrLf
  TXTView.Text = TXTView.Text + "    B、" + adoTMRs.Fields("B").Value + vbCrLf + vbCrLf
  TXTView.Text = TXTView.Text + "    C、" + adoTMRs.Fields("C").Value + vbCrLf + vbCrLf
  TXTView.Text = TXTView.Text + "    D、" + adoTMRs.Fields("D").Value + vbCrLf + vbCrLf
  '清空
  For i = 0 To 3
    Check1(i).Value = 0
  Next i
  '显示答案
  If Len(adoTMRs.Fields("考生答案").Value) > 0 Then
   DAArr = Split(adoTMRs.Fields("考生答案").Value, ",")
   For i = 0 To UBound(DAArr)
     Check1(Asc(DAArr(i)) - 65).Value = 1
   Next i
  End If
  
End Sub
'保存选择题
Sub SaveDaAN()
Dim i As Integer
Dim DAan As String
For i = 0 To 3
If Check1(i).Value Then
   DAan = DAan & Check1(i).Caption & ","
End If
Next i
If DAan = "" Then DAan = "," '若此题未做
DAan = Left(DAan, Len(DAan) - 1)
Dim sql As String
sql = "update 试卷选择题 set 考生答案='" & DAan & "' where id=" & Val(TXTView.Tag)
LocalConn.Execute sql
End Sub
''保存作文题
Sub SaveZW()
  If LstZW.Tag = "" Then
    Exit Sub
  End If
  Dim ID As String
  ID = LstZW.Tag

  '保存
  Dim DAan As String
  DAan = RtbZW.Text
  Dim sql As String
  sql = "update 试卷作文题 set 考生答案='" & DAan & "' where id=" & ID
  LocalConn.Execute sql
End Sub
''保存问答题
Sub SaveWD()
  If LstWD.Tag = "" Then
    Exit Sub
  End If
  Dim ID As String
  ID = LstWD.Tag
  
  Dim DAan As String
  DAan = RtbWDDA.Text
  Dim sql As String
  sql = "update 试卷问答题 set 考生答案='" & DAan & "' where id=" & ID
  LocalConn.Execute sql
End Sub
''保存判断题
Sub SavePD()
  If LstPD.Tag = "" Then
    Exit Sub
  End If
  Dim ID As String
  ID = LstPD.Tag
  
  Dim DAan As String
  If OptDui = True Then
    DAan = "T"
  End If
  If OptCuo = True Then
    DAan = "F"
  End If
  Dim sql As String
  sql = "update 试卷判断题 set 考生答案='" & DAan & "' where id=" & ID
  LocalConn.Execute sql
End Sub
''保存填空题
Sub SaveTK()
  If LstTK.Tag = "" Then
    Exit Sub
  End If
  Dim ID As String
  ID = LstTK.Tag
  
  Dim i As Integer
  Dim DAan As String
  For i = 1 To Val(RtbTK.Tag)
    DAan = DAan & TxTDaan(i).Text & "▲▲"
  Next i
  DAan = Left(DAan, Len(DAan) - 2)
  Dim sql As String
  sql = "update 试卷填空题 set 考生答案='" & DAan & "' where id=" & ID
  LocalConn.Execute sql
End Sub

'处理交卷
'"▼▼"用于分割各填空题、问答题、作文的答案
'"▲▲"用于分割填空题各个空的字符
'函数返回true和false表示交卷是否成功
Function JiaoJuan() As Boolean
  JiaoJuan = False
  Dim Scores As Long '成绩
  'Dim Zscore As Long '总分
  Dim Danxuan As String, Duoxuan As String  '答案字符串
  Dim Danxuans As String, Duoxuans As String  '对应的分数字符串
  Dim Danxuanid As String, Duoxuanid As String  '对应的试卷ID字符串
  Dim TianKong As String, TianKongs As String, TianKongID As String '填空题
  Dim PanDuan As String, PanDuans As String, PanDuanID As String '判断题
  Dim WenDa As String, WenDas As String, WenDaID As String '问答题
  Dim ZuoWen As String, ZuoWens As String, ZuoWenID As String '作文题
  Dim TestID As Long '试卷标号
  '试卷基本信息
  Dim tempRS As Recordset
  Set tempRS = New Recordset
  tempRS.CursorLocation = adUseClient

  tempRS.Open "试卷信息", LocalConn, adOpenStatic, adLockOptimistic
  TestID = tempRS.Fields("试卷编号").Value
  'Zscore = tempRS.Fields("试卷总分").Value  '总分
  tempRS.Close
  Set tempRS = Nothing
  
  Dim rs As Recordset
  Set rs = New Recordset
  rs.CursorLocation = adUseClient

  '选择题
  rs.Open "试卷选择题", LocalConn, adOpenStatic, adLockOptimistic
  Do While Not rs.EOF
     If rs.Fields("类别").Value = "单" Then
        If rs.Fields("考生答案").Value <> "" Then
           Danxuan = Danxuan + rs.Fields("考生答案") + "/"
        Else
           Danxuan = Danxuan + "o" + "/"
        End If
        '试卷分数,ID'不正确分数为0
        If rs.Fields("考生答案").Value = rs.Fields("答案").Value Then
            Scores = Scores + rs.Fields("分数").Value
            Danxuans = Danxuans + Trim(str(rs.Fields("分数").Value)) + ","
           Else
            Danxuans = Danxuans + "0,"
        End If
        Danxuanid = Danxuanid + Trim(str(rs.Fields("ID").Value)) + ","
     ElseIf rs.Fields("类别").Value = "多" Then
        If rs.Fields("考生答案").Value <> "" Then
            Duoxuan = Duoxuan + rs.Fields("考生答案").Value + "/"
        Else
            Duoxuan = Duoxuan + "o" + "/"
        End If
        '试卷分数,ID'不正确分数为0
        If rs.Fields("考生答案").Value = rs.Fields("答案").Value Then
            Scores = Scores + rs.Fields("分数").Value
            Duoxuans = Duoxuans + Trim(str(rs.Fields("分数").Value)) + ","
           Else
            Duoxuans = Duoxuans + "0,"
        End If
        Duoxuanid = Duoxuanid + Trim(str(rs.Fields("ID").Value)) + ","
     End If
   
     rs.MoveNext
  Loop
  '填空题
  rs.Close
  rs.Open "试卷填空题", LocalConn, adOpenStatic, adLockOptimistic
  Do While Not rs.EOF
    TianKong = TianKong + rs.Fields("考生答案").Value + "▼▼"
    TianKongID = TianKongID & rs.Fields("ID").Value & ","
    TianKongs = TianKongs + ","
    rs.MoveNext
  Loop
  
  '填判断
  rs.Close
  rs.Open "试卷判断题", LocalConn, adOpenStatic, adLockOptimistic
  Do While Not rs.EOF
    PanDuan = PanDuan + rs.Fields("考生答案").Value + ","
    PanDuanID = PanDuanID & rs.Fields("ID").Value & ","
    If rs.Fields("考生答案").Value = rs.Fields("答案").Value Then
      Scores = Scores + rs.Fields("分数").Value
      PanDuans = PanDuans & rs.Fields("分数").Value & ","
     Else
      PanDuans = PanDuans + "0,"
    End If
    rs.MoveNext
  Loop
  
  '问答题
  rs.Close
  rs.Open "试卷问答题", LocalConn, adOpenStatic, adLockOptimistic
  Do While Not rs.EOF
    WenDa = WenDa + rs.Fields("考生答案").Value + "▼▼"
    WenDaID = WenDaID & rs.Fields("ID").Value & ","
    WenDas = WenDas + ","
    rs.MoveNext
  Loop
  
 '作文题
  rs.Close
  rs.Open "试卷作文题", LocalConn, adOpenStatic, adLockOptimistic
  Do While Not rs.EOF
    ZuoWen = ZuoWen + rs.Fields("考生答案").Value + "▼▼"
    ZuoWenID = ZuoWenID & rs.Fields("ID").Value & ","
    ZuoWens = ZuoWens + ","
    rs.MoveNext
  Loop
  '判断是否有该题型,没有则处理
  If Danxuan = "" Then
    Danxuan = "/"
    Danxuans = ","
    Danxuanid = ","
  End If
  If Duoxuan = "" Then
    Duoxuan = "/"
    Duoxuans = ","
    Duoxuanid = ","
  End If
  If TianKong = "" Then
    TianKong = "▼▼"
    TianKongID = ","
    TianKongs = ","
  End If
  If PanDuan = "" Then
    PanDuan = ","
    PanDuanID = ","
    PanDuans = ","
  End If
  If WenDa = "" Then
    WenDa = "▼▼"
    WenDaID = ","
    WenDas = ","
  End If
  If ZuoWen = "" Then
    ZuoWen = "▼▼"
    ZuoWenID = ","
    ZuoWens = ","
  End If
  '选择
  Danxuan = Left(Danxuan, Len(Danxuan) - 1)
  Duoxuan = Left(Duoxuan, Len(Duoxuan) - 1)
  Danxuans = Left(Danxuans, Len(Danxuans) - 1)
  Duoxuans = Left(Duoxuans, Len(Duoxuans) - 1)
  Danxuanid = Left(Danxuanid, Len(Danxuanid) - 1)
  Duoxuanid = Left(Duoxuanid, Len(Duoxuanid) - 1)
  '填空
  TianKong = Left(TianKong, Len(TianKong) - 2)
  TianKongID = Left(TianKongID, Len(TianKongID) - 1)
  TianKongs = Left(TianKongs, Len(TianKongs) - 1)
  ' 判断
  PanDuan = Left(PanDuan, Len(PanDuan) - 1)
  PanDuanID = Left(PanDuanID, Len(PanDuanID) - 1)
  PanDuans = Left(PanDuans, Len(PanDuans) - 1)
  '问答
  WenDa = Left(WenDa, Len(WenDa) - 2)
  WenDaID = Left(WenDaID, Len(WenDaID) - 1)
  WenDas = Left(WenDas, Len(WenDas) - 1)
  '作文
  ZuoWen = Left(ZuoWen, Len(ZuoWen) - 2)
  ZuoWenID = Left(ZuoWenID, Len(ZuoWenID) - 1)
  ZuoWens = Left(ZuoWens, Len(ZuoWens) - 1)
  '提交分数
  Dim RemoteConn As Connection
  Set RemoteConn = New Connection
  Dim sql As String
  Dim ID As Long
  RemoteConn.Open ConnString '
  ID = GetAutoID("score")
  '判断题和基本信息
  sql = "insert into score(id,studentid,testid,testtime,score,danxuan,danxuanid,danxuans,duoxuan,duoxuanid,duoxuans,complete) values(" & ID & "," + StudentID + "," & TestID & ",'" + Format(Date, "yyyy-mm-dd") & "'," & Scores & ",'" + Danxuan + "','" + Danxuanid + "','" + Danxuans + "','" + Duoxuan + "','" + Duoxuanid + "','" + Duoxuans + "','F')"
  RemoteConn.Execute sql
  '填空题
  If TianKong <> "" Then
   sql = "insert into scoreTK(id,tiankong,tiankongid,tiankongs) values (" & ID & ",'" + TianKong + "','" + TianKongID + "','" + TianKongs + "')"
   RemoteConn.Execute sql
  End If
  
  '判断题
  If PanDuan <> "" Then
    sql = "insert into scorePD(id,panduan,panduanid,panduans) values (" & ID & ",'" + PanDuan + "','" + PanDuanID + "','" + PanDuans + "')"
    RemoteConn.Execute sql
  End If
  
  '问答题
  If WenDa <> "" Then
    sql = "insert into scoreWD(id,wenda,wendaid,wendas) values (" & ID & ",'" + WenDa + "','" + WenDaID + "','" + WenDas + "')"
    RemoteConn.Execute sql
  End If
  
  '作文题
  If ZuoWen <> "" Then
    sql = "insert into scoreZW(id,zuowen,zuowenid,zuowens) values (" & ID & ",'" + ZuoWen + "','" + ZuoWenID + "','" + ZuoWens + "')"
    RemoteConn.Execute sql
  End If
  
  '释放资源
  rs.Close
  Set rs = Nothing
  RemoteConn.Close
  Set RemoteConn = Nothing
  JiaoJuan = True
  MsgBox "你的选择题和判断题的总成绩为 " & Scores & " 分" + vbCrLf + "其他题型等老师判完卷以后才知道!"
  
End Function


Sub DelDB() '删除数据库
  Dim sql As String
  sql = "delete from 试卷选择题"
  LocalConn.Execute sql
  sql = "delete from 试卷信息"
  LocalConn.Execute sql
  sql = "delete from 试卷填空题"
  LocalConn.Execute sql
  sql = "delete from 试卷判断题"
  LocalConn.Execute sql
  sql = "delete from 试卷问答题"
  LocalConn.Execute sql
  sql = "delete from 试卷作文题"
  LocalConn.Execute sql
  If Dir(App.Path + "\temp.html") <> "" Then
     Kill App.Path + "\temp.html"
  End If
End Sub

⌨️ 快捷键说明

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