Для представления обучаемому результатов тестирования в виде оценок по пятибалльной шкале следует добавить к проекту еще четыре формы, пример одной из которых приведен на рис. 5.
Рис. 5 Дизайн формы с результатом тестирования
Основные свойства форм с результатми тестирования приведены табл. 3.
Таблица 3. Свойства и их значения для элементов управления форм результатов тестирования
№ п/п | Имя элемента (значение свойства Name) | Назначение | Свойство | Значение |
Форма с оценкой «5»
Форма с оценкой «4»
Форма с оценкой «3»
Форма с оценкой «2»
Переменные и программный код приложения
Для объявления глобальных переменных, доступных всем элементам приложения и используемых в тексте программного кода, необходимо к проекту добавить модуль формы, как было показано ранее.
Программный код обработки событий в приложении «АРМ преподавателя» использует следующие переменные памяти:
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.
Рис. 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
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
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
If txtTexo2.Text = "" Or txtTexo2.Text = " " Or txtTexo2.Text = " " Or 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
txtFam.SetFocus
GoTo mksub
End If
If (optVvod.Value = False) And (netotv = 0) Then
sv = sv + 1 'счетчик вопросов
no = "1" 'нажата кнопка 1
If npo = no Then
sb = sb + 1
txtVvod.Text = "Да!"
txtVvod.Refresh
For i = 1 To 30000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
Else
txtVvod.Text = "Heт!"
txtVvod.Refresh
For i = 1 To 30000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
End If
Else
txtVvod.Text = txtVvod.Text + "0"
txtVvod.Refresh
GoTo mksub
End If
lblPodskazka.Caption = " "
lblPodskazka.Refresh
Doit
mksub: End Sub
Private Sub cmd2_Click()
If txtFam.Enabled = True Then
cmd2.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
txtFam.SetFocus
GoTo mksub
End If
If (optVvod.Value = False) And (netotv = 0) Then
sv = sv + 1 'счетчик вопросов
no = "2" 'нажата кнопка 2
If npo = no Then
sb = sb + 1
txtVvod.Text = "Да!"
txtVvod.Refresh
For i = l To 30000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
Else
txtVvod.Text = "Heт!"
txtVvod.Refresh
For i = l To 30000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
End If
Else
txtVvod.Text = txtVvod.Text + "0"
txtVvod.Refresh
GoTo mksub
End If
lblPodskazka.Caption = " "
lblPodskazka.Refresh
Doit
mksub: End Sub
Private Sub cmd3_Click()
If txtFam.Enabled = True Then
cmd3.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
txtFam.SetFocus
GoTo mksub
End If
If (optVvod.Value = False) And (netotv = 0) Then
sv = sv + 1 'счетчик вопросов
no = "3" 'нажата кнопка 3
If npo = no Then
sb = sb + 1
txtVvod.Text = "Да!"
txtVvod.Refresh
For i = l To 30000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
Else
txtVvod.Text = "Heт!"
txtVvod.Refresh
For i = l To 30000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
End If
Else
txtVvod.Text = txtVvod.Text + "0"
txtVvod.Refresh
GoTo mksub
End If
lblPodskazka.Caption = " "
lblPodskazka.Refresh
Doit
mksub: End Sub
Private Sub cmd4_Click()
If txtFam.Enabled = True Then
cmd4.Enabled = False 'запрет cmd, пока не введена фамилия
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
txtFam.SetFocus
GoTo mksub
End If
If (optVvod.Value = False) And (netotv = 0) Then
sv = sv + 1 'счетчик вопросов
no = "4" 'нажата кнопка 4
If npo = no Then
sb = sb + 1
txtVvod.Text = "Да!"
txtVvod.Refresh
For i = l To 3000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
Else
txtVvod.Text = "Heт!"
txtVvod.Refresh
For i = l To 3000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
End If
Else
txtVvod.Text = txtVvod.Text + "0"
txtVvod.Refresh
GoTo mksub
End If
lblPodskazka.Caption = " "
lblPodskazka.Refresh
Doit
End If
mksub: End Sub
Private Sub cmd5_Click()
If txtFam.Enabled = True Then
cmd5.Enabled = False 'запрет cmd, пока не введена фамилия
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
txtFam.SetFocus
GoTo mksub
End If
If (optVvod.Value = False) And (netotv = 0) Then
sv = sv + 1 'счетчик вопросов
no = "5" 'нажата кнопка 5
If npo = no Then
sb = sb + 1
txtVvod.Text = "Да!"
txtVvod.Refresh
For i = l To 3000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
Else
txtVvod.Text = "Heт!"
txtVvod.Refresh
For i = l To 3000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
End If
Else
txtVvod.Text = txtVvod.Text + "0"
txtVvod.Refresh
GoTo mksub
End If
lblPodskazka.Caption = " "
lblPodskazka.Refresh
Doit
End If
mksub: End Sub
Private Sub Form_Load()
i = 0
txtVvod.Enabled = False
optVvod.Enabled = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
End Sub
Private Sub mnuHelpAbout_Click()
frmHelpAbout.Show 1
End Sub
Private Sub mnuHelpInst_Click()
frmHelpInst.Show 1
End Sub
Private Sub optVvod_Click()
If txtFam.Enabled = True Then
cmdl.Enabled = False 'запрет cmd, пока не введена фамилия
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
txtFam.SetFocus
GoTo mksub
End If
sv = sv + 1 'счетчик вопросов
If npo = txtVvod.Text Then
sb = sb + 1
txtVvod.Техt = "Да!"
txtVvod.Refresh
For i = 1 To 3000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
optVvod.Value = False
Else
txtVvod.Text = "Нет!"
txtVvod.Refresh
For i = 1 To 3000000
Next i
txtVvod.Text = " "
txtVvod.Refresh
optVvod.Value = False
End If
lblPodskazka.Caption = " "
lblPodskazka.Refresh
txtVvod.Enabled = False
optVvod.Enabled = False
Doit
mksub: End Sub
Private Sub Timer1_Timer()
If lblNv2.Caption <> " " Then
t = t - 1
lblTime.Caption = Str(t)
End If
If t = 1 Then
t = 0
lblTime.Caption = Str(t)
MsgBox ("Извините, время вышло!")
Doit
End If
If t = 0 Then t = 600
End Sub
Private Sub txtFam_Click()
Fam = txtFam.Text 'фамилия
txtFam.Enabled = False 'недоступность поля текста
t = 600 'установка времени
sb = 0 'счетчик баллов
sv = 0 'счетчик вопросов
npo = "0"
cmd1.Enabled = True 'разрешение cmd — введена фамилия
cmd2.Enabled = True
cmd3.Enabled = True
cmd4.Enabled = True
cmd5.Enabled = True
Doit ' вызов общей процедуры
End Sub
Private Sub txtFam_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Fam = txtFam.Text 'фамилия
txtFam.Enabled = False 'недоступность поля текста
t = 600 'установка времени
sb = 0 'счетчик баллов
sv = 0 'счетчик вопросов npo = "0"
cmd1.Enabled = True 'разрешение cmd — введена фамилия
cmd2.Enabled = True
cmd3.Enabled = True
cmd4.Enabled = True
cmd5.Enabled = True
Doit 'вызов общей процедуры
End If
End Sub
Private Sub txtNlet_Click ()
txtNlet.Enabled = False 'недоступность поля текста
If txtFam.Enabled = False Then
txtFam.Enabled = True
txtFam.SetFocus
End If
End Sub
Private Sub txtNlet_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
txtNlet.Enabled = False 'недоступность поля текста
End If
If txtFam.Enabled = False Then
txtFam.Enabled = True
txtFam.SetFocus
End If
End Sub
Дата: 2019-04-23, просмотров: 216.