Диплом: Создание тренажерно-тестирующей системы
Омский государственный университет
Математический факультет
Кафедра ПрО ЭВМ
Создание тренажерно-тестирующей системы.
дипломная работа
студента гр. МП-803
Филимонова М.В.
______________
(подпись)
Научный руководитель
к. т. н.
Агафонов А.Л.
______________
(подпись)
Омск 2003
Содержание
1. Введение.............................................................................................................................. 2. Анализ предметной области............................................................................................. 2.1. Описание предметной области и функции решаемой задачи................................ 2.2. Документы предметной области, содержащие информацию, необходимую для решения задачи............................................................................................................ 3. Постановка задачи.............................................................................................................. 3.1. Организационно-экономическая сущность задачи.................................................. 3.2. Описание выходной информации............................................................................. 3.3. Описание входной информации................................................................................ 4. Разработка информационного обеспечения задачи........................................................ 4.1. Информационный анализ предметной области и выделение информационнных объектов задачи........................................................................................................... 4.2. Определение связей информационных объектов и построение ИЛМ.................. 4.3. Определение логической структуры реляционной базы данных........................... 4.4. Исходные данные контрольного примера................................................................ 5. Разработка алгоритмов и технологии решения задачи.................................................. 5.1. Технология ввода и накопления входной информации, обеспечивающей решение задачи............................................................................................................ 5.2. Определение макета форм ввода-вывода для загрузки в БД входной иннформации..................................................................................................................... 5.3. Обобщенный алгоритм решения задачи и его декомпозиция на модули (функции)..................................................................................................................... 5.4. Детальные алгоритмы реализации отдельных модулей задачи............................. 6. Руководство администратора............................................................................................ 6.1. Системные и технические требования...................................................................... 6.2. Подготовка к работе................................................................................................... 6.2.1. Подготовка веб-сервера................................................................................... 6.2.2. Подготовка базы данных................................................................................. 6.3. Вход в систему............................................................................................................ 6.4. Просмотр таблиц пользователей............................................................................... 6.5. Работа с пользователями............................................................................................ 6.5.1. Общие положения............................................................................................ 6.5.2. Регистрация пользователя............................................................................... 6.5.3. Подписка пользователя на тест....................................................................... 6.5.4. Удаление пользователя.................................................................................... 6.5.5. Удаление просроченных пользователей........................................................ 6.6. Работа с тестами.......................................................................................................... 6.6.1. Формат тестов РВУ.......................................................................................... 6.6.2. Добавление нового теста................................................................................. 6.7. Статистика................................................................................................................... 6.7.1. По тестам........................................................................................................... 6.7.2. По пользователям............................................................................................. 6.7.3. Список всех пользователей............................................................................. 7. Приложение 1. Логическая структура реляционной базы данных задачи................... 8. Литература.......................................................................................................................... | 4 6 6 7 8 8 8 9 11 11 17 18 19 21 21 23 25 26 29 29 29 29 29 30 32 33 33 33 34 35 36 36 36 40 41 41 43 44 46 47 |
1. Введение.
Предметной областью является система тестирования знаний учащихся. Теория
систем тестирования и тренажерных систем является одной из наиболее развитых
педагогических теорий.
Современная педагогическая наука считает тестирование основой контроля
знаний. Именно на нем построены системы обучения во многих западных странах.
Широко известны примеры, такие как:
лК12 - системам обучения студентов/школьников в
Соединенных Штатах Америки. Основным принципом в системе лК12 считается
полностью самостоятельное обучение дисциплинам по заданной литературе. Контроль
знаний осуществляется через тестирования.
лBrainBench -
http://www.brainbench.com/xml/bb/homepage.xml . Очень известная система
тестирования, как за границей, так и в России. Это платная система контроля
знаний по различным отраслям деятельности и науки. Не предоставляет учебный или
справочный материал, оставляя выбор источников информации обучаемому.
лСистема дистанционного обучения ОмГУ -
http://www.do.omskreg.ru . Система тестирования абитуриентов по математике. В
этой системе представлены материалы, подготовленные опытными преподавателями и
специалистами ОмГУ.
лОмский виртуальный университет Ц http://omsk.openet.ru
. Это региональный образовательный портал, открытый на базе Омского
Государственного Университета в соответствие с договором с Российским
государственным институтом открытого образования (РГИОО), г. Москва. Последний
является головной организацией в научно-технической программе Минобразования РФ
лСоздание системы открытого образования.
К основным признакам системы тестирования относятся:
регистрация тестируемого (имя, фамилия, идентификатор, пароль, и т.д.);
системам добавления правил работы с тестом (краткое описание целей и
задач, правила работы с материалом, условия доступа к системе тестирования и
т.д.);
система представления вопросов и ответов на вопросы (например: один
вопрос Ц три варианта ответа Ц один верный);
система хранения, добавления и редактирования вопросов и ответов на
вопросы;
система ведения статистики;
система выдачи сертификатов;
система регистрации тестирования в глобальной педагогической сети.
Система тестирования знаний абитуриентов и студентов является частью
тренажерно-тестирующей системы ОмГУ.
2. Анализ предметной области.
2.1. Описание предметной области и функции решаемой задачи.
В предметной области комплекса задач, к которому относится задача создания
тренажерно-тестирующей системы, рассматриванются процессы создания и хранения
справочной информации и тестовых заданий, анализ статистики прохождения
тестов пользователями, учет и анализ оплаты за представленную информацию.
К функциям, которые должны быть реализованы в рассматриваемой задаче,
отнонсятся:
учет оплаты информационных услуг пользователями;
ведение статистики прохождения пользователями тестов;
создание учебно-методического материала и хранение его в базе данных;
создание тестирующей системы.
Из общего описания предметной области известен ряд ограничений, существенных
для процессов, которые относятся к рассматриваемой задаче. Тесты и справочная
информация создаются преподавателем и/или группой преподавателей. Один
пользователь не может иметь больше одного учетного номера, а, следовательно,
и не больше одного логина и пароля. Один пользователь может пользоваться
несколькими тестами или группами тестов, при условии, что он имеет разрешение
на доступ к ним (т.е. пользование тестом оплачено). Предполагается, что
пользователь обладает электронным почтовым ящиком. Это необходимо для
оперативной связи с пользователем Ц на адрес его электронного почтового ящика
будет высылаться образец формы для оплаты услуг, подтверждение о регистрации,
логин и пароль. Также предполагается, что пользователь имеет доступ в
Интернет.
2.2. Документы предметной области, содержащие информацию, необходимую для
решения задачи.
Входная информация задачи лСоздание тренажерно-тестирующей системы
разделяется на условно-постоянную и оперативно-учетную информацию.
Условно-постоянная информация, необходимая для решения этой задачи, включанет
справочные материалы и тесты по разным дисциплинам. Эту информацию
предоставляет преподаватель и/или группа преподавателей. Для регистрации
пользователя необходима информация о нем: ФИО, полный почтовый адрес, адрес
электронной почты, номер телефона. Для того, чтобы выдать пользователю логин
и пароль, тем самым разрешить ему доступ к информации, необходимо получить
подтверждение об оплате пользователем услуг.
Входная информация, содержащая данные оперативного учета, включает данные о
прохождении пользователем тестов, рекомендации преподавателя абитуриенту или
студенту, в зависимости от результатов прохождения тестов.
3. Постановка задачи
3.1. Организационно-экономическая сущность задачи.
В настоящее время уже существуют и успешно функционируют проекты, которые
являются либо тестирующими, либо тренажерными. В данной системе воплощена
попытка объединения выше названных особенностей. Кроме того, в связи с
развитием сети Интернет, ОмГУ получает дополнительную возможность
рекламирования и предложения образовательных услуг. В связи с развитием рынка
платных услуг данная система призвана быть каналом для поступления
дополнительных финансовых потоков в вуз. Система обеспечивает автоматизацию
образовательного процесса для абитуриентов вуза желающих проверить свою
готовность к экзаменам, потренироваться в ответах на экзаменационные вопросы
и обеспечивает объективную оценку знаний в интерактивном режиме.
Проект выполнен в виде сайта, где справочная и другая статическая информация
хранится в html-файлах, а тесты и другая динамическая информация хранится в
базе данных MSSQL 2000, к которой обращаются скрипты PHP. Ведется система
регистрации и учета пользователей, информация о которых также заносится и
хранится в базе данных. Пользователь может посмотреть статистику своего
прохождения тестов и сравнить свои показатели с другими пользователями.
3.2. Описание выходной информации.
Выходной информацией задачи для пользователя являются:
результат о прохождении теста;
рекомендации преподавателя повторить те или иные главы учебного
материала.
Эти данные должны выводиться на экран интернет-браузера пользователя.
3.3. Описание входной информации.
Для создания нового теоретического раздела преподаватель и/или группа
преподавателей предоставляют необходимые данные для создания новых html-
страниц, которые администратор выложит на сайт. Это статическая информация.
Для создания нового теста нужно:
создать файл теста в формате тестов РВУ (пример ниже), при условии,
что данная система поддерживает вопросы с единственным верным вариантом
ответа;
поместить этот файл на сервер;
вызвать скрипт newtest.php, которому нужно передать имя созданного
файла;
Формат файла для создания нового теста. Форма 1.
№ строки в файле | Описание строки |
1 | Название теста (группы вопросов). |
2 | <$:TestPortion: XX (где XX Ц количество задач, выдаваемых за тест) |
3 | --/New Question/-- |
4 | <$:QuestionType:1 (не используется, добавлено для совместимости) |
5 | <$:QuestionBody:YYY (где YYY Ц само тело вопроса) |
6 | <$:Variants: |
7 | 1-й вариант ответа |
8 | 2-й вариант ответа |
. | N-й вариант ответа |
| <$:RightAnswers:ZZZ (где ZZZ Ц строка правильных ответов) |
| <$:Difficulty:1 (не используется, добавлено для совместимости) |
| --/end/-- |
| --/New Question/-- |
| . |
| --/end/-- |
Пример файла для создания нового теста:
№ строки в файле | Содержание строки |
1. | Тест по школьной физике №3 |
2. | <$:TestPortion:10 |
3. | --/New Question/-- |
4. | <$:QuestionType:1 |
5. | <$:QuestionBody:Консервативной является... |
6. | <$:Variants: |
7. | сила тяжести |
8. | сила трения |
9. | сила Ампера |
10. | <$:RightAnswers:1 0 0 |
11. | <$:Difficulty:1 |
12. | --/end/-- |
13. | --/New Question/-- |
14. | <$:QuestionType:1 |
15. | <$:QuestionBody:Индукция магнитного поля измеряется в СИ: |
16. | <$:Variants: |
17. | Тл (теслах) |
18. | Гн (генри) |
19. | Ф (фарадах) |
20. | <$:RightAnswers:1 0 0 |
21. | <$:Difficulty:1 |
22. | --/end/-- |
Замечание: Подробнее о формате файлов РВУ Вы можете прочитать в лРуководстве
Администратора
При регистрации нового пользователя необходимы некоторые данные о нем. Эти
данные будут использоваться преимущественно для связи с пользователем: при
подтверждении регистрации, для выдачи логина и пароля и для связи
преподавателя с пользователем.
Данные пользователя. Форма 2.
- Имя;
- Отчество;
- Фамилия;
- Почтовый индекс;
-
Край / регион;
- Город;
- Улица;
- Номер дома, квартиры;
-
Email;
- Телефон (не обязательно).
4. Разработка информационного обеспечения задачи
Разработка информационного обеспечения включает подготовку документов,
сондержащих информацию, необходимую для решения задачи, и анализ этой
инфорнмации. Такой анализ позволит произвести формализацию данных, которая
имеет целью их однозначное определение для хранения, поиска и обработки во
внутримашинной сфере.
Для организации информационной базы будем использовать реляционную СУБД.
Поэтому должна быть разработана логическая структура реляционной базы данных,
на основе которой будет осуществляться решение задачи. Испольнзуем процессный
подход к разработке базы данных, определяя состав только тех данных, которые
необходимы для получения выходной информации задачи
4.1. Информационный анализ предметной области и выделение информационнных
объектов задачи.
Произведем анализ исходной информации предметной области с целью определения
состава и структуры информации для последующей формализации и построения
информационно-логической модели данных (ИЛМ). Приведенные выше формы входных
документов, а также дополнительные сведения из описания предметной области
позволяют определить роль реквизитов во взаимосвязанной полученной
информации. На основе такого анализа установим функциональные зависимости
реквизитов в соответствии с рекомендациями и требованиями норманлизации
данных.
Рассмотрим информацию, содержащуюся в форме регистрации пользователя (Форма 2).
В ней содержатся реквизиты, общие для всей формы. Причем каждый из них имеет
единственное значение. Среди этих реквизитов особую роль играет
e-mail
пользователя. Поскольку этот реквизит уникален, то есть его значение
не может повториться, он играет роль идентификатора всей информации по
пользователю, содержащейся в форме. Остальные рекнвизиты однозначно
опреденляются
e-mailТом пользователя. Помимо полученных от пользователя
данных необходимо учитывать дату и сам факт регистрации, т.е. оплаты права на
пользование услугами и выдачи пользователю логина и пароля. В целях экономии
дискового пространства нужно завести реквизит
уникальный номер пользователя
, который будет связывать информацию о пользователе, о его логине/пароле и
УисторииФ прохождения тестов. На основе проведенного анализа установим
функциональные зависимости реквизинтов регистрационной формы и отобразим их в
таблице 2.
Аналогично проанализируем информацию, содержащуюся в форме для создания
нового теста (форнма 1). В соответствии с описаннием предметной области
установим функциональные зависимости их реквизитов (табл. 1).
Таблица 1. Функциональные зависимости реквизитов формы создания нового теста.
Наименование реквизитов документа | Имя реквизита | Функциональные зависимости |
Уникальный номер теста | Test_Un | |
Описание теста | Test_Cont |
Имя теста | TestName |
Директория вспомогательных файлов теста | TestDir |
Количество задач, выводимых за тест | Test_Portion |
Уникальный номер задачи | Task_Un |
Номер задачи в тесте | Task_n |
Формулировка задачи | Task_Cont |
Уникальный номер ответа | Answ_Un |
Номер ответа в задаче | Answ_n |
Истинность ответа | Answ_True |
Формулировка ответа | Answ_Cont |
Таблица 2. Функциональные зависимости реквизитов формы регистрации.
Наименование реквизитов документа | Имя реквизита | Функциональные зависимости |
Уникальный номер пользователя | Id | |
Имя | FName |
Отчество | MName |
Фамилия | LName |
Почтовый индекс | Zip |
Край / регион | Region |
Город | City |
Улица | Street |
Номер дома, квартиры | House |
Email | Email |
Телефон | Phone |
Логин | Login |
Пароль | Pwd |
Дата регистрации | RegData |
Отметка о регистрации | Registered |
После прохождения пользователем тестов появится информация о результате
прохождения, которую тоже необходимо учитывать и хранить для статистики.
Статистика будет вестись не только по пользователям но и по тестам. Кроме
того, пользователь может иметь доступ к тесту (т.е. подписан на тест), а
может не иметь.
Данные статистики. Форма 3.
1. Идентификатор пользователя, проходившего тест;
2. идентификатор теста;
3. результат (количество баллов);
4. дата прохождения теста;
5. идентификатор задачи;
6. правильность ответа на задачу.
Данные о правах пользователя на тест. Форма 4.
- Идентификатор пользователя;
- идентификатор теста;
-
код доступа; (0 Ц не подписан, 1 Ц подписан, 2 Ц тест сдан)
Установим функциональные зависимости реквизитов, учитывая, что один и тот же
пользователь может пройти различные тесты с различными результатами.
Следовательно, эти данные не уникальны, кроме реквизита
дата, при
условии, что пользователь не может успеть физически пройти более одного теста
за одну минуту (табл. 3).
Таблица 3. Функциональные зависимости реквизитов данных статистики.
Наименование реквизитов документа | Имя реквизита | Функциональные зависимости |
Идентификатор пользователя | Id | |
Идентификатор теста | Test_Un |
Результат | Points |
Дата | Data |
Идентификатор задачи | Task_Un |
Правильность ответа | Answ_True |
Таблица 4. Информация о правах пользователя на тест.
Наименование реквизитов документа | Имя реквизита | Функциональные зависимости |
Идентификатор пользователя | Id | |
Идентификатор теста | Test_Un |
Код доступа | SubCodes |
Выделение информационных объектов.
Проанализируем установленные функциональные взаимосвязи реквизитов и
установим для каждого из зависимых реквизитов, от каких реквизитов он
зависит. Результаты отобразим в таблице соответствия зависимых (описательных)
и ключевых реквизитов (табл. 5).
Таблица 5. Соответствие описательных и ключевых реквизитов.
Описательные реквизиты | Ключевые реквизиты | Название ИО*, в который включается реквизит |
Test_Cont | Test_Un | Тесты |
TestName | Test_Un | Тесты |
TestDir | Test_Un | Тесты |
Test_Portion | Test_Un | Тесты |
Task_n | Task_Un, Test_Un | Задачи |
Task_Cont | Task_Un | Задачи |
Answ_n | Answ_Un, Test_Un | Ответы |
Answ_True | Answ_Un | Ответы |
Answ_Cont | Answ_Un | Ответы |
FName | Id | Общая информация о пользователе |
MName | Id | Общая информация о пользователе |
Lname | Id | Общая информация о пользователе |
Zip | Id | Общая информация о пользователе |
Region | Id | Общая информация о пользователе |
City | Id | Общая информация о пользователе |
Street | Id | Общая информация о пользователе |
House | Id | Общая информация о пользователе |
Email | Id | Общая информация о пользователе |
Phone | Id | Общая информация о пользователе |
Registered | Id | Общая информация о пользователе |
Login | Id | Зарегистрированные пользователи |
Pwd | Id | Зарегистрированные пользователи |
RegData | Id | Зарегистрированные пользователи |
Points | Data, Test_Un, Id | История пользователя |
Answ_True | Task_Un, Test_Un, Id | История теста |
SubCodes | Id, Test_Un | Подписка на тесты |
* ИО Ц информационный объект.
Таблица 6. Реквизитный состав информационных объектов.
Реквизиты ИО | Признак ключа | Имя ИО | Название ИО | Семантика (описание) |
Test_Un Test_Cont Test_Dir TestName Test_Portion | * | TestCom | Описание тестов | Общие данные о тесте |
Test_Un Task_Un Task_n | * * | Tests | Тесты | Информация о тестах: какие задачи входят в тест |
Task_Un Task_Cont | * | Tasks | Задачи | Формулировки задач |
Answ_Un Answ_n Answ_True Task_Un | * * | Answ | Ответы | Формулировки ответов и их принадлежность к задачам |
Id FName MNane LName Zip Region City Street House Email Phone Registered | * | UserReg | Пользователи | Общая информация о пользователе |
Id Login Pwd RegData | * | UserLog | Зарегистрированные пользователи | Зарегистрированные пользователи |
Id Test_Un Points Data | * * * | TheHistory | лИстория (статистика) теста | Информация о прохождении разными пользователями теста. |
Id Test_Un Task_Un Answ_True | * * * | History | лИстория (статистика) пользователя | Информация о прохождении разных тестов одним пользователем |
Id Test_Un SubCodes | * * | TestSubscribe | Подписка на тесты | Права пользователя на тест |
Таким образом, выделены все информационные объекты, отображающие данные,
которые используются в рассматриваемой задаче.
4.2. Определение связей информационных объектов и построение ИЛМ.
Связи между выявленными информационными объектами определяются реальнными
отношениями между парами объектов, показанными в таблице 7. При их
определении учитывались сведения из описания ПО и семантика ИО. В частнонсти,
известно, что одному пользователю соответствует один логин и пароль, но много
тестов для прохождения. Один тест могут проходить несколько пользователей. В
одном тесте содержится несколько задач. Для одной задачи существует несколько
вариантов ответа. У каждого варианта ответа есть только одна формулировка и
т.д.
Таблица 7. Связи информационных объектов.
Ключ связи | Главный ИО | Подчиненный ИО | Тип отношения |
Id | UserLog | UserReg | 1:1 |
Id | UserLog | TheHistory | 1:M |
Id | UserLog | History | 1:1 |
Id | UserLog | TestSubscribe | 1:M |
Test_Un | TestCom | Tests | 1:M |
Test_Un | TestCom | TestSubscribe | 1:M |
Test_Un | TestCom | History | 1:M |
Test_Un | TestCom | TheHistory | 1:M |
Task_Un | Tests | Tasks | 1:M |
Task_Un | Tests | Answ | 1:M |
Task_Un | Tests | History | 1:M |
Графическое изображение ИЛМ, наглядно показывающей иерархические отношения
подчиненности информационных объектов, приведено на рис. 1.
Рис. 1. ИЛМ данных, обеспечивающая решение задачи создания
тренажерно-тестирующей системы для абитуриентов.
4.3. Определение логической структуры реляционной базы данных.
Логическая структура реляционной базы данных определяется совокупностью
логически взаимосвязанных реляционных таблиц. Каждая реляционная таблица
имеет структуру, определяемую реквизитным составом одного из информационнных
объектов полученной ИЛМ. Логические связи таблиц соответствуют струкнтурным
связям между объектами.
Логическая структура реляционной базы данных, построенная на основе полученнной
ИЛМ, приведена в Приложении 1. На этой схеме реляционные таблицы преднставлены
структурой, определяемой составом и последовательностью полей (атринбутов).
Ключевые поля отмечены знаком .
Логические связи изображены линиями между одинаковыми ключами связи.
4.4. Исходные данные контрольного примера.
В качестве контрольного примера служит лГостевой вход и лпробный тест.
Требования к данным контрольного примера - их представительность,
учитыванющая особенности информации, указанные в описании предметной области.
Такие данные должны обеспечить отладку алгоритма на компьютере и подтвердить
работоспособность реализации алгоритма. В данных контрольного примера для
рассматриваемой задачи должно быть предусмотрено, что одному тесту может
соответствовать несколько задач, одной задаче Ц несколько вариантов ответа,
из которых только один правильный. Если тестируемый ответит на вопрос, не
отметив никакой из вариантов, то ответ считается неверным. Данные
контрольного примера, предназначенные для тестиронвания, отладки и
демонстрации решения задачи, приведены в табл. 8 - 13.
Таблица 8. Данные Test_Com.
Test_Cont | Test_Un | TestDir | TestName | Test_Portion |
Пробный тест №1. | 1001 | %DOROOT%/tests/physics/ | Пробный тест. | 5 |
Таблица 9. Данные Tests.
Test_Un | Task_n | Task_Un |
1001 | 1 | 1001 |
1001 | 2 | 1002 |
1001 | 3 | 1003 |
1001 | 4 | 1004 |
1001 | 5 | 1005 |
Таблица 10. Данные Tasks.
Task_Un | Task_Cont |
1001 | Укажите формулу скорости равнозамедленного движения. |
1002 | Закон Гука выражается формулой: |
1003 | Консервативной является... |
1004 | На каком рисунке правильно показан ход луча? |
1005 | Индукция магнитного поля измеряется в СИ в: |
Таблица 10. Данные Answ.
Answ_n | Answ_Un | Answ_True | Answ_Cont | Task_Un |
1 | 1001 | 0 | <I>V = S/t</I> | 1001 |
2 | 1001 | 0 | <I>V = V<SUB>0</SUB>t - at<SUP>2</SUP>/2</I> | 1001 |
3 | 1001 | 1 | <I>V = V<SUB>0</SUB> - at</I> | 1001 |
1 | 1002 | 0 | <i>F = kx<sup>2</sup></i> | 1002 |
2 | 1002 | 0 | <i>F = kx<sup>2</sup>/2</i> | 1002 |
3 | 1002 | 1 | <img src = ./physics/DMP/image53.gif> | 1002 |
1 | 1003 | 1 | сила тяжести | 1003 |
2 | 1003 | 0 | сила трения | 1003 |
3 | 1003 | 0 | сила Ампера | 1003 |
1 | 1004 | 0 | <img src=./physics/GMO/image51.gif> | 1004 |
2 | 1004 | 1 | <img src=./physics/GMO/image52.gif> | 1004 |
3 | 1004 | 0 | <img src=./physics/GMO/image53.gif> | 1004 |
1 | 1005 | 1 | Тл (теслах) | 1005 |
2 | 1005 | 0 | Гн (генри) | 1005 |
3 | 1005 | 0 | Ф (фарадах) | 1005 |
Примечание: Таблицы UserReg, UserLog, History, TheHistory в данном
примере не задействованы.
5. Разработка алгоритмов и технологии решения задачи
Общие сведения о содержании и алгоритме решения задачи.
По мере поступления документов, содержащих данные о тестах и теоретическому
материалу, должен осуществляться ввод этих данных в БД или помещение html-
страниц на сайт, где они должны храниться. Таким образом осуществляется
накопление необходимой для решения задачи оперативно-учетной информации.
Тест должен быть представлен пользователю в виде диалога, где будет
представлена задача и несколько вариантов ответа к ней. Пользователь может
выбрать один вариант и перейти к следующей задаче. При запросе теста
пользователем задачи лтасуются, то есть определяется случайный порядок
следования задач. Варианты ответа также лперемешиваются во время запроса
очередной задачи. Если пользователь не выбрал ни один из предложенных
вариантов и перешел к следующей задаче, то это засчитывается как неверный
ответ.
5.1. Технология ввода и накопления входной информации, обеспечивающей решение
задачи.
Для решения рассматриваемой задачи должен производиться ввод и накопление в
БД оперативно-учетной информации о тестах и пользователях. Справочная
информация должна хранится в html-файлах на сайте.
В соответствии с этим технология ввода входной оперативной информации и
решение рассматриваемой задачи с помощью базы данных приведены на рис. 2.
5.2. Определение макета форм ввода-вывода.
Для ввода информации о пользователе при его регистрации и идентификации
должны быть разработаны экранные формы. Через них будет осуществляться ввод
информации в базу данных.
Форма для загрузки данных о пользователе при регистрации (см. форму 5)
является простой однотабличной. Форма строится на базе таблицы UserReg, в
которую и будут загружаться соответствующие поля. При внесении в базу данных
о новом пользователе необходимо установить поле Registered в 0. Если
пользователь получит разрешение на прохождение, то этот поле поменяем на 1.
Поле Id будет заполняться автоматически при добавлении записи в таблицу.
Макет формы ввода данных о пользователе при регистрации. Форма 5.
Имя | | (FName) | Отчество | | (MName) | Фамилия | | (LName) | Почтовый индекс | | (Zip) | Край/Регион | | (Region) | Город | | (City) | Улица | | (Street) | Номер дома, квартиры | | (House) | E-mail | | (Email) | Телефон* | | (Phone) | (* - не обязательно) | | |
|
Для загрузки данных в таблицу UserLog и изменения записи в таблице UserReg
будем использовать форму выдачи пользователю логина и пароля (форма 6). Эта
форма связана с предыдущей формой по ключевому полю Id. После выдачи логина и
пароля пользователю необходимо изменить поле Registered записи о нем в
таблице UserReg с 0 на 1.
Макет формы выдачи пользователю логина и пароля. Форма 6.
Список пользователей, которые ожидают завершения регистрации. (Претенденты на получение логина и пароля) Выберите пользователя, которому выдать логин и пароль: | Фамилия (LName) | Имя (FName) | Отчество (MName) | E-mail (Email) | Иванов | Иван | Иванович | | . . . | Петров | Петр | Петрович | |
|
Для входа в систему нужна форма, принимающая логин и пароль пользователя для
проверки их в базе данных (форма 7). Это простая форма, связанная с таблицей
UserLog полями Login и Pwd.
Макет формы идентификации. Форма 7.
Логин: | | (Login) | Пароль: | | (Pwd) |
|
Для добавления нового теста в базу данных используется форма 8. Ей необходимо
указать только имя файла с добавляемым тестом. Формат файла определен выше.
Эта форма наполняет и связывает таблицы TestCom, Tests, Tasks, Answ.
Макет формы добавления нового теста. Форма 7.
Имя файла с тестом | С:\.\test23.txt |
|
5.3. Обобщенный алгоритм решения задачи и его декомпозиция на модули (функции).
Из рисунка 2 видна общая декомпозиция задачи на модули. Рассмотрим систему
тестирования пользователя. При входе в систему пользователь вводит свой логин
и пароль. По этим данным из базы данных необходимо получить уникальный номер
пользователя (Id), этот номер, в свою очередь, будет передан тестирующему
модулю системы вместе с уникальным номером теста (Test_Un), запрошенного
пользователем. Отображать вопросы (задачи) теста будем дозировано, т.е. по
одной задаче за раз.
Функционально-технологическая схема и алгоритм тестирования.
Рис. 3. Общая функционально-технологическая схема подсистемы тестирования.
Подсистема тестирования может быть разбита на несколько основных этапов -
модулей, реализуемых средствами СУБД (запросы, отчеты). Блок-схема алгоритма
подсистемы тестирования приведена на рис. 4.
Рис. 4. Блок-схема алгоритма подсистемы тестирования
5.4. Детальные алгоритмы реализации отдельных модулей задачи.
Модуль 1.1. Проверка логина и пароля.
На входе имеем: login Ц логин пользователя, password Ц пароль пользователя.
Посылам запрос к SQL серверу:
SELECT * FROM UserReg, UserLog WHERE Login = СloginТ AND Pwd = СpasswordТ AND
UserReg.Id = UserLog.Id
Если результат запроса не пустой, то считаем, что пользователь авторизовался
успешно, также в результате запроса имеем все его данные Ц ФИО, адрес, .
Модуль 1.2 Формирование теста.
На входе имеем: Test_Un Ц номер теста, который выбрал пользователь для
прохождения.
Посылам запрос к SQL серверу:
SELECT Task_Un FROM Tests WHERE Test_Un = Test_Un
В результате получаем набор (массив) номеров задач, которые соответствуют
этому тесту.
Модуль 1.3. Установка случайного порядка следования задач.
Необходимо узнать, сколько задач нужно выдать пользователю.
Посылам запрос к SQL серверу:
SELECT Test_Portion FROM TestCom WHERE Test_Un = Test_Un
Результат запомним в Portion. лПеремешиваем массив задач, полученный на
предыдущем шаге, и оставляем только Portion из них.
Модуль 1.4. Установка случайного порядка следования ответов.
На входе: Task_Un Ц номер задачи, для которой выбираем ответы.
Посылам запрос к SQL серверу:
SELECT * FROM Answ WHERE Task_Un = Task_Un
Результат Ц массив ответов, который также лперемешиваем.
Модуль 1.5. Отображение задачи и вариантов ответов.
На входе: Task_Un Ц номер задачи, текст которой нужно вывести. Answers Ц
массив вариантов ответов для этой задачи.
Посылам запрос к SQL серверу:
SELECT Task_Cont FROM Tasks WHERE Task_Un = Task_Un
Результат Ц тело задачи в формате HTML, его и выводим.
Для каждого варианта ответа посылам запрос к SQL серверу:
SELECT Answ_Cont FROM Answ WHERE Answ_Un = Answers[i]
Результат Ц тело варианта ответа в формате HTML, его и выводим.
Модуль 1.6. Проверка правильности ответов и вывод результата теста.
На входе: Answer Ц номер ответа, который выбрал пользователь.
Посылам запрос к SQL серверу:
SELECT Answ_True FROM Answ WHERE Answ_Un = Answer
Результат Ц 0 (не правильный) или 1 (правильный) ответ. Этот результат
заносим в таблицу History и храним до конца теста.
После того, как пользователь ответит на все предложенные вопросы, нужно
посчитать, сколько раз он ответил правильно (n), и сколько всего вопросов
было (m). После чего выводим итог: лВаш результат n баллов из m.
6. Руководство администратора
6.1. Системные и технические требования
Для работы системы необходимо наличие следующего программного обеспечения на
сервере:
- OS Windows (Server Family);
- MSSQL Server 7.0 или
выше;
- Apache Win32 / PHP 4.0 или выше;
Вместо Apache можно использовать и другой веб-сервер, например MS IIS,
единственное требование Ц поддержка PHP хотя бы на уровне CGI.
6.2. Подготовка к работе
6.2.1 Подготовка веб-сервера.
Для начала работы необходимо скопировать файлы системы в каталог
%Apache%/htdocs/do/, где %Apache% Ц установочный каталог веб сервера.
Далее все пути на диске будут указываться относительно каталога
%Apache%/htdocs/.
6.2.2 Подготовка базы данных.
- Создаем в MSSQL Server базу данных и называем ее DO.
- В
базе данных DO создаем пользователя с логином do_user и паролем
www123 . Естественно, что пароль стоит выбрать более сложный. Эти
данные Ц пример.
Логин и пароль для доступа к базе данных используются в файле
do/bin/admin/register.php
- Создаем в базе DO хранимую процедуру
CreateAllTables, текст которой можно посмотреть в файле
do/tsql/CreateAllTables.sql, и выполняем эту процедуру. В результате
создадутся все необходимые для работы системы таблицы.
- Создаем в
базе DO хранимую процедуру DropAllTables, текст которой можно
посмотреть в файле do/tsql/DropAllTables.sql. Результатом этой процедуры
будет полное удаление всех таблиц, созданных процедурой
CreateAllTables, и дынных в них. Сейчас эту процедуру выполнять не
нужно. Она нужна при удалении системы.
- Для добавления тестов по
физике, необходимо создать в базе DO ряд хранимых процедур, тексты
которых приведены в файлах вида do/tsql/phys/nn_CreateTestXXX.sql , где nn
Ц номер теста; XXX Ц сокращенное название теста.
Создаем хранимую процедуру CreateAllTests (do/tsql/phys/
CreateAllTests.sql), которая создаст 17 тестов по физике: 1 пробный,
15 тренажерных и 1 экзаменационный.
Создаем процедуру DeleteAllTests (do/tsql/phys/DeleteAlllTests.sql),
которая удаляет все, созданное процедурой CreateAllTests.
-
Теперь необходимо дать права пользователю базы данных do_user на
операции SELECT, UPDATE, INSERT, DELETE во всех таблицах, созданных
процедурой CreateAllTables.
6.3. Вход в систему
На сайте системы выбираем раздел лВход. Появится форма как на рисунке 1.
Рис. 1. Форма авторизации.
В появившейся форме авторизации вводим логин и пароль администратора. Эти
данные хранятся не в базе данных, а в файле do/bin/user/logon.php, для того,
чтобы администратор смог авторизоваться, даже если база данных не доступна. В
случае успешной авторизации появится меню Администрирование:
- Просмотр таблиц пользователей
- Посмотреть таблицу
UserReg (просмотр всех зарегистрированных пользователей)
-
Посмотреть таблицу UserLog (просмотр всех пользователей, подавших
заявку на регистрацию)
- Работа с пользователями
-
Добавить пользователя в UserLog (зарегистрировать пользователя,
подавшего заявку на регистрацию)
- Подписать пользователя на
тест (дать доступ пользователю к определенному тесту)
- Удалить
пользователя (удалить пользователя из системы вместе со всей историей
прохождения тестов)
- Удалить лпросроченных пользователей (как
предыдущий пункт, но для пользователей, которые находятся в системе
больше месяца)
- Тесты
- Добавить новый
тест
- Создать тесты Калистратовой (создать тесты по физике,
которые были описаны в процедуре CreateAllTests)
- Удалить
тесты Калистратовой (соответственно DeleteAllTests)
-
Статистика
- По тестам (кем и когда проходился определенный
тест)
- По пользователям (какие тесты и когда проходил
определенный пользователь)
- Список всех пользователей (список
ФИО, логин, пароль)
6.4. Просмотр таблиц пользователей
Выбрав пункт меню администратора лПосмотреть таблицу UserReg, можно посмотреть
таблицу
UserReg, в которой находятся все данные о пользователях: ФИО,
адрес, e-mail, телефон и т.д. как на рис. 2.
Рис. 2. Данные таблицы UserReg.
Выбрав пункт меню администратора лПосмотреть таблицу UserLog, можно посмотреть
таблицу
UserLog, в которой представлена информация о зарегистрированных
пользователях: логин, пароль, дата регистрации как на рис. 3.
Рис. 3. Данные таблицы UserReg.
6.5. Работа с пользователями
6.5.1 Общие положения
Когда пользователь заполняет форму регистрации и нажимает кнопку лОтослать,
ему приходит подтверждение в виде письма на указанный e-mail. Дальше
пользователь ждет, когда его зарегистрирует администратор и вышлет логин и
пароль для входа в систему.
В случае, если система будет платной, то администратор ждет оплаты за
пользование системой, после чего регистрирует пользователя.
По умолчанию пользователь не имеет доступа ни к каким тестам системы. Для
того, чтобы пользователь получил доступ к тесту, его (пользователя)
необходимо лподписать на этот тест. После того, как пользователь прошел
тест, он снова теряет доступ к нему.
6.5.2 Регистрация пользователя.
В меню администратора выбираем пункт лДобавить пользователя в UserLog.
Появится форма как на рис. 4.
Рис. 4. Форма поиска пользователей.
В приведенной форме можно ввести данные пользователя, чтобы его было легче
найти, или оставить все поля пустыми. Нажимаем кнопку лНайти. Появится
список всех (если поля формы остались пустыми) пользователей, которые в
данный момент ожидают регистрации (рис. 5)
Рис. 5. Выбор пользователя для регистрации его в системе.
Необходимо выбрать одного из них, указать его логин и пароль и нажать на
кнопку лЗарегистрировать. После чего система посылает письмо пользователю с
подтверждением факта регистрации и его данными для входа в систему.
6.5.3 Подписка пользователя на тест
В меню администратора выбираем пункт лПодписать пользователя на тест. В
появившейся форме (рис. 4) можно ввести данные пользователя, чтобы его было
легче найти, или оставить все поля пустыми. Нажимаем кнопку лНайти. Появится
список всех (если поля формы остались пустыми) пользователей, которые
зарегистрированы в системе (рис. 6).
Рис. 6. Выбор пользователя для лподписки на тест.
Выбираем одного пользователя и нажимаем лПодписать. Появится список тестов,
на которые можно подписать выбранного пользователя. Если пользователь уже
подписан на этот тест, то напротив названия таста будет пометка Ц лподписан
(если тест сдан, то пометка Ц лсдан) как на рис. 7.
Рис. 7. Выбор теста(ов), на который(е) нужно подписать пользователя.
Отмечаем нужные тесты и нажимаем лПодписать. После этого пользователь
получает доступ к выбранным тестам.
6.5.4 Удаление пользователя
В меню администратора выбираем пункт лУдалить пользователя. В приведенной
форме (рис. 4) можно ввести данные пользователя, чтобы его было легче найти,
или оставить все поля пустыми. Нажимаем кнопку лНайти. Появится список всех
(если поля формы остались пустыми) пользователей, которые зарегистрированы в
системе. Выбираем одного пользователя и нажимаем лУдалить. После этого
пользователь полностью удален из системы со всей историей прохождения тестов.
6.5.5 Удаление лпросроченных пользователей
В меню администратора выбираем пункт лУдалить просроченных пользователей.
Появится список всех зарегистрированных пользователей, которые были
зарегистрированы в системе более месяца назад.
Рис. 8. Удаление лпросроченных пользователей.
Нажатие кнопки лУдалить приведет к удалению (как в пункте выше) всех
лпросроченных пользователей.
6.6. Работа с тестами
6.6.1 Формат тестов РВУ
Информация в файле с вопросами имеет блочную структуру. Каждый блок содержит
полную информацию об одном вопросе. Внутри блока информация организована по
строкам, назначение которых определяется внутренним стандартом.
Первая строка файла должна содержать имя группы вопросов.
Формат строки: имя группы вопросов.
Примечание: в случае, если такая группа уже существует, то вопросы будут
к ней добавлены.
Далее следуют блоки вопросов. Каждый вопрос обладает рядом обязательных
характеристик, которые должны быть описаны в соответствующих строках файла
импорта.
Примечание: в строках блока, описывающих характеристики вопроса, перед
каждым полем обязательно устанавливается указатель поля
л<$:.
Система РВУ поддерживает следующие форматы вопросов:
- Выбор из списка единственного правильного ответа;
- Выбор
из списка нескольких правильных ответов;
- Ввод некоторых
данных, которые впоследствии будут сравнены с заложенным "эталоном"
-
Ответ на естественном языке;
- Последовательность.
В случае необходимости могут быть заданы дополнительные форматы (после
согласования с Консалтинговым центром РСОО).
В каждом блоке должно быть описано несколько обязательных для любого формата
вопросов строк:
- Формат строки:--/New Question/--
Назначение: указывает на начало блока информации о вопросе.
Примечание: любой вопрос должен начинаться этой строкой.
-
Формат строки: <$:QuestionType:N
Назначение:описывает поле QuestionType, которое задает
вариант формата заносимого вопроса в виде натурального числа N из
диапазона [1, 5].
Примечание:форматы вопросов разрабатываются в Консалтинговом центре
РСОО.
- Формат строки: <$:QuestionBody: текст
вопроса.
Назначение: описывает поле
QuestionBody, которое содержит
формулировку основного задания (условия) вопроса.
Примечание:указывается в одну строку (макс. 64000 символов).
- Формат строки: <$:Difficulty:N
Назначение: описывает поле Difficulty, которое отражает сложность вопроса.
Примечание:сложность вопроса задается в виде числа N, где N
- натуральное число из диапазона [1, 10].
- Формат строки:
--/End/--
Назначение: указывает на конец блока информации о вопросе.
Также может задаваться время ответа на вопрос. Если эта строка отсутствует,
то тогда считается, что время на ответ ограничено лишь временем отпущенным на
все тестирование:
- Формат строки: <$:AnswerTime:N
Назначение: описывает поле AnswerTime, которое задает время
на ответ в секундах.
Примечание:сложность вопроса задается в виде числа N, где N
- натуральное число из диапазона от 1 до разумного предела.
В зависимости от формата вопроса в блоке должны присутствовать следующие строки:
- Для форматов л1, л2 и л5:
- Формат строки: <$:Variants:
Назначение: описывает поле Variants, которое содержит
варианты ответов на вопрос.
Примечание: Варианты ответа начинаются на следующей строке и каждый
вариант ответа должен располагаться на отдельной строке.
-
Формат строки: <$:RightAnswers: маска ответов
Назначение: описывает поле RightAnswers, которое служит для
указания маски правильных и неправильных ответов. Маска ответов -
это последовательность следующих друг за другом через пробел целых чисел
без знака. Порядок следования чисел в маске должен соответствовать
порядку расположения вариантов ответов.
Примечание: количество чисел в данном поле соответствует количеству
вариантов ответов.
Для форматов л1 и л2 в качестве чисел используется только
л0 и л1
- если вариант ответа ложный, то
в маске нужно поставить 0;
- если вариант ответа
правильный, то в маске нужно поставить 1.
Для формата
л5 используются натуральные числа, где каждое число это
порядковый номер, определяющий правильное положение варианта в
последовательности.
- Для формата л3:
- Формат строки:
<$:EditableVariant: текст для редактирования
Назначение: описывает поле EditableVariant, которое
содержит текст предлагаемый пользователю для редактирования.
Примечание: Этот текст при проверке будет сравниваться с введенным
эталоном.
- Формат строки:
<$:RightAnswer:"эталон" для сравнения
Назначение: описывает поле RightAnswer, которое служит для
указания "эталона".
Примечание: С этим текстом сравнивается отредактированный
пользователем текст.
- Для формата л4 никаких
дополнительных полей не нужно.
6.6.2 Добавление нового теста
Для добавления в систему нового теста (группы вопросов) необходимо создать
текстовый файл в формате РВУ (формат описан выше). При желании можно
воспользоваться программой лRVUWizard_v.1.1, дистрибутив которой можно найти
на сайте ЦИМПО в разделе лПолезные ресурсы
(http://212.192.35.213/cimes/resources/). Пример работы программы
лRVUWizard_v.1.1 на рис. 9.
Рис. 9. Программа лRVUWizard_v.1.1
Замечание: данная система поддерживает вопросы с единственным верным
вариантом ответа (тип вопроса Ц л1).
После создания файла, необходимо в меню администратора выбрать пункт
лДобавить новый тест. Появится форма как на рис. 10.
Рис. 10. Форма добавления нового теста.
В предложенной форме необходимо:
- выбрать категорию теста (к какому предмету относится тест или
группа вопросов),
- нажать кнопку лBrowse,
- выбрать созданный
файл
- нажать на кнопку лСоздать.
Если формат файла правильный и не произошло никаких ошибок передачи данных,
то создаст в базе данных новый тест. В случае ошибки новый тест создан не
будет и система выдаст сообщение с пояснительной информацией.
6.7. Статистика
6.7.1 По тестам
Статистика по тестам Ц кем и когда проходился определенный тест.
В меню администратора в разделе лСтатистика выбрать пункт лПо тестам. На
выбор будет предложено несколько дисциплин (предметов) как на рис. 11.
Рис .11. Выбор дисциплины (предмета).
Необходимо выбрать одну дисциплину, нажав на кнопку л>>. Появится список
тестов , связанных с выбранной дисциплиной (рис. 12).
Рис. 12. Выбор теста, связанного с выбранной дисциплиной.
Далее нужно выбрать один из предложенных тестов. Появится список
пользователей, проходивших выбранный тест, дата прохождения, количество
баллов, логин и номер пользователя (рис. 13).
Рис. 13. Статистика по тесту.
При необходимости можно задать критерий поиска пользователей в форме,
расположенной вверху таблицы. Например: показывать
всех пользователей,
проходивших этот тест
сегодня. Также можно отсортировать полученный
результат по любому из столбцов таблицы.
Если щелкнуть мышкой по одному из пользователей в столбце лФИО, то перейдем
в общую статистику по пользователю.
6.7.2 По пользователям
Статистика по пользователям Ц какие тесты и когда проходил определенный
пользователь.
В меню администратора в разделе лСтатистика выбрать пункт лПо
пользователям. Будет выведен список пользователей, зарегистрированных в
системе (рис. 14).
Рис. 14. Список пользователей.
Необходимо выбрать одного из пользователей и нажать кнопку У>>Ф. Появится
список всех тестов, которые проходил выбранный пользователь в формате:
- название теста
- количество баллов
- дата прохождения
или фраза лПусто, если пользователь еще не проходил ни одного теста (рис. 15).
Рис. 15. Общая статистика для выбранного пользователя.
6.7.3 Список всех пользователей
Для того, чтобы посмотреть полный список зарегистрированных в системе
пользователей, нужно в меню администратора в разделе лСтатистика выбрать
пункт лСписок всех пользователей получим результат, как на рис. 16.
Можно отсортировать полученный результат по любому из столбцов таблицы.
Приложение 1. Логическая структура реляционной базы данных задачи.
7. Литература.
1. Евдокимов В.В. и др. Экономическая информатика. Учебник для вузов. Под
редакцией д.э.н., проф. В.В. Евдокимова. Ц СПб.: Питер, 1997. Ц 592с. ил.
2. Лекции по базам данных. Зыкин. ОмГУ, 2002.
3. Карпова И.П. Исследование и разработка подсистемы контроля знаний в
распределенных автоматизированных обучающих системах. Москва, 2002.
4. Кнут Д. Искусство программирования для ЭВМ / т.3. Сортировка и поиск /
Пер. с англ. / Под ред. Баяковского и Штаркмана. Ц М.: Мир, 1978. Ц 848 с.
5. Microsoft Developer Network. Microsoft Corp. 2002.
6. PHP Manual. 1997, 1998, 1999, 2000, 2001, 2002 the PHP Documentation
Group.