Смекни!
smekni.com

Информационная система университета (стр. 6 из 16)

Оформление заявки на подачу объявления осуществляет процедура Application. После принятия объявления Application сохраняет его во временном массиве объявлений.

Процедура Work_DB осуществляет полный доступ к базе данных пользователей и позволяет редактировать, удалять и добавлять записи пользователей.

4.6. Функции работы с клиентом

Также как и с нижним уровнем, все сообщения приходящие от "Клиента" помещаются во входной буфер. После чего с помощью процедуры Datas_up2, которая активизируется прерыванием, данные разбиваются и помещаются во входящий массив сообщений клиента. Данный массив имеет следующую структуру представленную в таблице 3.

Таблица 3 - Структура массива входящих сообщений клиента

Переменная Тип переменной
Тип сообщения Integer
Текст объявления String
Сетевое имя String
Пароль String
Контрольная сумма Boolean 0-правильная 1-неправильная
Идентификатор присутствия Boolean 0-нет 1-есть
Приоритет Integer
Устройство Integer
Адрес источника Integer

Все переменные заполняются в зависимости от типа сообщения, т.к. каждый тип сообщения имеет свой формат пакета. Также вычисляется "Контрольная сумма" принятого сообщения и переменная "Идентификатор присутствия" принимает логическое значение истина.

Массив имеет 5 копий для сообщений принятых, но не обработанных Interaction. Массив имеет циклическую структуру.

Всю работу по обработке сообщений клиента и ответ на них берет на себя процедура Interaction. Она постоянно опрашивает переменную "Идентификатор присутствия" на наличие истинного значения. Как только данная переменна, принимает значение истинно, Interaction определяет значение переменной "Тип сообщения" и в зависимости от ее значения выполняет необходимые действия.

"Тип сообщения" = 05.

Interaction обращается к "Базе Данных Пользователей" (БДП) и сравнивает имя пользователя и пароль, полученные от "Клиента". В случае если имя пользователя существует в базе данных, и пароль совпадает, Interaction считывает значения приоритета и формирует сообщение Клиенту с Типом сообщения – 05. Переменная "Ошибка" в массиве исходящих сообщений клиенту, значение 0, Сетевое имя – имя переданное "Клиентом", "Приоритет" – приоритет из базы данных.

Если данное "Сетевое имя" не обнаружено в БДП, то процедура формирует сообщение с "Типом сообщения" 05. В поле "Ошибка" значение 1. В поле "Сетевое имя" значение "Гость", "Приоритет" наименьший.

Если "Сетевое имя" существует в базе данных, но пароль не совпадает с паролем отправленным "Клиентом", то Interaction отправляет то же самое сообщение, но в поле "Ошибка" значение 2. "Сетевое имя" также получает значение "Гость" с наименьшим "Приоритетом".

Структура массива исходящих сообщений клиенту представлена в таблице 4.

Таблица 4 - Структура массива исходящих сообщений клиенту

Переменная Тип переменной
Тип сообщения Integer
Текст String
Сетевое имя String
Приоритет Integer
Ошибка Integer
Идентификатор присутствия Boolean 0-нет 1-есть
Не работающие устройства Integer
Адрес приемника Integer

Массив имеет 5 копий для уменьшения периода ожидания во время отправки сообщения "Клиенту".

"Тип сообщения" = 06.

При получении "Сервером" данного сообщения от "Клиента", процедура Interaction заполняет временный массив объявлений, значение переменных данного массива берутся из массива входящих сообщений клиента.

"Тип сообщения" = 07.

Если от "Клиента" пришло сообщение с неправильной контрольной суммой, то "Сервер" формирует сообщение с данным "Типом сообщения", т.е. 07.

"Тип сообщения" =08.

Сообщение посылается "Клиентом" и представляет собой запрос на описание устройств существующих в системе. Interaction считывает из массива устройств, все значения, и формирует сообщение с "Типом сообщения" = 08.

5. Описание функционирования верхнего уровня ИСУ (Клиент)

5.1. Регистрация пользователя

Для того чтобы пользователь имел возможность отправлять объявления, ему следует получить свой приоритет, если он зарегистрирован в системе. Пользователь, не зарегистрированный в системе, получает "Сетевое имя" "Гость" с наименьшим приоритетом.

При запуске "Клиентской" части системы пользователь имеет возможность послать сообщение "Серверу" с "Типом сообщения" = 05. За получение приоритета от сервера отвечает процедура Get_priority. Она запрашивает у пользователя его "Сетевое имя" и "Пароль". После формирует сообщение и посылает его "Серверу".

Get_priority позволяет пользователю получить "Сетевое имя" "Гость" и наименьший приоритет, не устанавливая связи с "Сервером". переменная "Ок", которая говорит о том, что пользователь имеет право отправлять сообщения принимает значение истинно.

Для отправки сообщения "Серверу" Get_priority заполняет массив исходящих сообщений серверу, и устанавливает переменную "Идентификатор присутствия" в истинно. Данный массив имеет следующую структуру представленную в таблице 5.

Таблица 5 - Структура массива исходящих сообщений серверу

Переменная Тип переменной
Тип сообщения Integer
Текст объявления String
Сетевое имя String
Пароль String
Идентификатор присутствия Boolean 0-нет 1-есть
Приоритет Integer
Устройства Integer
Адрес источника Integer

Процедура Datas_down3 постоянно проверяет значение переменной Идентификатор присутствия, если она приняла значение, истинно формирует пакет и помещает его в выходной буфер 3.

5.2. Отправка объявления Серверу

За данную функцию отвечает процедура Send_message. Она запрашивает у пользователя информацию о том когда, на какое устройство и какое объявление надо вывести. Также она проверяет переменную "Ок", в случае истинного значения пользователю разрешено отправлять объявление. После получения всех необходимых данных процедура заполняет массив исходящих сообщений серверу с типом сообщения = 06. И устанавливает переменную "Идентификатор присутствия" в истинное значение.

Информацию об устройствах процедура берет из массива устройств.

Если пользователь хочет обновить свою информацию в массиве устройств, то Send_message формирует сообщение серверу с "Типом сообщения" 08.

5.3. Прием сообщений от Сервера

Любое сообщение, пришедшее от "Сервера" помещается во "Входной буфер3". И генерируется прерывание, которое вызывает процедуру Datas_up 3. данная процедура разбивает принятый пакет и инициализирует переменные в массиве входящих сообщений от сервера. Переменная "Идентификатор присутствия" принимает значение истинно. В задачу данной процедуры включается функция по проверке контрольной суммы принятого пакета. Если контрольная сумма не верна, то переменная "Контрольная сумма" в массиве входящих сообщений от сервера принимает значение истинно. "Массив входящих сообщений от сервера" имеет следующую структуру представленную в таблице 6.