УМК_ПрОА_4
.pdf
txtNv1.Refresh
Open "c:\let\" + txtNlet.Text + ".txt" For Random As #1 Len = 2048 If nvv = 0 Then
MsgBox ("Где номер вопроса?")
GoTo m1
End If
Get #1, nvv, z txtTexv1.Text = z.v txtTexv1.Refresh txtTexo1.Text = z.o txtTexo1.Refresh txtNpo1.Text = z.n txtNpo1.Refresh txtNv1.Text = txtNv2.Text txtNv1.Refresh
txtTexv2.Text = "" 'очистка полей записи txtTexv2.Refresh
txtTexo2.Text = "" txtTexo2.Refresh txtNpo2.Text = "" txtNpo2.Refresh txtNv2.Text = "" txtNv2.Refresh txtTexv1.SetFocus m1: Close 1
z.v = "" z.o = "" z.n = 0
optR.Value = False 'сброс флажка txtTexv2.BackColor = &H80000005 txtTexo2.BackColor = &H80000005 txtNpo2.BackColor = &H80000005
m2: End Sub
Private Sub optZ_Click()
nvz = Val(txtNv1.Text) txtTexv1.BackColor = QBColor(15) txtTexo1.BackColor = QBColor(15) txtNpo1.BackColor = QBColor(15) End Sub
Private Sub txtNlet_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then txtNv1.Refresh txtNv1.SetFocus
End If
End Sub
Private Sub txtNvl_DblClick()
txtTexv1.Text = "" txtTexv1.Refresh txtTexo1.Text = "" txtTexo1.Refresh
190
txtNpo1.Text = "" txtNpo1.Refresh txtTexv1.SetFocus End Sub
Private Sub txtNv2_DblClick()
txtTexv2.Text = "" txtTexv2.Refresh txtTexo2.Text = "" txtTexo2.Refresh txtNpo2.Text = "" txtNpo2.Refresh End Sub
Коды для Modulel
(General) (Declarations)
Type vop
v As String o As String n As String End Type Dim z As vop
2.1.3 Рекомендации по тестированию работы приложения
При тестировании экранной формы рекомендуется точно следовать порядку работы пользователя, изложенного в инструкции к приложению. В целях тестирования приложения при создании файла контрольной работы рекомендуется вводить записи следующего содержания:
№ записи |
|
Содержание записи |
|
|
Вопрос |
Ответы |
№ правильного ответа |
1 |
Вопрос 1 |
Ответ 1 |
2 |
|
|
Ответ 2 |
|
|
|
Ответ 3 |
|
|
|
|
|
2 |
Вопрос 2 |
Ответ 1 |
1 |
|
|
Ответ 2 |
|
|
|
Ответ 3 |
|
|
|
|
|
3 |
Вопрос 3 |
Ответ 1 |
3 |
|
|
Ответ 2 |
|
|
|
Ответ 3 |
|
|
|
|
|
|
|
и т.д. |
|
19 |
Вопрос 19 |
Ответ 1 |
1 |
|
|
Ответ 2 |
|
|
|
Ответ 3 |
|
|
|
|
|
ВНИМАНИЕ! При вводе № правильного ответ не допускается оставлять пробел перед введенным значением, т.е. следует начинать ввод с первой позиции текстового поля.
191
2.2 Создание приложения «АРМ обучаемого»
2.2.1 Последовательность этапов разработки приложения
1.Запустить MS Visual Studio 6.0 -> MS Visual Basic 6.0
2.Выбрать вид нового файла Standart.exe
3.На рабочем столе появилась пустая форма.
4.Увеличить ее размер до визуально-приятного.
5.Поместить на форму элементы управления в соответствии с рис. 4
6.Присвоить значения свойств элементам формы в соответствии с табл. 2.
7.В окно редактора кода скопировать программный код в соответствии с листингом 2.
8.Создать 4 экранные формы с результатом тестирования (оценки 2 – 5).
2.2.1.1 Дизайн стартовой формы
Стартовая форма приложения «АРМ обучаемого» условно состоит из трех
частей (рис. 4):
1.В верхней части экранной формы пользователь вводит имя контрольной работы, содержащей тестовые вопросы, и собственную фамилию.
2.В средней части экранной формы находятся поля вопроса и вариантов ответов. Порядковый номер очередного вопроса будет отображаться в поле,
расположенном слева от поля вопроса.
3.В нижней части экранной формы расположены два табло, заключенные в рамки:
табло для вывода времени (в секундах), которое осталось для ответа на поставленные вопросы;
табло для ввода номера правильного ответа, состоящее из блока цифровых кнопок.
Текстовое поле и переключатель «Ввод» предназначены для ввода текстового ответа на вопрос для случая, когда в вопросе отсутствуют варианты ответов.
Основные свойства стартовой формы (Form1) приведены табл. 2.
Рекомендуется начинать заполнять форму с установки фреймов (рамок).
192
Имена элементов управления на форме начинаются с сокращенного названия
элемента, за которым следует смысловая мнемоническая часть.
Таблица 2. Свойства и их значения для элементов управления стартовой формы приложения «АРМ обучаемого»
№ п/п |
Имя элемента (значение |
|
|
Назначение |
|
|
|
Свойство |
Значение |
||
|
свойства Name) |
|
|
|
|
|
|
|
|
|
|
|
|
|
Стартовая форма |
|
|
|
|
||||
1 |
Form 1 |
|
|
|
|
|
|
|
|
Caption |
АРМ обучаемого |
|
|
|
|
Метки Label |
|
|
|
|
|
||
1 |
lblNlet |
надпись "Имя контрольной |
|
|
Caption |
Контрольная |
|||||
|
|
работы"; |
|
|
|
|
|
|
|
работа |
|
2 |
lblFam |
надпись "Фамилия"; |
|
|
|
Caption |
Фамилия |
||||
3 |
lblV2 |
надпись "Вопрос"; |
|
|
|
|
Caption |
Вопрос: |
|||
4 |
lblNv2 |
текущий номер вопроса |
|
|
|
|
|
||||
5 |
lblO2 |
надпись «Варианты ответов». |
|
|
Caption |
Варианты ответов |
|||||
|
lblTime |
электронный циферблат |
|
|
|
Caption |
600 |
||||
|
lblNameTime |
надпись "Время" |
|
|
|
|
Caption |
Время |
|||
|
lblPodskazka |
поле подсказки |
|
|
|
|
|
|
|
||
|
|
|
Текстовые поля TeхtBoх |
|
|
||||||
6 |
txtNlet |
поле для ввода имени файла с |
|
TabIndex |
0 |
||||||
|
|
вопросами |
контрольной |
работы |
|
|
|
||||
|
|
(составляющая Nlet - «номер |
|
|
|
||||||
|
|
летучки»); |
|
|
|
|
|
|
|
|
|
7 |
txtFam |
поле для ввода номера вопроса, |
|
TabIndex |
1 |
||||||
|
|
который должен быть записан в |
|
|
|
||||||
|
|
файл |
вопросов |
контрольной |
|
|
|
||||
|
|
работы |
(вызван |
|
на |
|
|
|
|||
|
|
редактирование, исправление); |
|
|
|
||||||
8 |
txtTexv2 |
поле для записи вопроса (поле |
|
MultiLine |
True |
||||||
|
|
для |
просмотра вызванного |
на |
|
|
|
||||
|
|
|
ScrollBars |
2 — Vertical |
|||||||
|
|
редактирование вопроса); |
|
|
|
||||||
|
|
|
|
|
Enabled |
False |
|||||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
TabIndex |
- |
9 |
txtTexo2 |
поле |
для |
записи возможных |
|
MultiLine |
True |
||||
|
|
вариантов |
|
ответов |
|
на |
|
ScrollBars |
2 — Vertical |
||
|
|
поставленный вопрос (поле для |
|
||||||||
|
|
|
Enabled |
False |
|||||||
|
|
просмотра |
вызванных |
|
на |
|
|||||
|
|
редактирование |
|
вариантов |
|
TabIndex |
- |
||||
|
|
ответов); |
|
|
|
|
|
|
|
|
|
10 |
txtVvod |
поле |
для |
записи |
номера |
|
Enabled |
True |
|||
|
|
правильного |
|
ответа |
|
из |
|
|
|
||
|
|
перечисленных |
|
в |
поле |
|
|
|
|||
|
|
|
|
TabIndex |
3 |
||||||
|
|
txtTexo1 (поле для просмотра |
|
||||||||
|
|
правильного ответа) |
|
|
|
|
|
||||
|
|
Переключатели OptionButton |
|
|
|||||||
11 |
optVvod |
переключатель, |
служащий |
для |
|
Caption |
Ввод |
||||
|
|
ввода правильного ответа |
|
|
|
TabIndex |
4 |
||||
|
|
Командные кнопки CommandButton |
|
||||||||
13 |
cmd1 – cmd5 |
цифровые |
кнопки |
для указания |
|
Caption |
1 |
||||
|
|
номера правильного ответа; |
|
|
TabIndex |
2 |
|||||
|
|
|
|
Таймер |
|
|
|
|
|
||
14 |
Timer1 |
для |
отсчета |
времени, |
|
Interval |
1000 |
||||
|
|
оставшегося |
на |
выполнение |
|
|
|
||||
|
|
контрольной работы (Timer не |
|
|
|
||||||
|
|
виден на форме во время |
|
|
|
||||||
|
|
выполнения проекта). |
|
|
|
|
|
||||
193
Form1 |
Frame1 |
txtFam |
|
|
|
lblNlet |
txtNlet |
|
|
|
|
|
|
|
|
lblFam |
Фамилия |
|
|
|
|
Имя контрольной работы |
|
lblV2 |
|
|
|
|
|
||
|
|
|
|
|
|
txtTexv2 |
|
|
Вопрос № |
|
|
|
|
|
|
lblNv2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lblO2 |
|
|
|
|
|
|
|
|
Варианты |
|
|
|
|
|
txtTexo2 |
|
ответов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Timer1 |
|
|
|
|
|
|
|
lblTime |
|
|
|
|
|
|
txtVvod |
|
|
|
|
|
|
|
|
lblNameTime |
600 |
1 |
2 |
3 |
4 |
5 |
optVvod |
|
|
|
|
|
|
||
|
Время |
|
|
|
|
|
Ввод |
Frame 2 |
lblPodskazk |
|
|
|
cmd1 ... cmd5 |
|
|
|
|
|
Frame 3 |
|
|||
Рис. 4 Стартова форма приложения «АРМ обучаемого»
194
2.2.1.2 Дизайн форм с результатами тестирования
Для представления обучаемому результатов тестирования в виде оценок по пятибалльной шкале следует добавить к проекту еще четыре формы, пример одной из которых приведен на рис. 5.
Ваша оценка: 5
Рис. 5 Дизайн формы с результатом тестирования
Основные свойства форм с результатми тестирования приведены табл. 3.
Таблица 3. Свойства и их значения для элементов управления форм результатов тестирования
№ п/п |
Имя элемента (значение |
Назначение |
Свойство |
Значение |
|
свойства Name) |
|
|
|
|
|
Форма с оценкой «5» |
|
|
|
frmMark5 |
форма с результатом 5 баллов |
Caption |
Оценка |
|
Label1 |
надпись «Ваша оценка» |
Caption |
Ваша оценка |
|
|
|||
|
Label2 |
надпись «5» |
Caption |
5 |
|
|
Форма с оценкой «4» |
|
|
|
frmMark4 |
форма с результатом 4 балла |
Caption |
Оценка |
|
Label1 |
надпись «Ваша оценка» |
Caption |
Ваша оценка |
|
|
|||
|
Label2 |
надпись «4» |
Caption |
4 |
|
|
Форма с оценкой «3» |
|
|
|
frmMark3 |
форма с результатом 3 балла |
Caption |
Оценка |
|
Label1 |
надпись «Ваша оценка» |
Caption |
Ваша оценка |
|
|
|||
|
Label2 |
надпись «3» |
Caption |
3 |
|
|
Форма с оценкой «2» |
|
|
|
frmMark2 |
форма с результатом 2 балла |
Caption |
Оценка |
|
Label1 |
надпись «Ваша оценка» |
Caption |
Ваша оценка |
|
|
|||
|
Label2 |
надпись «2» |
Caption |
2 |
2.2.2Переменные и программный код приложения
Для объявления глобальных переменных, доступных всем элементам
приложения и используемых в тексте программного кода, необходимо к
195
проекту добавить модуль формы, как было показано ранее.
Программный код обработки событий в приложении «АРМ преподавателя» использует следующие переменные памяти:
1.z — запись типа vop, состоящая из трех полей, в которых размещены символьные строки для хранения:
v — вопроса,
о — ответов,
n — правильного ответа;
2.ng% — переменная, в которой хранится номер вопроса (записи),
выбираемый случайным образом из очередной группы вопросов;
3.sb — счетчик баллов (правильных ответов);
4.sv — счетчик количества заданных вопросов;
5.no — номер (цифра) одного из вариантов ответов, который выбирает обучаемый при ответе на поставленный вопрос;
6.nро — номер правильного ответа (строка правильного ответа),
записанного в файле с вопросами;
7.Fam — переменная для хранения фамилии обучаемого;
8.t — переменная для хранения времени (в секундах);
9.netotv — флаг состояния переключателя «Ввод».
Вприложении используется общая процедура Doit. Для создания общей процедуры в меню команд VB 6.0 выбрать команду Tools, а в раскрывшемся затем списке — команду Add Procedure. В поле Name диалогового окна Add Procedure (рис. 6) записать имя процедуры, нажать кнопку ОК. Общая процедура с указанным именем будет добавлена к кодам проекта.
Тексты кодов приложения представлены в листинге 2.
196
Рис. 6. Окно добавления общей процедуры
Листинг 2
Коды для Form1
(General) -> (Declarations)
Public sb As Integer, sv As Integer
Public no As String, npo As String
Public Fam As String, t As Integer
Public netotv As Integer
Public Sub Doit()
Dim z As vop
If cmd1.Enabled = False Or cmd2.Enabled = False Or cmd3.Enabled = False Or
cmd4.Enabled = False Then MsgBox ("Введите фамилию!") txtFam.SetFocus
GoTo mksub 'запрет вызова вопросов, пока не введена фамилия
End If
If t = 0 Then txtTexv2.Text = " " txtTexv2.Refresh txtTexo2.Text = " " txtTexo2.Refresh GoTo m6
End If
If txtNlet.Text = "" Or txtNlet.Text = " " Or txtNlet.Text = " " Or txtNlet.Text = " " Then
MsgBox ("Введите имя работы!") txtNlet.Enabled = True txtNlet.SetFocus
GoTo mksub
End If
If txtFam.Text = "" Or txtFam.Text = " " Or txtFam.Text = " " Or txtFam.Text
= " |
" Or txtFam.Text = " |
" Or txtFam.Text = " |
" Or txtFam.Text = " |
" |
Or |
txtFam.Text = " |
" Or txtFam.Text = " |
" Or txtFam.Text |
= " |
" Or txtFam.Text = " |
" Then |
|
|
|
MsgBox ("Введите фамилию!") txtFam.Enabled = True txtFam.SetFocus
197
GoTo mksub
End If
txtTexv2.Text = " " txtTexv2.Refresh txtTexo2.Text = " " txtTexo2.Refresh
If sv = 0 Then GoTo m1
If sv = 1 Then GoTo m2
If sv = 2 Then GoTo m3
If sv = 3 Then GoTo m4
If sv = 4 Then GoTo m5
If sv > 4 Then GoTo m6
m1: lblNv2.Caption = Str(sv + 1) 'номер вопроса
Randomize Timer
ng% = Rnd(1) * 2 + 1 'номер из первой группы записей 1-3 GoSub 100
GoTo mk
m2: lblNv2.Caption = Str(sv + 1) Randomize Timer
ng% = Rnd(1) * 2 + 4 'номер из второй группы записей 4—6 GoSub 100
GoTo mk
m3: lblNv2.Caption = Str(sv + 1) Randomize Timer
ng% = Rnd(1) * 3 + 7 'номер из третьей группы записей 7—10 GoSub 100
GoTo mk
m4: lblNv2.Caption = Str(sv + 1) Randomize Timer
ng% = Rnd(1) * 3 + 11 'номер из четвертой группы записей 11-14 GoSub 100
GoTo mk
m5: lblNv2.Caption = Str(sv + 1) Randomize Timer
ng% = Rnd(1) * 4 + 15 'номер из пятой группы записей 15—19 GoSub 100
GoTo mk
m6: If sb <= 2 Then sb = 2 'коррекция двойки
If sb = 2 Then t = 0
lblNv2.Caption = " " frmMark2.Show 1
End If
If sb = 3 Then t = 0
lblNv2.Caption = " " frmMark3.Show 1
End If
If sb = 4 Then t = 0
lblNv2.Caption = " " frmMark4.Show 1
End If
If sb = 5 Then
198
t = 0 |
|
|
|
|
|
|
lblNv2.Caption = " " |
|
|
|
|
||
frmMark5.Show 1 |
|
|
|
|
|
|
End If |
|
|
|
|
|
|
txtFam.Enabled = True |
|
|
|
|
||
txtFam.Text = " " |
|
|
|
|
|
|
txtFam.SetFocus |
|
|
|
|
|
|
GoTo mksub |
|
|
|
|
|
|
End |
|
|
|
|
|
|
100 Open "c:\let\" + txtNlet.Text + ".txt" For Random As #1 Len = 2048 |
|
|
||||
Get #1, ng%, z |
|
|
|
|
|
|
txtTexv2.Text = z.v |
|
|
|
|
|
|
txtTexv2.Refresh |
|
|
|
|
|
|
txtTexo2.Text = z.о |
|
|
|
|
|
|
txtTexo2.Refresh |
|
|
|
|
|
|
npo = z.n |
|
|
|
|
|
|
Close 1 |
|
|
|
" Or txtTexo2.Text = " |
" |
Or |
If txtTexo2.Text = "" Or txtTexo2.Text = " |
" |
|||||
txtTexo2.Text = " |
" |
Or txtTexo2.Text = " |
Or txtTexo2.Text = " |
" |
Or |
|
txtTexo2.Text = " |
|
" Or txtTexo2.Text = " |
|
" Or txtTexo2.Text = " |
|
" |
Or txtTexo2.Text = " |
|
" Or txtTexo2.Text = " |
" Then |
|
|
|
netotv = l |
|
|
|
|
|
|
lblPodskazka.Caption = "Введите ответ" lblPodskazka.Refresh
txtVvod.Text = "" txtVvod.Refresh txtVvod.Enabled = True optVvod.Enabled = True GoTo mksub
Else netotv = 0
lblPodskazka.Caption = "Нажмите кнопку с номером ответа" lblPodskazka.Refresh
End If
Return
mk: z.v = " " z.о = " " z.n = " "
mksub: End Sub
Private Sub cmd1_Click()
If txtFam.Enabled = True Then
cmd1.Enabled = False 'запрет cmd, пока не введена фамилия
End If
If txtNlet.Text = "" Or txtNlet.Text = " " Or txtNlet.Text = " " Or txtNlet.Text = " " Then
MsgBox ("Введите имя работы!") txtNlet.Enabled = True txtNlet.SetFocus
GoTo mksub
End If
If txtFam.Text = " " Then MsgBox ("Введите фамилию!") txtFam.Enabled = True
199
