Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 选择题测验_Xml_Vb.net - Fatal编程技术网

Xml 选择题测验

Xml 选择题测验,xml,vb.net,Xml,Vb.net,我要做一个有20个问题的小测验。 测验的问题和答案中都有图像。 i、 e.计算二重积分(二重积分图像) 答案将是图像或只是一个数字。i、 e结果是2或一个图像 到目前为止,我所做的工作如下: Imports System.Xml.Serialization Imports System.IO Imports System.Xml Public Class Form1 Private questions As New List(Of Question) Private quizP

我要做一个有20个问题的小测验。 测验的问题和答案中都有图像。 i、 e.计算二重积分(二重积分图像) 答案将是图像或只是一个数字。i、 e结果是2或一个图像

到目前为止,我所做的工作如下:

Imports System.Xml.Serialization
Imports System.IO
Imports System.Xml

Public Class Form1
    Private questions As New List(Of Question)
    Private quizPath As String
    Private imagesPath As String
    Private selecteQuestion As Question
    Private score As Integer
    Private xRndNo As New List(Of Integer)
    Private time As Integer = 10

    Private Sub Form1_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        Dim path As String = Application.StartupPath.ToLower.Replace("\bin\debug", "").Replace("\bin\release", "")
        quizPath = path.Replace("\bin\Debug\", "")
        imagesPath = quizPath + "\images"
        quizPath = quizPath + "\quiz.xml"

        Try
            Dim m_xmld As XmlDocument
            Dim m_nodelist As XmlNodeList
            Dim m_node As XmlNode

            m_xmld = New XmlDocument()
            m_xmld.Load(quizPath)
            m_nodelist = m_xmld.SelectNodes("/questions/question")
            For Each m_node In m_nodelist
                Dim question As New Question()
                question.Name = m_node.SelectSingleNode("name").InnerText
                question.Answer1 = m_node.SelectSingleNode("answer1").InnerText
                question.Answer2 = m_node.SelectSingleNode("answer2").InnerText
                question.Answer3 = m_node.SelectSingleNode("answer3").InnerText
                question.Answer4 = m_node.SelectSingleNode("answer4").InnerText
                question.Correct = Convert.ToInt32(m_node.SelectSingleNode("correct").InnerText)
                questions.Add(question)
            Next
        Catch errorVariable As Exception
            MessageBox.Show(errorVariable.ToString())
        End Try
        countdown.Text = time
        scorelabel.Text = score
    End Sub

    Private Sub loadNextQuestion()
        If xRndNo.Count = questions.Count Then
            endOfQuiz()
        End If
        Dim xGenerator As System.Random = New System.Random()
        Dim randomNumb As Integer = 0

        While True
            randomNumb = xGenerator.Next(0, questions.Count)
            If xRndNo.Contains(randomNumb) Then
                Continue While
            Else
                xRndNo.Add(randomNumb)
                Exit While
            End If
        End While

        selecteQuestion = questions.Item(randomNumb)
        Label1.Text = selecteQuestion.Name
        PictureBox1.Image = Image.FromFile(imagesPath + "\" + selecteQuestion.Answer1)
        PictureBox2.Image = Image.FromFile(imagesPath + "\" + selecteQuestion.Answer2)
        PictureBox3.Image = Image.FromFile(imagesPath + "\" + selecteQuestion.Answer3)
        PictureBox4.Image = Image.FromFile(imagesPath + "\" + selecteQuestion.Answer4)
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        RadioButton4.Checked = False
    End Sub

    Private Sub endOfQuiz()
        Timer1.Enabled = False
        MessageBox.Show("End of quiz. Your score is: " + score.ToString)
        Me.Close()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If RadioButton1.Checked = True Or RadioButton2.Checked = True Or RadioButton3.Checked = True Or RadioButton4.Checked = True Then
            If selecteQuestion.Correct = 1 And RadioButton1.Checked = True Then
                score = score + 1
                scorelabel.Text = score.ToString
            ElseIf selecteQuestion.Correct = 2 And RadioButton2.Checked = True Then
                score = score + 1
                scorelabel.Text = score.ToString
            ElseIf selecteQuestion.Correct = 3 And RadioButton3.Checked = True Then
                score = score + 1
                scorelabel.Text = score.ToString
            ElseIf selecteQuestion.Correct = 4 And RadioButton3.Checked = True Then
                score = score + 1
                scorelabel.Text = score.ToString
            Else
                scorelabel.Text = score.ToString
            End If
            loadNextQuestion()
        Else
            MessageBox.Show("Select the awnser")
        End If
    End Sub


    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        time = time - 1
        countdown.Text = time
        If Convert.ToInt32(countdown.Text) <= 0 Then
            Timer1.Enabled = False
            endOfQuiz()
        End If
    End Sub

    Private Sub Start_Click(sender As Object, e As EventArgs) Handles Start.Click
        loadNextQuestion()
        Timer1.Enabled = True
        Start.Enabled = False
    End Sub

End Class
Public Class Question
    Public Name As String
    Public Answer1 As String
    Public Answer2 As String
    Public Answer3 As String
    Public Answer4 As String
    Public Correct As Integer
End Class
Imports System.Xml.Serialization
导入System.IO
导入System.Xml
公开课表格1
私人问题作为新列表(问题)
作为字符串的专用quizPath
Private imagesPath作为字符串
私人选择问题
私有分数为整数
私有xRndNo作为新列表(整数)
整数形式的专用时间=10
私有子表单1_加载(ByVal发送方作为对象_
ByVal e作为System.EventArgs)处理MyBase.Load
Dim路径为字符串=Application.StartupPath.ToLower.Replace(“\bin\debug”,”)。Replace(“\bin\release”,”)
quizPath=path.Replace(“\bin\Debug\”,“”)
imagesPath=quizPath+“\images”
quizPath=quizPath+“\quick.xml”
尝试
Dim m_xmld作为XmlDocument
Dim m_节点列表作为XmlNodeList
Dim m_节点作为XmlNode
m_xmld=新的XmlDocument()
m_xmld.Load(quizPath)
m_nodelist=m_xmld.SelectNodes(“/questions/question”)
对于m_节点列表中的每个m_节点
模糊问题作为新问题()
问题。名称=m_节点。选择SingleNode(“名称”)。InnerText
question.Answer1=m_节点。选择SingleNode(“Answer1”)。InnerText
question.Answer2=m_节点。选择SingleNode(“Answer2”)。InnerText
question.Answer3=m_节点。选择SingleNode(“Answer3”)。InnerText
question.Answer4=m_节点。选择SingleNode(“Answer4”)。InnerText
question.Correct=Convert.ToInt32(m_node.SelectSingleNode(“Correct”).InnerText)
问题。添加(问题)
下一个
捕获错误变量作为异常
MessageBox.Show(errorVariable.ToString())
结束尝试
倒计时。文本=时间
scorelabel.Text=分数
端接头
专用子加载nextquestion()
如果xRndNo.Count=questions.Count,则
endOfQuiz()
如果结束
Dim xGenerator As System.Random=新System.Random()
Dim randomNumb作为整数=0
虽然是真的
randomNumb=xGenerator.Next(0,问题数)
如果xRndNo.包含(随机编号),则
继续
其他的
xRndNo.Add(随机编号)
退出时
如果结束
结束时
选择equestion=questions.Item(随机编号)
Label1.Text=selecteQuestion.Name
PictureBox1.Image=Image.FromFile(imagesPath+“\”+选择equestion.Answer1)
PictureBox2.Image=Image.FromFile(imagesPath+“\”+选择equestion.Answer2)
PictureBox3.Image=Image.FromFile(imagesPath+“\”+选择equestion.Answer3)
PictureBox4.Image=Image.FromFile(imagesPath+“\”+选择equestion.Answer4)
RadioButton1.选中=错误
RadioButton2.选中=错误
RadioButton3.选中=错误
RadioButton4.选中=错误
端接头
私有子endOfQuiz()
Timer1.Enabled=False
MessageBox.Show(“测验结束。你的分数是:”+score.ToString)
我
端接头
私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
如果RadioButton1.Checked=True或RadioButton2.Checked=True或RadioButton3.Checked=True或RadioButton4.Checked=True,则
如果选择equestion.Correct=1和RadioButton1.Checked=True,则
分数=分数+1
scorelabel.Text=score.ToString
否则,请选择equestion.Correct=2,然后选择RadioButton2.Checked=True
分数=分数+1
scorelabel.Text=score.ToString
否则,请选择equestion.Correct=3,然后选择RadioButton3.Checked=True
分数=分数+1
scorelabel.Text=score.ToString
否则,请选择equestion.Correct=4,然后选择RadioButton3.Checked=True
分数=分数+1
scorelabel.Text=score.ToString
其他的
scorelabel.Text=score.ToString
如果结束
loadNextQuestion()
其他的
MessageBox.Show(“选择用户”)
如果结束
端接头
私有子Timer1\u Tick(发送方作为对象,e作为事件参数)处理Timer1.Tick
时间=时间-1
倒计时。文本=时间

如果是Convert.ToInt32(countdown.Text),则表明您正在标准WinForms中执行此操作,如果是,则标记它(这有点重要)。我能想到的最好的东西是HTML。您必须将问题和答案以HTML格式保存在数据库中,然后在浏览器控件中显示(每个控件1个)。图像是与文本分开的还是分散的?顺便问一下,在文件夹路径中替换“\bin\Debug”有什么用?那太可怕了!一旦部署了相关代码,您的应用程序将在哪里?把它做好。将文件添加到项目中,然后在生成时让IDE将其复制到输出文件夹中。然后,他们每次都会在
Application.StartupPath
下。