Varje fråga i ett flervalstest består av en fråga i sig och flera olika svar , av vilka endast ett är korrekt . Du kan skapa ett flervalstest i Visual Basic med hjälp av etiketter för att visa frågor , radioknappar för de möjliga svaren och kontroller knappen för att navigera mellan olika frågor . I koden använder matriser för att spara de frågor och svar som användaren lägger fram och upprätthålla en räknare variabel att hålla reda på vilken fråga användaren är på . Vid slutet av testet , markera användarens svar och visa resultatet på blanketten. Instruktioner
1
Öppna ett nytt Visual Basic-projekt . Lägg två etiketter , tre radioknappar och två kontroller knappen till formuläret . Dra de två etiketterna till toppen med Label1 ovanpå Label2 . Dra RadioButton1 , RadioButton2 och RadioButton3 att rada upp vertikalt under etiketterna . Dra de två knapparna under radioknapparna med Button1 till vänster och Button2 till höger .
2
Tryck " F7 " för att öppna registret fönstret . Skriv följande kod på klassnivå :
Dim frågor ( 2 , 4 ) Som
String
Dim svar ( 2 ) As String
Dim quesNum As Integer
Den första raden skapar en tvådimensionell grupp . Den första dimensionen är för varje fråga och den andra dimensionen är att själva frågan , tre val svar och det rätta svaret . Den andra raden skapar en array för att lagra användarens svar . Den tredje linjen skapar en räknare variabel som håller koll på den fråga användaren är på Addera 3
Skriv följande kod : .
Private Sub GetQuestions ( ) katalog
frågor = new String ( , ) { { " Hur många färger i en regnbåge ? " , " 5 " , " 6 " , " 7 " , " 7 " } , _
{ " Who huvudrollen i Pirates of the Caribbean ? " , " Johnny Depp " , " John Malkovich " , " John Cusack " , " Johnny Depp " } , _
{ " Vad heter huvudstaden i Florida? " , " Miami " , " Tallahassee " , " Jacksonville " , " Tallahassee " } }
End Sub
Denna subrutin initierar helt enkelt de tre frågor och svar i frågor arrayen . Du kan lägga till ytterligare frågor eller få dem på andra sätt , till exempel genom en textfil , men om du gör det , kom ihåg att ändra storleken på den frågan och arrayer svar att rymma antalet frågor .
4
Skriv följande kod :
Private Sub MarkTest ( ) katalog
Dim årskurs As Integer = 0
för i = 0 till 2 Review p Om svar ( i) = frågor ( I , 4 ) Sedan
grade + = 1
End If
Nästa
Label1.Text = " Test klar ! "
Label2.Text = " Du gjorde " & grade & " av " & answers.Length & " ! "
RadioButton1.Enabled = False
RadioButton2.Enabled = False
RadioButton3.Enabled = False
Button1.Enabled = False
Button2.Enabled = False
End Sub
första raden deklarerar en subrutin som markerar testet . Det skapar en lokal variabel att räkna poäng , sedan cyklar igenom svaren på frågorna arrayen och svaren som lämnats av användaren . För varje svar som matchar , går betyget upp med ett. Den visar sedan resultatet i etiketterna och inaktiverar resten av kontrollerna
5
Öppna Form1_Load ( ) subrutin och skriv följande kod : .
Me.Text = " My Multiple Choice Quiz ! "
GetQuestions ( ) katalog
quesNum = 1
Label1.Text = " Fråga " & quesNum & " av " & answers.Length
Label2.Text = frågor ( 0 , 0 ) katalog
Button1.Text = " Tidigare "
Button2.Text = "next "
RadioButton1.Text = frågor ( 0 , 1 ) katalog
RadioButton2.Text = frågor ( 0 , 2 ) katalog
RadioButton3.Text = frågor ( 0 , 3 ) katalog
den första raden anger titeln i namnlisten . Nästa rad anropar GetQuestions () subrutin. Den tredje linjen initierar variabeln frågan räknaren . På fjärde raden visas vad fråga nummer användaren är på . Den femte raden visar ifrågasätter en i etiketten . Sjätte och sjunde linjerna ändra texten för de två knapparna . De sista tre raderna infoga tre flervalssvar som text för de tre knapparna
6
Öppna Button1_Click ( ) subrutin och skriv följande kod : .
P Om quesNum > 1 Då
quesNum - = 1
Label1.Text = " Fråga " & quesNum & " 3 "
Label2.Text = frågor ( quesNum - 1 , 0 )
RadioButton1.Text = frågor ( quesNum - 1 , 1 ) katalog
RadioButton2.Text = frågor ( quesNum - 1 , 2 ) katalog
RadioButton3.Text = frågor ( quesNum - 1 , 3 ) katalog p Om Button2.Text = " Submit " Då
Button2.Text = " Next "
End If
End If
p Detta är koden för " Föregående" . Den kontrollerar först för att se om användaren tryckte på knappen samtidigt redan på den första frågan . Om inte , Minskar det frågan räknaren med ett och uppdaterar texten för etiketter och alternativknappar för att visa föregående fråga . Om användaren var den sista frågan , texten på button2 ändras från " Submit " tillbaka till
7
Öppna Button2_Click ( ) subrutin och skriv följande kod " Next . " :
Om RadioButton1.Checked = sant då
svar ( quesNum - 1 ) = RadioButton1.Text
elseIf RadioButton2.Checked = sant då
svar ( quesNum - 1 ) = RadioButton2.Text
elseIf RadioButton3.Checked = sant då
svar ( quesNum - 1 ) = RadioButton3.Text
slut om
RadioButton1.Focus ( ) katalog p Om quesNum < 3 Sen
quesNum + = 1
Label1.Text = " Fråga " & quesNum & " av " & answers.Length
Label2.Text = frågor ( quesNum - 1 , 0 ) katalog
RadioButton1.Text = frågor ( quesNum - 1 , 1 ) katalog
RadioButton2.Text = frågor ( quesNum - 1 , 2 ) katalog
RadioButton3.Text = frågor ( quesNum - 1 , 3 ) katalog p Om quesNum = 3 Då
Button2.Text = " Submit "
End Om
Else
MarkTest ( ) katalog
End If
p Detta är koden för " Next " -knappen . De första sju raderna kontrollera att se vad alternativknappen användaren hade valt , så sparar det svaret till svar arrayen . Nästa rad fokuserar urvalet radioknappen på RadioButton1 . Nästa rad kontroller för att se till att användaren inte är på den sista frågan . Om detta är sant , det ökar den frågan räknaren med ett och uppdaterar de etiketter och alternativknappar för att visa nästa fråga . Därefter kontrollerar att se om användaren är nu på den sista frågan . Om så är fallet , det ändrar texten för knappen Nästa från " Next " till " Skicka". Om användaren redan var på den sista frågan och klickade på " Submit ", programmet kallar " MarkTest " -funktionen för att få användarens poäng .
8
Spara Visual Basic-program . Tryck " F5 " för att köra den . Addera