Оценка состояния сложных технических объектов

Разработка программного комплекса формирования обобщенной оценки состояния сложных технических объектов на основе обработки событий. Методы мониторинга состояния объектов инфраструктуры. Реализация программного комплекса на языке программирования С++.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 08.10.2018
Размер файла 6,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Диаграмма компонентов (Component diagram) -- статическая структурная диаграмма, показывает разбиение программной системы на структурные компоненты и связи (зависимости) (таблица 4) между компонентами. В качестве физических компонентов могут выступать файлы, библиотеки, модули, исполняемые файлы, пакеты и т.п.

Диаграмма развёртывания (Deployment diagram) в UML моделирует физическое развертывание артефактов на узлах. Например, чтобы описать веб-сайт диаграмма развертывания должна показывать, какие аппаратные компоненты (“узлы”) существуют (например, веб-сервер, сервер базы данных, сервер приложения), какие программные компоненты (“артефакты”) работают на каждом узле (например, веб-приложение, база данных), и как различные части этого комплекса соединяются друг с другом (например, JDBC, REST, RMI).

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

Существует два типа узлов:

1. Узел устройства.

2. Узел среды выполнения.

Узлы устройств -- это физические вычислительные ресурсы со своей памятью и сервисами для выполнения программного обеспечения, такие как обычные ПК, мобильные телефоны. Узел среды выполнения -- это программный вычислительный ресурс, который работает внутри внешнего узла и который предоставляет собой сервис, выполняющий другие исполняемые программные элементы.

Диаграмма компонентов и диаграмма развёртывания разрабатываемого программного комплекса изображены на рисунке 21 и рисунке 22.

Таблица 7 - Структурные компоненты и связи программного комплекса

Класс

Описание

journal.cpp

Просмотр журнала

login.cpp

Авторизация пользователя

main.cpp

Главный файл

mainwindow.cpp

Главное окно программы

objects.cpp

Справочник объектов

parametry.cpp

Справочник параметров

polzovateli.cpp

Справочник пользователей

sostoyania.cpp

Справочник состояний

spravka.cpp

Справка по системе

spravochniki.cpp

Справочники

Окончание таблицы 9

BD1.mdb

База данных MS Access 2003

Рисунок 21 - Диаграмма компонентов

Рисунок 22 - Диаграмма развертывания

2.6 Программа и методика испытаний

1. ОБЪЕКТ ИСПЫТАНИЙ.

1.1. Наименование испытуемой программы.

Наименование - “Программный комплекс формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий”.

1.2. Область применения испытуемой программы.

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

1.3. Обозначение испытуемой программы.

Наименование темы разработки - “Разработка программного комплекса формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий”.

2. ЦЕЛЬ ИСПЫТАНИЙ.

Цель проведения испытаний - проверка соответствия характеристик разработанной программы (программного изделия) функциональным и иным, отдельным видам требований, изложенным в программном документе “Техническое задание”.

3. ТРЕБОВАНИЯ К ПРОГРАММЕ.

При проведении испытаний функциональные характеристики (возможности) программы подлежат проверке на соответствие требованиям, изложенным в п. “Функции, реализуемые системой” Технического задания.

4. ТРЕБОВАНИЯ К ПРОГРАММНОЙ ДОКУМЕНТАЦИИ.

4.1. Состав программной документации, предъявляемой на испытания.

Состав программной документации должен включать в себя:

1) техническое задание;

1) пояснительная записка;

3) руководство пользователя.

4.2. Специальные требования.

Специальные требования к программной документации не предъявляются.

5. СРЕДСТВА И ПОРЯДОК ИСПЫТАНИЙ.

5.1. Программные средства, используемые во время испытаний.

Системные программные средства, используемые программным комплексом формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий “PCEvent.exe”, должны быть представлены локализованной версией операционной системы Windows 7 или Windows 8.

5.2. Порядок проведения испытаний.

Испытания проводятся в два этапа:

1 этап - ознакомительный.

2 этап - испытания.

5.2.1. Перечень проверок проводимых на 1 этапе испытаний.

Перечень проверок, проводимых на 1 этапе испытаний, должен включать в себя:

а) проверку комплектности программной документации;

б) проверку комплектности и состава технических и программных средств.

Методики проведения проверок, входящих в перечень по 1 этапу испытаний, изложены в данном программном документе, в разделе “Методы испытаний”.

5.2.2. Перечень проверок проводимых на 2 этапе испытаний.

Перечень проверок, проводимых на 2 этапе испытаний, должен включать в себя:

а) проверку соответствия технических характеристик программы;

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

Методики проведения проверок, входящих в перечень по 2 этапу испытаний, изложены в данном программном документе, в разделе “Методы испытаний”.

5.3. Количественные и качественные характеристики, подлежащие оценке.

5.3.1. Количественные характеристики, подлежащие оценке.

В ходе проведения приемо-сдаточных испытаний оценке подлежат количественные характеристики, такие как:

а) комплектность программной документации;

б) комплектность состава технических и программных средств.

5.3.2. Качественные характеристики, подлежащие оценке.

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

а) проверка работоспособности программы;

б) проверка на сообщение об ошибке.

5.4. Условия проведения испытаний.

5.4.1. Климатические условия.

Испытания должны проводиться в нормальных климатических условиях по ГОСТ 22261-94. Условия проведения испытаний приведены ниже:

- температура окружающего воздуха, С 20 ± 5;

- относительная влажность, % - от 30 до 80;

- атмосферное давление, кПа - от 84 до 106;

- частота питающей электросети, Гц - 50 ± 0,5;

- напряжение питающей сети переменного тока, В - 220 ± 4,4.

5.4.2. Условия начала и завершения отдельных этапов испытаний.

Необходимым и достаточным условием завершения 1 этапа испытаний и начала 2 этапа испытаний является успешное завершение проверок, проводимых на 1 этапе (см. п. Перечень проверок, проводимых на 1 этапе испытаний).

