Разработка базы данных для автоматизированного составления графика дежурств и учёта рабочего времени службы охраны предприятия

 















Дипломная работа

Разработка базы данных для автоматизированного составления графика дежурств и учёта рабочего времени службы охраны предприятия


Содержание


Введение

. Анализ задачи

.1 Описание предметной области

.2 Функциональная модель

.3 Инструменты разработки

. Проектирование задачи

.1 Организация данных

.2 Система помощи

.3 Концептуальный прототип

. Реализация

.1 Функции и элементы управления

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

.1.2 Описание принципа создания расписания и сопутствующих документов

.2 Функциональное тестирование

.3 Полное тестирование

. Применение

.1 Назначение

.2 Среда функционирования

.3 Инсталляция

. Экономический анализ ДП

.1 Краткая характеристика программного средства

.2 Расчет себестоимости

.2.1 Расчет объема ПС

.2.2 Оценка трудоемкости разработки ПС

.2.3 Расчет численности разработчиков

.2.4 Расчет основной заработной платы

.2.5 Расчет дополнительной заработной платы

.2.6 Отчисления в фонд социальной защиты

.2.7 Отчисления в Белгосстрах

.2.8 Расчет стоимости материалов

.2.9 Расчет стоимости машинного времени

.2.10 Прочие расходы

.2.11 Расчет накладных расходов

.3 Расчет отпускной цены

. Вопросы охраны труда при работе с компьютерами

.1 Социально-экономическое значение охраны труда

.1.1 Оптимальные условия труда

.1.2 Обеспечение охраны труда на рабочем месте оператора ЭВМ

Заключение

Список использованных источников

Приложение А

Приложение Б

Приложение В

инсталляция программа база данных табель


Введение


Программирование - процесс создания компьютерных программ <#"justify">-«Введение» - обзор и оценка современного состояния решаемой проблемы;

-«Анализ задачи» - содержит описание предметной области, функциональной модели и инструменты разработки;

-«Проектирование задачи» - при проектировании задачи рассматриваются данные, процессы и инструменты разработки в комплексе;

-«Применение» - название и назначение программы;

-«Реализация» - заключается в кодировании и тестировании ПП;

-«Экономический анализ ДП» - расчет затрат на реализацию программы, а также расчет стоимости программного продукта;

-«Вопросы охраны труда при работе с компьютерами» - социально-экономическое значение охраны труда;

-«Заключение» - краткая формулировка проблемы, пути решения проблемы, использованные методы и средства, возможность модификации;

-«Список использованных источников» - перечень источников, из которых бралась информация для реализации, поставленной задачи;

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


1. Анализ задачи


1.1 Описание предметной области


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

Требуется реализовать следующие функции:

-учёт персонала;

-учёт рабочих и выходных дней;

-ведение статистики;

-составление графика дежурств;

-генерация документов сопутствующих графику дежурств и экспорт их в документ Excel.

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

Преимущества программного средства:

-удобный и дружественный интерфейс для ввода и просмотра данных;

-возможность указания приоритетных или нежелательных дней для дежурства;

-возможность настройки внешнего вида программы;

-интерактивная помощь.

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

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

1.2 Функциональная модель


В программе исходная и вводимая пользователем информация хранятся в базе данных DB, которая имеет следующую структуру:

таблица Workers содержит столбцы:

)ID - уникальный идентификатор;

2)Fam - фамилия работника;

)IO - инициалы работника;

)Dol - занимаемая работником должность;

)D_k -код занимаемой должности;

)RVS - количество часов;

)Sovm - флаг указывающий является ли работник совместителем;

)Dsovm - совмещаемая должность;

)KDS - код совмещаемой должности;

10)RSVD - количество часов для совмещаемой должности;

11)Razn - степень равномерности распределения дежурств;

)PC - данные о предыдущим дежурстве.

таблица Ras содержит столбцы:

)Names - комментарий;

2)Date - дата.

таблица PRZ содержит столбцы:

)Names - название праздника;

2)OPR - строка идентификатор даты проведения праздника.

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

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


1.3 Инструменты разработки


Для реализации поставленной задачи в качестве среды разработки приложения была выбрана среда программирования Embarcadero C++Builder 2010. C++ Builder - программный продукт, инструмент быстрой разработки приложений <#"justify">-высокая совместимость с языком С, позволяющая использовать весь существующий С-код (код С может быть с минимальными переделками скомпилирован компилятором С++);

-поддерживаются различные стили и технологии программирования, включая традиционное директивное программирование, ООП, обобщенное программирование;

-имеется возможность работы на низком уровне с памятью, адресами, портами;

-возможность создания обобщённых контейнеров и алгоритмов <#"justify">Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Ни одна из языковых возможностей, приводящая к дополнительным накладным расходам, не является обязательной для использования - при необходимости язык позволяет обеспечить максимальную эффективность программы. [3]


2. Проектирование задачи


2.1Организация данных


Программное средство состоит из шестнадцати взаимосвязанных модулей: Unit1.cpp - модуль главного меню программы;

-Unit2.cpp - модуль управления кадрами;

-Unit3.cpp - модуль подключение к базе данных;

-Unit4.cpp - модуль учета праздников и переносов;

-Unit5.cpp - модуль настройки;

-Unit6.cpp - модуль статистики;

-Unit7.cpp - модуль загрузки;

-Unit8.cpp - модуль ввода и редактирования данных для обозначения рабочего дня;

-Unit9.cpp - модуль ввода и редактирования данных для обозначения праздничного дня;

-Unit10.cpp - модуль ввода и редактирования данных для учёта работников;

-Unit11.cpp - модуль генерации расписания и переноса расписания в документы;

-Unit12.cpp - модуль указания месяца для создания расписания;

-Unit13.cpp - модуль экспорта данных в MS Excel;

-Unit14.cpp - модуль установки реквизитов;

-Unit15.cpp - модуль выводящий сведения о программе;

-Unit16.cpp - модуль очистки данных.


2.2 Система помощи


В программе реализована система справки для помощи пользователю в работе с программой. Она представляет собой CHM файл, и вызывается через нажатие на соответствующую кнопку с надписью «Справка». В справке рассмотрено десять вопросов касающихся работы программы. Каждый вопрос рассмотрен в отдельном пункте и содержит развернутый и полный ответ.

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


2.3 Концептуальный прототип


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

Для учёта персонала будет разработана система позволяющая учитывать: должность, продолжительность рабочего дня индивидуально для каждого работника, возможность совмещать две профессии на одном предприятии.

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


3. Реализация


3.1 Функции и элементы управления


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

В дополнение к реализованным функциям, для повышения удобства работы с программой была разработана система подсказок, которая активируется по наведению курсора мыши на специальную область, отмеченную изображением (в соответствии с рисунком 3.1).


Рисунок 3.1 - Область подсказки.


После активации подсказки будет выведено окно (в соответствии с рисунком 3.2) содержащее текст подсказки. После того как курсор покинет отмеченную, область подсказка исчезнет.


Рисунок 3.2 - Подсказка.


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

3.1.1 Описание основной части программы

При запуске программы пользователь увидит окно приветствия с индикатором загрузки (в соответствии с рисунком 3.3). При первом запуске программы после установки на экране появляется напоминание, что программа запущена в первый раз и требует настройки.


Рисунок 3.3 - Окно приветствия


После того, как загрузка программы будет завершена, пользователь увидит главное меню программы (в соответствии с рисунком 3.4) при помощи которого возможен переход к большинству доступных функций в программе.


Рисунок 3.4 - Главное меню программы

Меню содержит восемь кнопок:

-кнопка «Выход» - предназначена для завершения работы с программой;

-кнопка «Справка» - предназначена для получения справки по программе и методах работы с программой;

-кнопка «О программе» - вызывает окно (в соответствии с рисунком 3.5) содержащее информацию версии, разработчиках и прочей информации о программе;


Рисунок 3.5 - О программе


-кнопка «Статистики» - предназначена для отображения окна статистик касающихся разных аспектов работы программы (в соответствии с рисунком 3.6);


Рисунок 3.6 - Статистика

