Private Sub QuestionNavigation()
rdbA.Checked = False
rdbB.Checked = False
rdbC.Checked = False
rdbD.Checked = False
Dim qDT As DataTable = DTTable("SELECT *", "tblQuestions", "")
numItems = qDT.Rows.Count
If (numItems > 0) Then
If (n < numItems) Then
lblQuestionNumber.Text = "Question {" & (n + 1) & "} of {" & qDT.Rows.Count & "}"
Qid = qDT.Rows(n).Item(0).ToString()
txtQuestion.Text = qDT.Rows(n).Item(1).ToString()
Dim qcDT As DataTable = DTTable("SELECT *", "tblChoices", " WHERE QuestionID='" & Qid & "'")
txtChoiceA.Text = qcDT.Rows(0).Item(2).ToString()
txtChoiceB.Text = qcDT.Rows(1).Item(2).ToString()
txtChoiceC.Text = qcDT.Rows(2).Item(2).ToString()
txtChoiceD.Text = qcDT.Rows(3).Item(2).ToString()
Else
MessageBox.Show("Congratulation! You have completed the exam. Thank you for your cooperation.", "Complete", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Close()
DisplayForm(frmLogin, frmMain.pnlMain)
End If
End If
End Sub
以下是使用圆形按钮从数据库生成问题到数据网格视图的代码。我已经拥有包含正确答案的表格,但我不知道如何将其连接到表格考生的答案中,并且分数将计算在内。
Dim Score As String
Dim dict As New Dictionary(Of Integer, Integer)
Private Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSubmit.Click
If (answerChoice() <> "") Then
Try
RecordRow("INSERT INTO tblExamineeAnswers(ExamineeID, QuestionID, ExamineeAnswer) VALUES ('" & examineeID & "', '" & Qid & "', '" & (Qid & answerChoice()) & "')")
n += 1
QuestionNavigation()
Dim dt As DataTable = DTTable("SELECT *", "tblExamineeAnswers", "")
For examineeID = 170001 To 170004
For Each row As DataRow In dt.Rows
If examineeID = CInt(row(0)) And row(2).ToString.EndsWith("A") Then
Score += 1
End If
Next
dict.Add(examineeID, Score)
Score = 0
Next
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
MessageBox.Show("Please Select Your Answer", "Answer", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
End If
End Sub
这是按下提交按钮并继续进行下一个问题的代码。我如何将所有计算得分加起来并放入另一张表中。
tblpersonalinfo
ID LastName FirstName Gender Address ContactNo EmailAd Score Name
170001 Padilla John David Male Palina East 639304536 dsd 0
170002 hgdfd fdgffd Female aa 11 1 0
170003 Laguit Mark Angelo Male Pozzorubio 12314 jkwej 0
得分属性是我计划将得分总和的位置。
tblexamineeanswers
ExamineeID QuestionID ExamineeAnswer
170001 Q170001 Q170001A
170001 Q170002 Q170002A
170001 Q170003 Q170003B
170001 Q170004 Q170004B
170002 Q170001 Q170001C
170002 Q170002 Q170002B
170002 Q170003 Q170003B
170002 Q170004 Q170004C
170003 Q170001 Q170001A
170003 Q170002 Q170002B
170003 Q170003 Q170003B
170003 Q170004 Q170004B
这是考生回答的表格。 ExamineeAnswer上的字母表示他点击了什么圆形按钮。
tblchoices
QuestionID ChoiceID Choice
Q170001 Q170001A Paragraph
Q170001 Q170001B Sentence
Q170001 Q170001C Word
Q170001 Q170001D Topic
Q170002 Q170002A Masking
Q170002 Q170002B Remembering
Q170002 Q170002C Hearing
Q170002 Q170002D Listening
Q170003 Q170003A Airport
Q170003 Q170003B Canteen
Q170003 Q170003C Garden
Q170003 Q170003D School
Q170004 Q170004A Common
Q170004 Q170004B Communicare
Q170004 Q170004C Communar
此表显示了问题的选择。
tblquestions
QuestionID Question
Q170001 A _________ is a group of sentence about one topic...
Q170002 It is a natural process of recieving aural and vis...
Q170003 A specific place to show where the departure and a...
Q170004 The term communication was derived from the term _...
此表显示了带有ID ID
的问题tblanswer
QuestionID ChoiceID
Q170001 Q170001A
Q170002 Q170002A
Q170003 Q170003A
Q170004 Q170004A
此表显示了特定问题的正确选择/答案。
答案 0 :(得分:0)
'伪代码Dim dt as DataTable - 你的tblexamineeanswers
Dim Score As Integer
Dim dict As New Dictionary(Of Integer, Integer)
For ExamineeID = 170001 To 170004
For Each row As DataRow In dt.Rows
If ExamineeID = CInt(row(0)) And row(2).ToString.EndsWith("A") Then
Score += 1
End If
Next
dict.Add(ExamineeID, Score)
Score = 0
Next
现在您有一个ExamineeId字典作为关键字,总得分为值 查看结果在For ... Next
下面添加以下内容For Each item As KeyValuePair(Of Integer, Integer) In dict
Debug.Print($"ExamineeId = {item.Key}, Score = {item.Value}")
Next
数据将在立即窗口中。在Window下的调试菜单中找到它。