Условием завершения 2 этапа испытаний является успешное завершение проверок, проводимых на 2 этапе испытаний (см. п. Перечень проверок, проводимых на 2 этапе испытаний).

5.4.3. Ограничения в условиях испытаний.

Климатические условия эксплуатации, при которых должны обеспечиваться заданные характеристики, должны удовлетворять требованиям, предъявляемым к техническим средствам в части условий их эксплуатации.

5.4.4. Меры, обеспечивающие безопасность и безаварийность испытаний.

При проведении испытаний должно быть обеспечено соблюдение требований безопасности, установленных ГОСТ 12.2.007.0-75 8), “Правилами техники безопасности при эксплуатации электроустановок потребителей”, и “Правилами технической эксплуатации электроустановок потребителей”.

6. МЕТОДЫ ИСПЫТАНИЙ.

6.1. Методика проведения проверки комплектности программной документации.

В ходе проверки сопоставляется состав и комплектность программной документации, представленной Разработчиком, с перечнем программной документации, приведенным в п. “Состав программной документации, предъявляемой на испытания” настоящего документа.

6.2. Методика проведения проверки комплектности и состава технических и программных средств.

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

6.3. Методика проверки работоспособности программы.

Проверка работоспособности программы выполняется согласно п. “Описание операций технологического процесса обработки данных, необходимых для выполнения задач” руководства пользователя (Приложение Б).

Проверка считается завершенной в случае соответствия состава и последовательности действий, при выполнении данной проверки, указанному выше подразделу руководства пользователя (Приложение Б).

6.4. Методика проверки на сообщение об ошибке.

Проверка на сообщение об ошибке выполняется согласно п. “Аварийные ситуации” руководства пользователя.

Проверка считается завершенной в случае соответствия состава и последовательности действий, при выполнении данной проверки, указанному выше подразделу руководства пользователя.

2.7 Контрольный пример

Для реализации контрольного примера занесли в базу данных программного комплекса данные о 4 событиях (рисунок 22).

Рисунок 23 - Пополнение базы данных

На основе этих данных, программный комплекс сформировал обобщённую оценку этих объектов (рисунок 23).

Рисунок 24 - Формирование обобщённой оценки объектов

2.8 Руководство оператора

Руководство оператора по программному комплексу формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий разработано для будущих пользователей этой системы. Пользователи должны иметь навыки работы с персональным компьютером. Также ему необходимо быть знакомым с предметной областью и ознакомиться с руководством оператора.

Полный текст руководства оператора в приложении А.

2.9 Руководство программиста

Руководство программиста по программному комплексу формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий разработано для программистов, которые в дальнейшем будут работать с этой системы. Программист должны иметь навыки работы с персональным компьютером. Также ему необходимо быть знакомым с предметной областью и ознакомиться с руководством программиста.

Полный текст руководства программиста в приложении Б.

2.10 Схема сложного алгоритма

Рисунок 25 - Схема алгоритма обработки событий

3. ВНЕДРЕНИЕ И АНАЛИЗ ЭФФЕКТИВНОСТИ

3.1 Описание планируемого объекта внедрения

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

3.2 Бизнес-план

Были представлены технико-экономическое обоснование внедрения программного комплекса формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий и произведен расчёт экономического внедрения.

3.2.1 Технико-экономическое обоснование внедрения программного комплекса формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий

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

- Строительно-монтажные работы;

- Стоимость технологического оборудования;

- Прочие (проектирование).

Современные системы управления на основе применения программных продуктов позволяет экономить косвенные расходы затрат производства, которые включают в себя все затраты на управление:

- Фазу оплаты труда по штатному расписанию;

- Дополнительные затраты на обслуживание работников;

- Затраты связанные с обслуживанием производства.

На определённом этапе управления предприятия планируют совершенствовать структуру управления, в связи с изменением объёма работ, сложности управленческих функций, территориального нахождения и других. Как правило, предприятия создают несколько видов структур:

1) Производственные, которые учитывают специфику производства отраслей;

2) Организационные - функциональные.

Наибольшее распространение получила линейно-функциональная функциональная структура. В процессе совершенствования структуры управления меняются затраты на управления. Как правило, затраты на структуру на определённом периоде не меняются, поэтому удельный вес затрат на управление в расчёте на единицу продукции уменьшается до определенного времени. В дальнейшем, эта экономия снижается по ряду объективных причин, поэтому на этом этапе необходимо совершенствовать структуру:

1) Изменение функций;

2) Изменение должностей;

3) Территориальные изменения;

4) Изменения вида продукции и т.д.

В проекте предлагается совершенствование структуры принятия управленческих решений. В качестве мероприятий совершенствования структуры предлагается разработка программного комплекса формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий.

3.2.2 Расчёт экономического внедрения программного комплекса формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий

Приведём расчёт эффективности внедрения разработанного программного комплекса для совершенствования работы отдела.

Исходя из этого, фонд рабочего времени одного работника в год равен:

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

Это значит, что - число работников после внедрения системы составит:

Экономия годового фонда заработанной платы составит:

Средняя заработанная плата одного сотрудника в месяц = 8 тыс. руб.

Теперь, мы имеем возможность рассчитать экономию административно-хозяйственных расходов, учитывая, что величина экономии дополнительной заработанной платы составит 20%, а величина экономии прочих затрат около 40% от экономии годового фонда заработанной платы. Следовательно:

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

Таким образом, предприятие сэкономило 380 тыс. руб. внедряя данный программный продукт. Кроме того, это позволило сократить трудоёмкость работы, улучшить условия труда работников и повысить статус работника, что можно отнести к социальному эффекту.

Результаты данного расчёта можно представить в сводной таблице.

Показатель

Единица

измерения

Значение до

внедрения ПК

Значение после

внедрения ПК

Число работников

Человек

6

2

Заработанная плата одного работника в месяц

Рубли

8000

8000

