Диплом: Информационная система школьного мониторинга

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
56
дерево — иерархический список (treeview)
раскрывающийся список (combobox, drop-downlist)
метка (label)
поле редактирования (textbox, editfield)
элемент для отображения табличных данных (gridview)
меню (menu)
главное меню окна (mainmenu или menubar)
контекстное меню (popupmenu)
ниспадающее меню (pull down menu)
окно (window)
диалоговое окно (dialog box)
модальное окно (modal window)
панель (panel)
вкладка (tab)
панель инструментов (toolbar)
полоса прокрутки (scrollbar)
ползунок (slider)
строка состояния (status bar)
всплывающая подсказка (tooltip, hint)
Для разрабатываемого приложения будут использованы следующие
типы элементов:
кнопка (button)
значок (иконка, icon)
список (list box)
поле редактирования (textbox, editfield)
элемент для отображения табличных данных (gridview)
меню (menu)
главное меню окна (mainmenu или menubar)
57
вкладка (tab)
полоса прокрутки (scrollbar)
ползунок (slider)
строка состояния (status bar)
Для использования требований к интерфейсу были использованы
следующие технологические решения при разработке экранных форм:
Использование специальных программных средств при
проектировании макетов экранных форм;
Использование традиционного расположения таких элементов
интерфейса, как кнопки «Закрыть окно», «Свернуть в окно», «Свернуть»;
Использование крупных интерфейсных элементов для перехода к
пунктам меню программы.
Пример разработанного макета экранной формы приведен на рисунке
22.
Список пользователей
Тип пользователя Фамилия Имя Отчество online
Вход Уроки
Редактор
тестов
Справочники Результаты
Рисунок 22. Пример разработанного макета экранной формы
2.3.4 Программные компоненты
Программная система состоит из следующих уровней: клиент; сервер
приложений; сервер базы данных.
58
Клиент — это интерфейсный компонент, который представляет первый
уровень, собственно приложение для конечного пользователя. Первый уровень
не имеет прямых связей с базой данных и бизнес-логики.
Сервер приложений располагается на втором уровне. На втором уровне
сосредоточена большая часть бизнес-логики.
Сервер базы данных обеспечивает хранение данных и выносится на
третий уровень.
Сервер приложений разработан при помощи технологии Delphi XE2
DataSnap. Передача данных между клиентом и сервером осуществляется через
протокол TCP.
Сервер приложений взаимодействует с базой данных через СУБД
Microsoft Access. Подключение к базе данных выполняется через технологию
ADO.
В структуре сервера можно выделить две основные части: Модуль
управления сервером (TdmServer) и модуль предоставления данных
(TdssmRemoteData). Описание модулей приведено ниже, в таблице 17.
Таблица 17
Структура сервера приложений
Название
модуля
Описание
Функции
1
TdmServer
Содержит компоненты для
подключения к системе
управления базами данных
(через ADO) и компоненты
для организации сервера
приложений (передача
данных выполняется через
протокол TCP).
Подключение к СУБД.
Управление сервером
приложений (установка
соединений с
клиентскими
приложениями,
аутентификация
пользователей, передача
данных клиентам).
2
TdssmRemoteData
Модуль системы, который
определяет доступные
клиенту данные и
функциональность системы.
Экземпляр данного модуля
создается для каждого
подключенного клиента.
Авторизация.
Предоставление данных;
Предоставление
функциональности;
59
При инициализации модуля управления сервером автоматически
выполняется инициализация соединения с базой данных. Параметры
соединения содержаться в файле Settings.ini. Если соединение с базой данных
по каким-то причинам не удалось установить, то сервер выдаст сообщение о
невозможности дальнейшей работы, т.е. успешное подключение к базе данных
обязательное условии запуска сервера.
Рисунок 23. Состав модуля TdmServer
Как уже отмечалось ранее, сервер передает данные по протоколу TCP
(за это отвечает компонент DSTCPServerTransport). Потому, для сервера
должен быть задан порт прослушивания. В нашем случае он имеет значение
5000.
При подключении, на сервере создается отдельный поток. Клиент в
обязательном порядке передает данные для выполнения аутентификации (логин
и пароль), проверку которых выполняет компонент DSAuthenticationManager. В
случае успешного прохождения процедуры аутентификации, для передачи
60
данных между сервером и клиентом, DSServer создаст интерфейс
взаимодействия. Этим интерфейсом является экземпляр класса
TdssmRemoteData.
В случае ошибки аутентификации сервер вызывает исключение и
уничтожает поток, который был создан для данного подключения (таблица 18).
Таблица 18
Описание класса «TdmServer»
Область
видимости
Поле
Описание
public
adoConnection:
TADOConnection;
Компонент, отмечающий за
соединение с базой данных через
технологию ADO
DSServer: TDSServer;
Компонент, организующий работу
сервера DataSnap
DSTCPServerTransport:
TDSTCPServerTransport;
Компонент передачи данных между
сервером и клиентом
DSServerClass:
TDSServerClass;
Компонент, определяющий класс,
функциональность которого будет
доступна подключенным к серверу
клиентам
DSAuthenticationManager:
TDSAuthenticationManager;
Менеджер аутентификации
Как было сказано выше, экземпляр класса TdssmRemoteData создается
после успешной аутентификации и служит для предоставления клиентскому
приложению определенных данных и функциональности сервера.
61
Рисунок 24. Состав модуля TdssmRemoteData
Цепочка передачи данных между клиентом и сервером выглядит так:
1. Компонент подключения к БД (TADOConnection);
2. Набор данных (TADOTable или TADOQuery);
3. Провайдер набора данных (TDataSetProvider);
4. Компонент клиентского соединения (TSQLConnection);
5. Клиентский компонент соединения с провайдером данных
(TDSProviderConnection);
6. Клиентский набор данных (TClientDataSet).
62
Пункты 1, 2, 3 – выполняются на стороне сервера, а пункты 4, 5, 6 – на
стороне клиента. Компоненты класса TDataSetProvider служат для определения
прав доступа и настройки параметров передачи данных клиенту. В его
настройках можно указать такие параметры как: доступность набора данных
для клиента, режим «только чтение», запрет редактирования, запрет вставки,
запрет удаления и т.д.
Отдельно хочется отметить реализацию механизма тестирования. Все
операции связанные с обработкой результатов тестирования реализованы в
интерфейсе взаимодействия и выполняются сервером. Клиентское приложение
лишь использует определенный набор методов (через проекцию серверного
класса), который и выполняет управление процессом тестирования. Все поля и
методы, отвечающие за управление процессом тестирования, описаны ниже, в
таблице 19.
Таблица 19
Поля серверного класса (реализация механизма тестирования)
Область
видимости
Определение
Описание
private
intFCurrentUserKey;
Идентификатор текущего пользователя
(прошедшего аутентификацию и
работающего в системе). Данный
идентификатор сохраняется в таблицу
результатов, с целью привязки результатов
тестирования к конкретному пользователю
private
intFTestingTestKey;
Идентификатор теста, который выполняет
пользователь (Передается через метод
TestingStart)
private
intFTestingResultKey;
Идентификатор результатов тестирования
private
TADOQuery
*qTestingQuestionList;
Набор данных "Список вопросов теста".
Содержит список всех вопросов теста.
Между элементами этого списка и
выполняются переходы
(TestingNextQuestion, TestingPriorQuestion)
public
TADOQuery
*qTestingAnswerVariant
List;
Набор данных "Список вариантов ответа".
Содержит возможные варианты ответа на
текущий вопрос
public
TDataSetProvider
*dspTestingAnswerVaria
ntList;
Провайдер набора данных "Список
вариантов ответа"
public
TADOQuery
*qTestingQuestion;
Набор данных "Вопрос теста". Через него
выводится текущий вопрос для клиента
63
Продолжение таблицы 19
public
TDataSetProvider
*dspTestingQuestion;
Провайдер набора данных "Вопрос теста"
public
TADOQuery
*qTestingAnswerList;
Набор данных "Список ответов". Содержит в
себе список ответов, которые пользователь
выбрал для текущего вопроса
public
TDataSetProvider
*dspTestingAnswerList;
Провайдер набора данных "Список ответов"
Таблица 20
Методы серверного класса (реализация механизма тестирования)
Область
видимости
Определение
Описание
private
int __fastcallGetTestingQuestionKey ();
Функция для получения
идентификатора (ключа)
текущего вопроса
private
void __fastcallTestTestingActive ();
Проверка активности
тестирования. Проверяет,
выполнен ли запуск
тестирования через
функцию TestingStart
private
int __fastcallAddResult (intTestKey);
Функция для добавления
записи к таблице
результатов. Возвращаемо
значение данной функции
сохраняется в переменную
класса FTestingResultKey
(см. поля серверного
класса)
private
int __fastcallComputeBall ();
Функция вычисления балла
по результатам
тестирования
private
void __fastcallSaveBall (int Ball);
Функция сохранения балла
по тестированию
private
bool
__fastcallTestingTestAnswerAccessory
(intAnswerKey);
Функция проверки
принадлежности варианта
ответа к текущему вопросу
private
void
__fastcallTestingAddAnswerDescription
(intResultKey, intQuestionKey, bool
TrueAnswer, UnicodeString Answer);
Функция записи в базу
данных истории ответов
пользователя
public
void __fastcallTestingStart (intTestKey);
Функция запуска
тестирования. Параметр
TestKey идентификатор
теста
public
int __fastcallTestingStop ();
Функция завершения
тестирования. Возвращает
количество набранных
баллов (от 0 до 100)
64
Продолжение таблицы 20
public
bool __fastcallTestingNextQuestion ();
Функция перехода к
следующему вопросу.
Возвращаемое значение
функции – это
осуществление перехода.
Если true – то переход был
выполнен, false если
переход не удалось
осуществить
public
bool __fastcallTestingPriorQuestion ();
Функция перехода к
предыдущему вопросу.
Возвращаемое значение
функции – это
осуществление перехода.
Если true – то переход к
предыдущему вопросу был
выполнен, false если
переход не удалось
осуществить
public
void
__fastcallTestingClearCurrentQuestionAns
werList ();
Функция очистки списка
ответов для текущего
вопроса
public
void
__fastcallTestingAddAnswerInCurrentQues
tion (intAnswerKey);
Функция добавления
ответа к текущему вопросу
public
int __fastcallTestingQuestionCount ();
Функция возвращает
количество вопросов теста
public
int __fastcallTestingQuestionNumber ();
Функция возвращает номер
текущего вопроса
Для начал тестирования пользователь должен вызвать метод
«TestingStart». Данный метод выполняет начальную подготовку тестирования:
делает запись в таблицу результатов (метод «AddResult»), подготавливает
список вопросов теста и переводит указатель на первый вопрос тестирования
(набор данных «TestingQuestionList»). После этого пользователь дает ответы по
вопросам (методы «TestingClearCurrentQuestionAnswerList» и
«TestingAddAnswerInCurrentQuestion»). И выполняет переход к следующему
вопросу (метод «TestingNextQuestion»). У пользователя всегда имеется
возможность вернуться к предыдущему вопросу (метод «TestingPriorQuestion»).
Для завершения тестирования пользователь должен вызвать метод
TestingStop. При вызове данного метода выполняется вычисление балла по
65
результатам тестирования (метод «ComputeBall»), также выполняется
документирование ответов с целью их последующего вывода при составлении
отчета по результатам тестирования. И в завершении выполняется сохранение
балла в таблицу результатов (метод «SaveBall»).
Основой клиентской части является модуль TdmData. Модуль
выполняет следующие функции: соединение с сервером; управление
предоставленными сервером наборами данных; получение доступа к
функциональности сервера (создание проекции интерфейса взаимодействия
«TdssmRemoteData»).
Для подключения к серверу используется компонент SQLConnection. В
качестве параметров подключения мы указываем: тип подключения (DataSnap);
IP-адрес сервера; порт подключения (5000); протокол взаимодействия (в нашем
случае TCP); логин и пароль пользователя.
Для доступа к функциональности и данным сервера используется
специальный компонент DSProviderConnection, который необходим для
подключения клиентского набора данных (TClientDataSet) к провайдеру набора
данных (TDataSetDrovider).
После успешного подключения к серверу выполняется активация
доступных наборов данных (открытие набора данных).
После открытия набора пользователь может редактировать набор
данных через визуальные компоненты (такие как TDBGrid, TDBEdit,
TDBMemo, TDBImage, TDBNavigator и т.д.), разработанные специально для
работы с базами данных. Но визуальные компоненты подключаются не
напрямую к клиентскому набору данных, а используют специальный
«посредник» (объект класса TDataSource) который призваны унифицировать
использование визуальных компонентов с различными типами наборов данных.
Клиент также получает доступ к интерфейсу взаимодействия сервера
TdssmRemoteData. На стороне клиента, через компонент DSProviderConnection,
создается «проекция» класса TdssmRemoteData, в которую входят все методы

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран