考试系统:如何计算不同表的分数

时间:2017-12-14 08:45:34

标签: mysql vb.net phpmyadmin xampp

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

此表显示了特定问题的正确选择/答案。

1 个答案:

答案 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下的调试菜单中找到它。