Фонд рабочего времени за год

Дни

230

230

Трудоёмкость расчётов

Человек/день

1150

575

Снижение численности работников

Человек

-

4

Экономия годового фонда заработанной платы

Тыс. руб.

-

180

Экономия административно-хозяйственных расходов

Тыс. руб.

-

288

Затраты на внедрение

Тыс. руб.

-

80

Общий годовой эффект информационной системы в сфере управления

Тыс. руб.

-

380

4. ОРГАНИЗАЦИОННАЯ ДЕЯТЕЛЬНОСТЬ И САМОРАЗВИТИЕ

4.1 Сведения о деятельности возглавляемого научного микроколлектива

В состав микроколлектива входили:

- Студент 1-го курса ФИСТ: Тихонов Михаил. Тема курсовой - "Анализ рынка IT вакансий по Самарской области ";

- Студент 2-го курса ФИСТ: Емельянов Ярослав. Тема курсовой работы - "ИС принятия решений в ситуационных центрах на базе нейронных сетей ";

- Студент 3-го курса ФИСТ: Машнин Александр. Тема курсовой работы - "Разработка ИС индексации патентов СГАСУ";

- Студент 5-го курса ФИСТ: Полухина Екатерина. Тема курсовой работы - "АИС алгоритмов реагирования на ЧС в муниципальных ситуационных центрах общей оценки состояния безопасности городской среды обитания".

Группой был разработан план выполнения курсовых работ, отображённый в таблице 7.

Таблица 7 - План выполнения курсовых работ группы

Неделя

Емельянов Ярослав

Машнин Александр

Полухина Екатерина

Рогачев Илья

Тихонов Михаил

1

Изучить предметную область

Изучить предметную область

Начать реализацию программы

Изучить предметную область

2

Сделать и сдать ТЗ

Приготовить и сдать ТЗ

Утвердить темы группы, разработать проект плана работ

Сдать ТЗ

Сдать ТЗ

Продолжение таблицы 10

3

Начать реализацию программы

Утверждение аннотации и темы, составить план работ

Создание БД

Утверждение аннотации и темы, составить план работ

Получить аннотацию

4

Собрать статистические данные

Создание БД

Заполнение БД

Собрать статистические данные

5

Начать реализацию программы

Собрать данные по предметной области

Реализация программы

Начать работу над анализом по теме реферата

6

Реализация программы

Внести собранные данные

Реализация программы

Сформировать таблицу данных по теме работы

7

Доработать программную часть продукта

Создать базу данных в Access

Доработать программную часть продукта

Создать базу данных

8

Обработка интерфейса пользователя

Создать базу данных на языке SQL

Обработка интерфейса пользователя

9

Изучение дополнительных материалов по теме работы

Изучение дополнительных материалов по теме работы

Заполнение пробелов в знаниях по теме

Изучение дополнительных материалов по теме работы

10

Доработка недочетов

Продолжить внесение данных в БД

Доработка недочетов

Доработка недочётов

11

Реализация дополнительного функционала

Корректировка данных

Корректировка данных БД, Тестирование програмного продукта

Окончание таблицы 10

12

Подготовка презентации

Подготовка презентации

Подготовка документации для ТЗ дипломного проекта

Подготовка презентации

13

14

Написать программу на Java

Написать программу

15

16

Визуализировать результаты

Визуализировать результаты

17

Оформить работу по ГОСТу и подготовить презентацию

Оформить работу по ГОСТу и подготовить презентацию

Оформить работу по ГОСТу и подготовить презентацию

Оформить работу по ГОСТу и подготовить презентацию

Оформить работу по ГОСТу и подготовить презентацию

4.2 Перечень публикаций

За период обучения автором были отправлены в печать и опубликованы следующие публикации:

Рогачёв И.С. Программный комплекс формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий/ И. С. Рогачёв, В. Ф. Денисов // Инновационное развитие современной науки: Сборник статей Международной научно-практической конференции (14 марта 2015 г., г. Уфа). - 2015. - С. 73-75.

4.3 Перечень участия в конференциях

- Международная конференция “Творческий потенциал - 2011”;

- Международная научно-практическая конференция “Инновационное развитие современной науки”, заочное участие.

4.4 Перечень выполненных в период обучения курсовых работ и проектов

В таблице 11 приведен перечень выполненных автором за период обучения курсовых работ, с указанием семестра, курса, дисциплины и названия курсовой работы.

Таблица 8 - Перечень выполненных курсовых работ

№ п/п

Курс

Семестр

Дисциплина

Курсовая работа

1

1

1

Технология профессиональной деятельности. Введение в специальность и научные исследования

Компетенции информатика и музыканта

2

1

2

Технология профессиональной деятельности. Информационный поиск и систематизация знаний

Обзор и анализ математических и концептуальных моделей АИС контроля исполнительской деятельности

3

1

2

Операционные системы

Исследование характеристик последовательного и произвольного доступа к файлу

4

2

3

Технология профессиональной деятельности. Обработка и анализ экспериментальных данных

Сравнительный анализ 9 функций научных компетенций

5

2

3

Информационные технологии

Синтез конечных автоматов

6

2

4

Технология профессиональной деятельности. Моделирование и исследования с использованием прикладных программ

Информационная система расчёта компетентстного профиля студента

7

2

4

Технология программирования

Написать код программы поиска кратчайшего пути на графе жадным алгоритмом

8

3

5

Технология профессиональной деятельности. Математическое моделирование и исследование с разработкой программных продуктов

Разработка информационной системы индексации патентов СГАСУ за 5 лет

9

3

6

Технология профессиональной деятельности. Математическое моделирование и исследование с разработкой программных продуктов

Разработка ИС поиска тематики научных работ для студентов ФИСТ с учетом их знаний

10

4

7

Технология профессиональной деятельности. Общее проектирование информационных систем и технологий

АИС обработки событий и принятия решений мониторинга инженерной инфраструктуры города

11

