Hvordan bruke Visual Basic for å opprette en flervalgstest
Hvert spørsmål i en flervalgs testen består av et spørsmål seg og flere forskjellige svar, hvorav kun en er riktig. Du kan opprette en flervalgstest i Visual Basic bruke etiketter for å vise spørsmålene, radioknapper for de mulige svar og knappekontrollene til å navigere mellom ulike spørsmål. I koden, for å bruke arrays lagre spørsmål og svar som brukeren sender og opprettholde en tellervariabelen for å holde styr på hva spørsmålet brukeren er på. Ved slutten av testen, markerer brukerens svar og vise resultatet på skjemaet.
Bruksanvisning
1 Åpne en ny Visual Basic-prosjekt. Legg til to etiketter, tre radioknapper og to knappekontrollene til skjemaet. Dra de to etikettene til toppen med Label1 på toppen av Label2. Dra RadioButton1, RadioButton2 og RadioButton3 å stille opp vertikalt under etikettene. Dra de to knappene under radioknappene med Button1 på venstre og Button2 til høyre.
2 Trykk "F7" for å åpne koden vinduet. Skriv inn følgende kode på klassenivå:
Dim spørsmål (2, 4) Som String
Dim svar (2) Som String
Dim quesNum As Integer
Den første linjen danner en todimensjonal array. Den første dimensjonen er for hvert spørsmål og den andre dimensjonen er for selve spørsmålet, tre svaralternativer, og det riktige svaret. Den andre linjen skaper en matrise for å lagre brukerens svar. Den tredje linjen skaper en tellervariabelen som holder styr på spørsmålet brukeren er på.
3 Skriv inn følgende kode:
Private Sub GetQuestions ()
spørsmål = new String (,) {{ "Hvor mange farger er 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 subrutine initialiserer bare tre spørsmål og svar i spørsmål array. 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 det, må du huske å endre størrelsen på spørsmål og svar arrays for å imøtekomme antall spørsmål.
4 Skriv inn følgende kode:
Private Sub MarkTest ()
Dim grade As Integer = 0
For i = 0 til 2
Hvis svarene (i) = spørsmål (i, 4) Deretter
klasse + = 1
Slutt om
neste
Label1.Text = "Test ferdig!"
Label2.Text = "Du scoret" og karakteren & "ut av" & answers.Length & "!"
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 test. Det skaper en lokal variabel å telle poeng, deretter blar gjennom de svarene i spørsmål matrise og svarene er sendt inn av brukeren. For hvert svar som matcher, går karakteren opp med én. Den viser så scorer i etikettene og deaktiverer resten av kontrollene.
5 Åpne Form1_Load () subroutine og skriv inn følgende kode:
Me.Text = "Min Multiple Choice Quiz!"
GetQuestions ()
quesNum = 1
Label1.Text = "Spørsmål" og quesNum & "av" og answers.Length
Label2.Text = 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 på tittellinjen. Den neste linjen kaller GetQuestions () subrutine. Den tredje linjen initialiserer spørsmålet tellervariabelen. Den fjerde linjen viser hva spørsmål nummer brukeren er på. Den femte linjen viser spørsmålet en på etiketten. Den sjette og sjuende linjer endre teksten for de to knappene. De siste tre linjer inn de tre svaralternativer som tekst for de tre radioknappene.
6 Åpne button1_click () subroutine og skriv inn følgende kode:
Hvis quesNum> 1 Da
quesNum - = 1
Label1.Text = "Spørsmål" og 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)
Hvis Button2.Text = "Send" Da
Button2.Text = "Neste"
Slutt om
Slutt om
Dette er koden for "Forrige" -knappen. Det sjekker først for å se om brukeren trykker på knappen mens allerede på det første spørsmålet. Hvis ikke, svekkelser det spørsmålet telleren med én og oppdaterer teksten for etiketter og radioknapper for å vise forrige spørsmål. Hvis brukeren var på det siste spørsmålet, teksten på Button2 endres fra "Send" tilbake til "Next".
7 Åpne Button2_Click () subroutine og skriv inn følgende kode:
Hvis RadioButton1.Checked = True Deretter
svar (quesNum - 1) = RadioButton1.Text
ElseIf RadioButton2.Checked = True Deretter
svar (quesNum - 1) = RadioButton2.Text
ElseIf RadioButton3.Checked = True Deretter
svar (quesNum - 1) = RadioButton3.Text
Slutt om
RadioButton1.Focus ()
Hvis quesNum <3 Da
quesNum + = 1
Label1.Text = "Spørsmål" og quesNum & "av" og answers.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)
Hvis quesNum = 3, så
Button2.Text = "Send"
Slutt om
Ellers
MarkTest ()
Slutt om
Dette er koden for "Neste" -knappen. De første sju linjene sjekke for å se hva alternativknappen brukeren hadde valgt, sparer da at svaret på svar array. Den neste linjen fokuserer på alternativknappen utvalg på RadioButton1. Den neste linjen kontrollerer at brukeren ikke er på det siste spørsmålet. Hvis dette er sant, det øker spørsmålet telleren med én og oppdaterer etiketter og radioknapper for å vise det neste spørsmålet. Den sjekker da å se om brukeren er nå på det siste spørsmålet. Hvis så, det forandrer teksten for Neste-knappen fra "Next" til "Send". Hvis brukeren allerede var på det siste spørsmålet og klikket på "Send", programmet kaller "MarkTest" funksjonen for å få brukerens poengsum.
8 Lagre Visual Basic-programmet. Trykk "F5" for å kjøre den.