Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/55: Рейтинг темы: голосов - 55, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
1

Как сделать тест с 3 вариантами ответа и продолжением

21.12.2013, 17:13. Показов 10674. Ответов 93
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
задача: создать что-то вроде теста
как это я вижу: есть переменная, есть вопрос с 3 вариантами ответа, отвечая на любой вариант к переменной прибавляется +0, +1 и +2 соответственно, после чего нужно чтобы вопрос и варианты изменились и при выборе следующего варианта к измененной переменной прибавились еще +0,+1 и +2, в зависимости от варианта и так далее. в конце переменная сравнивается с каким-либо числом (>=6) и в зависимости от варианта выдает разный ответ. Как это сделать и можно сделать проще?
Если схематично, то как-то так:
Миниатюры
Как сделать тест с 3 вариантами ответа и продолжением  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2013, 17:13
Ответы с готовыми решениями:

Как создать тест без правильного ответа, для сбора информации(ответа)
Как создать тест без правильного ответа, для сбора информации(ответа). К примеру мне нужно создать...

Как создать диалоговое окно со своими вариантами ответа?
Здравствуйте, облазил весь интернет и так и не понял: "Как создать диалоговое окно со своими...

Как создать тест с вариантами ответов?
Как создать тест с вариантами ответов ?

Тест с тремя вариантами ответов: как прибавлять баллы при нажатии на RadioButton?
Есть тест и на каждый vopros три варианта ответов. Один из них - правильный. Отличается он от...

93
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
22.12.2013, 20:09 41
Author24 — интернет-сервис помощи студентам
Ну Вы не разбирайтесь, а скопируйте код и попробуйте.
А в этом примере-просто получается информация, какой RadioButton был нажат, ориентируясь по его свойству Text.
Да, совершенно верно, именно так и будет. А стартовая форма закроется. Соответственно, если где-то что-то пойдет не так, всегда будет возможность перекинуть человека опять к стартовой форме, а ту в которой он был закрыть, и процесс пойдет с начала.
И не Me.Hide(), а Me.Close()
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
22.12.2013, 20:14  [ТС] 42
insite2012, ок, копирую и проверяю
только если я не разберусь, как я дальше буду делать? Там ведь вопросы где переменной d присваиваются разные значения, в зависимости от ответов, к каждому вопросу форму делать нужно, так? Но как тогда d считать и сравнивать потом?
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
22.12.2013, 20:19 43
Ну я еще пока напишу, дальше по Вашей схеме.
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
22.12.2013, 20:22  [ТС] 44
insite2012, хорошо, спасибо, хм, даже кнопку далее не нужно нажимать - удобно! Огроменное спасибо! Я тогда разбираюсь и пытаюсь что-то своять.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
22.12.2013, 20:31 45
Пробуйте.
Я как что напишу еще, по Вашей схеме-выложу сюда.
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
22.12.2013, 21:48  [ТС] 46
insite2012, в общем у меня ничего не получается, я с сравнением не знаю, что делать
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
22.12.2013, 21:51 47
Цитата Сообщение от User562 Посмотреть сообщение
insite2012, в общем у меня ничего не получается, я с сравнением не знаю, что делать
Ну подождите немного, я сейчас блок С допишу и покажу, как это выглядит.
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
22.12.2013, 21:52  [ТС] 48
а можно же не делать формы отдельный - менять текст и все, или никак? Спасибо, поняла, выводы тогда пишу.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
22.12.2013, 22:48 49
Так, ну примерно вот так, дошел до первого возврата. Создайте 2 формы и скопируйте тут, проверьте. Если условие выполняется, то должно возвратить по значению D>6 на основную форму, и так по кругу.
Код Form1:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Public Class Form1
    'Активация формы
    Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        Label1.Text = "Хотите пройти небольшой тест" & vbCrLf &
            " (8 вопросов) для проверки основных знаний " & vbCrLf &
            "английского языка?"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Visible = False
        RadioButton1.Text = "Да"
        RadioButton2.Text = "Нет"
        AddHandler RadioButton1.Click, AddressOf First_2RB_Click
        AddHandler RadioButton2.Click, AddressOf First_2RB_Click
    End Sub
    
    'Обрабочик двух переключателей
    Private Sub First_2RB_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Да" Then
            RemoveHandler RadioButton1.Click, AddressOf First_2RB_Click
            RemoveHandler RadioButton2.Click, AddressOf First_2RB_Click
            'Здесь переход на ветку С"
            Form_С.Show()
            Me.Hide()
            'Стартовая форма убирается
        Else
            RemoveHandler RadioButton1.Click, AddressOf First_2RB_Click
            RemoveHandler RadioButton2.Click, AddressOf First_2RB_Click
 
            Label1.Text = "Как вы оцениваете " & vbCrLf &
                "ваш уровень знаний английского?"
            RadioButton1.Text = "Хорошо"
            RadioButton2.Text = "Средне"
            RadioButton3.Text = "Плохо"
            RadioButton1.Checked = False
            RadioButton2.Checked = False
            RadioButton3.Visible = True
            AddHandler RadioButton1.Click, AddressOf Second_3RB_Click
            AddHandler RadioButton2.Click, AddressOf Second_3RB_Click
            AddHandler RadioButton3.Click, AddressOf Second_3RB_Click
        End If
    End Sub
    'Обработчик трех переключателей
    Private Sub Second_3RB_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Хорошо" Then
            'Здесь переход на ветку А
            'Стартовая форма убирается
            Me.Hide()
        ElseIf CType(sender, RadioButton).Text = "Средне" Then
            'Здесь переход на ветку В
            'Стартовая форма убирается
            Me.Hide()
        ElseIf CType(sender, RadioButton).Text = "Плохо" Then
            'Здесь переход на ветку D
            'Стартовая форма убирается
            Me.Hide()
        End If
    End Sub
    'При закрытии данной формы закрывается полностью приложение
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        End
    End Sub
End Class
Код Form_C:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
Public Class Form_С
    'Переменная подсчета результата
    Private D As Integer
    'При закрытии данной формы закрывается полностью приложение
    'этот момент можно изменить
    'в зависимости от требований
    Private Sub Form_С_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        End
    End Sub
    'Активация формы
    Private Sub Form_С_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        D = 0 'Сброс переменной
        Label1.Text = "Как вы оцениваете " & vbCrLf &
                      "свой уровень английского?"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        RadioButton1.Text = "Хорошо"
        RadioButton2.Text = "Средне"
        RadioButton3.Text = "Плохо"
        AddHandler RadioButton1.Click, AddressOf First_Asc
        AddHandler RadioButton2.Click, AddressOf First_Asc
        AddHandler RadioButton3.Click, AddressOf First_Asc
    End Sub
    'Обработчик первого вопроса
    Private Sub First_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Хорошо" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "Средне" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "Плохо" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf First_Asc
        RemoveHandler RadioButton2.Click, AddressOf First_Asc
        RemoveHandler RadioButton3.Click, AddressOf First_Asc
        Label1.Text = "Какой перевод предложения верен: " & vbCrLf &
                      "Where does she work?"
        RadioButton1.Text = "Она не работает?"
        RadioButton2.Text = "Где она работает?"
        RadioButton3.Text = "Где она работала?"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Second_Asc
        AddHandler RadioButton2.Click, AddressOf Second_Asc
        AddHandler RadioButton3.Click, AddressOf Second_Asc
    End Sub
    'Обработчик второго вопроса
    Private Sub Second_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Она не работает?" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "Где она работает?" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "Где она работала?" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf Second_Asc
        RemoveHandler RadioButton2.Click, AddressOf Second_Asc
        RemoveHandler RadioButton3.Click, AddressOf Second_Asc
        Label1.Text = "Какой перевод верен: " & vbCrLf &
                      "Ее отец выиграл тысячу"
        RadioButton1.Text = "Her father won a thousand"
        RadioButton2.Text = "Her father wined thousand"
        RadioButton3.Text = "Her father win a thousand"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Third_Asc
        AddHandler RadioButton2.Click, AddressOf Third_Asc
        AddHandler RadioButton3.Click, AddressOf Third_Asc
    End Sub
    'Обработчик третьего вопроса
    Private Sub Third_Asc(ByVal sender As Object, ByVal ByVale As System.EventArgs)
        If CType(sender, RadioButton).Text = "Her father won a thousand" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "Her father wined thousand" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "Her father win a thousand" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf Third_Asc
        RemoveHandler RadioButton2.Click, AddressOf Third_Asc
        RemoveHandler RadioButton3.Click, AddressOf Third_Asc
        Label1.Text = "Выберите верный перевод для предложения: " & vbCrLf &
                    "Какой ужасный фильм!"
        RadioButton1.Text = "Film is awful!"
        RadioButton2.Text = "What an awful film!"
        RadioButton3.Text = "What's an awful film!"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Four_Asc
        AddHandler RadioButton2.Click, AddressOf Four_Asc
        AddHandler RadioButton3.Click, AddressOf Four_Asc
    End Sub
    'Обработчик четвертого вопроса
    Private Sub Four_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Film is awful!" Then
            D += 2
        ElseIf CType(sender, RadioButton).Text = "What an awful film!" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "What's an awful film!" Then
            D += 0
        End If
        RemoveHandler RadioButton1.Click, AddressOf Four_Asc
        RemoveHandler RadioButton2.Click, AddressOf Four_Asc
        RemoveHandler RadioButton3.Click, AddressOf Four_Asc
        Label1.Text = "Напишите продолжение: " & vbCrLf &
                      "Sheila isn't a good driver,she is..."
        RadioButton1.Text = "not careful enough"
        RadioButton2.Text = "careful not enough"
        RadioButton3.Text = "enough not careful"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Five_Asc
        AddHandler RadioButton2.Click, AddressOf Five_Asc
        AddHandler RadioButton3.Click, AddressOf Five_Asc
    End Sub
    'Обработчик пятого вопроса
    Private Sub Five_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "not careful enough" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "careful not enough" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "enough not careful" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf Five_Asc
        RemoveHandler RadioButton2.Click, AddressOf Five_Asc
        RemoveHandler RadioButton3.Click, AddressOf Five_Asc
        If D > 6 Then
            'Здесь перход на ветку A по значению D>6
            Form1.Show()
            Me.Hide()
        End If
    End Sub
