Hvordan bruke Visual Basic til å lage en flervalgstest

Åpne et nytt Visual Basic-prosjekt. Legg til to etiketter, tre alternativknapper og to knappekontroller i skjemaet. Dra de to etikettene til toppen med Label1 oppå Label2. Dra RadioButton1, RadioButton2 og RadioButton3 for å stille opp vertikalt under etikettene. Dra de to knappene under alternativknappene med Knapp1 til venstre og Knapp2 til høyre.

Den første linjen lager en todimensjonal matrise. Den første dimensjonen er for hvert spørsmål og den andre dimensjonen er for selve spørsmålet, tre svarvalg og riktig svar. Den andre linjen oppretter en matrise for å lagre brukerens svar. Den tredje linjen lager en tellervariabel som holder styr på spørsmålet brukeren står på.

Private Sub GetQuestions() spørsmål = Ny streng(,) {{"Hvor mange farger er det i en regnbue?", "5", "6", "7", "7"}, {"Hvem spilte hovedrollen i Pirates of the Caribbean?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"}, {"Hva er hovedstaden i Florida?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}} End Sub

Denne subrutinen initialiserer ganske enkelt de tre spørsmålene og svarene i spørsmålsserien. Du kan legge til flere spørsmål eller få dem på andre måter, for eksempel gjennom en tekstfil, men hvis du gjør, husk å endre størrelsen på spørsmåls- og svar-matrisene for å imøtekomme antallet spørsmål.

Private Sub MarkTest() Dim karakter Som heltall = 0 For i = 0 Til 2 Hvis svar (i) = spørsmål (i, 4) karakter += 1 End If Next Label1.Text = "Test fullført!" Label2.Text = "Du scoret " & karakter & " ut av " & svar. Lengde & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub

Den første linjen erklærer en subrutine som markerer testen. Den oppretter en lokal variabel for å telle poengsummen, og blar deretter gjennom svarene i spørsmålsserien og svarene som er sendt inn av brukeren. For hvert svar som stemmer, går karakteren opp med én. Den viser deretter poengsummen i etikettene og deaktiverer resten av kontrollene.

Meg. Tekst = "Min flervalgsquiz!" GetQuestions() quesNum = 1 Label1.Text = "Spørsmål " & quesNum & " av " & svar. Lengde Label2.Tekst = spørsmål (0, 0) Button1.Text = "Forrige" Button2.Text = "Neste" RadioButton1.Text = spørsmål (0, 1) RadioButton2.Text = spørsmål (0, 2) RadioButton3.Text = spørsmål (0, 3)

Den første linjen setter tittelen i tittellinjen. Den neste linjen kaller GetQuestions()-subrutinen. Den tredje linjen initialiserer spørsmålstellervariabelen. Den fjerde linjen viser hvilket spørsmålsnummer brukeren står på. Den femte linjen viser spørsmål én på etiketten. Den sjette og syvende linjen endrer teksten for de to knappene. De tre siste linjene setter inn de tre flervalgssvarene som tekst for de tre alternativknappene.

Hvis quesNum > 1 Da quesNum -= 1 Label1.Text = "Spørsmål " & quesNum & " av 3" Label2.Text = spørsmål (quesNum - 1, 0) RadioButton1.Text = spørsmål (quesNum - 1, 1) RadioButton2.Text = spørsmål (quesNum - 1, 2) RadioButton3.Text = spørsmål (quesNum - 1, 3) If Button2.Text = "Send" Then Button2.Text = "Next" End If End If

Dette er koden for "Forrige"-knappen. Den sjekker først om brukeren trykket på knappen mens han allerede var på det første spørsmålet. Hvis ikke, reduserer den spørsmålstelleren med én og oppdaterer teksten for etikettene og alternativknappene for å vise det forrige spørsmålet. Hvis brukeren var på det siste spørsmålet, endres teksten på Button2 fra «Send» tilbake til «Neste».

If RadioButton1.Checked = True Then answers (quesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True Then answers (quesNum - 1) = RadioButton2.Text ElseIf RadioButton3.Checked = True Deretter svarer (quesNum - 1) = RadioButton3.Text End If RadioButton1.Focus() If quesNum < 3 Then quesNum += 1 Label1.Text = "Spørsmål " & quesNum & " av " & svarer. Length Label2.Text = spørsmål (quesNum - 1, 0) RadioButton1.Text = spørsmål (quesNum - 1, 1) RadioButton2.Text = spørsmål (quesNum - 1, 2) RadioButton3.Text = spørsmål (quesNum - 1, 3) If quesNum = 3 Then Button2.Text = "Send" End If Else MarkTest() Slutt om

Dette er koden for "Neste"-knappen. De første syv linjene sjekker for å se hvilken alternativknapp brukeren har valgt, og lagrer deretter svaret i svararrayen. Den neste linjen fokuserer på valg av alternativknapp på RadioButton1. Den neste linjen kontrollerer at brukeren ikke er på det siste spørsmålet. Hvis dette er sant, øker den spørsmålstelleren med én og oppdaterer etikettene og alternativknappene for å vise neste spørsmål. Den sjekker deretter om brukeren nå er på det siste spørsmålet. I så fall endres teksten for Neste-knappen fra «Neste» til «Send». Hvis brukeren allerede var på siste spørsmålet og klikket på "Send", kaller programmet "MarkTest"-funksjonen for å få brukerens poengsum.