4

7

Моделирование систем

Сравнение альтернативных вариантов обслуживания в банке

12

4

7

Корпоративные ИС

АИС складского учёта

13

4

8

Технология профессиональной деятельности. Разработка инновационных систем

ПК формирования обобщённой оценки состояния технически сложных объектов

14

4

8

Методы и средства проектирования информационных систем

ПК формирования обобщённой оценки состояния сложных объектов на основе обработки событий

4.5 Портфолио

На рисунке 26 изображено портфолио автора.

Рисунок 26 - Портфолио за время обучения

ЗАКЛЮЧЕНИЕ

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

Разработанный программный комплекс формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий имеет достоинства, такие как минимальные системные требования, неограниченное количество подключаемых операторов.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Мониторинг технического состояния зданий и сооружений [Электронный ресурс]: URL: http://servisexspert.ru/services/obsledovanie-zdaniy-i-sooruzheniy/monitoring-tekhnicheskogo-sostoyaniya-zdaniy-i sooruzheniy/

2. Инжиниринговый центр [Электронный ресурс]: URL: http://basis-ic.ru/ru/nav/products/nav/products/com/products/int/1/section/9/section/10

3. Программный Комплекс “ИСКРа” [Электронный ресурс]: URL: http://kreit.ru/iskra/

4. АС единой дежурно-диспетчерской службы (АС ЕДДС) [Электронный ресурс]: URL: http://www.dragnet.ru/sites/default/files/edds.pdf

5. АС мониторинга и управления безопасностью и жизнеобеспечением зданий и сооружений (АС МУБЖЗС) [Электронный ресурс]: URL: http://secuteck.ru/articles2/firesec/avtomatiz_sist_monit_i_bezop

6. АС раннего обнаружения чрезвычайных ситуаций и оповещения (АС РОЧСО) [Электронный ресурс]: URL: http://stalenergo.com/?page_id=2335

7. Комплексная АС управления безопасностью предприятия (КАСУБ) [Электронный ресурс]: URL: http://www.pkcc.ru/products/kompleksnaya-avtomatizirovannaya-sistema-upravleniya-bezopasnostyu-predpriyatiya-kasub

8. АС обеспечения безопасности транспортировки спецгрузов (АСБТ) [Электронный ресурс]: URL: http://www.eleron.ru/production/ program comp lexes /asbt

9. Википедия Таблица принятия решений [Электронный ресурс]: URL: https://ru.wikipedia.org/wiki/Таблица_принятия_решений

10. Леоненков, А. В. Самоучитель UML [Текст] / А.В.Леоненков. - 2-е изд., пер. и доп. - СПб.: БХВ-Петербург, 2004. - 432 с.

11. Википедия Windows 7 [Электронный ресурс]: URL: https://ru.wikipedia. org/wiki/Windows_7

12. QtCompany [Электронный ресурс]: URL: http://www.qt.io/developers

13. Википедия C++ [Электронный ресурс]: URL: https://ru.wikipedia.org/wiki /C%2B%2B

14. Википедия. MicrosoftAccess [Электронный ресурс]: URL: https://ru.wikip edia.org/wiki/Microsoft_Access

15. ER: диаграммы сущность - связь [Электронный ресурс]: URL: http:/ /www.bti.secna.ru/portal/smerdina/doc/lib/art/model/ER Modeling.pdf

ПРИЛОЖЕНИЕ

А.1 Введение

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

Программный комплекс (далее ПК) формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий.

ПК предполагает разграничение прав пользователей только одним сотрудником - Специалистом по эксплуатации объекта. И в соответствии с правами доступа предоставляет функционал ведения справочной информации, формирование информационных отчетов и ведение оперативной информации.

Пользователь системы должны иметь навыки работы с персональным компьютером. Также ему необходимо быть знакомым с предметной областью и ознакомиться с данным руководством.

А.2 Назначение и условия применения

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

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

Минимальные требования к техническому и программному обеспечению. Требования к процессору определяются требованиями ОС.

Минимальные требования к рабочей станции:

- процессор класса Pentiumс тактовой частотой 1,6 ГГц и выше;

- объем оперативной памяти не менее 4 Гб;

- объем свободного дискового пространства не менее 22,1 Гб;

- тип операционной системы -Windows7 64 бит (или вышедшие следом);

- манипулятор типа “мышь”;

- монитор с разрешением 1280x1024.

Условия работы:

- температура окружающего воздуха -15 - +25 °С;

- относительная влажность - 45-75%.

- содержание вредных веществ, пыли и подвижного воздуха в рабочей зоне соответствует нормам ГОСТ 12.1.005, 12.1.007; комплекс должен удовлетворять санитарным правилам и нормам СанПиН 2.2.2/2.4.1340-03.

А3. Подготовка к работе

Руководство пользователя программного комплекса формирования обобщённой оценки состояния сложных технических объектов на основе обработки событий разрабатывалось в соответствии с РД 50-34.698-90. В нем регламентировались правила оформления руководства пользователя, порядок и расположение пунктов в тексте, описывающем работу с программным комплексом, размеры и положение рисунков.

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

После запуска приложения, появляется окно авторизации (рисунок А.1). Пользователь должен ввести логин и пароль, нажав после этого “Войти”.

Рисунок А.1 - Окно авторизации

Рисунок А.2 - Главное окно программы

Ведение справочников

Ведение справочников пользователей, параметров, состояний и объектов.

Войдем в систему в качестве Специалиста по эксплуатации объекта, заполнив для этого форму авторизации соответствующими значениями (рисунок А.3).

Рисунок А.3 - Вход в программный комплекс с правами Специалиста по эксплуатации объекта

Система откроет меню, настроенное на права Специалиста по эксплуатации объекта (Рисунок А4).

Рисунок А.4 - Главное меню

Для ведения справочника пользователей выберете пункт меню “Справочник пользователей”.

Рисунок А.5 - Окно ведения справочника пользователя

