📄 qestionpaper.vb
字号:
Option Strict Off
Option Explicit On
Friend Class QestionPaper
Private mvarFillingNum As Integer
Private mvarRightWrongNum As Integer
Private mvarSingleSelNum As Integer
Private mvarMultiSelNum As Integer
Private mvarEssayQNum As Integer
Private mvarCreated As Boolean
Private mvarAnswered As Boolean
Private mvarChecked As Boolean
Public ReadOnly Property SubjectiveScore() As Single
Get
On Error Resume Next
Dim SubScore As Single
SubScore = 0
DataEnv.rsQstPaper.Open() '打开rsQstPaper数据集
DataEnv.rsQstPaper.Filter = "QuestionType = 1 or QuestionType = 5" '设置数据集过滤器
While Not DataEnv.rsQstPaper.EOF
SubScore = SubScore + DataEnv.rsQstPaper.Fields("Commence").Value '获取Commence字段值
DataEnv.rsQstPaper.MoveNext()
End While
DataEnv.rsQstPaper.Filter = "" '清空数据集过滤器
DataEnv.rsQstPaper.Close() '关闭数据集
SubjectiveScore = SubScore
End Get
End Property
Public ReadOnly Property ObjectiveScore() As Single
Get
On Error Resume Next
Dim objScore As Single
objScore = 0
DataEnv.rsQstPaper.Open()
'数据集过滤条件试题类型为2或3或4
DataEnv.rsQstPaper.Filter = "QuestionType = 2 or QuestionType = 3 Or QuestionType = 4"
While Not DataEnv.rsQstPaper.EOF
objScore = objScore + DataEnv.rsQstPaper.Fields("Commence").Value
DataEnv.rsQstPaper.MoveNext()
End While
DataEnv.rsQstPaper.Filter = ""
DataEnv.rsQstPaper.Close()
ObjectiveScore = objScore
End Get
End Property
Public ReadOnly Property SScore() As Single
Get
On Error Resume Next
Dim SubScore As Single
SubScore = 0
DataEnv.rsQstPaper.Open()
'数据集过滤条件试题类型为1或5
DataEnv.rsQstPaper.Filter = "QuestionType = 1 or QuestionType = 5"
While Not DataEnv.rsQstPaper.EOF
SubScore = SubScore + DataEnv.rsQstPaper.Fields("Score").Value '获取Score的字段值
DataEnv.rsQstPaper.MoveNext()
End While
DataEnv.rsQstPaper.Filter = ""
DataEnv.rsQstPaper.Close()
SScore = SubScore
End Get
End Property
Public ReadOnly Property OScore() As Single
Get
On Error Resume Next
Dim objScore As Single
objScore = 0
DataEnv.rsQstPaper.Open()
'数据集过滤条件试题类型为2或3或4
DataEnv.rsQstPaper.Filter = "QuestionType = 2 or QuestionType = 3 Or QuestionType = 4"
While Not DataEnv.rsQstPaper.EOF
objScore = objScore + DataEnv.rsQstPaper.Fields("Score").Value '获取Score的字段值
DataEnv.rsQstPaper.MoveNext()
End While
DataEnv.rsQstPaper.Filter = ""
DataEnv.rsQstPaper.Close()
OScore = objScore
End Get
End Property
Public ReadOnly Property QuestionNum() As Integer
Get
DataEnv.rsQstPaper.Open()
QuestionNum = DataEnv.rsQstPaper.RecordCount '获取rsQstPaper数据集的记录数目
DataEnv.rsQstPaper.Close()
End Get
End Property
Public ReadOnly Property LastQSerial() As Integer
Get
LastQSerial = GetQSerial(QuestionNum) '获取最后一条记录的试卷编号
End Get
End Property
Public ReadOnly Property FirstQSerial() As Integer
Get
FirstQSerial = GetQSerial(1) '获取开始记录的试卷编号
End Get
End Property
'定义属性表示填空题数
Public Property FillingNum() As Short
Get
FillingNum = mvarFillingNum
End Get
Set(ByVal Value As Short)
mvarFillingNum = Value
End Set
End Property
'定义属性表示判断题数
Public Property RightWrongNum() As Short
Get
RightWrongNum = mvarRightWrongNum
End Get
Set(ByVal Value As Short)
mvarRightWrongNum = Value
End Set
End Property
'定义属性表示单选题数
Public Property SingleSelNum() As Short
Get
SingleSelNum = mvarSingleSelNum
End Get
Set(ByVal Value As Short)
mvarSingleSelNum = Value
End Set
End Property
'定义属性表示多选题数
Public Property MultiSelNum() As Short
Get
MultiSelNum = mvarMultiSelNum
End Get
Set(ByVal Value As Short)
mvarMultiSelNum = Value
End Set
End Property
'定义属性表示问答题数
Public Property EssayQuesNum() As Short
Get
EssayQuesNum = mvarEssayQNum
End Get
Set(ByVal Value As Short)
mvarEssayQNum = Value
End Set
End Property
'定义属性表示试卷是否需要进行回答
Public Property Answered() As Boolean
Get
Answered = mvarAnswered
End Get
Set(ByVal Value As Boolean)
mvarAnswered = Value
End Set
End Property
'定义属性表示试卷是否需要创建
Public Property Created() As Boolean
Get
Return mvarCreated
End Get
Set(ByVal Value As Boolean)
mvarCreated = Value
End Set
End Property
'定义属性表示试卷是否需要评阅
Public Property Checked() As Boolean
Get
Checked = mvarChecked
End Get
Set(ByVal Value As Boolean)
mvarChecked = Value
End Set
End Property
Private Function GetDBRS(ByVal QType As MainModule.QuestionType) As ADODB.Recordset
On Error Resume Next
Select Case QType '根据试题类型获取数据集
Case MainModule.QuestionType.Blacks
GetDBRS = DataEnv.rsFillingQ
Case MainModule.QuestionType.RightOrWrong
GetDBRS = DataEnv.rsRorWQ
Case MainModule.QuestionType.singlesel
GetDBRS = DataEnv.rsSingleSelQ
Case MainModule.QuestionType.MultiSel
GetDBRS = DataEnv.rsMultiSelQ
Case MainModule.QuestionType.EssayQuestion
GetDBRS = DataEnv.rsEssayQ
Case Else
'UPGRADE_NOTE: 在对对象 GetDBRS 进行垃圾回收前,不可以销毁该对象。 单击以获得更多信息:“ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1029"”
GetDBRS = Nothing
End Select
End Function
Private Function GetQID(ByVal QType As MainModule.QuestionType, ByRef Score As Single) As Integer
On Error Resume Next
Dim dbrs As ADODB.Recordset
dbrs = GetDBRS(QType) '获取题型为qType的数据集
Dim QstID As Integer
QstID = 0
dbrs.Open() '打开题库数据集
DataEnv.rsQstPaper.Open() '打开试卷数据集
While (QstID = 0) '获取问题号,如果试卷中已有该号,则重新获取。
Randomize()
QstID = Int(Rnd() * (dbrs.RecordCount - 1))
dbrs.Move(QstID, ADODB.BookmarkEnum.adBookmarkFirst) '游标移至第QstID条记录
QstID = dbrs.Fields("QuestionID").Value '获取试题编号
Score = dbrs.Fields("Score").Value '获取该试题的得分
DataEnv.rsQstPaper.Filter = "QuestionID = " & QstID & " And QuestionType =" & QType
If DataEnv.rsQstPaper.RecordCount > 0 Then
QstID = 0 '如果试卷中已经有该题,则将编号重置
End If
End While
DataEnv.rsQstPaper.Close() '关闭数据库
dbrs.Close()
GetQID = QstID '函数返回题目编号
End Function
Public Function AddQuestion(ByVal iCount As Integer, ByVal QID As Integer, ByVal QType As MainModule.QuestionType, ByVal Score As Single) As Boolean
On Error Resume Next
DataEnv.rsQstPaper.Open()
DataEnv.rsQstPaper.Filter = "QuestionID = " & CStr(QID) & " and QuestionType = " & CStr(QType)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -