Kako koristiti Visual Basic za izradu testa s višestrukim izborom

Otvorite novi Visual Basic projekt. Dodajte dvije oznake, tri radio gumba i dvije kontrole gumba u obrazac. Povucite dvije oznake na vrh s Label1 na vrhu Label2. Povucite RadioButton1, RadioButton2 i RadioButton3 da se poredaju okomito ispod oznaka. Povucite dva gumba ispod radio gumba s Button1 na lijevoj strani i Button2 na desnoj strani.

Prvi red stvara dvodimenzionalni niz. Prva dimenzija je za svako pitanje, a druga dimenzija je za samo pitanje, tri izbora odgovora i točan odgovor. Drugi red stvara niz za pohranjivanje odgovora korisnika. Treći red stvara varijablu brojača koja prati pitanje na kojem se korisnik nalazi.

Privatni pod GetQuestions() pitanja = New String(,) {{"Koliko je boja u dugi?", "5", "6", "7", "7"}, {"Tko je glumio u Piratima s Kariba?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"}, {"Koji je glavni grad Floride?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}} End Sub

Ovaj potprogram jednostavno inicijalizira tri pitanja i odgovore u nizu pitanja. Možete dodati dodatna pitanja ili ih dobiti na druge načine, kao što je tekstualna datoteka, ali ako ne zaboravite promijeniti veličinu nizova pitanja i odgovora kako bi se prilagodio broju pitanja.

Private Sub MarkTest() Dim grade As Integer = 0 Za i = 0 do 2 Ako su odgovori (i) = pitanja (i, 4) Tada ocjena += 1 End If Next Label1.Text = "Test je završen!" Label2.Text = "Osvojili ste " & ocijenili & " iz " & odgovori. Duljina & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = Lažni kraj pod

Prvi red deklarira potprogram koji označava test. Stvara lokalnu varijablu za brojanje rezultata, a zatim kruži kroz odgovore u nizu pitanja i odgovore koje je dostavio korisnik. Za svaki odgovor koji odgovara, ocjena se povećava za jedan. Zatim prikazuje rezultat u oznakama i onemogućuje ostale kontrole.

Mi. Text = "Moj kviz višestrukih izbora!" GetQuestions() quesNum = 1 Label1.Text = "Pitanje " & quesNum & " od " & odgovori. Duljina Label2.Text = pitanja (0, 0) Button1.Text = "Prethodno" Button2.Text = "Sljedeća" RadioButton1.Text = pitanja (0, 1) RadioButton2.Text = pitanja (0, 2) RadioButton3.Text = pitanja (0, 3)

Prvi red postavlja naslov u naslovnoj traci. Sljedeći redak poziva potprogram GetQuestions(). Treći red inicijalizira varijablu brojača pitanja. Četvrti red prikazuje na kojem se broju pitanja korisnik nalazi. Peti red prikazuje prvo pitanje u naljepnici. Šesti i sedmi redak mijenjaju tekst za dva gumba. Posljednja tri retka unose tri odgovora s višestrukim izborom kao tekst za tri radio gumba.

Ako je quesNum > 1 Tada quesNum -= 1 Label1.Text = "Pitanje " & quesNum & " od 3" Label2.Text = pitanja (QuesNum - 1, 0) RadioButton1.Text = pitanja (QuesNum - 1, 1) RadioButton2.Text = pitanja (quesNum - 1, 2) RadioButton3.Text = pitanja (quesNum - 1, 3) If Button2.Text = "Submit" Then Button2.Text = "Next" End If End If

Ovo je kod za gumb "Prethodno". Prvo provjerava je li korisnik pritisnuo gumb dok je već bio na prvom pitanju. Ako nije, smanjuje brojač pitanja za jedan i ažurira tekst za oznake i radio gumbe kako bi se prikazalo prethodno pitanje. Ako je korisnik bio na posljednjem pitanju, tekst na Button2 mijenja se iz "Pošalji" natrag u "Sljedeće".

Ako RadioButton1.Checked = True Tada odgovori (QuesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True Tada odgovori (quesNum - 1) = RadioButton2.Text ElseIf RadioButton3.Checked = True Tada odgovori (quesNum - 1) = RadioButton3.Text End If RadioButton1.Focus() Ako je quesNum < 3 Tada quesNum += 1 Label1.Text = "Pitanje " & quesNum & " od " & odgovori. Length Label2.Text = pitanja (broj pitanja - 1, 0) RadioButton1.Text = pitanja (quesNum - 1, 1) RadioButton2.Text = pitanja (QuesNum - 1, 2) RadioButton3.Text = pitanja (QuesNum - 1, 3) Ako je quesNum = 3 Tada Button2.Text = "Pošalji" Završi ako nije, MarkTest() Završi ako

Ovo je kod za gumb "Dalje". Prvih sedam redaka provjerava koje je radio gumb korisnik odabrao, a zatim sprema taj odgovor u niz odgovora. Sljedeći redak fokusira odabir radio gumba na RadioButton1. Sljedeći redak provjerava da li korisnik nije na posljednjem pitanju. Ako je to točno, povećava brojač pitanja za jedan i ažurira oznake i radio gumbe za prikaz sljedećeg pitanja. Zatim provjerava je li korisnik sada na posljednjem pitanju. Ako je tako, mijenja tekst za gumb Sljedeće iz "Dalje" u "Pošalji". Ako je korisnik već bio na posljednje pitanje i kliknuli na "Pošalji", program poziva funkciju "MarkTest" da dobije rezultat korisnika.