Multiple Chice Fragen in gemischter Reihenfolge mit anschließender Auswertung mit Microsoft Visual Basic 2010 Express

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von BlackNetworkBit.

    marius schrieb:

    Und wie funktioniert das?
    Verwende doch bitte mal die Suchfunktion auf der Startseite :!:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe mal mit google gesucht und das gefunden:
    das hier

    Wie hilft mir das weiter? ?(

    Kann mir das jemand mal an einer Beispiel Frage erklären?



    Ich habe jetzt mal den anderen Code überarbeitet und finde den gar nicht so schlecht...

    Wie bekomme ich das jetzt hin, dass mit einer if Funktion die Fragen in zfälliger Reihenfolge gestellt werden? Also keine doppelt! Man soll also auf Form1 auswählen ob e durcheinander sein soll. zB. mit einem Radio Button?


    VB.NET-Quellcode

    1. Public Class Form2
    2. Dim Questionnumber As Integer
    3. Dim A, B, C, D As Boolean
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. Label5.Text = "Kann es losgehen?"
    6. A = False
    7. B = False
    8. C = False
    9. D = False
    10. End Sub
    11. Private Sub Select_Questions()
    12. Select Case Questionnumber
    13. Case 1
    14. Label5.Text = "A ist richtig"
    15. A = True
    16. B = False
    17. C = False
    18. D = False
    19. Case 2
    20. Label5.Text = "b ist richtig"
    21. A = False
    22. B = True
    23. C = False
    24. D = False
    25. Case 3
    26. Label5.Text = "c ist richtig"
    27. A = False
    28. B = False
    29. C = True
    30. D = False
    31. Case 4
    32. Label5.Text = "d ist richtig"
    33. D = True
    34. A = False
    35. B = False
    36. C = False
    37. Case 5
    38. Label5.Text = "a + b ist richtig"
    39. A = True
    40. B = True
    41. C = False
    42. D = False
    43. Case 6
    44. Label5.Text = "a + c ist richtig"
    45. A = True
    46. C = True
    47. B = False
    48. D = False
    49. Case 7
    50. Label5.Text = "a + d ist richtig"
    51. A = True
    52. D = True
    53. B = False
    54. C = False
    55. Case 8
    56. Label5.Text = "b + c ist richtig"
    57. B = True
    58. C = True
    59. A = False
    60. D = False
    61. Case 9
    62. Label5.Text = "b + d ist richtig"
    63. B = True
    64. D = True
    65. A = False
    66. C = False
    67. Case 10
    68. Label5.Text = "c + d ist richtig"
    69. C = True
    70. D = True
    71. A = False
    72. B = False
    73. Case 11
    74. Label5.Text = "a + b + c ist richtig"
    75. A = True
    76. B = True
    77. C = True
    78. D = False
    79. Case 12
    80. Label5.Text = "a + b + d ist richtig"
    81. A = True
    82. B = True
    83. D = True
    84. C = False
    85. Case 13
    86. Label5.Text = "b + c + d ist richtig"
    87. B = True
    88. C = True
    89. D = True
    90. A = False
    91. Case 14
    92. Label5.Text = "a + c + d ist richtig"
    93. A = True
    94. C = True
    95. D = True
    96. B = False
    97. Case 15
    98. Label5.Text = "alle sind richtig"
    99. A = True
    100. B = True
    101. C = True
    102. D = True
    103. End Select
    104. End Sub
    105. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    106. Button1.Enabled = False
    107. Button2.Enabled = True
    108. CheckBox1.Enabled = True
    109. CheckBox2.Enabled = True
    110. CheckBox3.Enabled = True
    111. CheckBox4.Enabled = True
    112. Questionnumber += 1
    113. If Questionnumber > 14 Then
    114. Questionnumber = 1
    115. End If
    116. Select_Questions()
    117. Button2.Text = "Prüfen"
    118. CheckBox1.Checked = False
    119. CheckBox2.Checked = False
    120. CheckBox3.Checked = False
    121. CheckBox4.Checked = False
    122. Label7.Text = ""
    123. End Sub
    124. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    125. If A = CheckBox1.Checked And B = CheckBox2.Checked And C = CheckBox3.Checked And D = CheckBox4.Checked Then
    126. Label7.Text = "richtig"
    127. Label7.ForeColor = Color.Green
    128. Else
    129. Label7.Text = "falsch"
    130. Label7.ForeColor = Color.Red
    131. End If
    132. Button1.Enabled = True
    133. Button2.Enabled = False
    134. A = False
    135. B = False
    136. C = False
    137. D = False
    138. Button1.Text = "weiter"
    139. End Sub
    140. End Class


    Da sieht dann übrigens so aus:

    Frage= Label5
    die Checkboxen1-4 sind am anfang enable=False
    genauso der Button Prüfen (Button2)
    Button1.Text = Starten
    die Auflösung kommt dann mit richtig in grün oder falsch in Rot in Label 7 was normal ohne Text ist

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „marius“ ()

    Da mein Code berechtigt kritisiert wurde, habe ich ein neues Grundgerüst mit einer
    xml Datei erstellt, es Funktioniert gut aber falls ich das nicht richtig angegangen bin,
    wäre ich Dankbar wenn ihr mir sagt wie ich es besser machen kann.

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Xml
    3. Public Class Form1
    4. Dim xmlFile As XmlReader
    5. Dim ds As New DataSet
    6. Dim fList As List(Of String) = New List(Of String)
    7. Dim A, B, C, D As Boolean
    8. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    9. ds.WriteXml("Quiz.xml")
    10. End Sub
    11. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    12. If Not My.Computer.FileSystem.FileExists(Application.StartupPath & "\Quiz.xml") Then
    13. Create_newxml()
    14. End If
    15. Button2.Enabled = False
    16. DataGridView1.Width = Me.Width
    17. DataGridView1.Location = New Point(0, 0)
    18. xmlFile = XmlReader.Create("Quiz.xml", New XmlReaderSettings())
    19. ds.ReadXml(xmlFile)
    20. DataGridView1.DataSource = ds.Tables(0)
    21. DataGridView1.Columns(0).Width = 50
    22. DataGridView1.Columns(1).Width = 250
    23. DataGridView1.Columns(2).Width = 125
    24. DataGridView1.Columns(3).Width = 125
    25. DataGridView1.Columns(4).Width = 125
    26. DataGridView1.Columns(5).Width = 125
    27. DataGridView1.Columns(6).Width = 100
    28. xmlFile.Close()
    29. For i As Integer = 0 To ds.Tables("Quiz").Rows.Count - 1
    30. Dim cRow As DataRow = ds.Tables("Quiz").Rows(i)
    31. fList.Add(CStr(cRow("Frage")) & ";" & CStr(cRow("Antwort_A")) & ";" & CStr(cRow("Antwort_B")) & ";" & CStr(cRow("Antwort_C")) & ";" & CStr(cRow("Antwort_D")) & ";" & CStr(cRow("Richtige_Antwort")))
    32. Next
    33. End Sub
    34. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    35. A = False
    36. B = False
    37. C = False
    38. D = False
    39. Label2.Text = String.Empty
    40. Dim rnd As Random = New Random
    41. Dim fNum As Integer = rnd.Next(0, fList.Count - 1)
    42. Dim cRow As DataRow = ds.Tables("Quiz").Rows(fNum)
    43. Dim rowContent As String = fList(fNum)
    44. Dim splitter As Object()
    45. splitter = Split(rowContent, ";")
    46. Label1.Text = CStr(splitter(0))
    47. CBA.Text = CStr(splitter(1))
    48. CBB.Text = CStr(splitter(2))
    49. CBC.Text = CStr(splitter(3))
    50. CBD.Text = CStr(splitter(4))
    51. If CStr(splitter(5)).Contains("A") Or CStr(splitter(5)).Contains("a") Then
    52. A = True
    53. End If
    54. If CStr(splitter(5)).Contains("B") Or CStr(splitter(5)).Contains("b") Then
    55. B = True
    56. End If
    57. If CStr(splitter(5)).Contains("C") Or CStr(splitter(5)).Contains("c") Then
    58. C = True
    59. End If
    60. If CStr(splitter(5)).Contains("D") Or CStr(splitter(5)).Contains("d") Then
    61. D = True
    62. End If
    63. fList.RemoveAt(fNum)
    64. Button1.Enabled = False
    65. Button2.Enabled = True
    66. CBA.Checked = False
    67. CBB.Checked = False
    68. CBC.Checked = False
    69. CBD.Checked = False
    70. End Sub
    71. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    72. Button2.Enabled = False
    73. Label2.Text = String.Empty
    74. Label2.Text = "Die Antworten: "
    75. If A = True Then
    76. Label2.Text += "A "
    77. End If
    78. If B = True Then
    79. Label2.Text += "B "
    80. End If
    81. If C = True Then
    82. Label2.Text += "C "
    83. End If
    84. If D = True Then
    85. Label2.Text += "D "
    86. End If
    87. Label2.Text += "sind richtig"
    88. If fList.Count > 0 Then
    89. Button1.Enabled = True
    90. End If
    91. End Sub
    92. Private Sub Create_newxml()
    93. Dim dsn As New DataSet
    94. Dim dt As DataTable
    95. dt = New DataTable()
    96. dt.Columns.Add(New DataColumn("Nummer", Type.GetType("System.Int32")))
    97. dt.Columns.Add(New DataColumn("Frage", Type.GetType("System.String")))
    98. dt.Columns.Add(New DataColumn("Antwort_A", Type.GetType("System.String")))
    99. dt.Columns.Add(New DataColumn("Antwort_B", Type.GetType("System.String")))
    100. dt.Columns.Add(New DataColumn("Antwort_C", Type.GetType("System.String")))
    101. dt.Columns.Add(New DataColumn("Antwort_D", Type.GetType("System.String")))
    102. dt.Columns.Add(New DataColumn("Richtige_Antwort", Type.GetType("System.String")))
    103. dsn.Tables.Add(dt)
    104. Dim dr As DataRow
    105. dr = dt.NewRow()
    106. dr("Nummer") = "1"
    107. dr("Frage") = "Frage"
    108. dr("Antwort_A") = "Antwort_A"
    109. dr("Antwort_B") = "Antwort_B"
    110. dr("Antwort_C") = "Antwort_C"
    111. dr("Antwort_D") = "Antwort_D"
    112. dr("Richtige_Antwort") = "Richtige_Antwort"
    113. dt.Rows.Add(dr)
    114. dsn.Tables(0).TableName = "Quiz"
    115. dsn.WriteXml("Quiz.xml")
    116. End Sub
    117. End Class


    Die xml datei:

    XML-Quellcode

    1. <?xml version="1.0" standalone="yes"?>
    2. <NewDataSet>
    3. <Quiz>
    4. <Nummer>1</Nummer>
    5. <Frage>Steve Jobs ist der Gründer von...</Frage>
    6. <Antwort_A>Apple</Antwort_A>
    7. <Antwort_B>Microsoft</Antwort_B>
    8. <Antwort_C>Amd</Antwort_C>
    9. <Antwort_D>Intel</Antwort_D>
    10. <Richtige_Antwort>A</Richtige_Antwort>
    11. </Quiz>
    12. <Quiz>
    13. <Nummer>2</Nummer>
    14. <Frage>Gold findet man...</Frage>
    15. <Antwort_A>in der Luft</Antwort_A>
    16. <Antwort_B>im Boden</Antwort_B>
    17. <Antwort_C>in Gewässern</Antwort_C>
    18. <Antwort_D>im Aschenbecher</Antwort_D>
    19. <Richtige_Antwort>b,C</Richtige_Antwort>
    20. </Quiz>
    21. <Quiz>
    22. <Nummer>3</Nummer>
    23. <Frage>Luft braucht der Mensch zum...</Frage>
    24. <Antwort_A>atmen</Antwort_A>
    25. <Antwort_B>blähen</Antwort_B>
    26. <Antwort_C>trinken</Antwort_C>
    27. <Antwort_D>essen</Antwort_D>
    28. <Richtige_Antwort>A</Richtige_Antwort>
    29. </Quiz>
    30. <Quiz>
    31. <Nummer>4</Nummer>
    32. <Frage>Windows 8 ist der direkte nachfolger von...</Frage>
    33. <Antwort_A>Windows Xp</Antwort_A>
    34. <Antwort_B>Windows ME</Antwort_B>
    35. <Antwort_C>Windows 95</Antwort_C>
    36. <Antwort_D>Windows 7</Antwort_D>
    37. <Richtige_Antwort>D</Richtige_Antwort>
    38. </Quiz>
    39. </NewDataSet>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Derfuhr“ ()

    Das funzt noch nicht.
    Aus CBA.Checked hab ich CheckBox1.Checked gemacht, aber

    CBA.Text = CStr(splitter(1))
    CBB.Text = CStr(splitter(2))
    CBC.Text = CStr(splitter(3))
    CBD.Text = CStr(splitter(4))

    Was ist CBA? der zeigt mir einen Fehler an...

    Aber danke, du bist super

    LG Marius
    CBA,CBB...
    CBA = Antortmöglichkeit A (CHeckbox) usw.
    und CBA.Text = wird eine Antwortmöglichekeit
    angezeigt. CBA wird bei button2.click mit dem
    Boolean A verglichenund falls er true ist steht
    in Label2 das A eine der richtigen Antwort-
    möglichkeiten ist, mit CBB, CBC, CBD verhält
    es sich genauso.


    Quiz XML.7z

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Derfuhr“ ()

    Wenn Du das gleich in Kleinbuchstaben (oder Groß~) konvertierst, sparst Du jeweils eine Abfrage:

    VB.NET-Quellcode

    1. CBA.Text = CStr(splitter(1)).ToLower
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Warum schreibt ihr jetzt überhaupt das quiz für ihn ist das nicht ein bisschen sinnlos ?
    sollte er dabei nicht ein bisschen lerner wie man überhaupt programmiert?


    MFg BlackNetworkBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise