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