кнопка «Настройки» - используется для отображения окна настроек (в соответствии с рисунком 3.7). Окно настроек используется для установок настроек необходимых для работы программы. В частности это: определение требуемого количества работников для первой и второй смены, настройка внешнего вид программы, просмотреть архив документов (открытие произойдет в отдельном окне стандартного проводника Windows (в соответствии с рисунком 3.8), автоматически очистить архив документов и обнулить данные касающиеся работы программы;


Рисунок 3.7 - Настройки


Рисунок 3.8 - Архив документов

кнопка «Рабочий календарь» - предназначена для вызова окна отображающего производственный календарь, который имеет режим расширения, при активации которого появляется дополнительная панель, содержащая список праздничных дней и список рабочих дней (в соответствии с рисунком 3.9), появившихся вследствие переносов праздничных дней. Так же дополнительная часть позволяет добавлять, редактировать и удалять даты из первого и второго списков. Редактирование можно вызвать нажатием на соответствующую кнопку или посредством двойного клика на запись требующую изменения. Удаление можно вызвать нажатием на соответствующую кнопку или при помощи нажатия на клавишу «Delete». При вызове редактирования или добавления появляется окно (в соответствии с рисунком 3.10);


Рисунок 3.9 - Производственный календарь


Рисунок 3.10 - Окно добавления или редактирования записей

кнопка «Управление кадрами» - предназначена для управления записями касающихся персонала предприятия (в соответствии с рисунком 3.11), записи можно добавлять, редактировать, удалять. Так же как и при работе с датами производственного календаря редактирование записи можно вызвать посредством двойного клика на ней, а удаление нажатием кнопки «Delete». Добавление и редактирование записей происходит в окне (в соответствии с рисунком 3.12);


Рисунок 3.11 - Управление кадрами


Рисунок 3.12 - Окно добавления или редактирования записей

кнопка «Работа с документами» - предназначена для открытия окон предназначенных для генерации расписания и его экспорта в MS Excel.


3.1.2 Описание принципа создания расписания и сопутствующих документов

После нажатия кнопки «Работа с документами» появится окно с предложением выбрать месяц и год (в соответствии с рисунком 3.13), на основании которых, будет в дальнейшем создано расписание дежурств.


Рисунок 3.13 - Выбор месяца и года


После выбора надлежащих данных и нажатия кнопки «Принять» появиться окно (в соответствии с рисунком 3.14), предназначенное для создания расписания дежурств.


Рисунок 3.14 - Выбор месяца и года

В правой части формы расположено функциональное меню, состоящее из семи кнопок:

-кнопка «Генерация» - предназначена для генерации расписания дежурств;

-кнопка «Документы» - предназначена для создания документов по имеющимся данным;

-кнопка «Сброс» - предназначена для удаления результатов генерации расписания;

-кнопка «Очистить» - предназначена для удаления меток дней и результатов генерации расписания;

-кнопка «Календарь» - предназначена для вызова производственного календаря, действия выполняемые программой после нажатия этой кнопки аналогичны действиям после нажатия кнопки «Рабочий календарь» из главного меню программы;

-кнопка «Настройки» - предназначена для вызова настроек программы, действия выполняемые программой после нажатия этой кнопки аналогичны действиям после нажатия кнопки «Настройки» из главного меню программы;

-кнопка «Назад» - закрывает окно.

В правой части программы имеется выделенная группа с названием «Метки дней». Она предназначена для указания приоритетных дней для дежурств. После выбора метки нужно, кликнуть на соответствующую ячейку таблицы для того, что бы отметить необходимый день.

После генерации необходимого расписания дежурств, следует нажать на кнопку документы для создания документов сопутствующих и отражающих данное расписание дежурств. После нажатия на кнопку «Документы» появляется окно (в соответствии с рисунком 3.15), содержащие два документа (на отдельных вкладках).

Рисунок 3.15 - Выбор месяца и года


В верхней части окна расположены четыре кнопки:

-кнопка «Экспорт» - предназначена для экспортирования данных в MS Excel;

-кнопка «Реквизиты» - предназначена для установки реквизитов документа, таких как название организации, ФИО директора и ФИО ответственного за составление документов начальника охраны;

-кнопка «Справка» - предназначена для вызова справки, действия выполняемые программой после нажатия этой кнопки аналогичны действиям после нажатия кнопки «Справка» из главного меню программы;

-кнопка «Назад» - предназначена для закрытия текущего окна.

После нажатия кнопки «Экспорт» текущие документы будут экспортированы в MS Excel и сохранены в архив. Если содержимое документа будет превышать одну страницу, то документ будет разнесен на несколько страниц. После экспорта информации будет выдано сообщение об успешности операции и будет запущен MS Excel для демонстрации результата работы программы и дальнейших действий над документами.

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


3.2 Функциональное тестирование


Тестирование процесс исследования программного обеспечения с целью получения информации о качестве продукта. [1]

Конечной целью любого процесса тестирования является обеспечение такого ёмкого понятия как качество, с учётом всех или наиболее критичных для данного конкретного случая составляющих. [5]

Качество можно определить как совокупную характеристику исследуемого ПО с учётом следующих составляющих:

-надёжность;

-сопровождаемость;

-практичность;

-эффективность;

-мобильность;

-функциональность.

Для реализации тестирования над программой был выполнен ряд операции. В таблице 3.1 приведены результаты тестирования программного продукта.


Таблица 3.1 - Результаты тестирования программного продукта

ДействиеРезультатЗапуск программыЗапускается программа. Появляется форма приветствия. Происходит загрузка программы. Исчезает форма приветствия. Появляется меню программыВызов статистикиОткрывается окно статистик. Статистики выводятся корректноВызов настроекПоявляется окно настроекУстановка настроекНастройки устанавливаются корректноВызов производственного календаряФорма открывается, необходимые данные выводятсяДобавление, редактирование и удаление датВсе операции выполнены успешноВызов формы предназначенной для работы с кадрамиФорма открывается, необходимые данные выводятсяДобавление, редактирование и удаление данных персоналаВсе операции выполнены успешноДействиеРезультатВызов справкиСправка запускаетсяНажатие на кнопку «Работа с документами»Появляется окно, предназначенное для ввода дат, после введения даты появляется окно, предназначенное для генерации расписания дежурствУстановка меток для обозначения приоритетных днейМетки устанавливаться и отображаются.Выполнение функций очистки поля для ввода данныхВыполнен успешноПроверка алгоритма генерации расписания дежурствАлгоритм выполнен успешноСоздание документовДокументы созданы, форма для их демонстрации показанаЗапуск OLE сервераOLE сервер запущен успешноЭкспорт данных в MS ExcelДанные экспортированыСохранение документаДокумент сохраненЗакрытие OLE сервераOLE сервер закрыт

В результате проведенного тестирования были обнаружены и исправлены допущенные ошибки.

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

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


3.3 Полное тестирование


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

Такой процесс формальной проверки или верификации может доказать, что дефекты отсутствуют с точки зрения используемого метода. То есть, нет никакой возможности точно установить или гарантировать отсутствие дефектов в программном продукте с учётом человеческого фактора, присутствующего на всех этапах жизненного цикла <#"justify">-проверка правильности взаимодействия элементов интерфейса;

-тестирование методов обработки данных;

-тестирование оптимизационных алгоритмов.

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


4. Применение


4.1 Назначение


Программа автоматически генерирует расписание дежурств службы охраны и автоматически переносит эти сведения в документы, которые в последствии можно экспортировать в MS Excel.

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

Данная программа может применяться на предприятии ООО «Белсветоимпорт», а также на любых других предприятиях имеющих собственную службу охраны и нуждающихся в составлении графиков дежурств на каждый месяц.

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


4.2 Среда функционирования


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

-процессор: Pentium III 800МГц и выше;

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

-не менее 100 MB свободного места на жестком диске;

-операционная система Windows XP SP3;

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

-клавиатура IBM PC любой модификации.

-наличие монитора VGA с разрешением не менее 1024x768 точек;

-наличие Microsoft Office Access 2003 и выше;

-наличие Microsoft Office Excel 2003 и выше;

-наличие Microsoft C++ Redistributable 2005 и выше.


4.3 Инсталляция


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

Для установки программы воспользуйтесь инсталлятором TPSSetup.exe. После запуска инсталлятора следуйте всем указаниям мастера инсталляции. При указании пути для установки программы избегайте в названиях папок специальных символов. После этого вы можете начинать работу с запуска файла TPS.exe.


5. Экономический анализ ДП


5.1 Краткая характеристика программного средства


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

В программе реализованы следующие функции:

-учет персонала службы охраны;

-учёт праздничных дней и переносов рабочих дней;

-создание графика учёта и табеля учёта рабочего времени;

-возможность указания желательного и нежелательного времени для дежурств;

-экспорт графика учёта и табеля учёта рабочего времени в MS Excel;

-учёт отработанного времени за месяц;

-вызов справочной информации;

-подсказки при работе с программой;

-смена внешнего вида программы;

-ведение архива документов с возможностью автоматической очистки.

Программа автоматически генерирует расписание дежурств службы охраны и автоматически переносит эти сведения в документы, которые в последствии можно экспортировать в MS Excel.

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


5.2 Расчет себестоимости


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

-заработная плата исполнителей основная (ЗО) и дополнительная (ЗД);

-отчисления в фонд социальной защиты населения (ЗСЗ);

-отчисления в Белгосстрах (ЗБГС);

-материалы и комплектующие (М);

-машинное время (РМ);

-прочие прямые затраты (Пз);

-накладные расходы (РН);

-расходы на сопровождение и адаптацию (Рсаi).

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


Таблица 5.1 - Исходные данные для расчета сметы затрат и отпускной цены

Наименование показателейБуквенные обозначенияЕдиницы измеренияЗначения показателейГруппа сложностиединиц2Дополнительный коэффициент сложностиКсл%0,07Коэффициент премированияКпединиц1,2Плановая продолжительность разработкиТрдЛет1,3Количество дней в годуДгДней365Количество праздничных дней в годуДпДней9Количество выходных дней в годуДвДней99Количество дней отпускаДоДней25Продолжительность рабочего дняТчЧ8Среднемесячная расчетная норма времени при 40-часовой рабочей неделеФрЧ170,8Норматив дополнительной заработной платыНп%10%Тарифная ставка 1-ого разрядаТм1Руб120 000Ставка отчислений в фонд социальной защиты населенияНсз%34Ставка отчислений в БелгосстрахНБГС%0,6Норматив прочих затратНпз%3Наименование показателейБуквенные обозначенияЕдиницы измеренияЗначения показателейНорматив накладных расходовНрн%60Норматив на сопровождение и адаптацию ПСНрса%1Ставка налога на добавленную стоимостьНДС%20Ставка налога на прибыльПн%24Уровень рентабельностиУрпi%17

5.2.1 Расчет объема ПС

Объем ПС определяется путем подбора аналогов на основании классификации типов ПС (в соответствии с таблицей А.1) каталога функции ПС и аналогов ПС в разрезе функций (в соответствии с таблицами А.1 и А.2), которые постоянно обновляются и утверждаются в установленном порядке. На основании информации о функциях разрабатываемого ПС по каталогу функций определяется объем функций (в соответствии с таблицей А.2). С использованием среды разработки C++ Builder общий объем ПС рассчитывается по формуле (5.1):


,(5.1)


гдеVO - общий объем ПС;i - объем функций ПС;- общее число функций.

Для определения объема ПС воспользуемся нормативными документами, приведёнными в приложении А.

Список функций, реализуемых ПС с использованием среды разработки C++ Builder, и их объём представлен в таблице 5.2.


Таблица 5.2 - Характеристика функций и их объём

Номер функцииСодержание функцийОбъем (условных машинных команд)102Контроль, предварительная обработка и ввод информации550103Анализ входного языка660105Обработка входного заказа и формирование таблиц900203Формирование баз данных1750204Обработка наборов и записей базы данных2350208Организация поиска и поиск в базе данных5460305Обработка файлов800309Формирование файла1080506Обработка ошибочных и сбойных ситуаций410604Справка и обучение680703Расчет показателей500704Процессор отчетов1230707Графический вывод результатов310

На основании этих данных получим:

V0= 550 + 660 + 900 + 1750 + 2350 +5460 +800 + 1080 + 410 + 680 + 500 + 1230 + 310 = =16680 (условных машинных команд).


5.2.2 Оценка трудоемкости разработки ПС

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

Тн = 406 (человеко-дней)

То же с учетом поправочного коэффициента, учитывающего разработку программного средства с использованием современных ПЭВМ:

Тн = 406 0,7 = 284,2 (человеко-дней)

С учетом дополнительного коэффициента сложности Ксл рассчитаем общую трудоемкость ПС по формуле (5.2):


,(5.2)


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

Тн - нормативная трудоемкость ПС, человеко-дни;

Ксл - дополнительный коэффициент сложности ПС.

Подставив данные в формулу (5.2), получим:

То = 284,2 + (284,2 0,07) =304,09 (человеко-день).


5.2.3 Расчет численности разработчиков

На основании трудоемкости разработки ПС и установленного периода разработки рассчитаем общую плановую численность разработчиков:


,(5.3)


Где Чр - плановая численность разработчиков (чел.);

Фэф - годовой эффективный фонд времени работы одного работника в течение года (дней в год);

Трд - плановая продолжительность разработки ПС.

Подставив данные в формулу (5.3), получим:

(разработчик).


Эффективный фонд времени работы одного работника (ФЭФ) рассчитывается по формуле (5.4):


Фэф = Дг - Дп - Дв - До, (5.4)


гдеДг - количество дней в году;

Дп - количество праздничных дней в году;

Дв - количество выходных дней в году;

До - количество дней отпуска;

Подставив данные в формулу (5.4), получим:

Фэф = 365 - 9 - 99 - 25 = 232 (дней).

В соответствии с "Рекомендациями по применению "Единой тарифной сетки" рабочих и служащих народного хозяйства" и тарифными разрядами и коэффициентами должностей руководителей научных организаций и вычислительных центров, бюджетных учреждений науки непроизводственных отраслей народного хозяйства каждому исполнителю устанавливается разряд и тарифный коэффициент. Разработкой программного средства занимается техник-программист второй категории (8 разряд). Тарифный коэффициент 8 разряда - 2,17.


5.2.4 Расчет основной заработной платы

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

,(5.5)


где Тм1 - месячная тарифная ставка 1-го разряда, руб.;

Тк - тарифный коэффициент соответствующего разряда.

Разработкой программного средства занимаются техники - программисты второй категории (8 разряд). Тарифный коэффициент 8 разряда - 2,17.

Часовую тарифную ставку рассчитаем путем деления месячной тарифной ставки на установленную в 2010 году среднемесячную расчетную норму времени при 40-часовой рабочей неделе - 170,8 часа.


(5.6)


Где Тч - часовая тарифная ставка (руб.);

Тм - месячная тарифная ставка (руб.).

По формулам (5.5) и (5.6) определим месячную и часовую тарифные ставки исполнителя - техника-программиста второй категории:



Основная заработная плата исполнителей на конкретное ПС рассчитывается по формуле (5.7):


,(5.7)


где n - количество исполнителей, занятых разработкой конкретного ПС;чi - часовая тарифная ставка i-го исполнителя (руб.);

Фэi - эффективный фонд рабочего времени i-го исполнителя (дней);

Тч - количество часов работы в день (ч);

К - коэффициент премирования.

Подставив данные в формулу (5.7), получим:

Зоi = 8 304,09 1,2 = 4450680,7 (руб.).


5.2.5 Расчет дополнительной заработной платы

Дополнительная заработная плата на конкретное ПС (Здi) включает выплаты, предусмотренные законодательством о труде (оплата отпусков, льготных часов, времени выполнения государственных обязанностей и других выплат, не связанных с основной деятельностью исполнителей), и определяется по нормативу в процентах к основной заработной плате:


,(5.8)


гдеЗдi - дополнительная заработная плата исполнителей на конкретное ПС;

НД - норматив дополнительной заработной платы (10 %) .

Подставив данные в формулу (5.8), получим:


Здi = = 445068,07 (руб.).


5.2.6 Отчисления в фонд социальной защиты

Отчисления в фонд социальной защиты населения (Зсзi) определим в соответствии с действующими законодательными актами по нормативу в процентном соотношении к фонду основной и дополнительной зарплаты исполнителей, определенной по нормативу, установленному в целом по организации.

Отчисления в фонд социальной защиты населения (Зсзi) определим по формуле (5.9):


(5.9)


Где НСЗ - норматив отчислений в фонд социальной защиты населения 34(%). Подставив данные в формулу (5.9), получим:


Зсзi = =1664554,58 (руб.).


5.2.7 Отчисления в Белгосстрах

Отчисления в Белгосстрах (Збгсi) определим в соответствии с действующими законодательными актами по нормативу в процентном соотношении к фонду основной и дополнительной заработной платы исполнителей. Норматив отчислений в Белгосстрах в 2010 году для данного вида деятельности установлен в размере 0,6%.


(5.10)


Подставив данные в формулу (5.10), получим:


ЗБГСi == 29374,49 (руб.).


5.2.8 Расчет стоимости материалов

Расходы по статье "Материалы" (М) определяются на основании сметы затрат, разрабатываемой на ПС с учетом действующих нормативов. По статье "Материалы" отражаются расходы на магнитные носители, бумагу, красящие ленты и другие материалы, необходимые для разработки ПС. Нормы расхода материалов в суммарном выражении (НМ) определяются в расчете на 100 строк исходного кода. Сумма затрат материалов рассчитывается по формуле (5.11):


(5.11)


Где НМi - норма расхода материалов в расчете на 100 строк исходного кода ПС;

VOi - общий объем ПС (строк исходного кода) на конкретное ПС;- понижающий коэффициент (таблица А.6).

Подставив данные в формулу (5.11), получим:


Мi == 28689,6 (руб.).


5.2.9 Расчет стоимости машинного времени

Расходы по статье "Машинное время" (Рмi) включают оплату машинного времени, необходимого для разработки и отладки ПС, которое определяется по нормативам (в машино-часах) на 100 команд (Нмв) машинного времени в зависимости от характера решаемых задач и типа ПЭВМ:


(5.12)


гдеЦмi - цена одного машино-часа - 150 руб.;оi - общий объем ПС (строк исходного кода);

Нмв - норматив расхода машинного времени на отладку 100 строк исходного кода (машино-часов);- понижающий коэффициент (таблица А.7).

Подставив данные в формулу (5.12), получим:


Рмi= = 150120 (руб.).


5.2.10 Прочие расходы

Расходы по статье "Прочие затраты" (Пзi) на конкретное ПС включают затраты на приобретение и подготовку специальной научно-технической информации и специальной литературы. Определим их по нормативу, разрабатываемому в целом по организации, в процентах к основной заработной плате:


(5.13)


гдеНпз - норматив прочих затрат в целом по организации %.

Подставив данные в формулу (5.13), получим:


Пзi == 133520,42 (руб.).


5.2.11 Расчет накладных расходов

Затраты по статье "Накладные расходы" (Рнi), связанные с необходимостью содержания аппарата управления, вспомогательных хозяйств и опытных (экспериментальных) производств, а также с расходами на общехозяйственные нужды (РНi), относятся на конкретное ПС по нормативу (НРН) в процентном отношении к основной заработной плате исполнителей. Норматив устанавливается в целом по организации:

(5.14)


гдеРнi - накладные расходы на конкретную ПС (руб.);

Нрн - норматив накладных расходов в целом по организации.

Подставив данные в формулу (5.14), получим:


Рнi == 2670408,42 (руб.).


Общую сумму расходов по всем статьям сметы (СРi) на ПС рассчитаем по формуле (5.15):


Сpi = Зoi + Здi + Зсзi + Збгсi + Мi + P мi + Пзi + Pнi, (5.15)


Подставив данные в формулу (5.15), получим:

Срi = 4450680,7 + 445068,07 + 1664554,58 + 29374,49 + 28689,6 + 150120 + 133520,42 + 2670408,42= 9572416,28 (руб.).

Кроме того, организация - разработчик осуществляет затраты на сопровождение и адаптацию ПС (Pcai), которые определяем по нормативу (Нрса):


,(5.16)


гдеНрса - норматив расходов на сопровождение и адаптацию.

Подставив данные в формулу (5.16), получим:


Рсаi = = 95724,16 (руб.).

Общую сумму расходов на разработку (с затратами на сопровождение и адаптацию) как полную себестоимость ПС (Сп) определим по формуле (5.17):


,(5.17)


Подставив данные в формулу (5.17), получим:

Спi = 9572416,28 + 95724,16 = 9668140,44 (руб.).


5.3 Расчет отпускной цены


Рентабельность и прибыль по создаваемому ПС определяются исходя из результатов анализа рыночных условий, переговоров с заказчиком (потребителем) и согласования с ним отпускной цены, включающей дополнительно налог на добавленную стоимость.

Прибыль рассчитаем по формуле (5.18):


,(5.18)


гдеПпсi - прибыль от реализации ПС заказчику (руб.);

УРпi - уровень рентабельности ПС (%); СПi - себестоимость ПС (руб.).

При уровне рентабельности ПС равном 20 % прибыль от реализации разрабатываемого ПС равна:


Ппсi = = 1643583,87 (руб.).


Прогнозируемую цену без налогов рассчитываем по формуле (5.19):

,(5.19)


Подставив данные в формулу (5.19), получим:

Цпi = 9668140,44 + 1643583,87 = 11311724,31 (руб.).

Налог на добавленную стоимость (НДСi) рассчитаем по формуле (5.20):


,(5.20)


Где Ндс - норматив НДС - 20%.


Подставив данные в формулу (5.20), получим:


НДСi = = 2262344,86 (руб.).


Прогнозируемая отпускная цена с учетом налогов (Цоi) рассчитывается по формуле (5.21):


,(5.21)


Подставив данные в формулу (5.21), получим:

Цоi =11311724,31+ 2262344,86= 13574069,17 (руб.).

Налог на прибыль (Нп) рассчитывается по формуле (5.22):


,(5.22)


Где Ппсi - прибыль от реализации ПС заказчику (руб.);

Пп - ставка налога на прибыль (%).

Подставив данные в формулу (5.22), получим:


Нп = = 394460,13 (руб.).


Чистая прибыль (Пч) определяется по формуле (5.23):


Пч = Пnci - Нп,(5.23)


Где Пnci - прибыль от реализации ПС; Нп - налог на прибыль.

Подставив данные в формулу (5.23), получим:

Пч = 1643583,87- 394460,13 = 1249123,74 (руб.).

Сведем все рассчитанные выше показатели в таблицу 5.3.


Таблица 5.3 - Смета затрат и отпускная цена ПС

СтатьяОбозначениеСумма, руб.Основная заработная плата исполнителейЗоi4450680,7Дополнительная заработная плата исполнителейЗдi445068,07Отчисления в фонд социальной защитыЗсзi1664554,58Отчисления в БелгосстрахЗБГСi29374,49МатериалыМi28689,6СтатьяОбозначениеСумма, руб.Машинное времяРмi150120Прочие затратыПзi133520,42Накладные расходыРнi2670408,42Сопровождение и адаптацияРсаi95724,16Полная себестоимостьСпi9668140,44ПрибыльПпсi1643583,87Прогнозируемая цена без налоговЦпi11311724,31НДСНДСi2262344,86Прогнозируемая отпускная ценаЦоi13574069,17Налог на прибыльНп394460,13Чистая прибыльПч1249123,74

Вывод: разработка данного программного средства дает экономический эффект, в виде чистой прибыли, которая будет предположительно составлять 1249123,74руб.

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


6 Вопросы охраны труда при работе с компьютерами


6.1 Социально-экономическое значение охраны труда


Согласно статье 1 Закона Республики Беларусь «Об охране труда» охрана труда - это система обеспечения безопасности жизни и здоровья работающих в процессе трудовой деятельности, включающая правовые, социально-экономические, организационные, технические, психофизиологические, санитарно-гигиенические, лечебно-профилактические, реабилитационные и иные мероприятия и средства.

Основной целью охраны труда является создание условий, обеспечивающих сохранение жизни и здоровья работающих в процессе трудовой деятельности. [7]

Ежегодно на предприятиях и в организациях республики при выполнении работ травмируется свыше 10 тысяч человек, из них около 300 человек погибает, свыше 700 человек получают тяжелые травмы.

Проверки предприятий и анализ материалов расследования несчастных случаев показывают, что свыше 70 % нарушений требований охраны труда происходит по организационным причинам, причем из них около 50 % - вследствие некомпетентности руководителей и специалистов, недисциплинированности и незнания персоналом элементарных требований охраны труда и техники безопасности при проведении работ с повышенной опасностью. В связи с этим, на этом портале представлены все необходимые документы, нормативные правовые акты по вопросам охраны труда, структурированные по разделам: «Охрана труда» и «Пожарная безопасность». Важную роль в обеспечении здоровых и безопасных условий труда играют инструктажи и проверка знаний по вопросам охраны труда - в отдельных разделах собраны типовые и местные инструкции по охране труда по отдельным профессиям и видам работ.

6.1.1 Оптимальные условия труда

В целях обеспечения нормальных условий труда должны быть обеспечены следующие требования по организации рабочего места пользователя ПЭВМ:

-площадь на одно рабочее место с ПЭВМ должна составлять не менее 6,0 кв.м, а объем - не менее 20 куб.м;

-расположение рабочих мест с ПЭВМ в подвальных помещениях не допускается, в случаях производственной необходимости, эксплуатация ПЭВМ в помещениях без естественного освещения может проводиться только по согласию с органами и учреждениями Государственного санитарно-эпидемиологического надзора;

-помещения с ПЭВМ должны оборудоваться системами отопления, кондиционирования воздуха или эффективной приточно-вытяжной вентиляцией;

-запрещается применять для внутренней отделки интерьера помещений с ПЭВМ полимерные материалы (древестружечные плиты, слоистый бумажный пластик, синтетические ковровые покрытия и др.). Полимерные материалы, используемые для отделки интерьера помещений с ПЭВМ, должны быть разрешены для применения органами и учреждениями Государственного санитарно-эпидемиологического надзора;

-поверхность пола в помещениях эксплуатации ПЭВМ должна быть ровной, без выбоин, нескользкой, удобной для очистки и влажной уборки, обладать антистатическими свойствами;

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

-схема размещения рабочих мест с ПЭВМ должны учитывать расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора), которое должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м;

