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.
