系统如何识别问题是否已经得到回答

qcuzuvrc  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(371)

我想知道如果用户想回到上一个问题,系统如何识别问题是否已经回答。如果答案已经被回答,答案将会更新,或者分数增加或者不被编辑,答案将会是相同的。
按钮1是返回到上一个问题按钮2是检查是真是假回答按钮3是继续考试

以下是我的代码片段:

Imports MySql.Data.MySqlClient
Imports System.Drawing
Imports System.IO

Public Class Exam
    'declaring variables for connection'
    Dim score As Integer
    Dim rightans As String
    Dim correct As Integer = 0
    Dim choice As String
    Dim choice1 As String
    Dim choice2 As String
    Dim choice3 As String
    Dim con As MySqlConnection
    Dim con1 As MySqlConnection
    Dim COMMAND As MySqlCommand
    Dim read As MySqlDataReader
    Dim da As MySqlDataAdapter
    Dim sql As String
    Private Sub Exam_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'setting the radiobutton to false, so that when the form load there is no shaded button'
        Label2.Text = 1
        A.Checked = False
        B.Checked = False
        C.Checked = False
        D.Checked = False
        con = New MySqlConnection

        Button1.Enabled = False
        con.ConnectionString = "server=localhost;userid=root;password=;database=user;"
        'calling sub
        qno()

    End Sub

Sub clear()
        'to set the radiobutton false/no shaded.
        A.Checked = False
        B.Checked = False
        C.Checked = False
        D.Checked = False
    End Sub

    Sub qno()
        'calling connection'
        Try
            con = New MySqlConnection
            con.ConnectionString = "server=localhost; user id=root; password=; database=user;"
            con.Open()
            sql = "SELECT * FROM user.math WHERE question_id = @ID;"
            COMMAND = New MySqlCommand
            With COMMAND
                .Connection = con
                .CommandText = sql
                .Parameters.Clear()
                .Parameters.AddWithValue("@ID", Label2.Text)
                .ExecuteNonQuery()
            End With
            Dim arrImage() As Byte
            Dim dt As New DataTable
            da = New MySqlDataAdapter
            da.SelectCommand = COMMAND
            da.Fill(dt)
            If dt.Rows.Count > 0 Then

                arrImage = dt.Rows(0).Item(7)

                Dim mstream As New System.IO.MemoryStream(arrImage)

                Pic1.Image = Image.FromStream(mstream)
                question.Text = dt.Rows(0).Item(1)
                A.Text = dt.Rows(0).Item(2)
                B.Text = dt.Rows(0).Item(3)
                C.Text = dt.Rows(0).Item(4)
                D.Text = dt.Rows(0).Item(5)

            Else
                MsgBox("No results!")
            End If
        Catch ex As MySqlException
            MsgBox(ex.Message)
        Finally
            con.Close()
            da.Dispose()
        End Try

    End Sub

    Sub increment()
        'incrementing the score f the answer is correct'
        Dim i As Integer = 0
        i = Label2.Text
        i = i + 1
        Label2.Text = i
        If Label2.Text > 1 Then
            Button1.Enabled = True
        End If

    End Sub

    Sub decrement()
        'incrementing the score f the answer is correct'
        Dim i As Integer = 1
        i = Label2.Text
        i = i - 1
        Label2.Text = i
        If Label2.Text = 1 Then
            Button1.Enabled = False
        End If

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        'checking of the user answer the questions'
        If ((A.Checked = False) And (B.Checked = False) And (C.Checked = False) And (D.Checked = False)) Then
            MsgBox("Please answer the question")

        Else
            'if the examinee answers all the examination it will call another questions from database'
            If A.Checked = True Then
                con.Open()
                ' Dim ans As String
                Dim arren As String = "A"
                Dim sql As String = ("select answer from user.math where question_id = '" & Label2.Text & "' ")
                COMMAND = New MySqlCommand(sql, con)
                Dim it As String

                read = COMMAND.ExecuteReader
                If read.HasRows Then
                    If read.Read Then
                        it = read.Item("answer")
                        If it = choice Then
                            correct = correct + 1
                            Label4.Text = correct
                        ElseIf it <> choice And Label2.Text <= 1 Then
                            correct = correct - 1
                            Label4.Text = correct
                        End If

                    End If

                    clear()

                End If

                If Label2.Text = 10 Then
                    MessageBox.Show("proceed to other subject test")
                End If
                con.Close()

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        decrement()
        qno()
    End Sub
End Class
u2nhd7ah

u2nhd7ah1#

因为我没有你的数据库,所以没有经过测试。上面和内联的评论。

Public Class Form3

    Dim correct As Integer = 0

    Private Sub Exam_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'setting the radiobutton to false, so that when the form load there is no shaded button'
        Label2.Text = "1"
        A.Checked = False
        B.Checked = False
        C.Checked = False
        D.Checked = False
        Button1.Enabled = False
        qno()
    End Sub
    Private Sub clear()
        'to set the radiobutton false/no shaded.
        A.Checked = False
        B.Checked = False
        C.Checked = False
        D.Checked = False
    End Sub

    Private Sub qno()
        Try
            'Using...End Using blocks will close and dispose of your objects
            Using con = New MySqlConnection("server=localhost;userid=root;password=;database=user;")
                Using Cmd = New MySqlCommand("SELECT * FROM user.math WHERE question_id = @ID;", con)
                    Cmd.Parameters.AddWithValue("@ID", Label2.Text)
                    Dim arrImage() As Byte
                    Dim dt As New DataTable
                    Using da = New MySqlDataAdapter
                        da.SelectCommand = Cmd
                        da.Fill(dt)
                        If dt.Rows.Count > 0 Then
                            'Not at all sure about this picture code
                            arrImage = CType(dt.Rows(0).Item(7), Byte())
                            Dim mstream As New System.IO.MemoryStream(arrImage)
                            Pic1.Image = Image.FromStream(mstream)
                            question.Text = dt.Rows(0).Item(1).ToString
                            A.Text = dt.Rows(0).Item(2).ToString
                            B.Text = dt.Rows(0).Item(3).ToString
                            C.Text = dt.Rows(0).Item(4).ToString
                            D.Text = dt.Rows(0).Item(5).ToString
                            'guessing that answer it item 6
                            HiddenLabel.Text = dt.Rows(0).Item(6).ToString
                        Else
                            MsgBox("No results!")
                        End If
                    End Using
                End Using
            End Using
        Catch ex As MySqlException
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        'checking of the user answer the questions'
        If ((A.Checked = False) And (B.Checked = False) And (C.Checked = False) And (D.Checked = False)) Then
            MsgBox("Please answer the question")
            Exit Sub
        End If
        'The correct answer was put in the HiddenLabel.Text (Visible set to False)
        'in the qno Sub
        Dim CorrectAnswer As String = HiddenLabel.Text
        Dim UserChoice As String = ""

        If A.Checked Then
            UserChoice = "A"
        ElseIf B.Checked Then
            UserChoice = "B"
        ElseIf C.Checked Then
            UserChoice = "C"
        Else
            UserChoice = "D"
        End If

        If UserChoice = CorrectAnswer Then
            correct += 1
        Else
            'It is very hard to get a good score if it is decremented with every wrong answer
            'Why not skip this and just give a zero for a wrong answer
            correct -= 1
        End If
        Label4.Text = correct.ToString
        clear()
        If Label2.Text = "10" Then
            MessageBox.Show("proceed to other subject test")
            Me.Hide()
            exam2.Show()
        Else
            'Add code to keep track of question number in 
            'Add code to show the next question
        End If

    End Sub

相关问题