logo资料库

VB学生考试系统设计.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
学生考试系统课程设计 此工程用于辅助学生考试,共有五个窗体结构:frmMain(主窗体,启动窗体),frmXz3 (单选窗体),frmXz4(多选窗体),frmTk(填空窗体),frmPd(判断窗体)。考生的答案分 别记在四个动态数组中,它们分别是 intXz3ans(),intXz4ans(),blnPdans(),strTkans()。前两个为 整形数组分别记录单选和多选题答案,第三和第四分别为布儿和字符型数组来记录判断题和 填空题答案。以下是编程过程中遇到的一些问题: 1,变量的存储问题 窗体模块级变量:intNumNow ,intNumAll 分别用来存储当前题号和当前类型题的题目总 数 。 在 主 窗 体 加 载 时 分 别 对 记 答 案 的 数 组 从 新 定 义 : intXz3ans(1 to intNumAll , 1 to 4),intXz4ans(1 to intNumAll,1 to 5),blnPdans(1 to intNumAll,1 to 3),strTkans(1 to intNumAll,1 to 2). 例如 intXz3ans(1 to intNumAll, 1 to 4) 1 2 3 4 1 2 3 4 5 6 7 8 9 10 11 表格中的数据或为“0”,或为“1”,前三列用于存放每题各选项的记录,选中为“1”,没选 为“0”,最后一列用于记录各题是否打做了不确定标记,若标记则为“1”,未标记则为“0”。 其它类型题与次类似。 2,函数过程的位置 另为此工程记录答案的数组和四个计算分数的函数过程都定义在标准模块中,便于各 窗体对不同题型和总分的计算。 3,提供帮助的随机性问题 3.1 在单选窗体中如下编程: Private Sub cmdHelp_Click() 示 '随机性的去掉一个错误答案 并将其灰色显 Set recNow = dbTiku.OpenRecordset("select * from xz3 where qno=" & intNumNow) If recNow!ans = "100" Then i = Int(Rnd * 3) + 1 optAns(i).Enabled = False ElseIf recNow!ans = "001" Then i = Int(Rnd * 3) optAns(i).Enabled = False ElseIf recNow!ans = "010" Then
Do i = Int(Rnd * 4) If i <> 2 Then Exit Do End If Loop optAns(i).Enabled = False End If End Sub 3.2 在多选窗体中编写如下函数过程: Private Sub cmdHelp_Click() Randomize Set recNow = dbTiku.OpenRecordset("select * from xz4 where qno=" & intNumNow) If recNow!ans = "1111" Then '若正确答案为全选,则直接给出答案 For i = 1 To 4 chkAns(i).Value = 1 chkAns(i).Enabled = False Next Else Do i = Int(Rnd * 5) If i = 1 And Trim(recNow!ans) Like "0???" Then Exit Do ElseIf i = 2 And Trim(recNow!ans) Like "?0??" Then Exit Do ElseIf i = 3 And Trim(recNow!ans) Like "??0?" Then Exit Do ElseIf i = 4 And Trim(recNow!ans) Like "???0" Then Exit Do End If Loop chkAns(i).Enabled = False End If End Sub 掉用字符匹配函数辅助解决问题 3,为实现快速察看功能,在 Picure 中添加了一个下标为 0,名为 Cmdqno 的控件数组,在 点击快速察看按钮时为其动态赋值,并且改变它的 Caption 属性以显示相关信息,例如单选 窗体中此过程可如下编写: Private Sub cmdScan_Click() Dim j As Integer, k As Integer Picture2.Visible = True For i = 1 To intNumAll Load cmdQno(i) j = i \ 5: k = i Mod 5
With cmdQno(i) .Top = 600 * j .Left = 600 + (k - 1) * 600 If intXz3ans(i, 1) = 0 And intXz3ans(i, 2) = 0 And intXz3ans(i, 3) = 0 Then .Caption = i & "未做" .BackColor = vbRed Else .Caption = i & "已做" .BackColor = vbGreen End If If intXz3ans(i, 4) = 1 Then .FontBold = True .FontUnderline = True End If .Visible = True End With Next Picture1.Enabled = False End Sub 斜体表示此题已做标记,背景颜色为红代表此题未做,绿色背景代表此题已经做过了。值得 注意的 Picture 为命令按钮 cmdQno()的载体,则命令按钮的坐标是相对于它的载体 Picture2 而言的。
分享到:
收藏