Дизайн форм с результатами тестирования
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Для представления обучаемому результатов тестирования в виде оценок по пятибалльной шкале следует добавить к проекту еще четыре формы, пример одной из которых приведен на рис. 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

 

Переменные и программный код приложения

Для объявления глобальных переменных, доступных всем элементам приложения и используемых в тексте программного кода, необходимо к проекту добавить модуль формы, как было показано ранее.

Программный код обработки событий в приложении «АРМ преподавателя» использует следующие переменные памяти:

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.