1. カメラ
  2. カーオーディオ&エレクトロニクス
  3. ホームオーディオ
  4. パーソナルオーディオ
  5. テレビ
  6. スマートホーム
  >> 電子技術オンライン >  >> スマートホーム >> スマートライフ

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

多肢選択式テストの各問題は、問題自体といくつかの異なる回答で構成され、そのうちの 1 つだけが正解です。 Visual Basic では、ラベルを使用して質問を表示したり、可能な回答をラジオ ボタンで表示したり、ボタン コントロールを使用してさまざまな質問間を移動したりして、多肢選択式テストを作成できます。コードでは、配列を使用して、ユーザーが送信した質問と回答を保存し、カウンター変数を維持して、ユーザーがどの質問をしているかを追跡します。テストの最後に、ユーザーの回答をマークし、結果をフォームに表示します。

ステップ 1

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

ステップ 2

「F7」を押してコードウィンドウを開きます。クラス レベルで次のコードを入力します:

Dim question(2, 4) As String Dim Answers(2) As String Dim quesNum As Integer

最初の行は、2 次元配列を作成します。最初の次元は各質問、2 番目の次元は質問自体、3 つの選択肢と正解です。 2 行目は、ユーザーの回答を格納するための配列を作成します。 3 行目は、ユーザーの質問を追跡するカウンター変数を作成します。

ステップ 3

次のコードを入力してください:

Private Sub GetQuestions() question =New String(,) {{"虹には何色ありますか?", "5", "6", "7", "7"}, {"誰が主演したかパイレーツ オブ カリビアン?」、「ジョニー デップ」、「ジョン マルコヴィッチ」、「ジョン キューザック」、「ジョニー デップ」}、 {"フロリダの首都は?", "マイアミ", "タラハシー", "ジャクソンビル", "タラハシー"}} End Sub

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

ステップ 4

次のコードを入力してください:

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 ="あなたは、" &answer.Length &"!" 中 " &grade &" を獲得しました。" RadioButton1.Enabled =False RadioButton2.Enabled =False RadioButton3.Enabled =False Button1.Enabled =False Button2.Enabled =False End Sub

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

ステップ 5

Form1_Load() サブルーチンを開き、次のコードを入力します:

Me.Text ="多肢選択式クイズ!" GetQuestions() quesNum =1 Label1.Text ="Question " &quesNum &" of " &Answers.Length Label2.Text =Questions(0, 0) Button1.Text ="Previous" Button2.Text ="Next" RadioButton1.Text =質問(0, 1) RadioButton2.Text =質問(0, 2) RadioButton3.Text =質問(0, 3)

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

ステップ 6

Button1_Click() サブルーチンを開き、次のコードを入力します:

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 =question(quesNum - 1, 2) RadioButton3.Text =question(quesNum - 1, 3) If Button2.Text ="Submit" Then Button2.Text ="Next" End If End If

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

ステップ 7

Button2_Click() サブルーチンを開き、次のコードを入力します:

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 " &Answers.Length Label2.Text =question(quesNum - 1, 0) RadioButton1.Text =question(quesNum - 1, 1) RadioButton2.Text =question(quesNum - 1, 2) RadioButton3.Text =question(quesNum - 1, 3) If quesNum =3 Then Button2.Text ="Submit" End If Else MarkTest()終了条件

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

ステップ 8

Visual Basic プログラムを保存します。 「F5」を押して実行してください。