Откройте новый проект Visual Basic. Добавьте в форму две метки, три переключателя и два кнопочных элемента управления. Перетащите две метки вверх, так чтобы Label1 находился поверх Label2. Перетащите RadioButton1, RadioButton2 и RadioButton3, чтобы выровнять их вертикально под метками. Перетащите две кнопки под переключателями: Button1 слева, а Button2 справа.
Первая строка создает двумерный массив. Первое измерение предназначено для каждого вопроса, а второе измерение - для самого вопроса, трех вариантов ответа и правильного ответа. Вторая строка создает массив для хранения ответов пользователя. Третья строка создает переменную счетчика, которая отслеживает вопрос, который задает пользователь.
Private Sub GetQuestions () questions = New String (,) {{"Сколько цветов в радуге?", "5", "6", "7", "7"}, {«Кто снялся в фильмах« Пираты Карибского моря »?», «Джонни Депп», «Джон Малкович», «Джон Кьюсак», «Джонни Депп»}, {"Какая столица Флориды?", "Майами", "Таллахасси", "Джексонвилл", "Таллахасси"}} End Sub
Эта подпрограмма просто инициализирует три вопроса и ответов в массиве questions. Вы можете добавить дополнительные вопросы или получить их другими способами, например, через текстовый файл, но если вы сделать, не забудьте изменить размер массивов вопросов и ответов, чтобы учесть количество вопросы.
Private Sub MarkTest () Тусклая оценка как целое число = 0 Для i = от 0 до 2 Если ответы (i) = вопросы (i, 4) Тогда оценка + = 1 End If Next Label1.Text = "Тест завершен!" Label2.Text = "Вы набрали" & выставили & "из" & ответы. Длина & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub
В первой строке объявляется подпрограмма, которая отмечает тест. Он создает локальную переменную для подсчета баллов, а затем циклически перебирает ответы в массиве вопросов и ответы, отправленные пользователем. За каждый совпадающий ответ оценка повышается на единицу. Затем он отображает счет в метках и отключает остальные элементы управления.
Мне. Text = "Моя викторина с множественным выбором!" GetQuestions () quesNum = 1 Label1.Text = "Вопрос" & quesNum & "of" & ответы. Длина Label2.Text = questions (0, 0) Button1.Text = "Предыдущий" Button2.Text = "Next" RadioButton1.Text = questions (0, 1) RadioButton2.Text = questions (0, 2) RadioButton3.Text = questions (0, 3)
Первая строка устанавливает заголовок в строке заголовка. Следующая строка вызывает подпрограмму GetQuestions (). Третья строка инициализирует переменную счетчика вопросов. В четвертой строке отображается номер вопроса, на котором находится пользователь. В пятой строке отображается первый вопрос в метке. Шестая и седьмая строки изменяют текст для двух кнопок. Последние три строки вставляют три ответа с множественным выбором как текст для трех переключателей.
Если quesNum> 1, тогда quesNum - = 1 Label1.Text = "Question" & quesNum & "of 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) Если Button2.Text = "Submit" Then Button2.Text = "Next" End If End If
Это код кнопки «Назад». Сначала он проверяет, нажал ли пользователь кнопку, отвечая на первый вопрос. В противном случае он уменьшает счетчик вопросов на единицу и обновляет текст меток и переключателей, чтобы отобразить предыдущий вопрос. Если пользователь ответил на последний вопрос, текст на Button2 изменится с «Отправить» на «Далее».
Если RadioButton1.Checked = True Тогда ответы (quesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True Тогда ответы (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 = questions (quesNum - 1, 0) RadioButton1.Text = questions (quesNum - 1, 1) RadioButton2.Text = questions (quesNum - 1, 2) RadioButton3.Text = questions (quesNum - 1, 3) Если quesNum = 3, то Button2.Text = "Submit" End If Else MarkTest () Конец, если
Это код кнопки «Далее». Первые семь строк проверяют, какой переключатель выбрал пользователь, а затем сохраняет этот ответ в массив ответов. Следующая строка фокусирует выбор переключателя на RadioButton1. Следующая строка проверяет, не отвечает ли пользователь не на последний вопрос. Если это так, он увеличивает счетчик вопросов на единицу и обновляет метки и переключатели, чтобы отобразить следующий вопрос. Затем он проверяет, отвечает ли пользователь на последний вопрос. В этом случае текст кнопки «Далее» изменяется с «Далее» на «Отправить». Если пользователь уже был на Последний вопрос и щелчок «Отправить», программа вызывает функцию «MarkTest», чтобы получить оценку пользователя.