End Class
Пробуйте.
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
22.12.2013, 23:03  [ТС] 50
insite2012, Ого!, пошла пробовать, огромное спасибо!

Добавлено через 7 минут
А-а! Все работает! Супер! Попробую дальше сама, гигантское спасибо! Можно если будут вопросы еще обратиться завтра?

Добавлено через 5 минут
Хотя я так и не понимаю почему работает и не работал сравнение if, ну может позже пойму.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
22.12.2013, 23:10 51
Обращайтесь.
Я дальше попишу еще, для тренировки, что будет-выложу.
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
22.12.2013, 23:19  [ТС] 52
insite2012, я кстати упростить решила там:
Вложения
Тип файла: rar kors1.rar (247.3 Кб, 10 просмотров)
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
23.12.2013, 00:12 53
Лучший ответ Сообщение было отмечено как решение

Решение

Хорошо. Я как дойду до выбора вариантов (А, В или D), выложу код.

Добавлено через 27 минут
Я так понял, что в конце блока С все они сходятся в один блок, правильно? Тогда получится всего три формы: стартовая, форма С и последняя, в которой несколько вариантов и формирование результата. Верно? То есть, где бы в форме С мы не вышли, то все ведет в конечную форму. Я правильно понял?

Добавлено через 14 минут
Ну вот как-то так получилось.
Код Form1:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Public Class Form1
    'Активация формы
    Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        Label1.Text = "Хотите пройти небольшой тест" & vbCrLf &
            " (8 вопросов) для проверки основных знаний " & vbCrLf &
            "английского языка?"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Visible = False
        RadioButton1.Text = "Да"
        RadioButton2.Text = "Нет"
        AddHandler RadioButton1.Click, AddressOf First_2RB_Click
        AddHandler RadioButton2.Click, AddressOf First_2RB_Click
    End Sub
    
    'Обрабочик двух переключателей
    Private Sub First_2RB_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Да" Then
            RemoveHandler RadioButton1.Click, AddressOf First_2RB_Click
            RemoveHandler RadioButton2.Click, AddressOf First_2RB_Click
            'Здесь переход на ветку С"
            Form_С.Show()
            Me.Hide()
            'Стартовая форма убирается
        Else
            RemoveHandler RadioButton1.Click, AddressOf First_2RB_Click
            RemoveHandler RadioButton2.Click, AddressOf First_2RB_Click
 
            Label1.Text = "Как вы оцениваете " & vbCrLf &
                "ваш уровень знаний английского?"
            RadioButton1.Text = "Хорошо"
            RadioButton2.Text = "Средне"
            RadioButton3.Text = "Плохо"
            RadioButton1.Checked = False
            RadioButton2.Checked = False
            RadioButton3.Visible = True
            AddHandler RadioButton1.Click, AddressOf Second_3RB_Click
            AddHandler RadioButton2.Click, AddressOf Second_3RB_Click
            AddHandler RadioButton3.Click, AddressOf Second_3RB_Click
        End If
    End Sub
    'Обработчик трех переключателей
    Private Sub Second_3RB_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Хорошо" Then
            'Здесь переход на ветку А_B_D
            'Стартовая форма убирается
            Me.Hide()
            Form_A_B_D.Show()
        ElseIf CType(sender, RadioButton).Text = "Средне" Then
            'Здесь переход на ветку A_B_D
            'Стартовая форма убирается
            Me.Hide()
            Form_A_B_D.Show()
        ElseIf CType(sender, RadioButton).Text = "Плохо" Then
            'Здесь переход на ветку A_B_D
            'Стартовая форма убирается
            Me.Hide()
            Form_A_B_D.Show()
        End If
    End Sub
    'При закрытии данной формы закрывается полностью приложение
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        End
    End Sub
