www.pudn.com > cjg2.rar > frmTestDIY.frm
VERSION 5.00
Begin VB.Form TestDIY
AutoRedraw = -1 'True
BorderStyle = 3 'Fixed Dialog
Caption = "手工选题"
ClientHeight = 6525
ClientLeft = 45
ClientTop = 330
ClientWidth = 10050
LinkTopic = "Form1"
MaxButton = 0 'False
MDIChild = -1 'True
MinButton = 0 'False
ScaleHeight = 6525
ScaleWidth = 10050
ShowInTaskbar = 0 'False
Begin VB.ListBox lstProFill
Height = 2400
Left = 7155
TabIndex = 18
Top = 3575
Width = 1065
End
Begin VB.ListBox lstProRead
Height = 2400
Left = 7155
TabIndex = 16
Top = 495
Width = 1065
End
Begin VB.ListBox lstSelOne
Height = 2400
Left = 5895
TabIndex = 14
Top = 3575
Width = 1065
End
Begin VB.CommandButton cmdExit
Cancel = -1 'True
Caption = "退出"
Height = 300
Left = 7455
TabIndex = 13
Top = 6090
Width = 750
End
Begin VB.PictureBox picNavigation
AutoSize = -1 'True
BorderStyle = 0 'None
Height = 350
Left = 1155
ScaleHeight = 345
ScaleWidth = 2415
TabIndex = 7
Top = 6105
Width = 2410
Begin VB.TextBox txtNews
Height = 270
Left = 585
Locked = -1 'True
TabIndex = 12
TabStop = 0 'False
Top = 0
Width = 1185
End
Begin VB.CommandButton cmdMove
Height = 270
Index = 2
Left = 1725
Picture = "frmTestDIY.frx":0000
Style = 1 'Graphical
TabIndex = 11
Top = 0
Width = 300
End
Begin VB.CommandButton cmdMove
Height = 270
Index = 3
Left = 2010
Picture = "frmTestDIY.frx":0044
Style = 1 'Graphical
TabIndex = 10
Top = 0
Width = 300
End
Begin VB.CommandButton cmdMove
Height = 270
Index = 0
Left = -15
Picture = "frmTestDIY.frx":0090
Style = 1 'Graphical
TabIndex = 9
Top = 0
Width = 300
End
Begin VB.CommandButton cmdMove
Height = 270
Index = 1
Left = 270
Picture = "frmTestDIY.frx":00DD
Style = 1 'Graphical
TabIndex = 8
Top = 0
Width = 300
End
End
Begin VB.CommandButton cmdOk
Caption = "确定"
Height = 300
Left = 6585
TabIndex = 6
Top = 6090
Width = 750
End
Begin VB.CommandButton cmdAdd
Caption = "添加"
Height = 300
Left = 3915
TabIndex = 5
Top = 6090
Width = 750
End
Begin VB.ListBox lstJudge
Height = 2400
Left = 5895
TabIndex = 4
Top = 495
Width = 1065
End
Begin VB.TextBox txtTest
Height = 5445
Left = 360
MultiLine = -1 'True
ScrollBars = 3 'Both
TabIndex = 2
Top = 495
Width = 5325
End
Begin VB.ComboBox cmbType
Height = 300
ItemData = "frmTestDIY.frx":0121
Left = 1170
List = "frmTestDIY.frx":0131
Style = 2 'Dropdown List
TabIndex = 1
Top = 135
Width = 1620
End
Begin VB.Label lblPF
AutoSize = -1 'True
Caption = "Label13"
Height = 180
Index = 2
Left = 8580
TabIndex = 31
Top = 4800
Width = 630
End
Begin VB.Label Label12
AutoSize = -1 'True
Caption = "填空数为4的题"
Height = 180
Left = 8325
TabIndex = 30
Top = 4557
Width = 1170
End
Begin VB.Label lblPF
AutoSize = -1 'True
Caption = "Label11"
Height = 180
Index = 1
Left = 8580
TabIndex = 29
Top = 4314
Width = 630
End
Begin VB.Label Label10
AutoSize = -1 'True
Caption = "填空数为3的题"
Height = 180
Left = 8340
TabIndex = 28
Top = 4071
Width = 1170
End
Begin VB.Label lblPF
AutoSize = -1 'True
Caption = "Label9"
Height = 180
Index = 0
Left = 8580
TabIndex = 27
Top = 3828
Width = 540
End
Begin VB.Label Label8
AutoSize = -1 'True
Caption = "填空数为2的题"
Height = 180
Left = 8325
TabIndex = 26
Top = 3585
Width = 1170
End
Begin VB.Label lblPR
AutoSize = -1 'True
Caption = "Label7"
Height = 180
Index = 2
Left = 8580
TabIndex = 25
Top = 1905
Width = 540
End
Begin VB.Label Label6
AutoSize = -1 'True
Caption = "分题干数为3的题"
Height = 180
Left = 8325
TabIndex = 24
Top = 1629
Width = 1350
End
Begin VB.Label lblPR
AutoSize = -1 'True
Caption = "Label5"
Height = 180
Index = 1
Left = 8580
TabIndex = 23
Top = 1353
Width = 540
End
Begin VB.Label Label4
AutoSize = -1 'True
Caption = "分题干数为2的题"
Height = 180
Left = 8325
TabIndex = 22
Top = 1077
Width = 1350
End
Begin VB.Label lblPR
Appearance = 0 'Flat
AutoSize = -1 'True
Caption = "Label3"
ForeColor = &H80000008&
Height = 180
Index = 0
Left = 8520
TabIndex = 21
Top = 801
Width = 540
End
Begin VB.Label Label2
AutoSize = -1 'True
Caption = "分题干数为1的题"
Height = 180
Left = 8325
TabIndex = 20
Top = 525
Width = 1350
End
Begin VB.Label lblProFill
AutoSize = -1 'True
Caption = "程序填空题"
Height = 180
Left = 7155
TabIndex = 19
Top = 3285
Width = 900
End
Begin VB.Label lblProRead
AutoSize = -1 'True
Caption = "程序阅读题"
Height = 180
Left = 7155
TabIndex = 17
Top = 195
Width = 900
End
Begin VB.Label lblSelOne
AutoSize = -1 'True
Caption = "选择题"
Height = 180
Left = 5895
TabIndex = 15
Top = 3270
Width = 540
End
Begin VB.Label lblJudge
AutoSize = -1 'True
Caption = "判断题"
Height = 180
Left = 5895
TabIndex = 3
Top = 195
Width = 540
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "试题类型"
Height = 180
Left = 375
TabIndex = 0
Top = 195
Width = 720
End
End
Attribute VB_Name = "TestDIY"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim objTemp As New Recordset '用于保存各题型题库数据
Dim iJ%, iSO%, iPR%, iPF% '用于保存各题型小题数设置参数
Dim iDivPR%(3), iDivPF%(3), iDPR%(3), iDPF%(3) '用于保存程序阅读和程序填空题的设置参数
Dim vJ, vS, vPR, vPF '用于保存各题型选择试题的题号
Private Sub cmbType_Click()
'选择试题库
Select Case cmbType.ListIndex
Case 0
Set objTemp = objJudge.Clone
Case 1
Set objTemp = objSelOne.Clone
Case 2
Set objTemp = objProRead.Clone
Case 3
Set objTemp = objProFill.Clone
End Select
cmdMove(0).Value = True
End Sub
Private Sub cmdAdd_Click()
'根据试题类型将当前试题编号添加到选题列表中
Select Case cmbType.ListIndex
Case 0
If iJ = lstJudge.ListCount Then '检查是否已经选足题量
MsgBox "已经选足判断题!", vbInformation, Me.Caption
Else
Add_Item lstJudge '添加判断题
End If
Case 1
If iSO = lstSelOne.ListCount Then '检查是否已经选足题量
MsgBox "已经选足选择题!", vbInformation, Me.Caption
Else
Add_Item lstSelOne '添加选择题
End If
Case 2
If iPR = iDPR(1) + iDPR(2) * 2 + iDPR(3) * 3 Then '检查是否已经选足题量
MsgBox "已经选足程序阅读题!", vbInformation, Me.Caption
Else
Add_Item lstProRead '添加程序阅读题
End If
Case 3
If iPF = iDPF(1) * 2 + iDPF(2) * 3 + iDPF(3) * 4 Then '检查是否已经选足题量
MsgBox "已经选足程序填空题!", vbInformation, Me.Caption
Else
Add_Item lstProFill '添加程序填空题
End If
End Select
End Sub
Private Sub cmdExit_Click()
Unload Me '关闭手工选题窗口
SelectTest.Show '显示试卷定制窗口
End Sub
Private Sub cmdOk_Click()
Dim i%, s%, a, b, c, d
'检查是否选足小题数
If iJ > lstJudge.ListCount Then
MsgBox "未选够判断题,还差" & Trim(Str(iJ - lstJudge.ListCount)) _
& "道题!", vbCritical, Me.Caption
ElseIf iSO > lstSelOne.ListCount Then
MsgBox "未选够选择题,还差" & Trim(Str(iSO - lstSelOne.ListCount)) _
& "道题!", vbCritical, Me.Caption
ElseIf iPR > iDPR(1) + iDPR(2) * 2 + iDPR(3) * 3 Then
MsgBox "未选够程序阅读题,还差" _
& Trim(Str(iPR - (iDPR(1) + iDPR(2) * 2 + iDPR(3) * 3))) _
& "道题!", vbCritical, Me.Caption
ElseIf iPF > iDPF(1) * 2 + iDPF(2) * 3 + iDPF(3) * 4 Then
MsgBox "未选够程序填空题,还差" _
& Trim(Str(iPF - (iDPF(1) * 2 + iDPF(2) * 3 + iDPF(3) * 4))) _
& "道题!", vbCritical, Me.Caption
Else
'保存选择的试题
For i = 0 To lstJudge.ListCount - 1
vJ(i + 1) = Val(lstJudge.List(i))
Next
SelectTest.Judge = vJ '使用属性过程返回选择试题
For i = 0 To lstSelOne.ListCount - 1
vS(i + 1) = Val(lstSelOne.List(i))
Next
SelectTest.SelOne = vS '使用属性过程返回选择试题
For i = 0 To lstProRead.ListCount - 1
vPR(i + 1) = Val(lstProRead.List(i))
Next
For i = lstProRead.ListCount + 1 To UBound(vPR)
vPR(i) = 0
Next
SelectTest.ProRead = vPR '使用属性过程返回选择试题
For i = 0 To lstProFill.ListCount - 1
vPF(i + 1) = Val(lstProFill.List(i))
Next
For i = lstProFill.ListCount + 1 To UBound(vPF)
vPF(i) = 0
Next
SelectTest.ProFill = vPF '使用属性过程返回选择试题
Unload Me '关闭手工选题窗口
SelectTest.Show '显示试卷定制窗口
End If
End Sub
Private Sub Form_Load()
Dim i%, m%, Code$, j%
Set objTemp = objJudge.Clone
cmdMove(0).Value = True
cmbType.ListIndex = 0
'获得各类型题的小题数量
iJ = Val(SelectTest.txtSum(0))
iSO = Val(SelectTest.txtSum(1))
iPR = Val(SelectTest.txtSum(2))
iPF = Val(SelectTest.txtSum(3))
For i = 1 To 3
iDivPR(i) = Val(SelectTest.txtDivSum(i - 1))
iDivPF(i) = Val(SelectTest.txtDivSum(i + 2))
Next
'计算已选程序阅读和程序填空的分题数
vJ = SelectTest.Judge
vS = SelectTest.SelOne
vPR = SelectTest.ProRead
vPF = SelectTest.ProFill
For i = 0 To 3
iDPR(i) = 0
iDPF(i) = 0
Next
For i = 0 To UBound(vPF)
If vPF(i) <> 0 Then
Code = Trim(Str(vPF(i)))
With objProFill
'计算选中题的分题干数
.MoveFirst
.Find "编号=" & Code & ""
m = 0
For j = 1 To 4
If .Fields("空" & Chr(96 + j)) <> "" Then m = m + 1
Next
iDPF(m - 1) = iDPF(m - 1) + 1
End With
End If
Next
For i = 0 To UBound(vPR)
If vPR(i) <> 0 Then
Code = Trim(Str(vPR(i)))
With objProRead
'计算选中题的分题干数
.MoveFirst
.Find "编号=" & Code & ""
m = 0
For j = 1 To 3
If .Fields("分题干" & Trim(Str(j))) <> "" Then m = m + 1
Next
iDPR(m) = iDPR(m) + 1
End With
End If
Next
For i = 0 To 2
lblPF(i) = "应选" & Trim(Str(iDivPF(i + 1))) & "道,差" _
& Trim(Str(iDivPF(i + 1) - iDPF(i + 1))) & "道"
lblPR(i) = "应选" & Trim(Str(iDivPR(i + 1))) & "道,差" _
& Trim(Str(iDivPR(i + 1) - iDPR(i + 1))) & "道"
Next
lblJudge = "判断题(" & SelectTest.txtSum(0) & ")"
lblSelOne = "选择题(" & SelectTest.txtSum(1) & ")"
lblProRead = "程序阅读题(" & SelectTest.txtSum(2) & ")"
lblProFill = "程序填空题(" & SelectTest.txtSum(3) & ")"
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set objTemp = Nothing
End Sub
Private Sub cmdMove_Click(Index As Integer)
With objTemp
Select Case Index '切换当前记录
Case 0 '使第一个记录成为当前记录
If .RecordCount > 0 Then .MoveFirst
Case 1 '使上一个记录成为当前记录
If .RecordCount > 0 And Not .BOF Then
.MovePrevious
If .BOF Then .MoveFirst
End If
Case 2 '使下一个记录成为当前记录
If .RecordCount > 0 And Not .EOF Then
.MoveNext
If .EOF Then .MoveLast
End If
Case 3 '使最后一个记录成为当前记录
If .RecordCount > 0 Then .MoveLast
End Select
If .RecordCount < 1 Then
txtNews = "记录:无" '显示无记录提示
txtTest = ""
Else
'显示当前记录数据
Show_Data
End If
End With
End Sub
Private Sub Add_Item(objList As ListBox)
Dim Code$, i%, m%, j%
Code = objTemp.Fields("编号")
If objList.ListCount > 0 Then
'检查是否已存在相同题号
For i = 0 To objList.ListCount - 1
If objList.List(i) = Code Then Exit For
Next
If i < objList.ListCount Then
MsgBox "已选择了该题!", vbCritical, Me.Caption
Else
If cmbType.ListIndex = 2 Then
'计算选中题的分题干数
m = 0
For j = 1 To 3
If objTemp.Fields("分题干" & Trim(Str(j))) <> "" Then m = m + 1
Next
If iDivPR(m) = 0 Then
MsgBox "你没有设置选择分题干数为" & Trim(Str(m)) & "程序阅读题!", _
vbCritical, Me.Caption
ElseIf iDPR(m) < iDivPR(m) Then
objList.AddItem Code
iDPR(m) = iDPR(m) + 1
lblPR(m - 1) = "应选" & Trim(Str(iDivPR(m))) & "道,差" _
& Trim(Str(iDivPR(m) - iDPR(m))) & "道"
Else
MsgBox "分题干数为" & Trim(Str(m)) & "已够!", vbCritical, Me.Caption
End If
ElseIf cmbType.ListIndex = 3 Then
'计算选中题的填空数
m = 0
For j = 1 To 4
If objTemp.Fields("空" & Chr(96 + j)) <> "" Then m = m + 1
Next
If iDivPF(m - 1) = 0 Then
MsgBox "你没有设置选择填空数为" & Trim(Str(m)) & "程序填空题!", _
vbCritical, Me.Caption
ElseIf iDPF(m - 1) < iDivPF(m - 1) Then
objList.AddItem Code
iDPF(m - 1) = iDPF(m - 1) + 1
lblPF(m - 2) = "应选" & Trim(Str(iDivPF(m - 1))) & "道,差" _
& Trim(Str(iDivPF(m - 1) - iDPF(m - 1))) & "道"
Else
MsgBox "填空数为" & Trim(Str(m)) & "已够!", vbCritical, Me.Caption
End If
Else
objList.AddItem Code
End If
End If
Else
If cmbType.ListIndex = 2 Then
'计算选中题的分题干数
m = 0
For j = 1 To 3
If objTemp.Fields("分题干" & Trim(Str(j))) <> "" Then m = m + 1
Next
If iDivPR(m) = 0 Then
MsgBox "你没有设置选择填空数为" & Trim(Str(m)) & "程序填空题!", _
vbCritical, Me.Caption
Else
objList.AddItem Code
iDPR(m) = iDPR(m) + 1
lblPR(m - 1) = "应选" & Trim(Str(iDivPR(m))) & "道,差" _
& Trim(Str(iDivPR(m) - iDPR(m))) & "道"
End If
ElseIf cmbType.ListIndex = 3 Then
'计算选中题的填空数
m = 0
For j = 1 To 4
If objTemp.Fields("空" & Chr(96 + j)) <> "" Then m = m + 1
Next
If iDivPF(m - 1) = 0 Then
MsgBox "你没有设置选择填空数为" & Trim(Str(m)) & "程序填空题!", _
vbCritical, Me.Caption
Else
objList.AddItem Code
iDPF(m - 1) = iDPF(m - 1) + 1
lblPF(m - 2) = "应选" & Trim(Str(iDivPF(m - 1))) & "道,差" _
& Trim(Str(iDivPF(m - 1) - iDPF(m - 1))) & "道"
End If
Else
objList.AddItem Code
End If
End If
End Sub
Private Sub lstJudge_Click()
'显示试题内容
cmbType.ListIndex = 0
Set objTemp = objJudge.Clone
objTemp.Find "编号='" & lstJudge.List(lstJudge.ListIndex) & "'"
Show_Data
End Sub
Private Sub lstSelOne_Click()
'显示试题内容
cmbType.ListIndex = 1
Set objTemp = objSelOne.Clone
objTemp.Find "编号='" & lstSelOne.List(lstSelOne.ListIndex) & "'"
Show_Data
End Sub
Private Sub lstProRead_Click()
'显示试题内容
cmbType.ListIndex = 2
Set objTemp = objProRead.Clone
objTemp.Find "编号='" & lstProRead.List(lstProRead.ListIndex) & "'"
Show_Data
End Sub
Private Sub lstProFill_Click()
'显示试题内容
cmbType.ListIndex = 3
Set objTemp = objProFill.Clone
objTemp.Find "编号='" & lstProFill.List(lstProFill.ListIndex) & "'"
Show_Data
End Sub
Private Sub lstJudge_DblClick()
lstJudge.RemoveItem lstJudge.ListIndex
End Sub
Private Sub lstSelOne_DblClick()
lstSelOne.RemoveItem lstSelOne.ListIndex
End Sub
Private Sub lstProFill_DblClick()
Dim Code$, m%, i%
Code = lstProFill.List(lstProFill.ListIndex)
lstProFill.RemoveItem lstProFill.ListIndex
With objProFill
'计算选中题的分题干数
.MoveFirst
.Find "编号=" & Code & ""
m = 0
For i = 1 To 4
If .Fields("空" & Chr(96 + i)) <> "" Then m = m + 1
Next
iDPF(m - 1) = iDPF(m - 1) - 1
lblPF(m - 2) = "应选" & Trim(Str(iDivPF(m - 1))) & "道,差" _
& Trim(Str(iDivPF(m - 1) - iDPF(m - 1))) & "道"
End With
End Sub
Private Sub lstProRead_DblClick()
Dim Code$, m%, i%
Code = lstProRead.List(lstProRead.ListIndex)
lstProRead.RemoveItem lstProRead.ListIndex
With objProRead
'计算选中题的分题干数
.MoveFirst
.Find "编号=" & Code & ""
m = 0
For i = 1 To 3
If .Fields("分题干" & Trim(Str(i))) <> "" Then m = m + 1
Next
iDPR(m) = iDPR(m) - 1
lblPR(m - 1) = "应选" & Trim(Str(iDivPR(m))) & "道,差" _
& Trim(Str(iDivPR(m) - iDPF(m))) & "道"
End With
End Sub
Private Sub Show_Data()
Dim strData$
With objTemp
Select Case cmbType.ListIndex
Case 0, 3 '显示判断题或程序填空题
txtTest = "编号:" & .Fields("编号") & vbCrLf & .Fields("题干")
Case 1 '显示选择题
txtTest = "编号:" & .Fields("编号") & vbCrLf & .Fields("题干")
txtTest = txtTest & vbCrLf & " (A)" & .Fields("选项a")
txtTest = txtTest & vbCrLf & " (B)" & .Fields("选项b")
txtTest = txtTest & vbCrLf & " (C)" & .Fields("选项c")
txtTest = txtTest & vbCrLf & " (D)" & .Fields("选项d")
Case 2 '显示程序阅读题
txtTest = "编号:" & .Fields("编号") & vbCrLf _
& .Fields("题干") & vbCrLf & "(1)" & .Fields("分题干1")
strData = Replace(.Fields("选项1a"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (A)" & strData
strData = Replace(.Fields("选项1b"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (B)" & strData
strData = Replace(.Fields("选项1c"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (C)" & strData
strData = Replace(.Fields("选项1d"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (D)" & strData
If .Fields("分题干2") <> "" Then
txtTest = txtTest & vbCrLf & "(2)" & .Fields("分题干2")
strData = Replace(.Fields("选项2a"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (A)" & strData
strData = Replace(.Fields("选项2b"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (B)" & strData
strData = Replace(.Fields("选项2c"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (C)" & strData
strData = Replace(.Fields("选项2d"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (D)" & strData
End If
If .Fields("分题干3") <> "" Then
If .Fields("分题干2") <> "" Then
txtTest = txtTest & vbCrLf & "(3)" & .Fields("分题干3")
Else
txtTest = txtTest & vbCrLf & "(2)" & .Fields("分题干3")
End If
strData = Replace(.Fields("选项3a"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (A)" & strData
strData = Replace(.Fields("选项3b"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (B)" & strData
strData = Replace(.Fields("选项3c"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (C)" & strData
strData = Replace(.Fields("选项3d"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (D)" & strData
End If
End Select
'显示当前记录编号和记录总数
txtNews = "记录:" & .AbsolutePosition & "/" & .RecordCount
End With
End Sub