VisualBasicを使用して多肢選択式テストを作成する方法

新しいVisualBasicプロジェクトを開きます。 2つのラベル、3つのラジオボタン、および2つのボタンコントロールをフォームに追加します。 Label2の上にLabel1を付けて、2つのラベルを上にドラッグします。 RadioButton1、RadioButton2、およびRadioButton3をドラッグして、ラベルの下に垂直に並べます。 ラジオボタンの下にある2つのボタンをドラッグし、左側にButton1、右側にButton2を配置します。

最初の行は2次元配列を作成します。 最初の次元は各質問用であり、2番目の次元は質問自体、3つの回答の選択肢、および正解用です。 2行目は、ユーザーの回答を格納する配列を作成します。 3行目は、ユーザーが直面している質問を追跡するカウンター変数を作成します。

Private Sub GetQuestions()questions = New String(、){{"虹の色はいくつですか?"、 "5"、 "6"、 "7"、 "7"}、 {「パイレーツオブカリビアンに出演したのは誰ですか?」、「ジョニーデップ」、「ジョンマルコビッチ」、「ジョンキューザック」、「ジョニーデップ」}、 {「フロリダの首都はどこですか?」、「マイアミ」、「タラハシー」、「ジャクソンビル」、「タラハシー」}} End Sub

このサブルーチンは、質問配列内の3つの質問と回答を初期化するだけです。 質問を追加したり、テキストファイルなどの他の方法で質問を取得したりできますが、 する、の数に対応するために質問と回答の配列のサイズを変更することを忘れないでください 質問。

Private Sub MarkTest()Dim grade As Integer = 0 For i = 0 To 2 If Answers(i)= Questions(i、4)Then grade + = 1 End If Next Label1.Text = "テストが終了しました!" Label2.Text = "あなたは"&grade& "out of"&を獲得しました 答えます。 長さ & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub

最初の行は、テストをマークするサブルーチンを宣言しています。 スコアをカウントするローカル変数を作成し、質問配列の回答とユーザーが送信した回答を循環します。 一致する回答ごとに、成績が1つ上がります。 次に、ラベルにスコアを表示し、残りのコントロールを無効にします。

自分。 テキスト= "多肢選択式クイズ!" GetQuestions()quesNum = 1 Label1.Text = "Question"&quesNum& "of"&answers。 長さLabel2.Text =質問(0、0)Button1.Text = "前へ" Button2.Text = "次へ" RadioButton1.Text =質問(0、1)RadioButton2.Text =質問(0、2)RadioButton3.Text =質問 (0、3)

最初の行は、タイトルバーのタイトルを設定します。 次の行は、GetQuestions()サブルーチンを呼び出します。 3行目は、質問カウンター変数を初期化します。 4行目には、ユーザーが使用している質問番号が表示されます。 5行目は、ラベルに質問1を表示します。 6行目と7行目は、2つのボタンのテキストを変更します。 最後の3行は、3つのラジオボタンのテキストとして3つの多肢選択式の回答を挿入します。

If quesNum> 1 Then quesNum- = 1 Label1.Text = "Question"&quesNum& "of 3" Label2.Text = question(quesNum-1、0)RadioButton1.Text = question(quesNum-1、 1)RadioButton2.Text =質問(quesNum-1、2)RadioButton3.Text =質問(quesNum-1、3)If Button2.Text = "Submit" Then Button2.Text = "Next" End If End If

これは「前へ」ボタンのコードです。 最初に、ユーザーがすでに最初の質問をしているときにボタンを押したかどうかを確認します。 そうでない場合は、質問カウンターを1つ減らし、ラベルとラジオボタンのテキストを更新して前の質問を表示します。 ユーザーが最後の質問に答えた場合、Button2のテキストは「送信」から「次へ」に戻ります。

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& "of "&回答。 長さLabel2.Text =質問(quesNum-1、0)RadioButton1.Text =質問(quesNum-1、1)RadioButton2.Text =質問 (quesNum-1、2)RadioButton3.Text =質問(quesNum-1、3)If quesNum = 3 Then Button2.Text = "Submit" End If Else MarkTest() 終了する場合

これは「次へ」ボタンのコードです。 最初の7行は、ユーザーが選択したラジオボタンを確認し、その回答を回答配列に保存します。 次の行は、RadioButton1のラジオボタンの選択に焦点を当てています。 次の行は、ユーザーが最後の質問に参加していないことを確認します。 これが当てはまる場合は、質問カウンターが1つ増え、ラベルとラジオボタンが更新されて次の質問が表示されます。 次に、ユーザーが最後の質問に答えているかどうかを確認します。 その場合、[次へ]ボタンのテキストを[次へ]から[送信]に変更します。 ユーザーがすでに 最後の質問で「送信」をクリックすると、プログラムは「MarkTest」関数を呼び出してユーザーのスコアを取得します。