-высота рабочей поверхности стола должна регулироваться в пределах 680-800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм;

-рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной - не менее 500 мм, глубиной на уровне колен - не менее 450 мм и на уровне вытянутых ног не менее 650 мм;

-клавиатуру следует располагать на поверхности стола на расстоянии 100-300 мм от края, обращенного к пользователю или на специальной регулируемой по высоте рабочей поверхности, отделенной от основной столешницы;

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

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

-экран видеомонитора должен находиться от глаз пользователя на оптимальном расстоянии 600-700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов;

-в помещениях с ПЭВМ ежедневно должна производиться влажная уборка;

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

При 12-ти часовой рабочей смене регламентированные перерывы должны устанавливаться в первые 8 часов работы аналогично перерывам при 8-ми часовой рабочей смене, а в течение последних 4 часа работы, независимо от категории и вида работ, каждый час продолжительностью 15 минут.

Перед началом работы с устройствами ПЭВМ, при отключенном электропитании, пользователь обязан убедиться путем внешнего осмотра:

-в наличии и исправности защитного заземления;

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

-в том, что все защитные крышки, кожухи и корпуса установлены на своих местах;

-в надежном подсоединении зажима ввода экранного фильтра видеомонитора к заземленному корпусу системного блока. [8]


6.1.2 Обеспечение охраны труда на рабочем месте оператора ЭВМ

При эксплуатации ПЭВМ должны быть соблюдены следующие требования пожарной безопасности:

-каждое из помещений, где производится эксплуатация устройств ПЭВМ, должно быть оборудовано первичными средствами пожаротушения и обеспечено инструкциями по их применению. В качестве средств пожаротушения разрешается использование углекислотного огнетушителя типа ОУ-2, ОУ-5. Применение пенных огнетушителей не допускается, так как жидкость пропускает ток;

-устройства ПЭВМ необходимо устанавливать вдали отопительных и нагревательных приборов (расстояние не менее 1 м и в местах, где не затруднена их вентиляция и нет прямых солнечных лучей).

При эксплуатации ПЭВМ должны быть соблюдены следующие требования электробезопасности:

-сетевое электропитание устройств ПЭВМ должно производиться только от розеток типа "Европа" с заземляющими контактами;

-все электрические розетки, предназначенные для подключения к ним устройств ПЭВМ, должны иметь маркировку по напряжению;

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

При эксплуатации ПЭВМ должны быть соблюдены следующие требования по освещению:

-освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300-500 люкс, допускается установка светильника местного освещения для подсветки документов;

-естественное освещение должно осуществляться через светопроемы, ориентированные на север и северо-восток.

При эксплуатации ПЭВМ должны быть соблюдены следующие требования по рентгеновскому излучению:

В любой точке на расстоянии 0,05 м от экрана и корпуса ПЭВМ при любых положениях регулировочных устройств мощность экспозиционной дозы рентгеновского излучения не должна превышать 7,74х10 А/кг, что соответствует эквивалентной дозе, равной 0,1 мбэр/час (100 мкР/час).

При эксплуатации ПЭВМ должны быть соблюдены следующие требования по уровню шума и вибрации:

-в помещениях операторов ЭВМ уровень шума не должен превышать 65 дБА;

-относительная влажность воздуха в холодный и теплый период года при категории работ - легкая - 1а и легкая -1б - 40-60 процентов;

-скорость движения воздуха должна составлять от 0,1 до 0,2 м/сек в зависимости от вида работ;

-так же, должны быть, соблюдены эргономические факторы: яркость знака (яркость фона), внешняя освещенность экрана, угловой размер знака. [8]

Во время прохождение практики на ЧТПУП «Альтекстрой» рабочее место автора проекта полностью соответствовало выше изложенным требованиям охраны труда.


Заключение


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

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

Программа была реализована с помощью среды разработки Embracadero Builder C++. Дополнительно для реализации программы была использована технология ADO для работы с базами данных, технология OLE серверов для экспорта данных в Ms Excel, технология AlphaSkins для придания визуальной привлекательности программы.

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

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

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

Программа написана под операционную систему Windows. Использование программы предполагает лишь элементарные знания приемов работы в данной среде.

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

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

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


Список использованных источников


1. Википедия - свободная энциклопедия [Электронный ресурс]. - Электронные данные. - Режим доступа: #"center">ПРИЛОЖЕНИЕ А


Дополнительная информация по экономическому разделу


Таблица А.1 - Классификация типов программных средств (ПС)

Код типаНаименование типа программных средствСостав и содержание типа программных средств1231.0ПС общего назначения1.1 ПЧС СУВД; 1.2 ПС систем ведения линейных файлов; 1.3 ПС ведения баз данных и линейных файлов; 1.4 ПС информационно-поисковых и информационно-справочных систем; 1.5 ПС ввода информации; 1.6 ПС мониторов телеобработки и сетей ЭВМ; 1.7 ПС окружения СУБД, расширяющие возможности существующих СУБД; 1.8 ПС, расширяющие возможности обработки2.0ПС технологии автоматиза-ции программирования АСУ2.1 ПС автоматизации проектирования для автоматизации проектирования различных АСУ; 2.2 ПС автоматизации программирования; 2.3 ПС технологии программирования (для автоматизации процессов обработки и вывода информации); 2.4 ПС, расширяющие существующие языки программирования для повышения их компактности и простоты пользования; 2.5 ПС общего назначения, функционально-ориентированные. Реализуют различные классы экономико-математических методов и являются системами общего назначения, которые применяются в различных АСУ, для научно-технических расчетов и исследованийКод типаНаименование типа программных средствСостав и содержание типа программных средств3.0ПС методоориентирован-ных расчетов 3.1 ПС оптимизационных расчетов (обеспечивают решение различного класса задач оптимального планирования и управление производством); 3.2 ПС статистического анализа и прогнозирования (для прогнозирования ТЭП, спроса и т.д.); 3.3 ПС сетевого планирования; 3.4 ПС общей математики; 3.5 ПС имитационного моделирования4.0ПС организации вычисли-тельного процесса 4.1 Автоматизация процесса ведения наборов данных, при обеспечении их надежного и систематизированного хранения; 4.2 Повышение производительности ЭВМ и пользователей ПС ВТ; 4.3 Формирование и выдача отчетов о работе ЭВМ; 4.4 Оперативный контроль системы и ресурсов; 4.5 Для автоматизации обработки экономических данных, при этом выделяются ПС ВТ, несущие функциональную нагрузку в АСУ; 4.6 ПС данного типа выполнены в основном автономно5.0ПС функционального назначения5.1 ПС системы ППП ИСУП; 5.2 ПС ВТ оперативного управления основным производством; 5.3 ПС ВТ управление технической подготовкой производства

Таблица А.2 - Каталог функций программных средств

Наименование (содержание) функций Объем функций (условных машинных команд)ЕС ЭВМ ПВЭМСМ ЭВМС использованием среды разработки приложенийDelphi (Borland)C++ Builder (Borland)Visual C++ (Micro-soft)1 Ввод, анализ входной информации, генерация кодов и процессор входного языкаОрганизация ввода информации600870100110150Контроль, предварительная обработка и ввод информации18102100520550450Анализ входного языка (синтаксический и семантический)32202900630660660Преобразование операторов входного языка и команды другого языка2350385010501050980Обработка входного заказа и формирование таблиц367515507509001340Преобразование входного языка в машинные команды (транслятор, препроцессор, макрогенератор)112503260430043005100Синтаксический и семантический анализ входного языка и генерация кодов команд182506800870054005400Процессор языка239003260300023002300Организация ввода/вывода информации в интерактивном режиме10851550220220320Организация ввода/вывода информации с сети терминалов96602700368033403200

таблица А.2

Наименование (содержание) функций Объем функций (условных машинных команд)ЕС ЭВМ ПВЭМСМ ЭВМС использованием среды разработки приложенийDelphi (Borland)C++ Builder (Borland)Visual C++ (Microsoft)Управление вводом/выводом*64502700290024002 Формирование, ведение и обслуживание баз данныхГенерация структуры базы данных112005500345039504300Генерация подсхемы базы данных53503830154016102060Формирование баз данных62607312170017502180Обработка наборов и записей базы данных79009650205023502670Обслуживание базы данных в пакетном режиме53204700103011001260Обслуживание базы данных в интерактивном режиме157709900380044006950Манипулирование данными263007200840086709550Организация поиска и поиск в базе данных1727017400523054605480Реорганизация базы данных1575*130190220Загрузки базы данных12350*3150295027803 Формирование и обработка файловФормирование последовательного файла25002600340360290Сортировка файла21001270340360290Автоматическая сортировка файлов520010401150930Обслуживание файлов29502900520540420Обработка файлов36702420750800720Обработка файлов в диалоговом режиме118305130240026003050Обработка группы файлов 267006660490053006180Наименование (содержание) функций Объем функций (условных машинных команд)ЕС ЭВМ ПВЭМСМ ЭВМС использованием среды разработки приложенийDelphi (Borland)C++ Builder (Borland)Visual C++ (Micro-soft)Управление файлами217004100513053805750Формирование файла740012001100108010204 Генерация программ и ПС ВТ, а также настройка ПС ВТГенерация рабочих программ7440368041203360Генерация программ по описания пользователей165704000010870123309880Формирование служебных таблиц369040105706201070Система генерации ПС ВТ78805350512053404980Система настройки ПС ВТ108030002503003705 Управление ПС ВТ, компонентами ПС ВТ и внешними устройствамиМонитор ПС ВТ (управление работой компонентов)46103110350360740Монитор системы (управление работой комплекса ПС ВТ)145309100375038807740Управление внешними устройствами и объектами145606500685073405900Обработка прерываний65003850890730540Управление внешней памятью1430*250210200Обработка ошибочных и сбойных ситуаций5200*430410410Обеспечение интерфейса между компонентами6860*7307509706 Отладка прикладных программ, обмен информацией между МД и МЛ, вспомогательные программы функции

Таблица А.2

Наименование (содержание) функций Объем функций (условных машинных команд)ЕС ЭВМ ПВЭМСМ ЭВМС использованием среды разработки приложенийDelphi (Borland)C++ Builder (Borland)Visual C++ (Micro-soft)Отладка прикладных программ в интерактивном режиме10180*450047004300Обмен информацией между магнитным диском (МД) и (МЛ)3450900***Копирование наборов данных на МЛ и восстановление54006600***Справка и обучение4450450680680720Вспомогательные и сервисные ПС24308504604905807 Расчетные задачи, формирование и вывод на внешние носители (АЦПУ) документов сложной формы и файловМатематическая статистика и прогнозирование111809970837095709320Расчетные задачи (расчет режимов обработки)34500*126001530014800Расчет показателей26253720410500460Процессор отчетов125507410107012303200Формирование и вывод на внешние носители114006200265028503500Предварительная обработка и печать файлов21602070540560470Графический вывод результатов2030*300310480Интерактивный редактор текста84004750380039104540Измерение состояния ресурсов в интерактивной системе2000*650440480* - объем для данного типа ЭВМ определяется экспертным путем


Таблица А.3 - Укрупненные нормы времени на разработку программы (Тн) в зависимости от уточненного объема (Vnc) и группы сложности (чел.- дней)

Объем программы (строк усл.маш.команд)1 группа сложности ПС ВТ2 группа сложности ПС ВТ3 группа сложности ПС ВТНомер нормы 12345200 300 400 500 600 700 800 900 1000 1200 1400 1600 1800 2000 2200 2400 2600 2800 3000 3200 3400 3600 3800 4000 4200 4400 4600 4800 5000-- -- -- -- -- -- -- -- 51 54 57 60 64 68 73 76 81 86 91 97 103 110 117 124 133 141 151 160 170-- -- -- -- 33 36 38 40 43 45 48 50 54 57 61 64 68 72 76 81 86 92 98 104 111 118 126 134 14221 23 25 27 28 30 32 34 36 38 40 42 45 48 51 54 57 60 64 68 72 77 82 87 93 99 105 112 1191 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 295500 6000 6500 7000 7500 8000 8500 9000 9500 10000 11000 12000 13000 14000 15000 16000 18000 20000 22000 24000 26000 28000 30000 32000 34000 36000 38000 40000 42000 44000 46000 48000 50000182 194 206 220 235 252 268 288 307 327 349 374 399 427 456 487 520 556 595 636 679 727 775 830 888 950 1016 1087 1161 1242 1328 1420 1620152 162 172 184 196 210 224 240 256 273 291 312 333 356 380 406 434 464 496 530 566 606 646 692 740 792 847 906 968 1035 1107 1184 1267127 135 144 154 164 175 187 200 214 228 243 260 278 297 317 339 362 387 414 442 472 505 540 577 617 660 706 755 807 863 923 987 105630 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

Таблица А.4 - Характеристики групп сложности программных средств (ПС)

Группа сложностиХарактеристика программного средства1ПС, обладающие одной или несколькими из следующих характеристик: 1 Наличие сложного интеллектуального языкового интерфейса с пользователем; 2 Режим работы в реальном времени; 3 Обеспечение телекоммуникационной обработки данных и управление удаленными объектами; 4 Машинная графика; 5 Многомашинные комплексы; 6 Обеспечение существенного распараллеливания вычислений2ПС, обладающие одной или несколькими из следующих характеристик: 1 Оптимизационные расчеты; 2 Обеспечение настройки ПС ВТ на изменения структур входных и выходных данных; 3 Настройка ПС на нестандартную конфигурацию технических средств; 4 Обеспечение переносимости ПС; 5 Реализация особо сложных инженерных и научных расчетов3ПС, не обладающие перечисленными выше характеристиками

Таблица А.5 - Дополнительные коэффициенты сложности программных средств (ПС)

Характеристика программного средства (ПС)Значения Кслi1 Функционирование ПС в расширенной операционной среде (связь с другими ПС)0,082 Интерактивный доступ0,063 Обеспечение хранения, ведения и поиска данных в сложных структурах0,074 Наличие у ПС одновременно нескольких характеристик по таблице А.4: 2 характеристики; 3 характеристики; свыше 3 характеристик0,12 0,18 0,26

Таблица А.6 - Оценка значений среднего расхода материалов на разработку и отладку 100 строк кода применения программного средства

Наименование подсистемыСредний расход материалов руб./100 строк кода1 Общесистемные задачи: ведение линейных файлов, информационно-поисковые системы и информационно-справочные системы, сбор информации, ввод информации, расширение возможностей средств обработки данных, организация вычислительного процесса3802 Задачи расчетного характера4603 Оперативное управление производством, расчеты по ценообразованию2204 Техническая подготовка производства, транспортное, ремонтное, энергетическое и инструментальное обслуживание производства2505 Бухгалтерский учет, финансовые расчеты, учет пенсий и пособий, учет страховых операций, качество продукции4106 Управление кадрами4107 Технико-экономическое планирование4308 Материально-техническое снабжение, реализация и сбыт готовой продукции430

Коэффициент снижения среднего расхода материалов на разработку и отладку 100 строк кода рекомендуется использовать в пределах от 0,4 до 0,7.


Таблица А.7 - Оценка значений среднего машинного времени на отладку 100 строк исходного кода без применения программного средства

Наименование подсистемыСредний расход машинного времени, ч/100 строк кода1 Общесистемные задачи: ведение линейных файлов, информационно-поисковые системы и информационно-справочные системы, сбор информации, ввод информации, расширение возможностей средств обработки данных, организация вычислительного процесса122 Задачи расчетного характера153 Оперативное управление производством, расчеты по ценообразованию74 Техническая подготовка производства, транспортное, ремонтное, энергетическое и инструментальное обслуживание производства85 Бухгалтерский учет, финансовые расчеты, учет пенсий и пособий, учет страховых операций, качество продукции136 Управление кадрами137 Технико-экономическое планирование138 Материально-техническое снабжение, реализация и сбыт готовой продукции13

ПРИЛОЖЕНИЕ Б


Текст программы

// ---------------------------------------------------------------------------rab {ostch; oP; prModif; // флаг отмечающий модификацию праздниковNOD; // нужно отработать за месяцNODmodif; // флаг модификация NODkolD; // кол-во отработанных дежурств

};::vector<std::vector<int> > Gr; // конечный график дежурств::vector<rab>KD; // кол-во дежурств и параметры каждого человека::vector<rab>KDITAL;Shtraf;ShtrafForRek;GenPos;_t n;_t m;::vector<std::vector<int> > LabelsDay; // массив для обозначений приоритетных дней;::vector<int>Klv_Rab_v_sm; // массив хранящий требуемое кол-во рабочих в смену::vector<bool>WorkDay; // массив для хранения и обозначений не рабочих дней::vector<bool>HolDay; // массив для обозначения праздников StartDay;MCPC, MCPR; позиция указателя мыши::vector<TDateTime>masDDate;rozm;::vector<TDateTime>masRabDDate;rozmRD;IsMouseButtonDown;

//штрафы метокint ShT1 = 10;int ShT2 = 20;int ShT3 = 100;int ShT4 = 25;int ShT5 = 5;int ShT6 = 5;hourResult dn; // дневные часыnc; // ночные часыpr; // праздничные часы

};WSF13;TMPPS;TekStraf;

__int64 vari;::vector<int>DayStraf;GenDay;::vector<std::vector<int> > Graf;::vector<std::vector<int> > Grafik;::vector<std::vector<rab> > KDTemp;::vector<std::vector<int> > Mr;::vector<rab>KDtmp;::vector<bool>Mrb;IsWork;DayS;prd;

// ---------------------------------------------------------------------------

//подготовка для генерации

// ---------------------------------------------------------------------------predGenerations() {= 0;(size_t i = 0; i < m; i++) {[i].ostch = KD[i].kolD = KD[i].NOD = 0;[i].prModif = KD[i].NODmodif = false;

}KolvoRabVSM[4];[0] = StrToInt(Form5->sEdit1->Text);[1] = StrToInt(Form5->sEdit2->Text);[2] = StrToInt(Form5->sEdit6->Text);[3] = StrToInt(Form5->sEdit7->Text);_Rab_v_sm.resize(Form11->kolDay * 2);(int Nday = 1; Nday <= Form11->kolDay * 2; Nday++) {CoutWorkers; (Nday % 2 == 0) {(WorkDay[(Nday / 2) - 1] == true)_Rab_v_sm[Nday - 1] = KolvoRabVSM[1];_Rab_v_sm[Nday - 1] = KolvoRabVSM[3];

}{(WorkDay[((Nday - 1) / 2)] == true)_Rab_v_sm[Nday - 1] = KolvoRabVSM[0];_Rab_v_sm[Nday - 1] = KolvoRabVSM[2];

}

}(int Nday = 1; Nday <= Form11->kolDay * 2; Nday++) {kr = Klv_Rab_v_sm[Nday - 1]; klvd = 0; pl; (size_t i = 0; i < m; i++)(LabelsDay[i][Nday - 1] != 3)++;= (double)kr / klvd;(size_t i = 0; i < m; i++)(LabelsDay[i][Nday - 1] != 3)[i].NOD += pl;

}(size_t i = 0; i < m; i++) {[i].NOD = SimpleRoundTo(KD[i].NOD, 0);

}j = 0;(DM->Workers->First(); !(DM->Workers->Eof); DM->Workers->Next()) {(DM->WorkersDolgnosti_kod->AsInteger == 3) {[j].ostch = DM->WorkersPC->AsInteger;[j].kolD = DM->WorkersRazn->AsInteger;[j].NOD += DM->WorkersRazn->AsInteger;++;

}

}.resize(m);(size_t j = 0; j < m; j++) {[j].ostch = KD[j].ostch;[j].oP = 0;[j].kolD = KD[j].kolD;[j].NOD = KD[j].NOD;

}->PredgenerationRek();

}

// ---------------------------------------------------------------------------__fastcall TForm11::PredgenerationRek() {.resize(n);= 0;(size_t i = 0; i < n; i++)[i] = 0;.resize(m);.resize(m);(size_t i = 0; i < m; ++i)[i].resize(n);(size_t i = 0; i < m; i++)(size_t j = 0; j < n; j++)[i][j] = 0;.resize(m);(size_t i = 0; i < m; ++i)[i].resize(n);(size_t i = 0; i < m; i++)(size_t j = 0; j < n; j++)[i][j] = 0;.resize(n);(size_t i = 0; i < n; ++i)[i].resize(Klv_Rab_v_sm[i]);(size_t i = 0; i < n; i++)(int j = 0; j < Klv_Rab_v_sm[i]; j++)[i][j] = -1;.resize(n);(size_t i = 0; i < n; ++i)[i].resize(m);(size_t i = 0; i < n; i++)(size_t j = 0; j < m; j++) {[i][j].ostch = KD[j].ostch;[i][j].oP = 0;[i][j].kolD = KD[j].kolD;[i][j].NOD = KD[j].NOD;[i][j].prModif = KDTemp[i][j].NODmodif = false;

}.resize(m);(size_t i = 0; i < m; i++)[i] = false;

}

// ---------------------------------------------------------------------------

// используется для частичной генерации графиков__fastcall TForm11::dayGen(int start, int end) {

// сначала будни деньб ноч, очтальные день ночь.(int NDay = start; NDay <= end; NDay++) {(NDay != 1)(int i = 0; i < m; i++) {[NDay - 1][i].ostch = KDTemp[NDay - 2][i].ostch;[NDay - 1][i].oP = KDTemp[NDay - 2][i].oP;[NDay - 1][i].kolD = KDTemp[NDay - 2][i].kolD;

}(int i = 0; i < m; i++) {[NDay - 1][i].ostch = KDITAL[i].ostch;[NDay - 1][i].oP = 0;[NDay - 1][i].kolD = KDITAL[i].kolD;

}IsDaySm; CoutWorkers = Klv_Rab_v_sm[NDay - 1];(NDay % 2 == 0)= false;= true;dan;(NDay % 2 == 0)= NDay / 2;= ((NDay - 1) / 2) + 1;KolRbVib = 0; (KolRbVib = 0; KolRbVib < CoutWorkers; KolRbVib++) {min = 10000;(size_t i = 0; i < m; i++)((KDTemp[NDay - 1][i].kolD < min) &&

(KDTemp[NDay - 1][i].ostch == 0) && (LabelsDay[i][NDay - 1] != 3)) {= KDTemp[NDay - 1][i].kolD;

}isPriorSet = false; kode = 0; (int ikm = 0; ikm < 3; ikm++) {(ikm) {0:= 1;;1:= 0;;2:= 2;;

}(size_t i = 0; i < m; i++)((KDTemp[NDay - 1][i].kolD == min) && (KDTemp[NDay - 1][i].ostch == 0) && (LabelsDay[i][NDay - 1] == kode)) {[NDay - 1][i].kolD++;[NDay - 1][i].NODmodif = true;(Form11->retBoolHolDay

(IsDaySm, EncodeDate(Form11->YearGen, Form11->MounthGen, dan))) {[NDay - 1][i].oP += 1;[NDay - 1][i].prModif = true;

}(IsDaySm)[NDay - 1][i].ostch = 3;[NDay - 1][i].ostch = 5;[i][NDay - 1] = 1;= true;;

}(isPriorSet);

}

}(NDay != 1)[NDay - 1] = DayStraf[NDay - 2];IsAllGreen = true;klv_green = 0;(size_t i = 0; i < m; i++) {((Grafik[i][NDay - 1] == 1) && (LabelsDay[i][NDay - 1] != 1))= false;(LabelsDay[i][NDay - 1] == 1)_green++;

}((IsAllGreen) && (klv_green > 0)) {[NDay - 1] += 0;

}{(size_t i = 0; i < m; i++) {

// если зеленая метка не отмечена((LabelsDay[i][NDay - 1] == 1) && (Grafik[i][NDay - 1] != 1))[NDay - 1] += ShT1;

// отмечена краная метка((LabelsDay[i][NDay - 1] == 2) && (Grafik[i][NDay - 1] == 1))[NDay - 1] += ShT2;((LabelsDay[i][NDay - 1] == 3) && (Grafik[i][NDay - 1] == 1))[NDay - 1] += ShT3;(KDTemp[NDay - 1][i].prModif) {[NDay - 1][i].prModif = false;(KDTemp[NDay - 1][i].oP > 0)[NDay - 1] += ShT5 * (KDTemp[NDay - 1][i].oP) +

(KDTemp[NDay - 1][i].oP * KDTemp[NDay - 1][i].oP);

}(KDTemp[NDay - 1][i].NODmodif == true) {[NDay - 1][i].NODmodif = false;b = int(KDTemp[NDay - 1][i].NOD);(KDTemp[NDay - 1][i].kolD > b)[NDay - 1] += int

(KDTemp[NDay - 1][i].kolD - KDTemp[NDay - 1][i].NOD) * ShT4;

}

}

}

////////////////////////////////////////////////////

// уменьшение времени до сл. выхода(size_t i = 0; i < m; i++)(KDTemp[NDay - 1][i].ostch > 0)[NDay - 1][i].ostch--;

}

}

// ---------------------------------------------------------------------------

// поиск решения перебором

int RekyrsionGeneration(int dayG, int newD, int Pred) {= 0;((Klv_Rab_v_sm[dayG - 1] == 0) && (newD == -1) && (dayG - 1 != 0) && (dayG != Pred))1;IsDaySm;(dayG % 2 == 0)= false;= true;dan;(dayG % 2 == 0)= dayG / 2;= ((dayG - 1) / 2) + 1;(int i = 0; i < m; i++) {[i][dayG - 1] = 0;

}(newD) {0: {(int i = dayG - 1; i < n; i++)(int j = 0; j < Klv_Rab_v_sm[i]; j++)[i][j] = 0;(dayG - 1 == 0) {(size_t j = 0; j < m; j++) {[dayG - 1][j].ostch = KDITAL[j].ostch;[dayG - 1][j].oP = 0;[dayG - 1][j].kolD = KDITAL[j].kolD;

}(size_t j = 0; j < Klv_Rab_v_sm[dayG - 1]; j++)[dayG - 1][j] = j;

}{(size_t j = 0; j < m; j++) {[dayG - 1][j].ostch = KDTemp[dayG - 2][j].ostch;[dayG - 1][j].oP = KDTemp[dayG - 2][j].oP;[dayG - 1][j].kolD = KDTemp[dayG - 2][j].kolD;

}(size_t i = 0; i < m; i++) {[i] = true;(KDTemp[dayG - 1][i].ostch > 0)[i] = false;

}(size_t j = 0; j < Klv_Rab_v_sm[dayG - 1]; j++)(size_t i = 0; i < m; i++)(Mrb[i]) {[dayG - 1][j] = i;[i] = false;;

}

};

}-1

: {((dayG - 1 == 0) || (dayG == StartDay)) {(dayG - 1 == 0)(size_t j = 0; j < m; j++) {[dayG - 1][j].ostch = KDITAL[j].ostch;[dayG - 1][j].oP = 0;[dayG - 1][j].kolD = KDITAL[j].kolD;

}if (dayG - 1 != 0)(size_t j = 0; j < m; j++) {[dayG - 1][j].ostch = KDTemp[dayG - 2][j].ostch;[dayG - 1][j].oP = KDTemp[dayG - 2][j].oP;[dayG - 1][j].kolD = KDTemp[dayG - 2][j].kolD;

}IsNext = true;(Klv_Rab_v_sm[dayG - 1] > 0)(IsNext) {[dayG - 1][Klv_Rab_v_sm[dayG - 1] - 1]++;= false;(int i = Klv_Rab_v_sm[dayG - 1] - 1; i > -1; i--)(i == 0) {(Mr[dayG - 1][i] > m - 1);

}if (Mr[dayG - 1][i] > m - 1) {[dayG - 1][i] = 0;[dayG - 1][i - 1]++;

}(int i = 0; i < Klv_Rab_v_sm[dayG - 1]; i++)(KDTemp[dayG - 1][Mr[dayG - 1][i]].ostch > 0) {= true;;

}(int i = 0; i < Klv_Rab_v_sm[dayG - 1] - 1; i++)(int j = i + 1; j < Klv_Rab_v_sm[dayG - 1]; j++)(Mr[dayG - 1][i] == Mr[dayG - 1][j]) {= true;;

}

}

}{(size_t j = 0; j < m; j++) {[dayG - 1][j].ostch = KDTemp[dayG - 2][j].ostch;[dayG - 1][j].oP = KDTemp[dayG - 2][j].oP;[dayG - 1][j].kolD = KDTemp[dayG - 2][j].kolD;

}IsNext = true;

// ShowMessage( - 1);(Klv_Rab_v_sm[dayG - 1] > 0)(IsNext) {[dayG - 1][Klv_Rab_v_sm[dayG - 1] - 1]++;= false;(int i = Klv_Rab_v_sm[dayG - 1] - 1; i > -1; i--)(Mr[dayG - 1][0] > m - 1) {1;

}if (Mr[dayG - 1][i] > m - 1) {[dayG - 1][i] = 0;[dayG - 1][i - 1]++;

}(int i = 0; i < Klv_Rab_v_sm[dayG - 1]; i++)(KDTemp[dayG - 1][Mr[dayG - 1][i]].ostch > 0) {= true;;

}(int i = 0; i < Klv_Rab_v_sm[dayG - 1] - 1; i++)(int j = i + 1; j < Klv_Rab_v_sm[dayG - 1]; j++)(Mr[dayG - 1][i] == Mr[dayG - 1][j]) {= true;;

}

}

};

}

}(size_t j = 0; j < Klv_Rab_v_sm[dayG - 1]; j++) {[Mr[dayG - 1][j]][dayG - 1] = 1;[dayG - 1][Mr[dayG - 1][j]].kolD++;[dayG - 1][Mr[dayG - 1][j]].NODmodif = true;(Form11->retBoolHolDay(IsDaySm, EncodeDate(Form11->YearGen,->MounthGen, dan))) {[dayG - 1][Mr[dayG - 1][j]].oP += 1;[dayG - 1][Mr[dayG - 1][j]].prModif = true;

}(IsDaySm)[dayG - 1][Mr[dayG - 1][j]].ostch = 3;[dayG - 1][Mr[dayG - 1][j]].ostch = 5;

}(size_t j = 0; j < m; j++)(KDTemp[dayG - 1][j].ostch > 0)[dayG - 1][j].ostch--;IsAllGreen = true;klv_green = 0;(size_t i = 0; i < m; i++) {((Graf[i][dayG - 1] == 1) && (LabelsDay[i][dayG - 1] != 1))= false;(LabelsDay[i][dayG - 1] == 1)_green++;

}((IsAllGreen) && (klv_green > 0)) {+= 0;

}{(int i = 0; i < m; i++) {((LabelsDay[i][dayG - 1] == 1) && (Graf[i][dayG - 1] != 1))+= ShT1;((LabelsDay[i][dayG - 1] == 2) && (Graf[i][dayG - 1] == 1))+= ShT2;((LabelsDay[i][dayG - 1] == 3) && (Graf[i][dayG - 1] == 1))+= ShT3;(KDTemp[dayG - 1][i].prModif) {[dayG - 1][i].prModif = false;(KDTemp[dayG - 1][i].oP > 0)+= ShT5 * (KDTemp[dayG - 1][i].oP) +

(KDTemp[dayG - 1][i].oP * KDTemp[dayG - 1][i].oP);

}(KDTemp[dayG - 1][i].NODmodif == true) {[dayG - 1][i].NODmodif = false;b = int(KDTemp[dayG - 1][i].NOD);(KDTemp[dayG - 1][i].kolD > b)+= int

(KDTemp[dayG - 1][i].kolD - KDTemp[dayG - 1][i].NOD) * ShT4;

}

}

}(dayG - 1 == 0)[dayG - 1] = TekStraf;[dayG - 1] = DayStraf[dayG - 2] + TekStraf;((dayG == Pred) && (DayStraf[dayG - 1] == 0));((dayG == Pred) && (DayStraf[dayG - 1] < Shtraf))3;(DayStraf[dayG - 1] >= Shtraf) // генерация продолжаеться с этим днем;(dayG != Pred)0;

}

// ---------------------------------------------------------------------------

//экспорт в MS Excel

// ---------------------------------------------------------------------------__fastcall TForm13::toExcelCell(int c1, int c2, AnsiString data) {{= vVarSheet.OlePropertyGet("Cells").OlePropertyGet

("Item", c1, c2);.OlePropertySet("Value", data.c_str());

}(...) {

}

}

// ---------------------------------------------------------------------------__fastcall TForm13::toExcelCellBorderWidth

(int c1, int c2, AnsiString data, double CWidth) {{= vVarSheet.OlePropertyGet("Cells").OlePropertyGet

("Item", c1, c2);.OlePropertySet("Value", data.c_str());.OlePropertyGet("Borders", 10).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 7).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 8).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 9).OlePropertySet("LineStyle", 1);(CWidth > 0).OlePropertySet("ColumnWidth", CWidth);

}(...) {

}

}

// ---------------------------------------------------------------------------__fastcall TForm13::IntToExcelChar(int a) {temp;(a > 0) {(a < 27)= Char(64 + a);{= "A";+= Char(64 + a - 26);

}temp;

}"A";

}

// ---------------------------------------------------------------------------__fastcall TForm13::toExcelRangeBorderWidth

(AnsiString data, double CWidth) {= vVarSheet.OlePropertyGet("Range", data.c_str());.OlePropertyGet("Borders", 10).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 7).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 8).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 9).OlePropertySet("LineStyle", 1);(CWidth > 0).OlePropertySet("ColumnWidth", CWidth);

}

// ---------------------------------------------------------------------------__fastcall TForm13::toExcelRangeBorderM(AnsiString data, AnsiString Val) {= vVarSheet.OlePropertyGet("Range", data.c_str());.OleProcedure("Merge");.OlePropertySet("Value", Val.c_str());.OlePropertyGet("Borders", 10).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 7).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 8).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 9).OlePropertySet("LineStyle", 1);.OlePropertySet("HorizontalAlignment", -4108);.OlePropertySet("VerticalAlignment", -4108);

}

// ---------------------------------------------------------------------------__fastcall TForm13::Rekvizit() {>ProcessMessages();s = LMN[Form11->MounthGen - 1];(14, 2, "Структурное подразделение: служба охраны");(4, 32, "Утверждаю");(5, 31, "Директор " + Form14->PRName);(6, 31, "_________________" + Form14->DRName);(7, 31, "_________________" + IntToStr(RetYear()) + " года.");(10, 7, "Табель учета рабочего времени");(11, 7, "службы охраны " + Form14->PRName);(12, 7, "за " + s + " месяц " + Form11->YearGen + " года.");>ProcessMessages();

}

// ---------------------------------------------------------------------------__fastcall TForm13::Shapka(int Smec) {>ProcessMessages();s;(int i = 5; i <= Form11->kolDay + 4; i++) {= IntToExcelChar(i) + IntToStr(Smec + 1) + ":" + IntToExcelChar(i)

+ IntToStr(Smec + 3);= vVarSheet.OlePropertyGet("Range", s.c_str());.OleProcedure("Merge");= IntToStr(i - 4);.OlePropertySet("Value", s.c_str());.OlePropertySet("HorizontalAlignment", -4108);.OlePropertySet("VerticalAlignment", -4160);.OlePropertyGet("Borders", 10).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 7).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 8).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 9).OlePropertySet("LineStyle", 1);.OlePropertySet("ColumnWidth", 2);

// vVarCell.OlePropertySet("RowHeight", 12.75);

}(Smec, 1, "№");(Smec + 1, 1, "п.п");= "A" + IntToStr(Smec) + ":A" + IntToStr(Smec + 3);(s.c_str(), 2.43);(Smec, 2, "Фамилия,");(Smec + 1, 2, "имя, ");(Smec + 2, 2, "отчество");= "B" + IntToStr(Smec) + ":B" + IntToStr(Smec + 3);(s.c_str(), 12.57);(Smec, 3, "Должность");= "C" + IntToStr(Smec) + ":C" + IntToStr(Smec + 3);(s.c_str(), 9);(Smec, 4, "Время ");(Smec + 1, 4, "работы");= "D" + IntToStr(Smec) + ":D" + IntToStr(Smec + 3);(s.c_str(), 8.71);= "E" + IntToStr(Smec) + ":" + IntToExcelChar(Form11->kolDay + 4)

+ IntToStr(Smec);= vVarSheet.OlePropertyGet("Range", s.c_str());.OleProcedure("Merge");.OlePropertySet("Value", "Числа месяца");.OlePropertyGet("Borders", 10).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 7).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 8).OlePropertySet("LineStyle", 1);.OlePropertyGet("Borders", 9).OlePropertySet("LineStyle", 1);.OlePropertySet("HorizontalAlignment", -4108);.OlePropertySet("VerticalAlignment", -4108);= IntToExcelChar(Form11->kolDay + 5) + IntToStr(Smec)

+ ":" + IntToExcelChar(Form11->kolDay + 5) + IntToStr(Smec + 3);(Smec + 1, Form11->kolDay + 5, "Дней");(s.c_str(), 4.43);(Smec, Form11->kolDay + 6, "Расчетная");(Smec + 1, Form11->kolDay + 6, "норма");= IntToExcelChar(Form11->kolDay + 6) + IntToStr(Smec)

+ ":" + IntToExcelChar(Form11->kolDay + 9) + IntToStr(Smec + 1);(s.c_str(), -1);(Smec + 2, Form11->kolDay + 6, "дн.");(Smec + 3, Form11->kolDay + 6, "час.");= IntToExcelChar(Form11->kolDay + 6) + IntToStr(Smec + 2)

+ ":" + IntToExcelChar(Form11->kolDay + 6) + IntToStr(Smec + 3);(s.c_str(), 3.57);(Smec + 2, Form11->kolDay + 7, "ноч.");(Smec + 3, Form11->kolDay + 7, "час.");= IntToExcelChar(Form11->kolDay + 7) + IntToStr(Smec + 2)

+ ":" + IntToExcelChar(Form11->kolDay + 7) + IntToStr(Smec + 3);(s.c_str(), 3.43);(Smec + 2, Form11->kolDay + 8, "празд.");(Smec + 3, Form11->kolDay + 8, "час.");= IntToExcelChar(Form11->kolDay + 8) + IntToStr(Smec + 2)

+ ":" + IntToExcelChar(Form11->kolDay + 8) + IntToStr(Smec + 3);(s.c_str(), 5);(Smec + 2, Form11->kolDay + 9, "Итого");= IntToExcelChar(Form11->kolDay + 9) + IntToStr(Smec + 2)

+ ":" + IntToExcelChar(Form11->kolDay + 9) + IntToStr(Smec + 3);(s.c_str(), 4.57);sqwe = "A1:AN" + IntToStr(10 * 2 + 19 + 4);= vVarSheet.OlePropertyGet("Range", sqwe.c_str());.OlePropertyGet("Font").OlePropertySet("Size", StrToInt(eWidth));

// vVarCell.OlePropertyGet("Font").OlePropertySet("Name", "Arial Cyr");.OlePropertyGet("Font").OlePropertySet("Name", eFont.c_str());>ProcessMessages();

}

// ---------------------------------------------------------------------------__fastcall TForm13::StrInExcel(int GridStr, int ExcelStr) {s, s1, sd;(ExcelStr, 1, ZColorStringGrid2->Cells[0][GridStr]);("A" + IntToStr(ExcelStr) + ":A" + IntToStr

(ExcelStr + 1), 0);= ZColorStringGrid2->Cells[1][GridStr];= "";(int i = s.Length() - 3; i <= s.Length(); i++)+= s[i];.Delete(s.Length() - 4, s.Length());(ExcelStr, 2, s);(ExcelStr + 1, 2, s1);("B" + IntToStr(ExcelStr) + ":B" + IntToStr(ExcelStr + 1), 0);= ZColorStringGrid2->Cells[2][GridStr];(sd == "Начальник службы охраны") {(ExcelStr, 3, "Нач.сл.");(ExcelStr + 1, 3, "охраны");

}if (sd == "Заместитель начальника службы охраны") {(ExcelStr, 3, "Зам.нач.");(ExcelStr + 1, 3, "охраны");

}if (sd == "Старший охранник") {(ExcelStr, 3, "Старший");(ExcelStr + 1, 3, "охранник");

}(ExcelStr, 3, sd);("C" + IntToStr(ExcelStr) + ":C" + IntToStr

(ExcelStr + 1), 0);(ExcelStr, 4, ZColorStringGrid2->Cells[3][GridStr],

);(ExcelStr + 1, 4,->Cells[3][GridStr + 1], 0);(ExcelStr, Form11->kolDay + 5,->Cells[Form11->kolDay + 4][GridStr]);(IntToExcelChar(Form11->kolDay + 5) + IntToStr

(ExcelStr) + ":" + IntToExcelChar(Form11->kolDay + 5) + IntToStr(ExcelStr + 1),0);(ExcelStr, Form11->kolDay + 6,->Cells[Form11->kolDay + 5][GridStr]);(IntToExcelChar(Form11->kolDay + 6) + IntToStr

(ExcelStr) + ":" + IntToExcelChar(Form11->kolDay + 6) + IntToStr(ExcelStr + 1),0);(ExcelStr, Form11->kolDay + 7,->Cells[Form11->kolDay + 6][GridStr]);(IntToExcelChar(Form11->kolDay + 7) + IntToStr

(ExcelStr) + ":" + IntToExcelChar(Form11->kolDay + 7) + IntToStr(ExcelStr + 1),0);(ExcelStr, Form11->kolDay + 8,->Cells[Form11->kolDay + 7][GridStr]);(IntToExcelChar(Form11->kolDay + 8) + IntToStr

(ExcelStr) + ":" + IntToExcelChar(Form11->kolDay + 8) + IntToStr(ExcelStr + 1),0);(ExcelStr, Form11->kolDay + 9,->Cells[Form11->kolDay + 8][GridStr]);(IntToExcelChar(Form11->kolDay + 9) + IntToStr

(ExcelStr) + ":" + IntToExcelChar(Form11->kolDay + 9) + IntToStr(ExcelStr + 1),0);(int i = 5; i < Form11->kolDay + 5; i++) {(ExcelStr, i,->Cells[i - 1][GridStr], 0);(ExcelStr + 1, i,->Cells[i - 1][GridStr + 1], 0);

}

}

// ---------------------------------------------------------------------------__fastcall TForm13::DATA() {pc = 0;prc = 0;prcList = 70 / (KLV_List_GY + KLV_List_TY);= vVarSheets.OlePropertyGet("Item", 1);();(15);(int i = 4, g = 19; i < 24 && i < ZColorStringGrid2->RowCount;+= 2, g += 2) {(i, g);= i;= g;

}->Position += prcList;>ProcessMessages();(int i = 2; i <= KLV_List_TY; i++) {= vVarSheets.OlePropertyGet("Item", i);(1, 1, "Страница " + IntToStr(i));(5);(int j = pc + 2, g = 9, kz = 0; j < ZColorStringGrid2->RowCount;+= 2, g += 2, kz++) {(j, g);= j;= g;(kz == 15);

}->Position += prcList;>ProcessMessages();

}(prc + 4, 14,

"Начальник охраны " + Form14->OXRName);= vVarSheets.OlePropertyGet("Item", KLV_List_TY + 1);();(15);(int i = 2, g = 17; i < 22 && i < ZColorStringGrid1->RowCount;+= 2, g += 2) {(i, g);= i;= g;

}->Position += prcList;>ProcessMessages();(int i = KLV_List_TY + 2; i <= KLV_List_GY + KLV_List_TY; i++) {= vVarSheets.OlePropertyGet("Item", i);(1, 1, "Страница " + IntToStr(i - KLV_List_TY));(5);(int j = pc + 2, g = 7, kz = 0; j < ZColorStringGrid1->RowCount;+= 2, g += 2, kz++) {(j, g);= j;= g;(kz == 15);

}->Position += prcList;>ProcessMessages();

}(prc + 4, 14,

"Начальник охраны " + Form14->OXRName);

}

// ---------------------------------------------------------------------------__fastcall TForm13::PS() {.OlePropertyGet("PageSetup").OlePropertySet("LeftMargin", 0);.OlePropertyGet("PageSetup").OlePropertySet("RightMargin", 0);.OlePropertyGet("PageSetup").OlePropertySet("TopMargin", 0);.OlePropertyGet("PageSetup").OlePropertySet("BottomMargin", 0);.OlePropertyGet("PageSetup").OlePropertySet("HeaderMargin", 0);.OlePropertyGet("PageSetup").OlePropertySet("FooterMargin", 0);.OlePropertyGet("PageSetup").OlePropertySet("Orientation", 2);

}

// ---------------------------------------------------------------------------__fastcall TForm13::UnitExcel() {s = "";= CreateOleObject("Excel.Application");= true;= true;(Visibl).OlePropertySet("Visible", true);= vVarApp.OlePropertyGet("Workbooks");.OlePropertySet("SheetsInNewWorkbook", KLV_List_TY + KLV_List_GY);.OleProcedure("Add");= vVarBooks.OlePropertyGet("Item", 1);= vVarBook.OlePropertyGet("Worksheets");

(int i = 1; i <= KLV_List_TY; i++) {= "ТУРВ лист " + IntToStr(i);= vVarSheets.OlePropertyGet("Item", i);.OlePropertySet("Name", s.c_str());();

}(int i = KLV_List_TY + 1; i <= KLV_List_TY + KLV_List_GY; i++) {= "ГУРВ лист " + IntToStr(i - KLV_List_TY);= vVarSheets.OlePropertyGet("Item", i);.OlePropertySet("Name", s.c_str());.OlePropertyGet("PageSetup").OlePropertySet("LeftMargin", 2.5);();

}= vVarSheets.OlePropertyGet("Item", 1); }

// ---------------------------------------------------------------------------__fastcall TForm13::SaveExcel() {(fStart) {

// Отключить вывод сообщений с вопросами типа "Заменить файл...".OlePropertySet("DisplayAlerts", false);

// Сохранить книгу в папке по умолчанию (Мои документы)

// или в файле по указаниюvAsCurDir1 = FileName;.OlePropertyGet("Workbooks").OlePropertyGet("Item", 1)

.OleProcedure("SaveAs", vAsCurDir1.c_str());

// Закрыть открытое приложение Excel->Position = 100;("Документ успешно создан!");(IsVisibleDocument) {.OlePropertySet("Visible", true);

}.OleProcedure("Quit");= false;

}

}

// ---------------------------------------------------------------------------__fastcall TForm13::ExitExcel() {(fStart) {

// vVarApp.OleProcedure("Close");.OleProcedure("Quit");= false;

}

}


ПРИЛОЖЕНИЕ В


Диаграммы UML

Рисунок В.1 - Диаграмма вариантов использования


Рисунок В.2 - Общий принцип генерации расписания



Дипломная работа Разработка базы данных для автоматизированного составления графика дежурств и учёта

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