Для ведения остальных справочников - справочника Параметров, Состояний и Объектов - выберите пункт меню “Справочник параметров”, “Справочник состояний” и “Справочник параметров” и по очереди заполните необходимые справочники, вызвав соответствующие формы и воспользовавшись ими (рисунок А.6,А.7 и А.8).

Рисунок А.6 - Окно ведения справочника параметров

Рисунок А.7 - Окно ведения справочника состояний

Рисунок А.8 - Окно ведения справочника объектов

Отсутствие той или иной информации приведёт к невозможности ведения справочника, и будет сопровождаться информационными сообщениями, приведенными в таблице А.1.

Таблица А.1 - Информационные сообщения

Содержание сообщения

Пояснение

Пути решения

Вы не заполнили одно из полей, перепроверьте информацию

Вероятно, не внесены одна или более записей о пользователях в поля формы

Внести записи о пользователях в поля формы

Запись сохранена

Запись успешно сохранена

Никаких действий

Только после занесения в соответствующие поля справочника исчерпывающей информации, возможно добавление записи (рисунок А.7)

Рисунок А.9 - Успешное добавление записи

ПРИЛОЖЕНИЕ 2

Аннотация

В данном программном документе приведено руководство программиста по использованию программы “PCEvent.exe”, предназначенной для формирования обобщённой оценки состояния технически сложного объекта.

В данном программном документе, в разделе “Назначение и условия применения программы” указаны назначение и функции, выполняемые программой, условия, необходимые для выполнения программы (объем оперативной памяти, требования к составу и параметрам периферийных устройств, требования к программному обеспечению и т.п.).

В разделе “Характеристика программы” приведено описание основных характеристик и особенностей программы (режим работы, средства контроля правильности выполнения и т.п.).

В данном программном документе, в разделе “Входные и выходные данные” приведено описание организации используемой входной и выходной информации.

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

Оформление программного документа “Руководство программиста” произведено по требованиям ЕСПД (ГОСТ 19.101-77 1), ГОСТ 19.103-77 2), ГОСТ 19.104-78* 3), ГОСТ 19.105-78* 4), ГОСТ 19.106-78* 5), ГОСТ 19.504-79* 6), ГОСТ 19.604-78* 7)).

1. НАЗНАЧЕНИЕ И УСЛОВИЕ ПРИМЕНЕНИЯ ПРОГРАММЫ

1.1 Назначение программы

Зачастую приходится принимать решения в условиях неполной информации об объекте, когда логические процедуры не могут дать однозначного (детерминированного) решения проблемы. В таких случаях оператор-диспетчер привлекает хранящуюся в его памяти информацию о частотах появления тех или иных технологических признаков, возникновения тех или иных ситуаций для принятия вероятностных решений. Данная программа помогает оператору в этом.

1.2 Функции, выполняемые программой

Основной функцией программы “PCEvent.exe” является ввод и обработка событий (угроз) и формирование обобщённой оценки состояния объекта.

Программа “PCEvent.exe” реализует следующие функции:

* авторизация пользователей;

* статистика событий (угроз) и состояний.

* ведение справочников, указанных в п.2.3.3.

1.3 Условия, необходимые для выполнения программы

1.3.1 Объем оперативной памяти

Для выполнения своих функций, программе “PCEvent.exe” достаточно 100 Мб оперативной памяти. Но, исходя из того, что для функционирования операционной системы необходимо минимум 32 Мб оперативной памяти, то рекомендуется использовать программу “PCEvent.exe” на ПК, имеющем ОЗУ более 512 Мб.

1.3.2 Требования к составу периферийных устройств

Никаких требований к составу периферийных устройств, программа “PCEvent.exe” не предъявляет.

1.3.3 Требования к параметрам периферийных устройств

Никаких требований к параметрам периферийных устройств, программа “PCEvent.exe” не предъявляет.

1.3.4 Требования к программному обеспечению

Системные программные средства, используемые программой “PCEvent.exe”, должны быть представлены локализованной версией операционной системы Windows 8 или Windows 7.

Программа “PCEvent.exe” не предназначена для самостоятельной работы, она работает тогда, когда её запускает пользователь. Программа Model может быть установлена в любое удобное для пользователя место. Для установки данной программы достаточно скопировать перечисленные ниже файлы в указанную папку на компьютере пользователя. Каких-либо настроек после копирования программы Model не требуется.

Список необходимых файлов программы “PCEvent.exe”:

* Model 192 512 байт

1.3.5 Требования к персоналу (программисту)

Программист должен иметь минимум среднее техническое образование и должен быть аттестован минимум на II квалификационную группу по электробезопасности (для работы с конторским оборудованием)

В перечень задач, выполняемых программистом, должны входить:

а) задача поддержания работоспособности технических средств;

б) задача поддержания работоспособности системных программных средств - операционной системы.

2. ХАРАКТЕРИСТИКА ПРОГРАММЫ

2.1 Описание основных характеристик программы.

2.1.1 Режим работы программы

Режим работы программы “PCEvent.exe” круглосуточный непрерывный.

2.1.2 Контроль правильности выполнения программы.

После запуска программы и некоторого времени работы нажать кнопку "Пауза", и снова продолжить если программа продолжит работу, то все исправно.

2.2 Описание основных особенностей программы

Программа “PCEvent.exe” не имеет пользовательского интерфейса и не предоставляет конечному пользователю возможности настройки и изменения своих параметров.

3. ОБРАЩЕНИЕ К ПРОГРАММЕ

3.1 Загрузка и запуск программы

Загрузка и запуск программы “PCEvent.exe” осуществляется способами, детальные сведения о которых изложены в "Руководстве пользователя" программным комплексом.

3.2 Выполнение программы

3.2.1 Выполнение функции программы

Выполнение функций программы “PCEvent.exe” осуществляется способами, детальные сведения о которых изложены в "Руководстве пользователя" программным комплексом.

3.3 Завершение работы программы

