Содержание
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. Литература
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
3
--/New Question/--
4
5
6
7
1-й вариант ответа
8
2-й вариант ответа
…
N-й вариант ответа
--/end/--
--/New Question/--
…
--/end/--
Пример файла для создания нового теста:
№ строки в файле
Содержание строки
1.
Тест по школьной физике №3
2.
3.
--/New Question/--
4.
5.
6.
7.
сила тяжести
8.
сила трения
9.
сила Ампера
10.
11.
12.
--/end/--
13.
--/New Question/--
14.
15.
16.
17.
Тл (теслах)
18.
Гн (генри)
19.
Ф (фарадах)
20.
21.
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
V = S/t
1001
2
1001
0
V = V0t - at2/2
1001
3
1001
1
V = V0 - at
1001
1
1002
0
F = kx2
1002
2
1002
0
F = kx2/2
1002
3
1002
1
1002
1
1003
1
сила тяжести
1003
2
1003
0
сила трения
1003
3
1003
0
сила Ампера
1003
1
1004
0
1004
2
1004
1
1004
3
1004
0
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)
Иванов
Иван
Иванович
ivan@com.ru
… … …
Петров
Петр
Петрович
petr@ru.com
Логин
(Login)
Пароль
(Pwd)
Выдать
Для входа в систему нужна форма, принимающая логин и пароль пользователя для проверки их в базе данных (форма 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 из диапазона [1, 5]. Примечание:форматы вопросов разрабатываются в Консалтинговом центре РСОО. Формат строки:
Назначение: описывает поле QuestionBody, которое содержит формулировку основного задания (условия) вопроса. Примечание:указывается в одну строку (макс. 64000 символов). Формат строки: Назначение: описывает поле Difficulty, которое отражает сложность вопроса. Примечание:сложность вопроса задается в виде числа N, где N - натуральное число из диапазона [1, 10]. Формат строки:--/End/-- Назначение: указывает на конец блока информации о вопросе.
Также может задаваться время ответа на вопрос. Если эта строка отсутствует, то тогда считается, что время на ответ ограничено лишь временем отпущенным на все тестирование: Формат строки: Назначение: описывает поле AnswerTime, которое задает время на ответ в секундах. Примечание:сложность вопроса задается в виде числа N, где N - натуральное число из диапазона от 1 до разумного предела.
В зависимости от формата вопроса в блоке должны присутствовать следующие строки: Для форматов «1», «2» и «5»: Формат строки: Назначение: описывает поле Variants, которое содержит варианты ответов на вопрос. Примечание: Варианты ответа начинаются на следующей строке и каждый вариант ответа должен располагаться на отдельной строке.
Формат строки: Назначение: описывает поле RightAnswers, которое служит для указания маски правильных и неправильных ответов. Маска ответов - это последовательность следующих друг за другом через пробел целых чисел без знака. Порядок следования чисел в маске должен соответствовать порядку расположения вариантов ответов. Примечание: количество чисел в данном поле соответствует количеству вариантов ответов. Для форматов «1» и «2» в качестве чисел используется только «0» и «1» если вариант ответа ложный, то в маске нужно поставить 0; если вариант ответа правильный, то в маске нужно поставить 1.
Для формата «5» используются натуральные числа, где каждое число это порядковый номер, определяющий правильное положение варианта в последовательности. Для формата «3»: Формат строки: Назначение: описывает поле EditableVariant, которое содержит текст предлагаемый пользователю для редактирования. Примечание: Этот текст при проверке будет сравниваться с введенным эталоном. Формат строки: Назначение: описывает поле 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.