Мультимедийная система обучения правилам пожарной безопасности
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?а C# называется метод обратного вызова) - методы, не принимающие параметров и не возвращающие значения;
ссылка на данные, связанные с состоянием - обычно это данные задачи сценария;
Класс State предоставляет следующие методы:
добавление перехода в другое состояние. Принимает в качестве параметров состояние и делегат условия перехода - метод, не принимающий параметров и возвращающий булево значение;
осуществление входа в данное состояние (выполняет действие входа);
попытка перехода в одно из связанных состояний. Возвращает состояние, в которое удалось перейти или данное состояние, если переход не возможен. Условия переходов должны быть взаимоисключающими. Если окажется, что возможен переход сразу в несколько состояний, переход будет осуществлен в какое-либо из этих состояний, но точное направление перехода будет неопределенно. Построение графа состояний заключается в создании и связывании экземпляров класса State. Результатом построения является начальное состояние.
Компонент Sike. FireSafety. Data.dll
Состоит из класса DataBase и классов, представляющих сущности базы данных.
Класс DataBase выполняет следующие функции:
установка, поддержание и разрыв соединения с базой данных;
выполнение запросов к базе данных. Для каждого запроса в классе содержится отдельный метод;
объектно-реляционное проецирование - строки таблиц при загрузке преобразуются в объекты соответствующих классов сущностей и возвращаются в виде обобщенных коллекций типа IEnumerable, параметризованных классом сущности. При сохранении данных происходит обратный процесс. Таким образом, интерфейс класса DataBase не раскрывает тот факт, что используется SQLite база данных или реляционная база данных вообще. При необходимости тип базы данных может быть легко изменен.
На рисунке 3.10 изображена схема базы данных.
Рисунок 3.10 - Схема базы данных
Опишем таблицы базы данных.
Таблица TheoryItems - дидактические единицы:
Name (строка) - отображаемое имя;
ContentPath (строка) - путь к содержанию единицы;
ParentID (целое число) - идентификатор родительской единицы;
Таблица TestItems - элементы проверки знаний:
Name (строка) - отображаемое имя;
Description (строка) - путь к файлу с описанием;
TypeID (целое число) - идентификатор типа элемента (0 - обучающий сценарий, остальные значения зарезервированы для других типов).
ObjectID (целое число) - идентификатор элемента проверки знаний (Scenarios.ID для сценариев);
TheoryItemID (целое число) - идентификатор дидактической единицы.
Таблица Scenarios - сценарии:
SceneName (строка) - имя сцены (Unity3d).
TimeLimit (вещественное число фиксированной точности) - ограничение по времени, сек.
Можно сказать, что таблица Scenarios наследуется от таблицы TestItems. Такая структура таблиц облегчает добавление новых типов элементов проверки знаний. Можно было объединить в таблице TestItems поля разных типов проверки знаний, однако, использование наследования приводит к более ясной структуре таблиц.
Таблица Tasks - задачи (состояния сцены):
Text (строка) - текст задачи;
ProgID (строка) - название задачи (используется только редактором сценариев);
ScenarioID (целое число) - идентификатор сценария;
Kind (целое число) - тип задачи (0 - обычная задача, 1 - успешная задача, 2 - провальная задача);
EnterAction (строка) - скрипт входного действия;
ExitAction (строка) - скрипт выходного действия.
Таблица TaskJumps - переходы между задачами (состояниями):
FromTaskID (целое число) - идентификатор задачи, из которой совершается переход;
ToTaskID (целое число) - идентификатор задачи, в которую совершается переход;
Condition (строка) - скрипт условия перехода.
Таблица TestResults - результаты обучения:
BeginTestDate (дата) - дата начала прохождения элемента проверки знаний;
Mode (целое) - режим прохождения (0 - обучение, 1 - проверка знаний);
TestItemID (целое число) - идентификатор элемента проверки знаний;
UserID (целое число) - идентификатор пользователя.
Таблица ScenarioTestResults - результаты обучения по сценариям (спецификация TestResults):
TestResultID (целое число) - идентификатор результата обучения;
IsUserDead (булево) - персонаж обучаемого погиб;
IsTimeout (булево) - время истекло.
Таблица TaskCompletings - информация о выполнении задач сценария:
Order (целое число) - порядковый номер задачи;
CompleteTime (вещественное число фиксированной точности) - время выполнения задачи, сек;
ScenarioTestResultID (целое число) - идентификатор результата обучения с помощью сценариев;
TaskID (целое число) - идентификатор задачи.
Учитывая, что одно и то же задание обучаемый может выполнять несколько раз, все попытки выполнения задания будут записаны в эту таблицу. Так как порядок выполнения строго не определен, используется поле Order.
Таблица Users - пользователи обучающей системы (к ним относятся как обучаемые, так и обучающие):
Login (строка) - логин.
Password (строка) - пароль.
Логин и пароль используются для аутентификации пользователя в системе.
Компонент Sike. FireSafety. Scenario.dll
Реализует объектную модель схемы сценария, то есть предоставляет методы для доступа к структуре схемы сценария и её изменения.
Состоит из классов: Scenario, Task, TaskCollection, TaskJump, TaskJumpCollection.
Класс Scenario реализует основные функции компонента:
загрузка и сохранение схемы сценария;
проверка ограничений, накладываемых на структуру схемы сценария, во время загрузки и перед сохранением;
чтение и запись свойств схемы сценария;
доступ к коллекции задач схемы сценария - экземпляру класса TaskCollection;
проверка изменения схемы сценария со в?/p>