Программа “Model.exe” выключается простейшим нажатием на кнопку "Выход".

4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

4.1 Организация используемой входной информации

Программа “Model.exe” в ходе своей работы не использует входных данных которые можно ввести. Все входные данные уже внесены и появляются исключительно как подсказка у работе.

4.2 Организация используемой выходной информации

Программа “Model.exe” в ходе своей работы все выходные данные выдаёт как граффики.

5. СООБЩЕНИЯ

5.1 Сообщение о незаполненном поле.

Программа “PCEvent.exe” выдает сообщение о незаполненном поле в справочнике при добавлении записи или при вводе параметров (рисунок Б.1).

Рисунок Б.1 - Сообщение о незаполненном поле

5.2 Сообщение об успешном сохранении записи.

Программа “PCEvent.exe” выдает сообщение об успешном сохранении записи в справочнике (рисунок Б.2).

Рисунок Б.2 - Сообщение об успешном сохранении записи

5.3 Сообщение о подтверждении удаления записи.

Программа “PCEvent.exe” выдает сообщение о подтверждении удаления записи в справочнике (рисунок Б.3).

Рисунок Б.3 - Сообщение о подтверждении удаления записи

5.4 Сообщение о неправильно введённом логине или пароле.

Программа “PCEvent.exe” выдает сообщение о неправильно введённом логине или пароле в окне авторизации (рисунок Б.4).

Рисунок Б.4 - Сообщение о неправильно введённом логине или пароле

Всё связанное с дальнейшими действиями описано в "Руководстве пользователя" программным комплексом.

ПРИЛОЖЕНИЕ 3

Листинг основных модулей программы

journal.h

#ifndef JOURNAL_H

#define JOURNAL_H

#include <QDialog>

#include <QSqlQueryModel>

#include <QSqlQuery>

namespace Ui {

class Journal;

}

class Journal : public QDialog

{

Q_OBJECT

public:

explicit Journal(QWidget *parent = 0);

~Journal();

private slots:

void on_btnBack_clicked();

private:

Ui::Journal *ui;

};

#endif // JOURNAL_H

login.h

#ifndef LOGIN_H

#define LOGIN_H

#include <QDialog>

#include <QDebug>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QString>

#include <QMessageBox>

namespace Ui {

class Login;

}

class Login : public QDialog

{

Q_OBJECT

public:

QSqlDatabase db;

void connClose()

{

db.close();

db.removeDatabase(db.connectionName());

}

bool connOpen()

{

QString dbName = "C:\\BD1.mdb";

QSqlDatabase db = QSqlDatabase::addDatabase(QLatin1String("QODBC"));

QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);

db.setDatabaseName(conn1);

if(!db.open()){

qDebug()<<("Failed to open the database");

return false;

}

else{

qDebug()<<("Connected....");

return true;

}

}

public:

explicit Login(QWidget *parent = 0);

~Login();

private slots:

void on_btnExit_clicked();

void on_btnLogin_clicked();

void on_btnClear_clicked();

private:

Ui::Login *ui;

};

#endif // LOGIN_H

mainwindow.h

#ifndef LOGIN_H

#define LOGIN_H

#include <QDialog>

#include <QDebug>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QString>

#include <QMessageBox>

namespace Ui {

class Login;

}

class Login : public QDialog

{

Q_OBJECT

public:

QSqlDatabase db;

void connClose()

{

db.close();

db.removeDatabase(db.connectionName());

}

bool connOpen()

{

QString dbName = "C:\\BD1.mdb";

QSqlDatabase db = QSqlDatabase::addDatabase(QLatin1String("QODBC"));

QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);

db.setDatabaseName(conn1);

if(!db.open()){

qDebug()<<("Failed to open the database");

return false;

}

else{

qDebug()<<("Connected....");

return true;

}

}

public:

explicit Login(QWidget *parent = 0);

~Login();

private slots:

void on_btnExit_clicked();

void on_btnLogin_clicked();

void on_btnClear_clicked();

private:

Ui::Login *ui;

};

#endif // LOGIN_H

mainwindow.h

#include <QMainWindow>

#include <QSqlDatabase>

#include <QTimer>

#include <QPixmap>

namespace Ui {

class MainWindow1;

}

class MainWindow1 : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow1(QWidget *parent = 0);

~MainWindow1();

private slots:

void on_actionSpravPol_triggered();

void on_actionSpravPar_triggered();

void on_actionExit_triggered();

void on_actionSpravSost_triggered();

void on_actionSpravObj_triggered();

void on_actionJournal_triggered();

void on_actionSpravka_triggered();

void QQQ();

void on_pushButton_clicked();

private:

Ui::MainWindow1 *ui;

QSqlDatabase db;

QTimer *m_timer;

void UpdateState();

};

#endif // MAINWINDOW1_H

objects.h

#ifndef OBJECTS_H

#define OBJECTS_H

#include <QDialog>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QSqlTableModel>

#include <QMessageBox>

#include <QTableView>

#include <QSqlError>

namespace Ui {

class Objects;

}

class Objects : public QDialog

{

Q_OBJECT

public:

explicit Objects(QWidget *parent = 0);

~Objects();

private slots:

void on_btnSaveExit_clicked();

void on_btnInsert_clicked();

void on_btnDelete_clicked();

private:

Ui::Objects *ui;

QSqlDatabase db;

QSqlTableModel *model;

QTableView *view;

};

#endif // OBJECTS_H

parametry.h

#ifndef PARAMETRY_H

#define PARAMETRY_H

#include <QDialog>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QSqlTableModel>

#include <QMessageBox>

#include <QTableView>

#include <QSqlError>

namespace Ui {

class Parametry;

}

class Parametry : public QDialog

{

Q_OBJECT

public:

explicit Parametry(QWidget *parent = 0);

~Parametry();

private slots:

void on_btnSaveExit_clicked();

void on_btnInsert_clicked();

void on_btnDelete_clicked();

private:

Ui::Parametry *ui;

QSqlDatabase db;

QSqlTableModel *model;

QTableView *view;

};

