Visual Basic을 사용하여 객관식 테스트를 만드는 방법

새 Visual Basic 프로젝트를 엽니다. 두 개의 레이블, 세 개의 라디오 버튼 및 두 개의 버튼 컨트롤을 양식에 추가합니다. Label1이 Label2 위에 있는 상태로 두 개의 레이블을 맨 위로 끕니다. RadioButton1, RadioButton2 및 RadioButton3을 끌어 레이블 아래에 수직으로 정렬합니다. Button1이 왼쪽에 있고 Button2가 오른쪽에 있는 라디오 버튼 아래에 있는 두 개의 버튼을 끕니다.

첫 번째 줄은 2차원 배열을 만듭니다. 첫 번째 차원은 각 질문에 대한 것이고 두 번째 차원은 질문 자체, 세 가지 답변 선택 및 정답에 대한 것입니다. 두 번째 줄은 사용자의 답변을 저장할 배열을 만듭니다. 세 번째 줄은 사용자의 질문을 추적하는 카운터 변수를 만듭니다.

Private Sub GetQuestions() 질문 = New String(,) {{"무지개에는 몇 가지 색상이 있습니까?", "5", "6", "7", "7"}, {"캐리비안의 해적에 누가 출연했습니까?", "조니 뎁", "존 말코비치", "존 쿠삭", "조니 뎁"}, {"플로리다의 수도는 무엇입니까?", "마이애미", "탤러해시", "잭슨빌", "탤러해시"}} End Sub

이 서브루틴은 단순히 질문 배열의 세 가지 질문과 답변을 초기화합니다. 추가 질문을 추가하거나 텍스트 파일과 같은 다른 방법으로 질문을 얻을 수 있지만 할 수 있도록 질문 및 답변 배열의 크기를 변경하는 것을 잊지 마십시오. 질문.

Private Sub MarkTest() Dim grade As Integer = 0 For i = 0 To 2 If Answers (i) = 질문 (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씩 올라갑니다. 그런 다음 레이블에 점수를 표시하고 나머지 컨트롤을 비활성화합니다.

나. Text = "내 객관식 퀴즈!" GetQuestions() quesNum = 1 Label1.Text = "질문 " & quesNum & " of " & 답변. 길이 Label2.Text = 질문(0, 0) Button1.Text = "이전" Button2.Text = "다음" RadioButton1.Text = 질문(0, 1) RadioButton2.Text = 질문(0, 2) RadioButton3.Text = 질문 (0, 3)

첫 번째 줄은 제목 표시줄의 제목을 설정합니다. 다음 줄은 GetQuestions() 서브루틴을 호출합니다. 세 번째 줄은 질문 카운터 변수를 초기화합니다. 네 번째 줄은 사용자가 어떤 질문 번호를 가지고 있는지 표시합니다. 다섯 번째 줄은 레이블에 질문 1을 표시합니다. 여섯 번째와 일곱 번째 줄은 두 버튼의 텍스트를 변경합니다. 마지막 세 줄은 세 개의 라디오 버튼에 대한 텍스트로 세 개의 객관식 답변을 삽입합니다.

If quesNum > 1 then quesNum -= 1 Label1.Text = "Question " & quesNum & " of 3" Label2.Text = 질문(quesNum - 1, 0) RadioButton1.Text = 질문(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 그러면 답변(quesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True 그러면 답변(quesNum - 1) = RadioButton2.Text ElseIf RadioButton3.Checked = True 그러면 답변(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 = "제출" End If Else MarkTest() 종료

이것은 "다음" 버튼에 대한 코드입니다. 처음 7줄은 사용자가 선택한 라디오 버튼을 확인한 다음 해당 답변을 답변 배열에 저장합니다. 다음 줄은 RadioButton1의 라디오 버튼 선택에 초점을 맞춥니다. 다음 줄은 사용자가 최종 질문에 없는지 확인합니다. 이것이 사실이면 질문 카운터를 하나 증가시키고 레이블과 라디오 버튼을 업데이트하여 다음 질문을 표시합니다. 그런 다음 사용자가 현재 마지막 질문에 있는지 확인합니다. 그렇다면 다음 버튼의 텍스트가 "다음"에서 "제출"로 변경됩니다. 사용자가 이미 마지막 질문을 하고 "제출"을 클릭하면 프로그램은 "MarkTest" 함수를 호출하여 사용자의 점수를 얻습니다.