Abra um novo projeto Visual Basic. Adicione dois rótulos, três botões de opção e dois controles de botão ao formulário. Arraste os dois rótulos para o topo com Label1 no topo de Label2. Arraste RadioButton1, RadioButton2 e RadioButton3 para alinhar verticalmente abaixo dos rótulos. Arraste os dois botões abaixo dos botões de opção com o Botão1 à esquerda e o Botão2 à direita.
A primeira linha cria uma matriz bidimensional. A primeira dimensão é para cada pergunta e a segunda dimensão é para a própria pergunta, três opções de resposta e a resposta correta. A segunda linha cria uma matriz para armazenar as respostas do usuário. A terceira linha cria uma variável de contador que controla a pergunta em que o usuário está.
Private Sub GetQuestions () questions = New String (,) {{"Quantas cores existem em um arco-íris?", "5", "6", "7", "7"}, {"Quem estrelou Piratas do Caribe?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"}, {"Qual é a capital da Flórida?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}} End Sub
Essa sub-rotina simplesmente inicializa as três perguntas e respostas na matriz de perguntas. Você pode adicionar outras perguntas ou obtê-las de outras maneiras, como por meio de um arquivo de texto, mas se você fazer, lembre-se de alterar o tamanho das matrizes de perguntas e respostas para acomodar o número de perguntas.
Sub MarkTest privado () Dim grau como inteiro = 0 Para i = 0 a 2 Se as respostas (i) = perguntas (i, 4) Então grau + = 1 End If Next Label1.Text = "Teste concluído!" Label2.Text = "Você pontuou" & classificou & "fora de" & respostas. Comprimento & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub
A primeira linha declara uma sub-rotina que marca o teste. Ele cria uma variável local para contar a pontuação e, em seguida, percorre as respostas na matriz de perguntas e as respostas enviadas pelo usuário. Para cada resposta correspondente, a nota aumenta em um. Em seguida, exibe a pontuação nas etiquetas e desativa o resto dos controles.
Eu. Text = "Meu questionário de múltipla escolha!" GetQuestions () quesNum = 1 Label1.Text = "Pergunta" & quesNum & "de" & respostas. Comprimento Label2.Text = questões (0, 0) Button1.Text = "Anterior" Button2.Text = "Próximo" RadioButton1.Text = questões (0, 1) RadioButton2.Text = questões (0, 2) RadioButton3.Text = questões (0, 3)
A primeira linha define o título na barra de título. A próxima linha chama a sub-rotina GetQuestions (). A terceira linha inicializa a variável do contador de perguntas. A quarta linha exibe em qual número de pergunta o usuário está. A quinta linha exibe a pergunta um no rótulo. A sexta e a sétima linhas alteram o texto dos dois botões. As últimas três linhas inserem as três respostas de múltipla escolha como texto para os três botões de opção.
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 = "Enviar" Then Button2.Text = "Próximo" End If End If
Este é o código para o botão "Anterior". Primeiro, ele verifica se o usuário pressionou o botão enquanto já estava na primeira pergunta. Caso contrário, diminui o contador de perguntas em um e atualiza o texto dos rótulos e botões de opção para mostrar a pergunta anterior. Se o usuário estava na pergunta final, o texto no Button2 muda de "Enviar" de volta para "Avançar".
If RadioButton1.Checked = True Then responde (quesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True Then responde (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 & "de " & respostas. Comprimento Label2.Text = question (quesNum - 1, 0) RadioButton1.Text = question (quesNum - 1, 1) RadioButton2.Text = question (quesNum - 1, 2) RadioButton3.Text = questions (quesNum - 1, 3) If quesNum = 3 Then Button2.Text = "Enviar" End If Else MarkTest () Fim se
Este é o código para o botão "Avançar". As primeiras sete linhas verificam qual botão de opção o usuário selecionou e, em seguida, salva a resposta na matriz de respostas. A próxima linha enfoca a seleção do botão de rádio em RadioButton1. A próxima linha verifica se o usuário não está na pergunta final. Se isso for verdade, ele aumenta o contador de perguntas em um e atualiza os rótulos e botões de opção para mostrar a próxima pergunta. Em seguida, ele verifica se o usuário está agora na pergunta final. Nesse caso, ele altera o texto do botão Avançar de "Avançar" para "Enviar". Se o usuário já estava no pergunta final e clicado em "Enviar", o programa chama a função "MarkTest" para obter a pontuação do usuário.