Come utilizzare Visual Basic per creare un test a scelta multipla

Apri un nuovo progetto Visual Basic. Aggiungi due etichette, tre pulsanti di opzione e due controlli pulsante al modulo. Trascina le due etichette in alto con Label1 sopra Label2. Trascina RadioButton1, RadioButton2 e RadioButton3 per allinearli verticalmente sotto le etichette. Trascina i due pulsanti sotto i pulsanti di opzione con Button1 a sinistra e Button2 a destra.

La prima riga crea un array bidimensionale. La prima dimensione è per ogni domanda e la seconda dimensione è per la domanda stessa, tre scelte di risposta e la risposta corretta. La seconda riga crea un array per memorizzare le risposte dell'utente. La terza riga crea una variabile contatore che tiene traccia della domanda su cui si trova l'utente.

Domande Private Sub GetQuestions() = New String(,) {{"Quanti colori ci sono in un arcobaleno?", "5", "6", "7", "7"}, {"Chi ha recitato in Pirati dei Caraibi?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"}, {"Qual è la capitale della Florida?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}} End Sub

Questa subroutine inizializza semplicemente le tre domande e le risposte nell'array delle domande. Puoi aggiungere ulteriori domande o ottenerle in altri modi, ad esempio tramite un file di testo, ma se lo desideri fare, ricordarsi di modificare la dimensione degli array di domande e risposte per adattarsi al numero di domande.

Private Sub MarkTest() Dim grade As Integer = 0 For i = 0 To 2 Se le risposte (i) = domande (i, 4) Allora grade += 1 End If Next Label1.Text = "Test terminato!" Label2.Text = "Hai segnato " & voto & " su " & risposte. Lunghezza & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub

La prima riga dichiara una subroutine che contrassegna il test. Crea una variabile locale per contare il punteggio, quindi scorre le risposte nell'array delle domande e le risposte inviate dall'utente. Per ogni risposta che corrisponde, il voto aumenta di uno. Quindi visualizza il punteggio nelle etichette e disabilita il resto dei controlli.

Me. Testo = "Il mio quiz a scelta multipla!" GetQuestions() quesNum = 1 Label1.Text = "Domanda " & quesNum & " di " & risposte. Lunghezza Label2.Text = domande (0, 0) Button1.Text = "Precedente" Button2.Text = "Avanti" RadioButton1.Text = domande (0, 1) RadioButton2.Text = domande (0, 2) RadioButton3.Text = domande (0, 3)

La prima riga imposta il titolo nella barra del titolo. La riga successiva chiama la subroutine GetQuestions(). La terza riga inizializza la variabile contatore delle domande. La quarta riga mostra su quale numero di domanda si trova l'utente. La quinta riga visualizza la domanda uno nell'etichetta. La sesta e la settima riga modificano il testo dei due pulsanti. Le ultime tre righe inseriscono le tre risposte a scelta multipla come testo per i tre pulsanti di opzione.

Se quesNum > 1 Allora quesNum -= 1 Label1.Text = "Domanda " & quesNum & " di 3" Label2.Text = domande (quesNum - 1, 0) RadioButton1.Text = domande (quesNum - 1, 1) RadioButton2.Text = domande (quesNum - 1, 2) RadioButton3.Text = domande (quesNum - 1, 3) If Button2.Text = "Submit" Then Button2.Text = "Next" End If End If

Questo è il codice per il pulsante "Precedente". Prima controlla se l'utente ha premuto il pulsante mentre era già alla prima domanda. In caso contrario, decrementa il contatore delle domande di uno e aggiorna il testo delle etichette e dei pulsanti di opzione per mostrare la domanda precedente. Se l'utente era sulla domanda finale, il testo su Button2 cambia da "Invia" a "Avanti".

Se RadioButton1.Checked = True Allora risponde (quesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True Allora risponde (quesNum - 1) = RadioButton2.Text ElseIf RadioButton3.Checked = True Allora risposte (quesNum - 1) = RadioButton3.Text End If RadioButton1.Focus() If quesNum < 3 Then quesNum += 1 Label1.Text = "Domanda " & quesNum & " di " & risposte. Lunghezza Label2.Text = domande (quesNum - 1, 0) RadioButton1.Text = domande (quesNum - 1, 1) RadioButton2.Text = domande (quesNum - 1, 2) RadioButton3.Text = domande (quesNum - 1, 3) If quesNum = 3 Then Button2.Text = "Submit" End If Else MarkTest() Finisci se

Questo è il codice per il pulsante "Avanti". Le prime sette righe controllano quale pulsante di opzione è stato selezionato dall'utente, quindi salvano la risposta nell'array delle risposte. La riga successiva focalizza la selezione del pulsante di opzione su RadioButton1. La riga successiva verifica che l'utente non sia sulla domanda finale. Se questo è vero, aumenta il contatore delle domande di uno e aggiorna le etichette e i pulsanti di opzione per mostrare la domanda successiva. Quindi controlla se l'utente è ora sulla domanda finale. In tal caso, cambia il testo del pulsante Avanti da "Avanti" a "Invia". Se l'utente era già sul domanda finale e fatto clic su "Invia", il programma chiama la funzione "MarkTest" per ottenere il punteggio dell'utente.