символьные: char, wchar_t (char16_t и char32_t, в стандарте C++11);
- целочисленные знаковые: signed char, short int, int, long int (и long long int, в стандарте C++11);
целочисленные беззнаковые: unsigned char, unsigned short int, unsigned int, unsigned long int(и unsigned long long int, в стандарте C++11);
с плавающей точкой: float, double, long double;
- логический: bool, имеющий значения true и false.++ - чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения. Достоинствами С++ является:
поддерживаются различные стили и технологии программирования, включая традиционное директивное программирование, ООП, обобщённое программирование, метапрограммирование (шаблоны, макросы);
предсказуемое выполнение программ является важным достоинством для построения систем реального времени. Весь код, неявно генерируемый компилятором для реализации языковых возможностей (например, при преобразовании переменной к другому типу), определён в стандарте. Также строго определены места программы, в которых этот код выполняется. Это даёт возможность замерять или рассчитывать время реакции программы на внешнее событие;
автоматический вызов деструкторов объектов при их уничтожении, причём в порядке, обратном вызову конструкторов. Это упрощает (достаточно объявить переменную) и делает более надёжным освобождение ресурсов (память, файлы, семафоры и т. п.), а также позволяет гарантированно выполнять переходы состояний программы, не обязательно связанные с освобождением ресурсов (например, запись в журнал);
пользовательские функции-операторы позволяют кратко и ёмко записывать выражения над пользовательскими типами в естественной алгебраической форме;
язык поддерживает понятия физической (const) и логической (mutable) константности. Это делает программу надёжнее, так как позволяет компилятору, например, диагностировать ошибочные попытки изменения значения переменной[9]. Объявление константности даёт программисту, читающему текст программы дополнительное представление о правильном использовании классов и функций, а также может являться подсказкой для оптимизации. Перегрузка функций-членов по признаку константности позволяет определять изнутри объекта цели вызова метода (константный для чтения, неконстантный для изменения). Объявление mutable позволяет сохранять логическую константность при использовании кэшей и ленивых вычислений;
используя шаблоны, возможно создавать обобщённые контейнеры и алгоритмы для разных типов данных, а также специализировать и вычислять на этапе компиляции;
возможность имитации расширения языка для поддержки парадигм, которые не поддерживаются компиляторами напрямую. Например, библиотека Boost.Bind позволяет связывать аргументы функций;
возможность создания встроенных предметно-ориентированных языков программирования. Такой подход использует, например библиотека Boost.Spirit, позволяющая задавать EBNF-грамматику парсеров прямо в коде C++;
используя шаблоны и множественное наследование можно имитировать классы-примеси и комбинаторную параметризацию библиотек. Такой подход применён в библиотеке Loki, класс SmartPtr которой позволяет, управляя всего несколькими параметрами времени компиляции, сгенерировать около 300 видов «умных указателей» для управления ресурсами;
кроссплатформенность: стандарт языка накладывает минимальные требования на ЭВМ для запуска скомпилированных программ. Для определения реальных свойств системы выполнения в стандартной библиотеке присутствуют соответствующие возможности (например, std::numeric_limits <T>)[10]. Доступны компиляторы для большого количества платформ, на языке C++ разрабатывают программы для самых различных платформ и систем;
эффективность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Ни одна из языковых возможностей, приводящая к дополнительным накладным расходам, не является обязательной для использования - при необходимости язык позволяет обеспечить максимальную эффективность программы;
имеется возможность работы на низком уровне с памятью, адресами;
высокая совместимость с языком C, позволяющая
использовать весь существующий C-код (код на C может быть с минимальными
переделками скомпилирован компилятором C++; библиотеки, написанные на C, обычно
могут быть вызваны из C++ непосредственно без каких-либо дополнительных затрат,
в том числе и на уровне функций обратного вызова, позволяя библиотекам,
написанным на C, вызывать код, написанный на С++).
3.2 Разработка
алгоритма работы программы
Алгоритм работы программы состоит из нескольких частей:
алгоритм работы части «Окно авторизации» », приложения информационно-поисковой системы (рис. 3.1);
алгоритм работы части «Главное окно программы» », приложения информационно-поисковой системы (рис. 3.2);
алгоритм работы части «Окно открытие файла БД» », приложения информационно-поисковой системы (рис. 3.3).
Рисунок 3.1 - Алгоритм работы части «Окно
авторизации», приложения информационно-поисковой системы
В основе части «Окно авторизации», приложения
информационно-поисковой системы лежит создание модального диалогового окна
авторизации пользователя (класс CDialogAuto, производный от CDialog). Создание
шаблона окна производится при помощи редактора ресурсов (ресурс «Dialog»).
Создаются классы работы с БД и с записями БД (CAutoData, CAutoRecord
производные от CDatabase и CRecordset) и реализуется функция связывания БД и
класса работы записей (void CRecordset::DoFieldExchange(…){}). При
инициализации диалогового окна происходит подключение к БД, созданной методами
СУБД MS Access и запрос на выборку из таблицы «Users». Введенные в поля (Edit
control) данные пользователя приложения сравниваются с полученными из БД, и
если они идентичны авторизация происходит успешно, иначе - пользователь
получает соответствующее сообщение.
Рисунок 3.2 - Алгоритм работы части «Главное
окно программы», приложения информационно-поисковой системы
В основе части «Главное окно программы»
приложения информационно-поисковой системы, лежит создание главного окна
программы (класс CMainWindow) функцией BOOL CFrameWnd::Create(…){} определение
его стиля. Подключение к окну ресурса «Menu», созданного при помощи редактора
ресурсов и создание обработчиков пунктов меню, а также подключение панели
инструментов (создание изображения кнопок, объявление объекта панели
инструментов и т.д.). Оглашение карты сообщений (DECLARE_MESSAGE_MAP()) для
обработки сообщений закрытия окна, перерисовки, пунктов меню и т.д. Создание
обработчиков сообщений таких как void OnClose(){ }, которая выводит окно
сообщение, функция int WinApi::MessageBox(…){}, для вывода информации (об
ошибке, предупреждении и т.д.) пользователю приложения. После чего происходит
разъединение с БД.
Рисунок 3.3 - Алгоритм работы части «Окно открытие
файла БД», приложения информационно-поисковой системы
В основе части «Окно открытие файла БД»,
приложения информационно-поисковой системы лежит создание модального
диалогового окна открытия файла с записями БД о технологическом оборудовании
(класс CDialogData, производный от CDialog). Создание шаблона окна при помощи
редактора ресурсов (ресурс «Dialog»). Создается класс работы с записями БД
(C4Data производный от CRecordset) и реализуется функция связывания БД и класса
работы записей (void CRecordset::DoFieldExchange(…){}). При инициализации
диалогового окна происходит подключение к БД, производится запрос к таблицам
связанных с технологическим оборудованием. После реализуются функции показа
записей, навигации и редактирования данных (для администратора), а так же
функция поиска по заданному параметру.
3.3 Разработка
интерфейса информационно-поисковой системы для формирования технологического
оборудования для сборочно-монтажных работ
Разработка оконного интерфейса производится при помощи средств Visual Studio и библиотеки MFC.
Библиотека MFC содержит большую иерархию классов, написанных на языке программирования С++. Структура иерархии приведена на рис. 3.4. В ее вершине находится класс СObject, который содержит различные функции, используемые во время выполнения программы и предназначенные, в частности, для предоставления информации о текущем типе во время выполнения, для диагностики, и для сериализации.
Рисунок 3.4 - Иерархия связей основных классов
MFC
Класс CWinApp - базовый класс, от которого наследуется объект windows-приложения. Объект приложения обеспечивает методы для инициализации и выполнения приложения.
Каждое приложение, которое использует Microsoft Foundation Classes, может только содержать только один объект, полученный из CWinApp. Этот объект создается, когда другие объекты глобальные объекты C++ создаются, и уже доступен, когда Windows вызывает функцию WinMain, которая обеспечена Microsoft Foundation Class Library.
Класс приложения CWinApp имеет только одну функцию - virtual BOOL CWinApp::InitInstance(), которая инициализирует объект приложения, в случае удачного выполнения возвращает - TRUE, в других случаях - FALSE.
Класс CFrameWnd - обеспечивает функциональные возможности так называемого однодокументного интерфейса Windows SDI (Single Document Interface), и обеспечивает функции окна.
Функция BOOL CFrameWnd::Create(…) - отвечает за
создание окна. Функция имеет структуру, представленную в табл. 3.1.
Таблица 3.1 - Структура функции BOOL CFrameWnd::Create(…)
|
Параметр |
Описание |
|
LPCTSTR lpszClassName |
Имя класса окна (с параметрами окна) |
|
LPCTSTR lpszWindowName |
Заголовок окна |
|
WORD dwStyle |
Стиль окна |
|
const RECT& |
Позиция и размер окна |
|
CWnd* pParentWnd |
Показатель на родительское окно, имеет значение NULL если текущее окно - основное окно программы |
|
LPCTSTR lpszMenuName |
Показатель на меню окна |
|
DWORD dwExStyle |
Определение расширенных стилей |
|
CCreateContext* pContex |
Дополнительные контекстные структуры |
Класс CDC - определяет так называемые объекты контекста устройства. Объекты класса CDC обеспечивают функции работы с контекстом устройства. Контекстом устройства могут быть дисплей или принтер.
Класс CDialog - базовый класс, используемый для отображения диалогового окна на экране.
Диалоговые окна делятся на:
модальные - окно, которое блокирует работу пользователя с родительским приложением до тех пор, пока пользователь это окно не закроет;
немодальные - диалоговые окна, использующиеся в случаях, когда выводимая в окне информация не является существенной для дальнейшей работы системы, окно может оставаться открытым, в то время как работа пользователя с системой продолжается.
Функция CDialog::DoModal() - функция, вызова модального диалогового окна.
Функция CDialog::OnInitDialog() - функция, определяющая установку фокуса ввода к одному из элементов управления в диалоговом окне.
Класс CDatabase - класс, инкапсулирующий соединение с источником данных.
Функция CDatabase::OpenEx(…) - функция, для
установления соединения с базой данных. Структура функции представлена в табл.
3.2.
Таблица 3.2 - Структура функции CDatabase::OpenEx(…)
|
Параметр |
Описание |
Значения |
|
LPCTSTR lpszConnectString |
Строка подключения, в которой параметры разделены знаком «;» |
DSN (data sourse name - имя источника данных); UID (имя пользователя); PWD (пароль); DRIVER (драйвер ODBC) |
|
DWORD dwOptions |
Набор битовых флагов, объединенных логическим «ИЛИ» |
CDatabase::openReadOnly - открыть БД в режиме «только для чтения»; CDatabase::noOdbcDialog - никогда не выводить диалог, запрашиваемый дополнительную информацию про соединение; и т.д. |
Класс CRecordset - класс, инкапсулирующий работу с результирующим набором, включая переход между записями, добавление, удаление и изменение записей, задание фильтров и выполнение параметризированных запросов.
4. ОХРАНА ТРУДА
4.1 Анализ условий
труда на рабочем месте разработчиков
Разработка информационно-поисковой системы для технологического оборудования для сборочно-монтажных работ проводится в лаборатории. Параметры лаборатории: длинна - 4м, ширина - 6,5м, высота - 3м. Три рабочих места, оснащенными тремя ПК, один из которых выступает сервером, и мониторами Dell UltraSharp U2312HM. Электрическая сеть, проведенная к лаборатории: трехфазная четырехпроводная сеть напряжением 380/220В переменного тока, частота 50 (±1)Гц, глухо-заземленная нейтраль.
Рабочие помещение располагает оборудованием для разработки и хранения информации, а именно: три компьютера, один из которых выступает сервером, необходимые для полноценной разработки проекта.
Для выявления потенциально опасных вредных производственных факторов составлена система «Человек-Машина-Среда»[14][15].
Система "Человек - Машина - Среда" (Ч - М - С), в рамках проектирования информационно-поисковой системы для формирования технологического оборудования для сборочно-монтажных работ в лаборатории представлена на рис. 4.1, описание связей системы представлены в табл.4.1.
Первым элементом системы Ч - М - С, является "человек", условно разделим его на такие функциональные части:
Ч1 - человек, который выполняет управление ЭВМ, проектирует информационно-поисковую систему, путем создания исходного кода приложения (в данном случае программист-проектировщик);
Ч2 - человек, который рассматривается с точки зрения непосредственного влияния на окружающую среду, в данном случае на лабораторию (за счет выделения тепла, поглощения кислорода, влаговыделения и т.д.);
Ч3 - человек, который рассматривается с точки зрения его физиологического состояния под влиянием факторов, влияющих на него во время проектирования информационно-поисковой системы.
Элемент "машина" выполняет основную технологическую функцию - создание информационно-поисковой системы, путем компилирования и непосредственного выполнения исходного кода программы, дополнительную - формирование параметров окружающей среды. Таким образом, элемент "машина" можно разделить на такие составляющие:
М1 - элемент, выполняющий основную технологическую функцию;
М2 - элемент функции аварийной защиты (защита ЭВМ от перегрева процессора, различного вида критические ошибки);
М3 - элемент влияния на окружающую среду и
человека (выделение тепла, производственный шум от кулеров и других систем
охлаждения процессоров и питания, создание вибрации, электромагнитное
излучение).
Рисунок 4.1 - Система Ч - М - С в рамках проектирования, в лаборатории, информационно-поисковой системы
Таблица 4.1 - Перечень связей системы Ч - М - С, страница 1