Visual Basic gebruiken om een ​​meerkeuzetest te maken

Open een nieuw Visual Basic-project. Voeg twee labels, drie keuzerondjes en twee knoppen toe aan het formulier. Sleep de twee labels naar boven met Label1 bovenop Label2. Sleep RadioButton1, RadioButton2 en RadioButton3 om verticaal onder de labels uit te lijnen. Sleep de twee knoppen onder de keuzerondjes met Button1 aan de linkerkant en Button2 aan de rechterkant.

De eerste regel creëert een tweedimensionale array. De eerste dimensie is voor elke vraag en de tweede dimensie is voor de vraag zelf, drie antwoordkeuzes en het juiste antwoord. De tweede regel maakt een array om de antwoorden van de gebruiker op te slaan. De derde regel creëert een tellervariabele die bijhoudt op welke vraag de gebruiker zich bevindt.

Private Sub GetQuestions() vragen = New String(,) {{"Hoeveel kleuren zijn er in een regenboog?", "5", "6", "7", "7"}, {"Wie speelde in Pirates of the Caribbean?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"}, {"Wat is de hoofdstad van Florida?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}} End Sub

Deze subroutine initialiseert eenvoudig de drie vragen en antwoorden in de vragenreeks. U kunt aanvullende vragen toevoegen of op andere manieren krijgen, bijvoorbeeld via een tekstbestand, maar als u wel, vergeet niet om de grootte van de vraag- en antwoordarrays aan te passen aan het aantal vragen.

Private Sub MarkTest() Dim grade As Integer = 0 For i = 0 To 2 Als antwoorden (i) = vragen (i, 4) Dan cijfer += 1 Einde Als Volgende Label1.Text = "Test voltooid!" Label2.Text = "Je hebt gescoord " & cijfer & " uit " & antwoorden. Lengte & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub

De eerste regel declareert een subroutine die de test markeert. Het creëert een lokale variabele om de score te tellen en bladert vervolgens door de antwoorden in de vragenreeks en de antwoorden die door de gebruiker zijn ingediend. Voor elk antwoord dat overeenkomt, gaat het cijfer met één omhoog. Vervolgens wordt de score in de labels weergegeven en worden de rest van de bedieningselementen uitgeschakeld.

Mij. Tekst = "Mijn meerkeuzequiz!" GetQuestions() quesNum = 1 Label1.Text = "Vraag" & quesNum & " van " & antwoorden. Lengte Label2.Text = vragen (0, 0) Button1.Text = "Vorige" Button2.Text = "Volgende" RadioButton1.Text = vragen (0, 1) RadioButton2.Text = vragen (0, 2) RadioButton3.Text = vragen (0, 3)

De eerste regel stelt de titel in de titelbalk in. De volgende regel roept de GetQuestions()-subroutine aan. De derde regel initialiseert de vragentellervariabele. Op de vierde regel wordt weergegeven op welk vraagnummer de gebruiker zich bevindt. De vijfde regel toont vraag één in het label. De zesde en zevende regel veranderen de tekst voor de twee knoppen. De laatste drie regels voegen de drie meerkeuzeantwoorden in als tekst voor de drie keuzerondjes.

If quesNum > 1 Then quesNum -= 1 Label1.Text = "Question" & quesNum & " of 3" Label2.Text = vragen (quesNum - 1, 0) RadioButton1.Text = vragen (quesNum - 1, 1) RadioButton2.Text = vragen (quesNum - 1, 2) RadioButton3.Text = vragen (quesNum - 1, 3) If Button2.Text = "Submit" Then Button2.Text = "Next" End If End If

Dit is de code voor de knop "Vorige". Het controleert eerst of de gebruiker op de knop heeft gedrukt terwijl hij al bezig was met de eerste vraag. Zo niet, dan wordt de vragenteller met één verlaagd en wordt de tekst voor de labels en keuzerondjes bijgewerkt om de vorige vraag weer te geven. Als de gebruiker bij de laatste vraag zat, verandert de tekst op Button2 van "Verzenden" terug naar "Volgende".

If RadioButton1.Checked = True Dan antwoorden (quesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True Dan antwoorden (quesNum - 1) = RadioButton2.Text ElseIf RadioButton3.Checked = True Dan antwoorden (quesNum - 1) = RadioButton3.Text End If RadioButton1.Focus() If quesNum < 3 Dan quesNum += 1 Label1.Text = "Vraag " & quesNum & " van " & antwoorden. Lengte Label2.Text = vragen (quesNum - 1, 0) RadioButton1.Text = vragen (quesNum - 1, 1) RadioButton2.Text = vragen (quesNum - 1, 2) RadioButton3.Text = vragen (quesNum - 1, 3) If quesNum = 3 Then Button2.Text = "Submit" End If Else MarkTest() Stop als

Dit is de code voor de knop "Volgende". De eerste zeven regels controleren welk keuzerondje de gebruiker had geselecteerd en slaan dat antwoord vervolgens op in de antwoordenreeks. De volgende regel richt de selectie van de keuzerondjes op RadioButton1. De volgende regel controleert of de gebruiker niet op de laatste vraag staat. Als dit waar is, wordt de vragenteller met één verhoogd en worden de labels en keuzerondjes bijgewerkt om de volgende vraag weer te geven. Vervolgens wordt gecontroleerd of de gebruiker nu op de laatste vraag zit. Als dat het geval is, verandert de tekst voor de knop Volgende van "Volgende" in "Verzenden". Als de gebruiker al op de laatste vraag en klikte op "Verzenden", roept het programma de functie "MarkTest" aan om de score van de gebruiker te krijgen.