#endif // PARAMETRY_H

polzovateli.h

#ifndef POLZOVATELI_H

#define POLZOVATELI_H

#include <QDialog>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QSqlTableModel>

#include <QMessageBox>

#include <QTableView>

#include <QSqlError>

namespace Ui {

class Polzovateli;

}

class Polzovateli : public QDialog

{

Q_OBJECT

public:

explicit Polzovateli(QWidget *parent = 0);

~Polzovateli();

private slots:

void on_btnInsert_clicked();

void on_btnDelete_clicked();

void on_btnSaveExit_clicked();

private:

Ui::Polzovateli *ui;

QSqlDatabase db;

QSqlTableModel *model;

QTableView *view;

};

#endif // POLZOVATELI_H

sostoyaniya.h

#ifndef SOSTOYANIYA_H

#define SOSTOYANIYA_H

#include <QDialog>

#include <QSql>

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QSqlTableModel>

#include <QMessageBox>

#include <QTableView>

#include <QSqlError>

namespace Ui {

class Sostoyaniya;

}

class Sostoyaniya : public QDialog

{

Q_OBJECT

public:

explicit Sostoyaniya(QWidget *parent = 0);

~Sostoyaniya();

private slots:

void on_btnSaveExit_clicked();

void on_btnInsert_clicked();

void on_btnDelete_clicked();

private:

Ui::Sostoyaniya *ui;

QSqlDatabase db;

QSqlTableModel *model;

QTableView *view;

};

#endif // SOSTOYANIYA_H

spravka.h

#ifndef SPRAVKA_H

#define SPRAVKA_H

#include <QDialog>

namespace Ui {

class Spravka;

}

class Spravka : public QDialog

{

Q_OBJECT

public:

explicit Spravka(QWidget *parent = 0);

~Spravka();

private slots:

void on_pushButton_clicked();

private:

Ui::Spravka *ui;

};

#endif // SPRAVKA_H

spravochniki.h

#ifndef SPRAVOCHNIKI_H

#define SPRAVOCHNIKI_H

#include <QDialog>

namespace Ui {

class Spravochniki;

}

class Spravochniki : public QDialog

{

Q_OBJECT

public:

explicit Spravochniki(QWidget *parent = 0);

~Spravochniki();

private slots:

void on_btnBack_clicked();

void on_btnSpravPol_clicked();

void on_btnSpravPar_clicked();

void on_btnSpravSost_clicked();

void on_pushButton_clicked();

private:

Ui::Spravochniki *ui;

};

#endif // SPRAVOCHNIKI_H

journal.cpp

#include "journal.h"

#include "ui_journal.h"

Journal::Journal(QWidget *parent) :

QDialog(parent),

ui(new Ui::Journal)

{

ui->setupUi(this);

QSqlQueryModel * modal = new QSqlQueryModel();

QSqlQuery *qry = new QSqlQuery();

qry->prepare("SELECT objectName, stateName, eventDate, eventTime, eventTemperatureValue, eventHumidityValue "

"FROM journal, object, state "

"WHERE "

"(journal.objectID = object.objectID) AND (journal.stateID = state.stateID) ");

qry->exec();

modal->setQuery(*qry);

ui->tableView->setModel(modal);

modal->setHeaderData(0, Qt::Horizontal, QObject::trUtf8("Объект"));

modal->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Состояние объекта"));

modal->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Дата"));

modal->setHeaderData(3, Qt::Horizontal, QObject::trUtf8("Время"));

modal->setHeaderData(4, Qt::Horizontal, QObject::trUtf8("Значение температуры"));

modal->setHeaderData(5, Qt::Horizontal, QObject::trUtf8("Значение влажности"));

}

Journal::~Journal()

{

delete ui;

}

void Journal::on_btnBack_clicked()

{

close();

}

login.cpp

#include "login.h"

#include "ui_login.h"

#include "mainwindow1.h"

Login::Login(QWidget *parent) :

QDialog(parent),

ui(new Ui::Login)

{

ui->setupUi(this);

// if(connOpen())

// ui->lblResult->setText("[+]База Данных подключена");

// else

// ui->lblResult->setText("[!]Файл Базы Данных не найден");

}

Login::~Login()

{

delete ui;

}

void Login::on_btnExit_clicked()

{

db.close();

db.removeDatabase(db.connectionName());

qApp->exit();

}

void Login::on_btnLogin_clicked()

{

QString Username, Password;

Username = ui->txtUser->text();

Password = ui->txtPass->text();

if(!connOpen()){

qDebug() << "No connection to db :(";

}

QSqlQuery qry;

qry.prepare("SELECT * FROM USER Where userUsername=\'" + Username +"\' AND userPassword=\'" + Password + "\'");

if(qry.exec())

{

if(qry.next())

{

this->hide();

MainWindow1 w;

w.show();

}

else

{

QMessageBox::warning(this, "Ошибка!","Неверный логин или пароль.");

ui->txtUser->setText("");

ui->txtPass->setText("");

}

}

}

void Login::on_btnClear_clicked()

{

ui->txtUser->setText("");

ui->txtPass->setText("");

}

main.cpp

#include "login.h"

#include "mainwindow1.h"

#include <QApplication>

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

Login login;

login.setModal(true);

login.exec();

MainWindow1 w;

w.show();

return a.exec();

}

mainwindow.cpp

#include "mainwindow1.h"

#include "ui_mainwindow1.h"

#include "polzovateli.h"

#include "parametry.h"

#include "login.h"

#include "journal.h"

#include "spravka.h"

#include "sostoyaniya.h"

#include "objects.h"

#include <QStringList>

MainWindow1::MainWindow1(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow1)

{

ui->setupUi(this);

m_timer = new QTimer(this);

connect(m_timer, SIGNAL(timeout()), this, SLOT(QQQ()));

m_timer->setInterval(5000);

m_timer->start();

UpdateState();

}

MainWindow1::~MainWindow1()

{

delete ui;

}

void MainWindow1::QQQ()

{

UpdateState();

}

void MainWindow1::UpdateState()

{

QString dbName = "C:\\BD1.mdb";

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "q1");

QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);

db.setDatabaseName(conn1);

db.open();

if (db.isOpen()) {

QSqlQuery q(db);

QSqlQuery q1(db);

QSqlQuery q2(db);

QSqlQuery q3(db);

QSqlQuery q4(db);

QString query;

QStringList objects, objectNames;

objects.clear();

objectNames.clear();

query = "SELECT objectID, objectName FROM object ";

if (q.exec(query)) {

while (q.next()) {

objects.append(q.value(0).toString());

objectNames.append(q.value(1).toString());

}

int journalID = 0;

int eventTemperatureValue, eventHumidityValue = 0;

for(int i = 0; i<objects.length(); i++) {

query = QString("SELECT eventID, eventTemperatureValue, eventHumidityValue "

"FROM journal "

"WHERE eventID IN ( "

"SELECT LAST(eventID) FROM journal WHERE objectID = %1 "

") ")

.arg(objects.at(i));

if (q1.exec(query)) {

//QMessageBox::information(this, "", query);

while (q1.next()) {

journalID = q1.value(0).toInt();

eventTemperatureValue = q1.value(1).toInt();

eventHumidityValue = q1.value(2).toInt();

// QMessageBox::information(this,"", QString("Объект - %1 Темп1 - %2 Темп2 - %3 ")

// .arg(objects.at(i))

// .arg(eventTemperatureValue)

// .arg(eventHumidityValue));

int stateID = 0;

QString stateName;

query = QString("SELECT stateID, stateName "

"FROM state "

"WHERE "

"(%1 >= stateTemperatureMin AND %1 <= stateTemperatureMax) "

"AND (%2 >= stateHumidityMin AND %2 <= stateHumidityMax) ")

.arg(eventTemperatureValue)

.arg(eventHumidityValue);

if (q2.exec(query)) {

while (q2.next()) {

stateID = q2.value(0).toInt();

stateName = q2.value(1).toString();

}

query = QString("UPDATE journal "

"SET stateID = %1 "

"WHERE eventID = %2 ")

.arg(stateID)

.arg(journalID);

//QMessageBox::information(this,"", query);

if (q3.exec(query)) {

switch (i) {

case 0:

ui->lblObject1->setText(objectNames.at(i));

ui->lblState1->setText(stateName);

// if(stateID == 1){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 2){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 3){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 4){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 5)

// {

// ui->lblState1->setStyleSheet("background-color: red");

// }

break;

case 1:

ui->lblObject2->setText(objectNames.at(i));

ui->lblState2->setText(stateName);

// if(stateID == 1){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 2){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 3){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 4){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 5)

// {

// ui->lblState1->setStyleSheet("background-color: red");

// }

break;

case 2:

ui->lblObject3->setText(objectNames.at(i));

ui->lblState3->setText(stateName);

// if(stateID == 1){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 2){

// ui->lblState1->setStyleSheet("background-color: green");

// }

// if(stateID == 3){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 4){

// ui->lblState1->setStyleSheet("background-color: yellow");

// }

// if(stateID = 5)

// {

// ui->lblState1->setStyleSheet("background-color: red");

// }

break;

}

}

}

//To Do.....

}

}

else {

QMessageBox::information(this,"", q1.lastError().text());

}

}

}

else {

QMessageBox::information(this, "", q.lastError().text());

}

}

else {

QMessageBox::information(this, "", db.lastError().text());

}

}

void MainWindow1::on_actionSpravPol_triggered()

{

Polzovateli polzovateli;

polzovateli.setModal(true);

polzovateli.exec();

}

void MainWindow1::on_actionSpravPar_triggered()

{

Parametry parametry;

parametry.setModal(true);

parametry.exec();

}

void MainWindow1::on_actionExit_triggered()

{

db.close();

db.removeDatabase(db.connectionName());

qApp->exit();

}

void MainWindow1::on_actionSpravSost_triggered()

{

Sostoyaniya sostoyaniya;

sostoyaniya.setModal(true);

sostoyaniya.exec();

}

void MainWindow1::on_actionSpravObj_triggered()

{

Objects objects;

objects.setModal(true);

objects.exec();

}

void MainWindow1::on_actionJournal_triggered()

{

Journal journal;

journal.setModal(true);

journal.exec();

}

void MainWindow1::on_actionSpravka_triggered()

{

Spravka spravka;

spravka.setModal(true);

spravka.exec();

}

void MainWindow1::on_pushButton_clicked()

{

QString dbName = "C:\\BD1.mdb";

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "q1");

QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);

db.setDatabaseName(conn1);

db.open();

if (db.isOpen()) {

QSqlQuery q(db);

QSqlQuery q1(db);

QSqlQuery q2(db);

QSqlQuery q3(db);

QSqlQuery q4(db);

QString query;

QStringList objects, objectNames;

objects.clear();

objectNames.clear();

query = "SELECT objectID, objectName FROM object ";

if (q.exec(query)) {

while (q.next()) {

objects.append(q.value(0).toString());

objectNames.append(q.value(1).toString());

}

int journalID = 0;

int eventTemperatureValue, eventHumidityValue = 0;

for(int i = 0; i<objects.length(); i++) {

query = QString("SELECT eventID, eventTemperatureValue, eventHumidityValue "

"FROM journal "

"WHERE eventID IN ( "

"SELECT LAST(eventID) FROM journal WHERE objectID = %1 "

") ")

.arg(objects.at(i));

if (q1.exec(query)) {

//QMessageBox::information(this, "", query);

while (q1.next()) {

journalID = q1.value(0).toInt();

eventTemperatureValue = q1.value(1).toInt();


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.