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

📄 qestionpaper.vb

📁 Visual Basic管理信息系统开发 学生考试系统(源代码)
💻 VB
📖 第 1 页 / 共 2 页
字号:
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 + -