Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Запоминание результатов нескольких пользователей

Организация данных:

· для ответов каждого пользователя отводим свой столбец.

· в верхнюю ячейку столбца помещаем имя пользователя

· в первом столбце помещаем эталонные ответы или ключи

Рекомендуемая система объектных переменных:

· mesto_et – для ссылки на первую ячейку эталона

· mesto2 – для записи и последующей обработки ответов,

· mesto20 – для фиксации первой ячейки столбца, дает возможность при обработке вернуться в эту ячейку.

  mesto2  

поиск пустого столбца

(при инициализации)

 

mesto20

(при инициализации)

           

 

   
    A B C D

E

   
mesto_et 1 Эталон Иванов Петров Сидоров

 

 

смещение mesto2

при записи

ответов и

возврат перед

обработкой

2 2 2 2 2

 

 
3 3 2 3 3

 

 
  4 1 1 2 1

 

 
         

 

 
           

 

   
                     

Из схемы видно, что при записи результатов нескольких пользователей основная задача – найти первый свободный столбец для очередного пользователя.

Решение:

· ищем пустую ячейку с помощью скользящей объектной переменной;

· используем цикл While (пока длина текста в ячейке больше нуля).

Программные тексты:

Стартовая установка значений глобальной переменной:

Set mesto2 = <лист>.Range(“B2”) столбец первого пользователя
While Len(mesto2) > 0 пока текущий столбец занят
Set mesto2 = mesto2(1, 2) идем по первой строке
WEnd mesto2  стоит на пустой ячейке
Set mesto20 = mesto2 дублируем найденную ячейку в mesto20

При записи ответов:

Set mesto2 = mesto2(2, 1) сдвиг mesto2 (уже есть в проекте)

В начале обработки результатов:

Set mesto2 = mesto20 возвращаем mesto2 в верхнюю ячейку столбца

Обработка

Специфика обработки зависит от вида теста. Однако в большинстве случаев в ее основе лежит параллельный перебор двух столбцов: эталона (ключей) и ответов пользователя. Чтобы ограничить перебор, рекомендуется просматривать столбец до пустой ячейки. Соответственно, надо использовать While «до пустой ячейки» с ручным счетчиком (i = i + 1). При такой организации перебора объектные переменные mesto_et и mesto2 остаются на своих местах, и после обработки их не надо возвращать на место, как после записи ответов.

Обработку рекомендуется реализовывать как вложенную процедуру (либо вызов вложенной функции). При нашей структуре программы она может быть запущена либо из процедуры results, либо при инициализации формы результатов. Возможно, какие-то переменные, связанные с хранением итогового результата, надо будет объявить как глобальные. Также разумно записать итоговый результат в электронную таблицу – например, под ответами пользователя.

Вывод результатов

Практически он спланирован в разделе «Работа с несколькими экранами». Текст надписи может быть собран из фиксированного текста и значений переменных, например:

Label1.Caption = “Ваша отметка - ” & otmetka

Возможно, вам понадобится несколько ЭУ «Надпись».

Также на форме результатов явно будет кнопка, организующая продолжение работы программы (переход к показу ошибок, перезапуск программы и т.п.). Скорее всего, событийная процедура Click данной кнопки будет выгружать текущую форму и передавать управление другой форме.

Подробный показ ошибок

Напомним, что этот этап актуален только для учебных тестов.

Скорее всего, для показа ошибок надо создать отдельную форму, либо умудриться организовать его на той же форме, что и вывод итогового результата.

С точки зрения структуры действий показ ошибок – это циклическая программа с командным управлением:

· основная процедура обеспечивает поиск и показ одной ошибки; она запускается по событию Кнопка_Click.

· работа с первой ошибкой должна быть запущена из «предыдущей» процедуры (Форма_Инициализация), либо «Кнопка» должна появиться на экране до показа первой ошибки (это возможно, если показ ошибок идет на форме результатов). 

Структура процедуры Кнопка_Click

Алгоритм Комментарии
While <непустая ячейка  и не ошибка>  
<переход к следующему вопросу>  
WEnd мы нашли либо ошибку, либо пустую ячейку
If <ошибка> Then  
<показ ошибки> рекомендуется вложенная процедура
<переход к следующему вопросу>  
Else = если пустая ячейка, т.е. ответы кончились
<Работа после показа ошибок> например, перезапуск проекта сначала
End If  

Дополнительные комментарии:

· Для показа ошибок нужен параллельный просмотр листов «Данные» и «Результаты». Для адресации на этих листах можно использовать наши объектные переменные mesto1 и mesto2. Соответственно, «переход к следующему вопросу» – это сдвиг объектных переменных. Перед началом просмотра надо вернуть эти переменные «на исходные позиции».

· Для показа одной ошибки можно предложить следующие варианты интерфейса:

 

 

     

 

 
 

Вопрос: <текст>

     

<Вопрос>

 
 

 

     

 

 
 

Ваш ответ: <текст>

     

<ответ-1>

 
 

 

     

<ответ-2>

 
 

Правильный ответ: <текст>

     

<ответ-3>

 
 

 

     

 

 
 

 

     

Ваш ответ выделен красным, правильный ответ – зелёным

 

 

 

Дальше    

 

Дальше  
 

 

     

 

 
                 

Возможно, вы придумаете какую-то свою идею.

Дополнительная информация для работы с цветом:

1. С цветом связаны свойства BackColor, ForeColor и BorderColor

2. Значения этих свойств рекомендуется задавать с помощью функции:

RGB(<red>, <green>, <blue>)

(аргументы функции – числа от 0 до 255, задающие интенсивность красной, зеленой и синей составляющих цвета).

В следующем примере:

· мы считаем, что в переменной et лежит номер правильного ответа;

· имя ЭУ создаем с помощью текстового сцепления (см. работу с радиокнопками в разделе «Работа с ответами»)

· в имени ЭУ используем префикс Lbl, указывающий на надпись, и смысловую часть.

Controls(“Lbl_otvet” & et).BackColor = RGB(0, 255, 0)

Работа над проектом

На ваше усмотрение. Напомним, что если вы подключаете новые глобальные переменные, то их надо объявлять в «общем» программном модуле, а устанавливать их начальные значения – в процедуре Форма_Инициализация заставки.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...