
- •Пояснительная записка
- •1. Предметная область
- •2. Обзор методов
- •3. Модель предметной области системы
- •4. Информационная модель
- •5. Обоснование использования технических и программных средств реализации
- •6. Алгоритмы работы системы анализа рентабельности
- •7. Руководство пользователя
- •8. Пример работы
- •Заключение
- •Список использованных источников
- •Приложение а
- •Приложение б
- •Приложение в
- •Приложение г
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)