Скачиваний:
11
Добавлен:
01.04.2014
Размер:
1.19 Mб
Скачать

5. Обоснование использования технических и программных средств реализации

Для разработки автоматизированной системы анализа рентабельности продукции предприятия, используем пакет Microsoft Visual Studio 6.0. Компилятор Visual C++ вполне позволяет нам описать необходимые функции программы.

Также данный программный пакет предоставляет возможности работы с MFC, что значительно упрощает процесс создания приложений без непосредственного вмешательства в WinAPI.

В связи с тем, что данные для анализа будут храниться в базе данных MySQL – используем MySQL Server 4.0, а подключение ODBC организуем на базе mysql-connector-odbc-3.51.27-win32. Он наиболее корректно проявил себя в работе с вышеприведенными средствами.

На выходе использования автоматизированной системы рентабельности мы имеем документ в формате pdf, что достигнуто применением демо-версии библиотеки PDFCreatorPilot. Она позволяет экспортировать данные в документы pdf, в соответствии с поставленными целями.

Таким образом, при помощи вышеперечисленных средств, приступим к созданию собственно искомого приложения.

6. Алгоритмы работы системы анализа рентабельности

Автоматизированная система анализа рентабельности базируется на последовательной обработке запросов сервером.

При такой обработке сервер обрабатывает запросы от клиентов в порядке их поступления, т.е. обработка каждого последующего запроса осуществляется только после обработки всех предыдущих. Это позволяет при работе с базой данных получить наименьшее количество сбоев в передаче данных.

Представим алгоритм работы последовательного сервера в приложении В, рис. В.1. Согласно ему мы видим, что сервер после установления соединения работает только с одним клиентом, обрабатывает его сообщения, посылает ответы на запросы, и по завершении соединения переходящий в состояние ожидания нового соединения.

Недостатком такой работы является не возможность вклиниться другим клиентам для работы с сервером, но в то же время это позволяет более стабильно работать с данными.

Работа клиента организована по стандартному образцу, и выглядит следующим образом, как в приложении В, на рисунке В.2. Согласно ему можно говорить о том, что клиент посылает запрос серверу на анализ данных, и принимает информацию переданную сервером. Для дальнейшего экспорта в pdf-файл.

Для создания клиент-серверного приложения будем использовать стандартный класс CAsyncSocket, который инкапсулирует асинхронные вызовы Winsock и содержит набор полезных функций, использующих Winsock API. Мы будем использовать следующие из них:

Accept обрабатывает запрос на соединение, который поступает на принимающий сокет, заполняя его информацией об адресе.

Close закрывает сокет.

Connect подключает сокет к удаленному адресу и порту.

OnAccept обрабатывает сообщение Windows, которое формируется при приеме гнездом запроса на соединение. Часто переопределяется в производных классах.

Listen заставляет сокет следить за запросами на соединение.

OnClose обрабатывает сообщение Windows, которое формируется при закрытии сокета. Часто переопределяется в производных класса.

OnConnect обрабатывает сообщение Windows, которое формируется после установки соединения или после неудачной попытки соединиться.

OnReceive обрабатывает сообщение Windows, которое формируется при появлении данных, которые можно прочесть с помощью Receive().

OnSend обрабатывает сообщение Windows, которое формируется при готовности гнезда принять данные, посылаемые с помощью Send().

Receive считывает данные с удаленного компьютера, к которому подключен сокет.

Send Посылает данные удаленному компьютеру.

Эти функции могут использоваться как клиентом, так и сервером с учетом специфики их работы.

На сервере реализованы функции получения данных из базы данных, и проведение расчетов. Итоговые таблицы будут переданы клиенту, который в свою очередь будет экспортировать их в документ формата pdf.

Рассмотрим алгоритм связи с базой данных приложения сервера (Приложение В, рисунок В.3):

Для связи используем источник данных на базе mysql-connector-odbc-3.51.27-win32. Извлечем данные из базы данных путем выполнения запросов SQL, подсчитаем искомые необходимые параметры для передачи клиенту.

Подключение для объекта класса CRecordset выполняется к базе данных, с помощью функции Орen() связываемся с таблицей, которой послали запрос SQL для выборки данных. Далее установим указатель объекта класса CRecordset на первую запись в базе при помощи функции Move().

Считаем значение поля при помощи функции GetFieldValue(), и перейдем на следующую запись: MoveNext().

Принцип взаимодействия клиента и сервера происходит следующим образом: сервер ожидает подключения клиента, клиент подключается, и отправляет запрос на выполнение анализа, в свою очередь сервер формирует строки данных для передачи клиенту, передает их, и по запросу от клиента закрывает сокет (приложение В, рисунок В.4)