>> Technologie Électronique >  >> Maison intelligente >> Vie connectée

Comment créer un QCM avec Visual Basic

Chaque question d'un QCM comprend l'énoncé et plusieurs réponses possibles, une seule étant correcte. Vous pouvez créer un QCM en Visual Basic en utilisant des étiquettes (labels) pour afficher les questions, des boutons radio pour les réponses et des boutons de commande pour naviguer entre les questions. Dans le code, utilisez des tableaux pour stocker les questions et les réponses soumises par l'utilisateur, et une variable compteur pour suivre la question actuelle. À la fin, corrigez les réponses et affichez le résultat.

Étape 1

Ouvrez un nouveau projet Visual Basic. Ajoutez deux étiquettes (Label), trois boutons radio (RadioButton) et deux boutons de commande (Button) sur le formulaire. Placez les deux étiquettes en haut (Label1 au-dessus de Label2). Alignez verticalement RadioButton1, 2 et 3 sous les étiquettes. Placez les deux boutons sous les boutons radio (Button1 à gauche, Button2 à droite).

Étape 2

Appuyez sur « F7 » pour ouvrir la fenêtre de code. Saisissez le code suivant au niveau de la classe :

Dim questions(2, 4) As String
Dim answers(2) As String
Dim quesNum As Integer

La première ligne crée un tableau bidimensionnel : première dimension pour chaque question, seconde pour la question, trois choix de réponse et la bonne réponse. La deuxième ligne crée un tableau pour stocker les réponses de l'utilisateur. La troisième crée un compteur pour suivre la question en cours.

Étape 3

Saisissez le code suivant :

Private Sub GetQuestions()
questions = New String(,) {{"Combien de couleurs dans un arc-en-ciel ?", "5", "6", "7", "7"}, _
{"Qui a joué dans Pirates des Caraïbes ?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"}, _
{"Quelle est la capitale de la Floride ?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}}
End Sub

Cette procédure initialise les trois questions et réponses dans le tableau questions. Vous pouvez ajouter d'autres questions ou les charger autrement (fichier texte), mais n'oubliez pas d'ajuster la taille des tableaux questions et réponses.

Étape 4

Saisissez le code suivant :

Private Sub MarkTest()
Dim grade As Integer = 0
For i = 0 To 2
If answers(i) = questions(i, 4) Then grade += 1
Next
Label1.Text = "Test terminé !"
Label2.Text = "Vous avez obtenu " & grade & " sur " & answers.Length & " !"
RadioButton1.Enabled = False
RadioButton2.Enabled = False
RadioButton3.Enabled = False
Button1.Enabled = False
Button2.Enabled = False
End Sub

Cette procédure corrige le test. Elle crée une variable locale pour le score, parcourt les réponses du tableau questions et celles de l'utilisateur. À chaque correspondance, le score augmente. Elle affiche le score dans les étiquettes et désactive les contrôles.

Étape 5

Ouvrez la procédure Form1_Load() et saisissez :

Me.Text = "Mon QCM !"
GetQuestions()
quesNum = 1
Label1.Text = "Question " & quesNum & " sur " & answers.Length
Label2.Text = questions(0, 0)
Button1.Text = "Précédent"
Button2.Text = "Suivant"
RadioButton1.Text = questions(0, 1)
RadioButton2.Text = questions(0, 2)
RadioButton3.Text = questions(0, 3)

La première ligne définit le titre. La suivante appelle GetQuestions(). La troisième initialise le compteur. La quatrième affiche le numéro de question. La cinquième affiche la question 1. Les deux suivantes modifient le texte des boutons. Les trois dernières insèrent les trois choix de réponse comme texte des boutons radio.

Étape 6

Ouvrez Button1_Click() et saisissez :

If quesNum > 1 Then
quesNum -= 1
Label1.Text = "Question " & quesNum & " sur 3"
Label2.Text = questions(quesNum - 1, 0)
RadioButton1.Text = questions(quesNum - 1, 1)
RadioButton2.Text = questions(quesNum - 1, 2)
RadioButton3.Text = questions(quesNum - 1, 3)
If Button2.Text = "Soumettre" Then Button2.Text = "Suivant"
End If

Code du bouton « Précédent ». Vérifie si l'utilisateur est déjà sur la première question. Sinon, décrémente le compteur et met à jour les textes pour afficher la question précédente. Si on était sur la dernière question, le texte de Button2 repasse de « Soumettre » à « Suivant ».

Étape 7

Ouvrez Button2_Click() et saisissez :

If RadioButton1.Checked = True Then
answers(quesNum - 1) = RadioButton1.Text
ElseIf RadioButton2.Checked = True Then
answers(quesNum - 1) = RadioButton2.Text
ElseIf RadioButton3.Checked = True Then
answers(quesNum - 1) = RadioButton3.Text
End If
RadioButton1.Focus()
If quesNum < 3 Then
quesNum += 1
Label1.Text = "Question " & quesNum & " sur " & answers.Length
Label2.Text = questions(quesNum - 1, 0)
RadioButton1.Text = questions(quesNum - 1, 1)
RadioButton2.Text = questions(quesNum - 1, 2)
RadioButton3.Text = questions(quesNum - 1, 3)
If quesNum = 3 Then Button2.Text = "Soumettre"
Else
MarkTest()
End If

Code du bouton « Suivant ». Les 7 premières lignes vérifient quel bouton radio est sélectionné et sauvegardent la réponse. La ligne suivante donne le focus à RadioButton1. On vérifie si ce n'est pas la dernière question : on incrémente le compteur, on met à jour l'affichage. Si on arrive à la question 3, Button2 devient « Soumettre ». Si on était déjà sur la dernière question et qu'on clique « Soumettre », on appelle MarkTest() pour afficher le score.

Étape 8

Enregistrez le programme Visual Basic. Appuyez sur « F5 » pour l'exécuter.

Vie connectée