End Class
Код Form_C:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
Public Class Form_С
    'Переменная подсчета результата
    Private D As Integer
    'При закрытии данной формы закрывается полностью приложение
    'этот момент можно изменить
    'в зависимости от требований
    Private Sub Form_С_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        End
    End Sub
    'Активация формы
    Private Sub Form_С_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        D = 0 'Сброс переменной
        Label1.Text = "Как вы оцениваете " & vbCrLf &
                      "свой уровень английского?"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        RadioButton1.Text = "Хорошо"
        RadioButton2.Text = "Средне"
        RadioButton3.Text = "Плохо"
        AddHandler RadioButton1.Click, AddressOf First_Asc
        AddHandler RadioButton2.Click, AddressOf First_Asc
        AddHandler RadioButton3.Click, AddressOf First_Asc
    End Sub
    'Обработчик первого вопроса
    Private Sub First_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Хорошо" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "Средне" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "Плохо" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf First_Asc
        RemoveHandler RadioButton2.Click, AddressOf First_Asc
        RemoveHandler RadioButton3.Click, AddressOf First_Asc
        Label1.Text = "Какой перевод предложения верен: " & vbCrLf &
                      "Where does she work?"
        RadioButton1.Text = "Она не работает?"
        RadioButton2.Text = "Где она работает?"
        RadioButton3.Text = "Где она работала?"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Second_Asc
        AddHandler RadioButton2.Click, AddressOf Second_Asc
        AddHandler RadioButton3.Click, AddressOf Second_Asc
    End Sub
    'Обработчик второго вопроса
    Private Sub Second_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Она не работает?" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "Где она работает?" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "Где она работала?" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf Second_Asc
        RemoveHandler RadioButton2.Click, AddressOf Second_Asc
        RemoveHandler RadioButton3.Click, AddressOf Second_Asc
        Label1.Text = "Какой перевод верен: " & vbCrLf &
                      "Ее отец выиграл тысячу"
        RadioButton1.Text = "Her father won a thousand"
        RadioButton2.Text = "Her father wined thousand"
        RadioButton3.Text = "Her father win a thousand"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Third_Asc
        AddHandler RadioButton2.Click, AddressOf Third_Asc
        AddHandler RadioButton3.Click, AddressOf Third_Asc
    End Sub
    'Обработчик третьего вопроса
    Private Sub Third_Asc(ByVal sender As Object, ByVal ByVale As System.EventArgs)
        If CType(sender, RadioButton).Text = "Her father won a thousand" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "Her father wined thousand" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "Her father win a thousand" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf Third_Asc
        RemoveHandler RadioButton2.Click, AddressOf Third_Asc
        RemoveHandler RadioButton3.Click, AddressOf Third_Asc
        Label1.Text = "Выберите верный перевод для предложения: " & vbCrLf &
                    "Какой ужасный фильм!"
        RadioButton1.Text = "Film is awful!"
        RadioButton2.Text = "What an awful film!"
        RadioButton3.Text = "What's an awful film!"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Four_Asc
        AddHandler RadioButton2.Click, AddressOf Four_Asc
        AddHandler RadioButton3.Click, AddressOf Four_Asc
    End Sub
    'Обработчик четвертого вопроса
    Private Sub Four_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Film is awful!" Then
            D += 2
        ElseIf CType(sender, RadioButton).Text = "What an awful film!" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "What's an awful film!" Then
            D += 0
        End If
        RemoveHandler RadioButton1.Click, AddressOf Four_Asc
        RemoveHandler RadioButton2.Click, AddressOf Four_Asc
        RemoveHandler RadioButton3.Click, AddressOf Four_Asc
        Label1.Text = "Напишите продолжение: " & vbCrLf &
                      "Sheila isn't a good driver,she is..."
        RadioButton1.Text = "not careful enough"
        RadioButton2.Text = "careful not enough"
        RadioButton3.Text = "enough not careful"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Five_Asc
        AddHandler RadioButton2.Click, AddressOf Five_Asc
        AddHandler RadioButton3.Click, AddressOf Five_Asc
    End Sub
    'Обработчик пятого вопроса
    Private Sub Five_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "not careful enough" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "careful not enough" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "enough not careful" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf Five_Asc
        RemoveHandler RadioButton2.Click, AddressOf Five_Asc
        RemoveHandler RadioButton3.Click, AddressOf Five_Asc
        If D > 6 Then
            'Здесь перход на форму A_B_D по значению D>6
            Form_A_B_D.Show()
            Me.Hide()
            Exit Sub
        End If
        Label1.Text = "О чем этот текст?" & vbCrLf &
        "A family of mice were surprised by a big cat." & vbCrLf &
        "Father Mouse jumped and said, ""Bow-wow!"" The cat ran away." & vbCrLf &
        "What was that, Father?"" asked Baby Mouse." & vbCrLf &
        "Well, son, that's why it's important to learn a second language."
        RadioButton1.Text = "It is necessary to study English"
        RadioButton2.Text = "The cat was frightened Father Mouse"
        RadioButton3.Text = "A big cat frightened a family of mice"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Six_Asc
        AddHandler RadioButton2.Click, AddressOf Six_Asc
        AddHandler RadioButton3.Click, AddressOf Six_Asc
    End Sub
    'Обработчик шестого вопроса
    Private Sub Six_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "It is necessary to study English" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "The cat was frightened Father Mouse" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "A big cat frightened a family of mice" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf Six_Asc
        RemoveHandler RadioButton2.Click, AddressOf Six_Asc
        RemoveHandler RadioButton3.Click, AddressOf Six_Asc
        If D > 6 Then
            'Здесь переход на форму A_B_D по значению D>6
            Form_A_B_D.Show()
            Me.Hide()
            Exit Sub
        End If
        Label1.Text = "Дополните предложение: " & vbCrLf &
            "I don't know how to get ______ to you! If you come in" & vbCrLf &
            "late one more time, I will fire you. Do you understand?"
        RadioButton1.Text = "off"
        RadioButton2.Text = "through"
        RadioButton3.Text = "down"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Seven_Asc
        AddHandler RadioButton2.Click, AddressOf Seven_Asc
        AddHandler RadioButton3.Click, AddressOf Seven_Asc
    End Sub
    'Обработчик седьмого вопроса
    Private Sub Seven_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "off" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "through" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "down" Then
            D += 2
        End If
        RemoveHandler RadioButton1.Click, AddressOf Seven_Asc
        RemoveHandler RadioButton2.Click, AddressOf Seven_Asc
        RemoveHandler RadioButton3.Click, AddressOf Seven_Asc
        If D > 6 Then
            'Здесь переход на форму A_B_D по значению D>6
            Form_A_B_D.Show()
            Me.Hide()
            Exit Sub
        End If
        Label1.Text = "Какой заголовок подходит к этому текту лучше?" & vbCrLf &
        "An eagle was sitting on a tree resting, doing nothing. A small rabbit saw the eagle and asked him, " & vbCrLf &
        "Can I also sit like you and do nothing?" & vbCrLf &
        "The eagle answered, ""Sure , why not.""" & vbCrLf &
        "So the rabbit sat on the ground below the eagle and rested." & vbCrLf &
        "All of a sudden, a fox appeared, jumped on the rabbit and ate it." & vbCrLf &
        "Moral of the story: To be sitting and doing nothing, you must be sitting very, very high up."
        RadioButton1.Text = "Some advice"
        RadioButton2.Text = "The clever eagle"
        RadioButton3.Text = "To have a rest you should be the best"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Eight_Asc
        AddHandler RadioButton2.Click, AddressOf Eight_Asc
        AddHandler RadioButton3.Click, AddressOf Eight_Asc
    End Sub
    'Обработчик восьмого вопроса
    Private Sub Eight_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Some advice" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "The clever eagle" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "To have a rest you should be the best" Then
            D += 0
        End If
        RemoveHandler RadioButton1.Click, AddressOf Eight_Asc
        RemoveHandler RadioButton2.Click, AddressOf Eight_Asc
        RemoveHandler RadioButton3.Click, AddressOf Eight_Asc
        If D > 6 Then
            'Здесь переход на форму A_B_D по значению D>6
            Form_A_B_D.Show()
            Me.Hide()
            Exit Sub
        End If
        Label1.Text = "Дополните предложение:" & vbCrLf &
            "Do you remember me? - Of course, I do." & vbCrLf &
            "We ..... several times before."
        RadioButton1.Text = "meet"
        RadioButton2.Text = "met"
        RadioButton3.Text = "have met"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        AddHandler RadioButton1.Click, AddressOf Nine_Asc
        AddHandler RadioButton2.Click, AddressOf Nine_Asc
        AddHandler RadioButton3.Click, AddressOf Nine_Asc
    End Sub
    'Обработчик девятого вопроса
    Private Sub Nine_Asc(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "meet" Then
            D += 2
        ElseIf CType(sender, RadioButton).Text = "met" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "have met" Then
            D += 0
        End If
        RemoveHandler RadioButton1.Click, AddressOf Nine_Asc
        RemoveHandler RadioButton2.Click, AddressOf Nine_Asc
        RemoveHandler RadioButton3.Click, AddressOf Nine_Asc
        'Безусловный переход на форму A_B_D
        Form_A_B_D.Show()
        Me.Hide()
        Exit Sub
    End Sub
End Class
Код Form_A_B_D:
VB.NET
1
2
3
4
5
6
Public Class Form_A_B_D
    'При закрытии данной формы закрывается полностью приложение
    Private Sub Form_A_B_D_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        End
    End Sub
End Class
Пробуйте.
Вам осталось в форме A_B_D все прописать.
3
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
23.12.2013, 00:21  [ТС] 54
insite2012, ок, уже завтра попробую, спасибо!
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
23.12.2013, 00:43 55
И да, если значение переменной D необходимо для дальнейшей работы, можете вывести его наружу через свойство. В конец формы С допишите такой код:
VB.NET
1
2
3
4
5
6
'Свойство для вывода значения переменной D
    Public ReadOnly Property D_Value() As Integer
        Get
            Return D
        End Get
    End Property
Теперь, к примеру, из формы A_B_D вы можете обратиться к этому свойству так: Form_C.D_Value=.....
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
23.12.2013, 00:52  [ТС] 56
insite2012, вроде поняла, сделаю, спасибо
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
23.12.2013, 10:24 57
Хорошо, делайте.
В принципе, все можно и в одной форме сделать, только код длинный будет. И нудный, все повторяется. Я вот накидал начало, дальше, думаю, само продолжите. Там блоки полностью идентичные, только данные меняются и имена обработчиков.
Вот таким вот образом можете сделать.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Public Class Form1
    'Переменная результата баллов
    Private D As Integer
 
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Label1.Text = "Вопрос_1"
        RadioButton1.Text = "Вариант_Да"
        RadioButton2.Text = "Вариант_Нет"
        RadioButton3.Text = ""
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        RadioButton3.Visible = False
        AddHandler RadioButton1.Click, AddressOf YES_NO
        AddHandler RadioButton2.Click, AddressOf YES_NO
    End Sub
    'Обработчик  вопроса выбора ДА-НЕТ
    Private Sub YES_NO(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Вариант_Нет" Then 'Ответ НЕТ, переход к последнему обработчику
            RemoveHandler RadioButton1.Click, AddressOf YES_NO 'по вариантам
            RemoveHandler RadioButton2.Click, AddressOf YES_NO
            'Тут стоит смена данных на форме
            'и подключение последнего обработчика A_B_D
        ElseIf CType(sender, RadioButton).Text = "Вариант_Да" Then 'Ответ ДА, переход к первому вопросу
            RemoveHandler RadioButton1.Click, AddressOf YES_NO    'в блоке С
            RemoveHandler RadioButton2.Click, AddressOf YES_NO
            Label1.Text = "Вопрос_С1"
            RadioButton1.Text = "Вариант_С1-1"
            RadioButton2.Text = "Вариант_С1-2"
            RadioButton3.Text = "Вариант_С1-3"
            RadioButton1.Checked = False
            RadioButton2.Checked = False
            RadioButton3.Checked = False
            RadioButton3.Visible = True
            AddHandler RadioButton1.Click, AddressOf C1
            AddHandler RadioButton2.Click, AddressOf C1
            AddHandler RadioButton3.Click, AddressOf C1
        End If
    End Sub
    'Обработчик  вопроса С1
    Private Sub C1(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Вариант_С1-1" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "Вариант_С1-2" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "Вариант_С1-3" Then
            D += 2
        End If
        'Отключение обработчиков вопроса
        RemoveHandler RadioButton1.Click, AddressOf C1
        RemoveHandler RadioButton2.Click, AddressOf C1
        RemoveHandler RadioButton3.Click, AddressOf C1
        'Замена данных на форме
        Label1.Text = "Вопрос_С2"
        RadioButton1.Text = "Вариант_С2-1"
        RadioButton2.Text = "Вариант_С2-2"
        RadioButton3.Text = "Вариант_С2-3"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        'Подключение обработчиков сл. вопроса
        AddHandler RadioButton1.Click, AddressOf C2
        AddHandler RadioButton2.Click, AddressOf C2
        AddHandler RadioButton3.Click, AddressOf C2
    End Sub
    'Обработчик вопроса С2
    Private Sub C2(ByVal sender As Object, ByVal e As System.EventArgs)
        If CType(sender, RadioButton).Text = "Вариант_С2-1" Then
            D += 1
        ElseIf CType(sender, RadioButton).Text = "Вариант_С2-2" Then
            D += 0
        ElseIf CType(sender, RadioButton).Text = "Вариант_С2-3" Then
            D += 2
        End If
        'Отключение обработчиков вопроса
        RemoveHandler RadioButton1.Click, AddressOf C2
        RemoveHandler RadioButton2.Click, AddressOf C2
        RemoveHandler RadioButton3.Click, AddressOf C2
        'Замена данных на форме
        Label1.Text = "Вопрос_С3"
        RadioButton1.Text = "Вариант_С3-1"
        RadioButton2.Text = "Вариант_С3-2"
        RadioButton3.Text = "Вариант_С3-3"
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        'Подключение обработчиков сл. вопроса
        AddHandler RadioButton1.Click, AddressOf C3
        AddHandler RadioButton2.Click, AddressOf C3
        AddHandler RadioButton3.Click, AddressOf C3
    End Sub
    'Обработчик вопроса С3
    Private Sub C3(ByVal sender As Object, ByVal e As System.EventArgs)
 
    End Sub
    'Обрабочик вариантов по выходу из вопросов блока С
    Private Sub A_B_D(ByVal sender As Object, ByVal e As System.EventArgs)
 
    End Sub
 
End Class
Удачи.
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
24.12.2013, 17:02  [ТС] 58
insite2012, у меня что-то все перекосилось и работает странно
помогите!
0
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 48
24.12.2013, 17:04  [ТС] 59
вот программа, первая форма не открывается и переходят сразу ко 2 вопросу
Вложения
Тип файла: rar WindowsApplication2.rar (977.5 Кб, 11 просмотров)
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
24.12.2013, 17:32 60
Так, Вы уточните Вашу методичку, а я Вам точно по ней сделаю. То есть четко обозначьте, при каких вариантах куда переход, и какие переменные будут (A, B,C,D...) Как сделаете четкую методичку-выложите, будет Вам программа.
1
24.12.2013, 17:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2013, 17:32
Помогаю со студенческими работами здесь

Создание консольной задачи с решением и вариантами ответа
Добрый день,помогите пожалуйста с решением одной из задач в visual prolog 7.4: Еловые и сосновые...

VBA Excel: окно вывода с вариантами ответа
Нужно создать в экселе макросах окно вывода с вариантами ответа на вопрос (например как часто Вы...

Занесение в БД поля (с несколькими вариантами ответа) из формы
здравствуйте! необходимо из формы(поле с выбором нескольких вариантов ответа, заранее не известно...

Тестирование с несколькими вариантами ответа - нужен пример
Приветствую друзья программисты, вопрос такой: Задали мне на работе задание написать програмку для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru