Запоминание результатов нескольких пользователей
Организация данных: · для ответов каждого пользователя отводим свой столбец. · в верхнюю ячейку столбца помещаем имя пользователя · в первом столбце помещаем эталонные ответы или ключи Рекомендуемая система объектных переменных: · mesto_et – для ссылки на первую ячейку эталона · mesto2 – для записи и последующей обработки ответов, · mesto20 – для фиксации первой ячейки столбца, дает возможность при обработке вернуться в эту ячейку.
Из схемы видно, что при записи результатов нескольких пользователей основная задача – найти первый свободный столбец для очередного пользователя. Решение: · ищем пустую ячейку с помощью скользящей объектной переменной; · используем цикл While (пока длина текста в ячейке больше нуля). Программные тексты:
Обработка
Специфика обработки зависит от вида теста. Однако в большинстве случаев в ее основе лежит параллельный перебор двух столбцов: эталона (ключей) и ответов пользователя. Чтобы ограничить перебор, рекомендуется просматривать столбец до пустой ячейки. Соответственно, надо использовать While «до пустой ячейки» с ручным счетчиком (i = i + 1). При такой организации перебора объектные переменные mesto_et и mesto2 остаются на своих местах, и после обработки их не надо возвращать на место, как после записи ответов. Обработку рекомендуется реализовывать как вложенную процедуру (либо вызов вложенной функции). При нашей структуре программы она может быть запущена либо из процедуры results, либо при инициализации формы результатов. Возможно, какие-то переменные, связанные с хранением итогового результата, надо будет объявить как глобальные. Также разумно записать итоговый результат в электронную таблицу – например, под ответами пользователя. Вывод результатов Практически он спланирован в разделе «Работа с несколькими экранами». Текст надписи может быть собран из фиксированного текста и значений переменных, например: Label1.Caption = “Ваша отметка - ” & otmetka Возможно, вам понадобится несколько ЭУ «Надпись». Также на форме результатов явно будет кнопка, организующая продолжение работы программы (переход к показу ошибок, перезапуск программы и т.п.). Скорее всего, событийная процедура Click данной кнопки будет выгружать текущую форму и передавать управление другой форме. Подробный показ ошибок Напомним, что этот этап актуален только для учебных тестов. Скорее всего, для показа ошибок надо создать отдельную форму, либо умудриться организовать его на той же форме, что и вывод итогового результата. С точки зрения структуры действий показ ошибок – это циклическая программа с командным управлением:
· основная процедура обеспечивает поиск и показ одной ошибки; она запускается по событию Кнопка_Click. · работа с первой ошибкой должна быть запущена из «предыдущей» процедуры (Форма_Инициализация), либо «Кнопка» должна появиться на экране до показа первой ошибки (это возможно, если показ ошибок идет на форме результатов). Структура процедуры Кнопка_Click
Дополнительные комментарии: · Для показа ошибок нужен параллельный просмотр листов «Данные» и «Результаты». Для адресации на этих листах можно использовать наши объектные переменные mesto1 и mesto2. Соответственно, «переход к следующему вопросу» – это сдвиг объектных переменных. Перед началом просмотра надо вернуть эти переменные «на исходные позиции». · Для показа одной ошибки можно предложить следующие варианты интерфейса:
Возможно, вы придумаете какую-то свою идею. Дополнительная информация для работы с цветом: 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|