Multiple Choice Quiz - Fragen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Multiple Choice Quiz - Fragen

    Ich bin ein ziehmlicher Neuling, was Visual Basic betrifft, habe bisher erst einen Radio-Player erstellt.
    Jetzt möchte ich ein Multiple Choice Quiz erstellen, welches sich von anderen unterscheidet. Allerdings schaffe ich das bisher noch nicht ohne Hilfe.

    1. Ich habe alle Fragen bereits zusammengestellt, es sind 60+. Empfiehlt sich es hier, diese aus einer Textdatei oder aus einer Datenbank auszulesen?
    2. Ich möchte nur ca. 20 Fragen hintereinander ausgeben, welche per Zufallsprinzip ausgewählt werden. Keine soll doppelt vorkommen. Geht das?
    3. Nachdem der User geantwortet hat, soll er nicht angezeigt bekommen, ob die Frage richtig oder falsch beantwortet wurde, sondern ohne Zwischenschritt zur nächsten Aufgabe kommen.
    4. Es sollen 120 Sekunden zeit sein, um eine Lösung zu finden. Ist nach dieser Zeit nicht auf OK gedrückt worden, geht es zur nächsten Frage und es ertönt ein Ton. Dies ist sicher mit einem Timer möglich.
    5. Wechselt der User das Fenster, soll ein Text "BITTE HIER KLICKEN!" statt der Frage angezeigt werden. Ist das möglich?
    6. Nach Abschluss des Tests erhält der User eine Nachricht, ob der Test bestanden wurde oder nicht. Allerdings bekommt er seine Punktzahl nicht mitgeteilt.
    7. Das Ergebnis sowie alle richtig bzw. falsch beantworteten Fragen sollen entweder in einer Datenbank gespeichert werden oder an eine E-Mail-Adresse gesendet werden.

    Hier sind ziehmlich viele Fragen, aber ich hoffe, ihr beantwortet sie mir trotzdem.
    Ich kann dir nicht alle beantworten.

    1. Textdatei
    4.Timer
    5. ja
    7. Wieviel willst du der DB denn an arbeit geben ... angenommen du hast 30 richtige fragen dann müssten die ja alle in die DB gepackt werden. Somit würde ich es per e-mail machen

    1. Ja aus einer Textdatei auslesen ist sinnvoll.
    2. Ja es geht.
    3. Auch das geht
    4. Genau der Timer hilft dir.
    5. Bestimmt
    Die Anderen beantworte ich jetzt garnicht, denn ich verstehe nicht was du genau willst.
    Willst du das wir dir zu jeder Frage einen Code vorlegen oder was ?
    Wenn du schon mal angefangen hättest, und dann nicht weist z.B. wie du das mit dem Timer oder so
    machst dann kriegst du betimmt ein zwei Zeilen Code als Starthilfe, aber nicht das komplette Spiel.

    Sorry wenn ich es jetzt falsch verstanden habe.
    Ps: Die letzte Frage ist zwar nicht schwierig, so direkt, aber für einen totalen Anfänger schon nicht zu empfehlen :/

    K-Help4You schrieb:

    Ich bin ein ziehmlicher Neuling, was Visual Basic betrifft, habe bisher erst einen Radio-Player erstellt.
    Jetzt möchte ich ein Multiple Choice Quiz erstellen, welches sich von anderen unterscheidet. Allerdings schaffe ich das bisher noch nicht ohne Hilfe.

    1. Ich habe alle Fragen bereits zusammengestellt, es sind 60+. Empfiehlt sich es hier, diese aus einer Textdatei oder aus einer Datenbank auszulesen?
    2. Ich möchte nur ca. 20 Fragen hintereinander ausgeben, welche per Zufallsprinzip ausgewählt werden. Keine soll doppelt vorkommen. Geht das?
    3. Nachdem der User geantwortet hat, soll er nicht angezeigt bekommen, ob die Frage richtig oder falsch beantwortet wurde, sondern ohne Zwischenschritt zur nächsten Aufgabe kommen.
    4. Es sollen 120 Sekunden zeit sein, um eine Lösung zu finden. Ist nach dieser Zeit nicht auf OK gedrückt worden, geht es zur nächsten Frage und es ertönt ein Ton. Dies ist sicher mit einem Timer möglich.
    5. Wechselt der User das Fenster, soll ein Text "BITTE HIER KLICKEN!" statt der Frage angezeigt werden. Ist das möglich?
    6. Nach Abschluss des Tests erhält der User eine Nachricht, ob der Test bestanden wurde oder nicht. Allerdings bekommt er seine Punktzahl nicht mitgeteilt.
    7. Das Ergebnis sowie alle richtig bzw. falsch beantworteten Fragen sollen entweder in einer Datenbank gespeichert werden oder an eine E-Mail-Adresse gesendet werden.

    Hier sind ziehmlich viele Fragen, aber ich hoffe, ihr beantwortet sie mir trotzdem.
    Mit folgendem Code könntest du eine Liste aus 20 unterschiedlichen Werten zwischen 0 und 60 in unterschiedlicher Reihenfolge erstellen.
    Wenn du z.B. die Fragen in ein SplitArray einliest, könntest du damit die Arrayelemente indizieren.

    VB.NET-Quellcode

    1. Dim rn As New Random 'Zufallszahlengenerator
    2. Dim AnzahlFragen As Integer = 60
    3. Dim NeueNummer As Integer 'Temp
    4. Dim i As Integer = 0 'Zähler
    5. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    6. Do While i < 20 'Solange nicht 20 Nummern in der Liste sind
    7. NeueNummer = rn.Next(0, AnzahlFragen + 1) 'neue Zufalls Nummer zwischen 0 und 60
    8. If Not ListBox1.Items.Contains(NeueNummer) Then 'Wenn diese Nummer noch nicht in der Liste ist
    9. ListBox1.Items.Add(NeueNummer) 'füge sie hinzu (in Listbox als Beispiel)
    10. i += 1 'Erhöhe Zähler der bereits in die Liste aufgenommenen Nummern
    11. End If
    12. Loop
    13. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unwesen“ () aus folgendem Grund: Variablenname geändert

    Hi!

    Elegant wäre, auch hier bereits mit datenbänkerischer Denkweise vorzugehen:

    Dabei zeigen sich 2 verschiedene Tabellen als erforderlich: eine Tabelle "Frage", und eine Tabelle "Antworten".
    die Tabelle Antworten ist einfach, deren Datensätze haben nur eine Property:
    AntwortText As String

    Die Frage-Datensätze sind komplizierter, die brauchen an Properties folgendes:
    FrageText As String
    MoeglicheAntworten As List(Of Antwort)
    RichtigeAntwort As Antwort
    GegebeneAntwort As Antwort
    IstRichtig As Boolean

    Ist dir dieses Datenmodell plausibel?
    Auf eine Frage gibts mehrere mögliche Antworten. eine davon ist richtig (oder sind gar mehrere richtige Antworten möglich, dann muß das Modell etwas anners aussehen).
    Die Property IstRichtig ist sinnvollerweise sogar nur eine Methode, die OnTheFly ausgibt, ob GegebeneAntwort und RichtigeAntwort übereinstimmen.
    Ob eine Frage noch unbeantwortet ist, erkennt man daran, dass GegebeneAntwort einen Nullwert enthält.