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

 

Содержание


Введение

1 Постановка задачи

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

1.2 Входная информация

1.3 Выходная информация

1.4 Функциональное моделирование

1.5 Информационное моделирование

1.6 Разработка структуры базы данных

2 Вычислительная система

2.1 Основные характеристики выбранного персонального компьютера

2.2 Характеристика программных средств

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

2.2.2 Система программирования, система управления базами данных

3 Описание программы

3.1 Описание компонентов

3.2 Интерфейс программы

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

4.1 Цель и объект проведения испытаний

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

4.3 Методы испытаний

4.4 Протокол испытаний

5 Руководство пользователя

6 Охрана труда и энергосбережения

6.1 Нормализация нервно-психических нагрузок на оператора при реализации информационных технологий

6.1.1 Анализ психофизиологических нагрузок при обработке информации и их влияние на здоровье и работоспособность оператора ПК

6.1.2 Выбор и обоснование технического оснащения и организации рабочего места оператора ПК в целях оптимизации нервно-психических нагрузок

6.1.3 Рекомендации по организации режима труда и отдыха оператора ПК

6.2 Энергосбережение

7 Экономический раздел

7.1 Характер проекта

7.2 Определение трудоемкости программного продукта

7.2.1 Оценка трудоемкости отдельных видов работ

7.2.2 Построение ленточного графика создания программного продукта

7.3 Определение цены научно-технической продукции

7.4 Определение экономического эффекта от внедрения программного продукта

Заключение

Список используемых источников

Приложение А


Введение


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

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

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

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

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

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

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

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

Исходя из этого, в качестве среды разработки и сопровождения была выбрана среда объектно-ориентированного программирования Borland Delphi 7.0. Borland Delphi 7.0 - это среда разработки программ, ориентированных на работу в операционных системах семейства Windows. Данная среда программирования обладает широким набором возможностей, начиная от проектировщика форм и кончая поддержкой всех форматов популярных баз данных.

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

изучение и анализ информации, относящейся к теме дипломной работы;

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

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

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

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

В разделе «Описание программы» описываются компоненты и интерфейс программы, вызов и загрузка программы.

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

В разделе «Руководство пользователя» рассказывается о назначении программы, области применения, а также об описании применения.

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

В «Экономическом разделе» определяется трудоёмкость программного продукта, оценивается трудоёмкость отдельных видов работ, определяется цена научно-технического продукта и определяется экономический эффект от внедрения программного продукта.

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

программный информация база компонента

1 Постановка задачи


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


В рамках дипломного проекта необходимо разработать программное средство учета спецодежды в филиале Молодечненские электрические сети РУП Минскэнерго. Система должна предусматривать хранение информации о спецодежде, о работниках, о поставщиках, о приходе поступаемой спецодежды, о расходе выдоваемой спецодежды, о списании спецодежды.

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

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


1.2 Входная информация


Вся информация вводится с клавиатуры пользователем в экранные формы ввода данных.

К входной информации относим информацию, вводимую в справочники:

информация о спецодежде;

информация о единицах измерения;

информация о подразделениях;

информация о специальностях;

информация о работниках;

информация о поставщиках;

информация о нормах;

информация о МОЛ.

Также к входной информации будут относиться следующие данные:

информация о поступлениях спецодежды;

информация о выдачи спецодежды;

информация о списании спецодежды;


1.3 Выходная информация


К выходной информации относим:

отчет по остаткам спецодежды;

ведомость учета выдачи спесодежды за периуд;

личная карточка работника;

отчет по приходу спецодежды;

оборотная ведомость.


1.4 Функциональное моделирование


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

В настоящее время существует ряд методологий, специально предназначенных для упрощения системного анализа и моделирования предметной области. Данные методологии поддерживаются специальными инструментальными средствами автоматизированного анализа, моделирования и разработки сложных систем, получившими название CASE-средств (Computer-Aided Software/System Engineering - компьютерная поддержка проектирования программного обеспечения/систем).

В семействе CASE-средств инструменты для анализа предметной области составляют небольшую часть. Однако именно изучение и моделирование предметной области является наиболее важным этапом при разработке любого приложения, так как позволяет четко и однозначно определить задачи, которые стоят перед разработчиками. Одним из инструментов системного анализа является CASE-средство верхнего уровня BPwin (Business Process for Windows). Термин Business Process («бизнес-процесс») близок по смыслу к термину «предметная область» и в настоящее время часто заменяет последний. BPwin разработан фирмой LogicWorks. После слияния в 1998г. фирм LogicWorks и PLATINUM technology данное CASE-средство выпускается под логотипом PLATINUM technology.

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

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

В IDEFO-модели операция представляет собой процесс преобразования входных материалов или информации в некоторый результат на выходе с использованием ресурсов в виде механизма и при выполнении условий, представленных в виде управления. Методология DFD включает такие понятия, как внешняя ссылка и хранилище данных. Это делает её более удобной по сравнению с IDEF0 для моделирования программного обеспечения и систем документооборота. Методология IDEF3 включает элемент "перекрёсток", что позволяет описать логику взаимодействия компонентов системы.

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


Рисунок 1.4.1 - Функциональная модель


1.5 Информационное моделирование


Целью информационного моделирования является идентификация концептуальных сущностей, составляющих предметную область. Информационное моделирование используется, как правило, при разработке информационных систем, с целью проектирования структуры применяемой базы данных. Для ускорения процесса проектирования в настоящее время используются различные CASE-средства. Одним из широко применяемых недорогих CASE-средств является ERwin.- средство разработки структуры базы данных, сочетающее графический интерфейс Windows, инструменты для построения ER-диаграмм (Entities-Relationships-диаграммы или диаграммы «сущность-связь»), редакторы для создания логического и физического описания модели данных и прозрачную поддержку ведущих реляционных систем управления базами данных и настольных баз данных. С помощью ERwin можно создавать базы данных или проводить их обратное проектирование (реинженеринг).

Реализация моделирования в ERwin базируется на теории реляционных баз данных и на стандартизированной методологии семантического моделирования данных IDEF1X.

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

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

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

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

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

В соответствии с рисунком 1.5.1 изображена логическая модель базы данных.


Рисунок 1.5.1 - Логическая модель базы данных на уровне атрибутов


1.6 Разработка структуры базы данных


База данных, представленная в данном программном продукте, состоит из следующих таблиц: «ed_ismer», содержащая сведения о единицах измерения; «odejda», содержащая сведения о спецодежде; «post», которая содержит данные по поставщике; «rab», содержит информацию о работнике; «mol», содержащая сведения о материально ответственном лице; «normai», которая содержит данные по нормам cпецодежды для специальности; «prihod_d», содержащая информацию о «шапке» прихода , «prihod», содержащая данные о поступаемой спецодежде, «reshod_d», содержащая информацию о «шапке» расхода, «rashod», содержащая данные о выдоваемой спецодежде, «podras», содержащая данные о подразделениях предприятия, «spec», содержащая данные о специальностях предприятия.


Таблица 1.6.1 - Структура таблицы «ed_ismer»

Название поляТип данныхРазмерKod_ed_ismerInteger-NaimenChar20

Таблица 1.6.2 - Структура таблицы «odejda»

Название поляТип данныхРазмерKOD_ODEJDAInteger-NAIMENChar50SROK_NOSKIInteger-KOD_ED_ISMERInteger-

Таблица 1.6.3 - Структура таблицы «post»

Название поляТип данныхРазмерKOD_POSTInteger-NAIMENChar20TELInteger-UNPInteger-


Таблица 1.6.4 - Структура таблицы «MOL»

Название поляТип данныхРазмерKod_MOLInterger-KOD_RABInterger-

Таблица 1.6.5 - Структура таблицы «NORMA»

Название поляТип данныхРазмерKOD_NORMAInteger-KOD_ODEJDAInteger-KOD_SPECInteger-

Таблица 1.6.6 - Структура таблицы «PODRAS»

Название поляТип данныхРазмерKod_PODRASInteger-NAIMENChar20

Таблица 1.6.7 - Структура таблицы «SPEC»

Название поляТип данныхРазмерKOD_SPECInteger-NAIMENChar50

Таблица 1.6.8 - Структура таблицы «PRIHOD»

Название поляТип данныхРазмерKOD_PRIHODInteger-KOD_PRIHOD_DInteger-ITOGOInteger-KOD_ODEJDAInteger-

Таблица 1.6.9 - Структура таблицы «PRIHOD_D»

Название поляТип данныхРазмерKOD_ PRIHOD_DInteger-DATA_PRIHODDate-KOD_POSTInteger-KOD_MOLInteger-NOMER_PRIHInteger-

Таблица 1.7.0 - Структура таблицы «RASHOD»

Название поляТип данныхРазмерKOD_ RASHODInteger-KOD_RASHOD_DInteger-KOD_ODEJDAInteger-

Таблица 1.7.1 - Структура таблицы «RASHOD_D»

Название поляТип данныхРазмерKOD_RASHOD_DInteger-DATA_RASHDate-KOD_RABInteger-KOD_MOLInteger-NOMER_RASHInteger-

Таблица 1.7.2 - Структура таблицы « SPIS»

Название поляТип данныхРазмерKOD_ SPISInteger-KOD_SPIS_DInteger-KOD_MOLInteger-KOLInteger-PRIMECHANChar50

Таблица 1.7.3 - Структура таблицы « SPIS_D»

Название поляТип данныхРазмерKOD_SPIS_DInteger-DATA_SPISDate-KOD_MOLInteger-


2 Вычислительная система


2.1 Основные характеристики персонального компьютера и внешних устройств


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

процессор AMD Athlon(tm) X2 Dual Core Processor 4600+ 2.41ГГц

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

видеоадаптер NVIDIA GeForce 8600 GT 512 Мб;

жесткий диск объемом 250 Гб;

операционная система Microsoft Windows XP SP3.

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

центральный процессор не ниже 400 MHz;

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

свободное пространство на жестком диске не менее 20 Mb;

операционная система Microsoft Windows XP SP2.


2.2 Характеристика программных средств


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

Операционная система - это совокупность программ, которые отвечают за:

загрузку компьютера;

работоспособность различного оборудования;

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

взаимодействие пользователя с компьютером.XP - это мощная и гибкая операционная система для компьютерной поддержки бизнеса в организациях любых масштабов. Данная операционная система построена на усовершенствованном ядре Windows 2000 и имеет новый простой и привлекательный интерфейс, который упрощает работу с вычислительной техникой. Инновационный подход, ориентированный на решение конкретных задач, помогает быстро выполнять нужные функции, а интеллектуальные средства пользовательского интерфейса позволяют легко адаптировать его.XP содержит в себе обозреватель Internet Explorer 6, который обладает новыми, более совершенными функциями для работы в Интернете. Эта операционная система прекрасно подходит для обработки цифровой мультимедийной информации и развлечений.утверждает, что для успешной инсталляции XP Вам необходим процессор не менее 233 мегагерц, 64 мегабайта оперативной памяти, и 1.5 гигабайта свободного места на диске. Однако для более-менее комфортной работы Вам понадобится процессор не менее 500 мегагерц, и не менее 128 мегабайт оперативной памяти. Хотя, максимально облегчив интерфейс можно добиться того, что XP будет требовать меньше памяти. Как и любая операционная система на ядре NT, XP очень любит лишнюю оперативную память, поэтому 512 мегабайт для такой системы совсем не будут лишними, хотя и не являются обязательными. На 256 Mb система работает очень быстро и очень приятно, если не грузить её очень тяжёлыми приложениями. Если включить все визуальные эффекты, то XP будет заметно притормаживать на относительно слабых процессорах, вне зависимости от объёма оперативной памяти. Такой же эффект наблюдается при использовании слабой видеокарты. Однако, если система достаточно мощная, то нормально настроенный XP будет работать гораздо быстрее, чем любая операционная система от Microsoft выпущенная ранее [4].


2.2.2 Система программирования, система управления базами данных

В качестве среды разработки была выбрана среда Borland Delphi 7. Данная среда разработки является самой популярной из всех продуктов компании Borland.

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

Среди RAD?систем особо выделяется среда Borland Delphi, которая позволяет создавать различные программы: от простейших однооконных приложений до программ управления распределенными базами данных. В качестве языка программирования в среде Borland Delphi используется язык Delphi (Delphi language).В качестве системы управления базами данных использовался InterBase [8].- это кроссплатформенная СУБД, поддерживающая большинство операционных систем: Windows, Linux, Unix, Solaris, Mac OS и т.д. Interbase обладает целым рядом преимуществ, выгодно отличающих его от остальных СУБД:

Обновляемые представления View;

Двухфазное подтверждение транзакций;

Эффективный механизм триггеров;

Серверная обработка BLOB-полей (BLOB-filters);

События (Уведомления);

Шифрование сетевого трафика, базы данных, файлов бекапа и отдельных столбцов БД.

Язык Interbase SQL совместим со стандартом SQL-92. Кроме того, Interbase server поддерживает расширения стандартного подмножества языка SQL за счет пользовательских функций UDF (User Definded Functions). SQL предоставляет расширенные возможности SQL для хранимых процедур и триггеров - PSQL.



3 Описание программы


3.1 Описание компонентов


Borland Delphi 7 обладает огромным количеством компонентов, которые могут выполнять очень широкий список действий.

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


Таблица 3.1.1 - Компоненты Form1

КомпонентОписаниеIBDatabase1Обеспечивает соединение сбазой данных «kalk.gdb»IBTransaction1Предназначен для явного управления транзакциейMainMenu1Главное меню формыXPManifest1Преобразует стандартные визуальные компаненты для данной ОСEd_SetИспользуется для доступа к таблице «ed_izm»Ed_SourceВзаимодействие набора данных из таблицы «ed_izm» с компонентами отображения данных.Izd_SetИспользуется для доступа к таблице «got_izd»Izd_SourceВзаимодействие набора данных из таблицы «got_izd» с компонентами отображения данных.Rabot_SetИспользуется для доступа к таблице «raboti»Rabot_SourceВзаимодействие набора данных из таблицы «raboti» с компонентами отображения данных.mater_setИспользуется для доступа к таблице «material»mater_SourceВзаимодействие набора данных из таблицы «material» с компонентами отображения данных.stat_SetИспользуется для доступа к таблице «stat»stat_SourceВзаимодействие набора данных из таблицы «stat» с компонентами отображения данных.sostav_SetИспользуется для доступа к таблице «sostav_izd»sostav_SourceВзаимодействие набора данных из таблицы «sostav_izd» с компонентами отображения данных.КомпонентОписаниеnorm_rasc_SetИспользуется для доступа к таблице «norm_rascenki»norm_rasc_SourceВзаимодействие набора данных из таблицы «norm_rascenki» с компонентами отображения данных.kalk_SetИспользуется для доступа к таблице «kalkul»kalk_SourceВзаимодействие набора данных из таблицы «kalkul» с компонентами отображения данных.sSkinManager1Обеспечивает задание цветовой схемы всей программе

Таблица 3.1.2 - Компоненты Ed_izm

КомпонентОписаниеMainMenu1Главное меню формы «Справочник ед. измерения»DBGrid1Компонент инкапсулирует двухмерную таблицу «ed_izm» из базы данных, в которой строки представляют собой набор записей, а столбцы - поля набора данныхBitBtn1Кнопка, служащая для перехода на первую запись в таблице «ed_izm»BitBtn2Кнопка, служащая для перехода на предыдущую запись в таблице «ed_izm»BitBtn3Кнопка, служащая для перехода на следующую запись в таблице «ed_izm»BitBtn4Кнопка, служащая для перехода на последнюю запись в таблице «ed_izm»BitBtn5Кнопка, служащая для сохранения изменений в таблице «ed_izm»BitBtn6Кнопка, служащая для отмены изменений в таблице «ed_izm»GroupBox1Представляет собой группирующий элемент, отображаю-щий рамкуDBEdit1Представляет собой однострочный текстовый редактор, ко-торый используется для внесения данных о названии единицы измерения

Таблица 3.1.3 - Компоненты Izd

КомпонентОписаниеDBGrid1Компонент инкапсулирует двухмерную таблицу «got_izd» из базы данных, в которой строки представляют собой набор записей, а КомпонентОписаниестолбцы - поля набора данныхMainMenu1Главное меню формы «Справочник изделий»BitBtn1Кнопка, служащая для перехода на первую запись в таблице «got_izd»BitBtn2Кнопка, служащая для перехода на предыдущую запись в таблице «got_izd»BitBtn3Кнопка, служащая для перехода на следующую запись в таблице «got_izd»BitBtn4Кнопка, служащая для перехода на последнюю запись в таблице «got_izd»BitBtn5Кнопка, служащая для сохранения изменений в таблице «got_izd»BitBtn6Кнопка, служащая для отмены изменений в таблице «got_izd»GroupBox1Представляет собой группирующий элемент, отображаю-щий рамкуDBEdit1Представляет собой однострочный текстовый редактор, ко-торый используется для внесения данных о названии, коде обозначения или проекте изделия

Таблица 3.1.4 - Компоненты Mater

КомпонентОписаниеMainMenu1Главное меню формы «Справочник материалов»DBGrid1Компонент инкапсулирует двухмерную таблицу «material» из базы данных, в которой строки представляют собой набор записей, а столбцы - поля набора данныхBitBtn1Кнопка, служащая для перехода на первую запись в таблице «material»BitBtn2Кнопка, служащая для перехода на предыдущую запись в таблице «material»BitBtn3Кнопка, служащая для перехода на следующую запись в таблице «material»BitBtn4Кнопка, служащая для перехода на последнюю запись в таблице «material»КомпонентОписаниеBitBtn5Кнопка, служащая для сохранения изменений в таблице «material»BitBtn6Кнопка, служащая для отмены изменений в таблице «material»GroupBox1Представляет собой группирующий элемент, отображаю-щий рамкуDBEdit1Представляет собой однострочный текстовый редактор, ко-торый используется для внесения данных о названии материала

Таблица 3.1.5 - Компоненты Rabot

КомпонентОписаниеMainMenu1Главное меню формы «Справочник работ»DBGrid1Компонент инкапсулирует двухмерную таблицу «raboti» из базы данных, в которой строки представляют собой набор записей, а столбцы - поля набора данныхBitBtn1Кнопка, служащая для перехода на первую запись в таблице «raboti»BitBtn2Кнопка, служащая для перехода на предыдущую запись в таблице «raboti»BitBtn3Кнопка, служащая для перехода на следующую запись в таблице «raboti»BitBtn4Кнопка, служащая для перехода на последнюю запись в таблице «raboti»BitBtn5Кнопка, служащая для сохранения изменений в таблице «raboti»BitBtn6Кнопка, служащая для отмены изменений в таблице «raboti»GroupBox1Представляет собой группирующий элемент, отображаю-щий рамкуDBEdit1Представляет собой однострочный текстовый редактор, ко-торый используется для внесения данных о названии выполняемых работ

Таблица 3.1.6 - Компоненты Stat

КомпонентОписаниеMainMenu1Главное меню формы «Справочник статей калькуляции и коэффициентов»DBGrid1Компонент инкапсулирует двухмерную таблицу «stat» из базы данных, в которой строки представляют собой набор записей, а КомпонентОписаниестолбцы - поля набора данныхBitBtn1Кнопка, служащая для перехода на первую запись в таблице «stat»BitBtn2Кнопка, служащая для перехода на предыдущую запись в таблице «stat»BitBtn3Кнопка, служащая для перехода на следующую запись в таблице «stat»BitBtn4Кнопка, служащая для перехода на последнюю запись в таблице «stat»BitBtn5Кнопка, служащая для сохранения изменений в таблице «stat»BitBtn6Кнопка, служащая для отмены изменений в таблице «stat»GroupBox1Представляет собой группирующий элемент, отображающий рамкуDBEdit1Представляет собой однострочный текстовый редактор, который используется для внесения данных о статье калькуляции

Таблица 3.1.7 - Компоненты Sostav

КомпонентОписаниеMainMenu1Главное меню формы «Расход материалов на изделие»DBGrid1Компонент инкапсулирует двухмерную таблицу «sostav_izd» из базы данных, в которой строки представляют собой набор записей, а столбцы - поля набора данныхBitBtn1Кнопка, служащая для сохранения изменений в таблице «sostav_izd»BitBtn2Кнопка, служащая для отмены изменений в таблице «sostav_izd»BitBtn3Кнопка, служащая для перехода на первую запись в таб- лице «sostav_izd»BitBtn4Кнопка, служащая для перехода на предыдущую запись в таблице «sostav_izd»BitBtn5Кнопка, служащая для перехода на следующую запись в таблице «sostav_izd»BitBtn6Кнопка, служащая для перехода на последнюю запись в таблице «sostav_izd»КомпонентОписаниеGroupBox1Представляет собой группирующий элемент, отображающий рамкуGroupBox2Представляет собой группирующий элемент, отображающий рамкуGroupBox3Представляет собой группирующий элемент, отображающий рамкуGroupBox4Представляет собой группирующий элемент, отображающий рамкуDBEdit1Представляет собой однострочный текстовый редактор, который используется для отображения итоговых данных по полю «Сумма»DBEdit2Представляет собой однострочный текстовый редактор, который используется для ввода данных о названии материалаLabel1Отображение надписиLabel2Отображение надписиLabel3Отображение надписиLabel4Отображение надписиLabel5Отображение надписиLabel6Отображение надписи

Таблица 3.1.8 - Компоненты Norm_rasc

КомпонентОписаниеMainMenu1Главное меню формы «Нормы времени и расценки для изделия»DBGrid1Компонент инкапсулирует двухмерную таблицу «norm_rascenki» из базы данных, в которой строки представляют собой набор записей, а столбцы - поля набора данныхBitBtn5Кнопка, служащая для сохранения изменений в таблице «norm_rascenki»BitBtn6Кнопка, служащая для отмены изменений в таблице «norm_rascenki»BitBtn1Кнопка, служащая для перехода на первую запись в таблице «norm_rascenki»BitBtn2Кнопка, служащая для перехода на предыдущую запись в таблице «norm_rascenki»BitBtn3Кнопка, служащая для перехода на следующую запись в таблице «norm_rascenki»BitBtn4Кнопка, служащая для перехода на последнюю запись в таблице КомпонентОписание«norm_rascenki»GroupBox1Представляет собой группирующий элемент, отображающий рамкуGroupBox2Представляет собой группирующий элемент, отображающий рамкуGroupBox3Представляет собой группирующий элемент, отображающий рамкуGroupBox4Представляет собой группирующий элемент, отображающий рамкуDBEdit1Представляет собой однострочный текстовый редактор, который используется для отображения итоговых данных по полю «Норма»DBEdit2Представляет собой однострочный текстовый редактор, который используется для отображения итоговых данных по полю «Расценка»DBEdit3Представляет собой однострочный текстовый редактор, который используется для ввода данных о названии выполняемых работLabel1Отображение надписиLabel2Отображение надписиLabel3Отображение надписиLabel4Отображение надписиLabel5Отображение надписиLabel6Отображение надписи

Таблица 3.1.9 - Компоненты Kalk

КомпонентОписаниеDBGrid1Компонент инкапсулирует двухмерную таблицу «kalkul» из базы данных, в которой строки представляют собой набор записей, а столбцы - поля набора данныхBitBtn5Кнопка, служащая для вывода на печать текущй калькуляцииBitBtn6Кнопка, служащая для пересчета текущей калькуляции BitBtn1Кнопка, служащая для перехода на первую запись в таблице «kalkul»BitBtn2Кнопка, служащая для перехода на предыдущую запись в таблице «kalkul»BitBtn3Кнопка, служащая для перехода на следующую запись в таблице «kalkul»КомпонентОписаниеBitBtn4Кнопка, служащая для перехода на последнюю запись в таблице «kalkul»GroupBox1Представляет собой группирующий элемент, отображающий рамкуLabel1Отображение надписиLabel2Отображение надписиLabel3Отображение надписиLabel4Отображение надписиLabel5Отображение надписи

Таблица 3.1.10 - Компоненты Otch_sostav

КомпонентОписаниеQuickRep1Главная форма отчетаQRLabel1Отображения текста в отчете, который не изменяетсяQRLabel2Отображения текста в отчете, который не изменяетсяQRLabel3Отображения текста в отчете, который не изменяетсяQRLabel4Отображения текста в отчете, который не изменяетсяQRLabel5Отображения текста в отчете, который не изменяетсяQRLabel6Отображения текста в отчете, который не изменяетсяQRLabel7Отображения текста в отчете, который не изменяетсяQRLabel8Отображения текста в отчете, который не изменяетсяQRLabel9Отображения текста в отчете, который не изменяетсяQRLabel10Отображения текста в отчете, который не изменяетсяQRLabel11Отображения текста в отчете, который не изменяетсяQRLabel12Отображения текста в отчете, который не изменяетсяQRLabel13Отображения текста в отчете, который не изменяетсяQRLabel14Отображения текста в отчете, который не изменяетсяQRLabel15Отображения текста в отчете, который не изменяетсяQRLabel16Отображения текста в отчете, который не изменяетсяQRLabel17Отображения текста в отчете, который не изменяетсяКомпонентОписаниеQRLabel18Отображения текста в отчете, который не изменяетсяQRShape1Служит для графического представления линий в отчетеQRShape2Служит для графического представления линий в отчетеQRShape3Служит для графического представления линий в отчетеQRShape4Служит для графического представления линий в отчетеQRShape5Служит для графического представления линий в отчетеQRDBText1Компонент для отображения полей в отчете, связанный с набором данныхQRDBText2Компонент для отображения полей в отчете, связанный с набором данныхQRDBText3Компонент для отображения полей в отчете, связанный с набором данныхQRDBText4Компонент для отображения полей в отчете, связанный с набором данныхQRDBText5Компонент для отображения полей в отчете, связанный с набором данныхQRDBText6Компонент для отображения полей в отчете, связанный с набором данныхQRDBText7Компонент для отображения полей в отчете, связанный с набором данныхQRDBText8Компонент для отображения полей в отчете, связанный с набором данныхQRDBText9Компонент для отображения полей в отчете, связанный с набором данныхQRDBText10Компонент для отображения полей в отчете, связанный с набором данныхTitleBand1Предназначен для расположения данныхDetailBand1Предназначен для расположения данныхColumnHeaderBand1Предназначен для расположения данныхSummaryBand1Предназначен для расположения данныхPageFooterBand1Предназначен для расположения данныхКомпонентОписаниеPageHeaderBand1Предназначен для расположения данныхQRExpr1Предназначен для отображения текущей датыQRExpr2Предназначен для подсчета итоговой суммы

Таблица 3.1.11 - Компоненты Otch_norm_rasc

КомпонентОписаниеQuickRep1Главная форма отчетаQRLabel1Отображения текста в отчете, который не изменяетсяQRLabel2Отображения текста в отчете, который не изменяетсяQRLabel3Отображения текста в отчете, который не изменяетсяQRLabel4Отображения текста в отчете, который не изменяетсяQRLabel5Отображения текста в отчете, который не изменяетсяQRLabel10Отображения текста в отчете, который не изменяетсяQRLabel12Отображения текста в отчете, который не изменяетсяQRLabel13Отображения текста в отчете, который не изменяетсяQRLabel14Отображения текста в отчете, который не изменяетсяQRLabel15Отображения текста в отчете, который не изменяетсяQRLabel16Отображения текста в отчете, который не изменяетсяQRLabel17Отображения текста в отчете, который не изменяетсяQRLabel18Отображения текста в отчете, который не изменяетсяQRShape1Служит для графического представления линий в отчетеQRShape4Служит для графического представления линий в отчетеQRShape5Служит для графического представления линий в отчетеQRDBText1Компонент для отображения полей в отчете, связанный с набором данныхQRDBText2Компонент для отображения полей в отчете, связанный с набором данныхQRDBText3Компонент для отображения полей в отчете, связанный с набором данныхQRDBText4Компонент для отображения полей в отчете, связанный с набором КомпонентОписаниеданныхQRDBText5Компонент для отображения полей в отчете, связанный с набором данныхQRDBText6Компонент для отображения полей в отчете, связанный с набором данныхQRDBText9Компонент для отображения полей в отчете, связанный с набором данныхQRDBText10Компонент для отображения полей в отчете, связанный с набором данныхTitleBand1Предназначен для расположения данныхDetailBand1Предназначен для расположения данныхColumnHeaderBand1Предназначен для расположения данныхSummaryBand1Предназначен для расположения данныхPageFooterBand1Предназначен для расположения данныхPageHeaderBand1Предназначен для расположения данныхQRExpr1Предназначен для отображения текущей датыQRExpr2Предназначен для подсчета итоговой суммыQRExpr3Предназначен для подсчета итоговой суммы

Таблица 3.1.12 - Компоненты Otch_kalk

КомпонентОписаниеQuickRep1Главная форма отчетаQRLabel1Отображения текста в отчете, который не изменяетсяQRLabel2Отображения текста в отчете, который не изменяетсяQRLabel3Отображения текста в отчете, который не изменяетсяQRLabel4Отображения текста в отчете, который не изменяетсяQRLabel5Отображения текста в отчете, который не изменяетсяQRLabel6Отображения текста в отчете, который не изменяетсяQRLabel7Отображения текста в отчете, который не изменяетсяQRLabel8Отображения текста в отчете, который не изменяетсяКомпонентОписаниеQRLabel9Отображения текста в отчете, который не изменяетсяQRLabel10Отображения текста в отчете, который не изменяетсяQRLabel11Отображения текста в отчете, который не изменяетсяQRLabel12Отображения текста в отчете, который не изменяетсяQRShape1Служит для графического представления линий в отчетеQRShape2Служит для графического представления линий в отчетеQRShape3Служит для графического представления линий в отчетеQRShape4Служит для графического представления линий в отчетеQRShape5Служит для графического представления линий в отчетеQRShape6Служит для графического представления линий в отчетеQRShape7Служит для графического представления линий в отчетеQRShape8Служит для графического представления линий в отчетеQRShape9Служит для графического представления линий в отчетеQRShape10Служит для графического представления линий в отчетеQRDBText1Компонент для отображения полей в отчете, связанный с набором данныхQRDBText2Компонент для отображения полей в отчете, связанный с набором данных QRDBText3Компонент для отображения полей в отчете, связанный с набором данныхQRDBText4Компонент для отображения полей в отчете, связанный с набором данныхQRDBText5Компонент для отображения полей в отчете, связанный с набором данныхQRDBText6Компонент для отображения полей в отчете, связанный с набором данныхQRDBText7Компонент для отображения полей в отчете, связанный с набором данныхQRExpr1Предназначен для отображения текущей датыQRExpr2Предназначен для отображения номера записи в таблице отчетаКомпонентОписаниеDetailBand1Предназначен для расположения данныхTitleBand1Предназначен для расположения данныхColumnHeaderBand1Предназначен для расположения данныхPageFooterBand1Предназначен для расположения данныхPageHeaderBand1Предназначен для расположения данныхSummaryBand1Предназначен для расположения данных

Таблица 3.1.13 - Компоненты Otch_mat

КомпонентОписаниеQuickRep1Главная форма отчетаQRLabel1Отображения текста в отчете, который не изменяетсяQRLabel2Отображения текста в отчете, который не изменяетсяQRLabel3Отображения текста в отчете, который не изменяетсяQRLabel4Отображения текста в отчете, который не изменяетсяQRLabel6Отображения текста в отчете, который не изменяетсяQRLabel7Отображения текста в отчете, который не изменяетсяQRShape1Служит для графического представления линий в отчетеQRShape2Служит для графического представления линий в отчетеQRShape3Служит для графического представления линий в отчетеQRShape4Служит для графического представления линий в отчетеQRShape5Служит для графического представления линий в отчетеQRShape6Служит для графического представления линий в отчетеQRDBText3Компонент для отображения полей в отчете, связан с набором данныхQRDBText5Компонент для отображения полей в отчете, связан с набором данныхTitleBand1Предназначен для расположения данныхDetailBand1Предназначен для расположения данныхColumnHeaderBand1Предназначен для расположения данныхPageFooterBand1Предназначен для расположения данныхКомпонентОписаниеPageHeaderBand1Предназначен для расположения данныхSummaryBand1Предназначен для расположения данныхQRExpr1Предназначен для отображения текущей датыQRExpr2Предназначен для отображения номера записи в таблице отчета

Таблица 3.1.14 - Компоненты Otch_rab

КомпонентОписаниеQuickRep1Главная форма отчетаQRLabel1Отображения текста в отчете, который не изменяетсяQRLabel2Отображения текста в отчете, который не изменяетсяQRLabel3Отображения текста в отчете, который не изменяетсяQRLabel4Отображения текста в отчете, который не изменяетсяQRShape1Служит для графического представления линий в отчетеQRShape2Служит для графического представления линий в отчетеQRShape3Служит для графического представления линий в отчетеQRShape4Служит для графического представления линий в отчетеQRDBText3Компонент для отображения полей в отчете, связанный с набором данныхTitleBand1Предназначен для расположения данныхDetailBand1Предназначен для расположения данныхColumnHeaderBand1Предназначен для расположения данныхPageFooterBand1Предназначен для расположения данныхPageHeaderBand1Предназначен для расположения данныхSummaryBand1Предназначен для расположения данныхQRExpr1Предназначен для отображения текущей датыQRExpr2Предназначен для отображения номера записи в таблице отчета

Таблица 3.1.15 - Компоненты Otch_izd

КомпонентОписаниеQuickRep1Главная форма отчетаQRLabel1Отображения текста в отчете, который не изменяетсяQRLabel2Отображения текста в отчете, который не изменяетсяQRLabel3Отображения текста в отчете, который не изменяетсяQRLabel4Отображения текста в отчете, который не изменяетсяQRLabel5Отображения текста в отчете, который не изменяетсяQRLabel6Отображения текста в отчете, который не изменяетсяQRLabel7Отображения текста в отчете, который не изменяетсяQRShape1Служит для графического представления линий в отчетеQRShape2Служит для графического представления линий в отчетеQRShape3Служит для графического представления линий в отчетеQRShape4Служит для графического представления линий в отчетеQRShape5Служит для графического представления линий в отчетеQRShape6Служит для графического представления линий в отчетеQRShape7Служит для графического представления линий в отчетеQRShape8Служит для графического представления линий в отчетеQRDBText3Компонент для отображения полей в отчете, связанный с набором данныхQRDBText4Компонент для отображения полей в отчете, связанный с набором данныхQRDBText5Компонент для отображения полей в отчете, связанный с набором данныхTitleBand1Предназначен для расположения данныхDetailBand1Предназначен для расположения данныхColumnHeaderBand1Предназначен для расположения данныхPageFooterBand1Предназначен для расположения данныхPageHeaderBand1Предназначен для расположения данныхSummaryBand1Предназначен для расположения данныхQRExpr1Предназначен для отображения текущей датыQRExpr2Предназначен для отображения номера записи в таблице отчета

Таблица 3.1.16 - Компоненты Help

КомпонентОписаниеRichEdit1Многострочный текстовый редактор, содержащий в себе руководство по программе BitBtn1Служит для закрытия формы «Помощь»

Таблица 3.1.17 - Компоненты Nov_kalk

КомпонентОписаниеGroupBox1Представляет собой группирующий элемент, отобра-жающий рамкуGroupBox2Представляет собой группирующий элемент, отобра-жающий рамкуGroupBox3Представляет собой группирующий элемент, отобра-жающий рамкуComboBox1Представляет собой выпадающий список, содержащий месяцыComboBox2Представляет собой выпадающий список, содержащий годаDBLookupCombo-Box1Представляет собой выпадающий список, содержащий названия изделийEdit1Однострочный текстовый редактор, предназначенный для ввода затрат на т/энергиюEdit2Однострочный текстовый редактор, предназначенный для ввода затрат на энергиюLabel1Служит для отображения надписи «Затраты на т/энергию» Label2Служит для отображения надписи «Затраты на т/энергию» Label3Служит для отображения надписи «бел. руб» Label4Служит для отображения надписи «бел. руб» BitBtn1Предназначен для составления новой калькуляцииBitBtn2Предназначен для просмотра уже составленной кальку-ляцииBitBtn3Предназначен для просмотра отчета с калькуляцией


Таблица 3.1.18 - Компоненты Nov_sostav

КомпонентОписаниеGroupBox1Представляет собой группирующий элемент, отобра-жающий рамкуGroupBox2Представляет собой группирующий элемент, отобра-жающий рамкуComboBox1Представляет собой выпадающий список, содержащий месяцыКомпонентОписаниеComboBox2Представляет собой выпадающий список, содержащий годаDBLookupComboBox1Представляет собой выпадающий список, содержащий названия изделийBitBtn1Предназначен для просмотра расхода материаловBitBtn2Предназначен для составления нового расхода материа-ловBitBtn3Предназначен для просмотра отчета с расходом мате-риалов

Таблица 3.1.19 - Компоненты O_prog

КомпонентОписаниеGroupBox1Представляет собой группирующий элемент, отобра-жающий рамкуBitBtn1Предназначен для закрытия формы «О программе»Label1Служит для отображения надписиLabel2Служит для отображения надписиLabel3Служит для отображения надписиLabel4Служит для отображения надписиLabel5Служит для отображения надписиLabel6Служит для отображения надписи

Таблица 3.1.20 - Компоненты Style

КомпонентОписаниеGroupBox1Представляет собой группирующий элемент, отобра-жающий рамкуBitBtn1Предназначен для закрытия формы «Стиль программы»КомпонентОписаниеListBox1Служит для отображения списка


Таблица 3.1.21 - Компоненты Nov_norm_rasc

КомпонентОписаниеGroupBox1Представляет собой группирующий элемент, отобра-жающий рамкуGroupBox2Представляет собой группирующий элемент, отобра-жающий рамкуComboBox1Представляет собой выпадающий список, содержащий месяцыКомпонентОписаниеComboBox2Представляет собой выпадающий список, содержащий годаDBLookupComboBox1Представляет собой выпадающий список, содержащий названия изделийBitBtn1Предназначен для просмотра норм времени и расценокBitBtn2Предназначен для введения новых норм и расценокBitBtn3Предназначен для просмотра отчета с нормами и рас-ценками для изделия

3.2 Интерфейс программы


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

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

Система меню построена таким образом, что любой пользователь, даже не работавший до этого с компьютером, может догадаться о предназначении каждого пункта меню в соответствии с рисунком 3.2.1.


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


В раскрывающемся списке главного меню, можно выбрать нужное действие по примеру, в соответствии с рисунком 3.2.2.


Рисунок 3.2.2 - Пример выбора действия


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


Рисунок 3.2.3 - Форма «Расход материалов»


После заполнения всех полей на форме «расход материалов» и нажатия на кнопку «Просмотреть» откроется форма с расходом материалов на изделие в соответствии с рисунком 3.2.4.


Рисунок 3.2.4 - Форма «Расход материалов на изделие»


Для выбора какого-либо справочника надо воспользоваться главным меню, в соответствии с рисунком 3.2.5.


Рисунок 3.2.5 - Меню выбора справочника


Для открытия справочника «Материалы» необходимо нажать «Материалы» в раскрывшемся меню программы, после чего откроется сама форма, в соответствии с рисунком 3.2.6. Данная форма имеет понятный и удобный интерфейс. Для облегчения управления данными в таблице имеется навигационные кнопки, которые находятся под таблицей, что занимает меньше времени на переключение между записями. Аналогично данной форме имеют такой же интерфейс все справочники.

Рисунок 3.2.6 - Форма «Справочник материалов»


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


Рисунок 3.2.7 - Форма «Калькуляция»


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

Рисунок 3.2.8 - Форма «Нормы времени и расценки для изделия»


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


Рисунок 3.2.9 - Пункт меню «Отчёты»


Для того, что бы просмотреть информацию о программе или руководство по использованию программы необходимо в главном меню программы выбрать пункт меню «Справка», после чего раскроется список, в соответствии с рисунком 3.2.10.


Рисунок 3.2.10 - Пункт меню «Справка»


Для изменения стиля программы необходимо в главном меню программы выбрать пункт меню «Сервис», после чего откроется список, в соответствии с рисунком 3.2.11.


Рисунок 3.2.11 - Пункт меню «Сервис»


Для выхода из программы предусмотрен пункт меню «Выход», изображенный в соответствии с рисунком 3.2.12.


Рисунок 3.2.12 - Пункт меню «Выход»



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


.1 Цель и объект проведения испытаний


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

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

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

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


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


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

выявление ошибки путем введения тестирующих данных и другими способами испытания;

нахождение ошибки в тексте программы;

установление причины появления ошибки;

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

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

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

.3 Методы испытаний


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

тестирование черного ящика;

тестирование белого ящика.

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

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


4.4 Протокол испытаний


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


Таблица 4.4.1 - Проверка возможности хранения информации

Описание тестаНаименования поляВносимые данныеНа форме «Изделия» осуществляется ручной ввод информацииКод Название Проект12024400 Набор мебели для кухни «Вилия» МК-0332/ДК

Таблица 4.4.2 - Ожидаемые и полученные результаты при тестировании возможности сохранения информации

Ожидаемый результатПолученный результатРезультат тестированияКод - 12024400 Название - Набор мебели для кухни «Вилия» Проект - МК-0332/ДК Код - 12024400 Название - Набор мебели для кухни «Вилия» Проект - МК-0332/ДКТест пройден


5 Руководство пользователя


Двойным кликом по файлу Calc.exe запускаем программу «Составление калькуляции на продукцию Вилейской мебельной фабрики». При успешном запуске на экране появится главная форма программы. С этой формы пользователь выполняет дальнейшие действия, выбирая нужный пункт меню в соответствии с рисунком 5.1.


Рисунок 5.1 ? Главная форма программы


Открытие справочников производится кликом на пункт меню «Справочники». Далее пользователь выбирает нужный ему справочник в соответствии с рисунком 5.2.


Рисунок 5.2 ? Пункт меню «Справочники»


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

Рисунок 5.3 - Пункт меню справочника «Операции»


После нажатия на подпункт добавления, вводим нужные данные в таблицу и жмем кнопку «Сохранить» в соответствии с рисунком 5.4.


Рисунок 5.4 ? Заполнение справочника


Для редактирования введенных данных необходимо нажать на пункт меню справочника «Операции», затем подпункт «Редактировать» в соответствии с рисунком 5.3. После нажатия появится окно в соответствии с рисунком 5.4, но уже с заполненными полями.

Для выхода из справочника, а так же и любой другой формы, необходимо нажать по стандартной кнопке «Х» в правом верхнем углу окна либо выбрать пункт меню «Файл», далее подпунк «Закрыть справочник», в соответствии с рисунком 5.5.


Рисунок 5.5 - Пункт меню справочника «Файл»


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

Для просмотра расхода материалов, жмем на пункт меню «Расход», далее «Просмотр расхода материалов на изделие», после чего откроется форма в соответствии с рисунком 5.6.


Рисунок 5.6 ? Форма «Расход материалов»


На появившейся форме после заполнения всех полей и нажатия кнопки «Просмотреть», откроется форма с расходом материалов на изделие, в соответствии с рисунком 5.7.

Рисунок 5.7 ? Форма «Расход материалов на изделие»


Для того, чтобы добавить новый расход материалов, необходимо нажать на пункт главного меню «Расход», затем «Добавление нового расхода материалов на изделие, после чего откроется форма, в соответствии с рисунком 5.8.


Рисунок 5.8 ? Форма «Расход материалов»


После заполнения всех и нажатия на кнопку «Добавить» появится второе окно, в соответствии с рисунком 5.9, в которое вводятся все расходуемые материалы на выбранное изделие.

Рисунок 5.9 ? Окно «Состав поступления»


Для печати расхода материалов на изделия необходимо нажать на пункт меню «Печать» в соответствии с рисунком 5.10.


Рисунок 5.10 - Пункт меню «Печать»


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

Рисунок 5.12 ? Отчет «Расход материалов на изделие»


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


Рисунок 5.13 - Пункт меню «Расход»


Для того чтобы просмотреть ранее составленную калькуляцию необходимо в пункте главного меню «Калькуляция» выбрать подпункт «Просмотр калькуляции» после чего появится окно в соответсвии с рисунком 5.14.

Рисунок 5.14 ? Форма «Исчисление калькуляции»


Заполнив на данной форме все поля и нажав кнопку «Просмотреть», откроется форма «Калькуляция» в соответствии с рисунком 5.15. На форме «Калькуляция» есть две кнопки: «Пересчет», необходимая для пересчета калькуляции, если ранее были изменены какие-либо данные, и кнопка «Печать», выводящая данную калькуляцию на печать в виде отчета, в соответствии с рисунком 5.16.


Рисунок 5.15 ? Форма «Калькуляция»

Рисунок 5.16 ? Отчет «Плановая калькуляция»


Для того чтобы соствитьновую калькуляцию необходимо нажать на пункт главного «Калькуляция», затем выбрать подпункт «Составление калькуляции». После откроется форма, изображенная на рисунке 5.17. Заполнив на ней все поля необходимо нажать на кнопку «Составить калькуляцию», после чего откроется форма, в соответсвии с рисунком 5.16.


Рисунок 5.17 ? Форма «Исчисление калькуляции»


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

Рисунок 5.18 ? Пункт меню «Отчет»


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

Рисунок 5.19 ? Форма «Стиль программы»


Для того чтобы просмотреть информацию о программе необходимо выбрать в главном меню «Справка», затем подпункт «О программе». После чего появится окно в соответствии с рисунком 5.20.

Рисунок 5.20 ? Форма «О программе»


Если у пользователя во время работы с программой возникнут какие-либо вопросы, то он может воспользоватся пунктом «Справка», расположенном на главной форме, после чего выбрать подпункт «Помощь». Затем откроется форма с руководстом по программе, в соответствии с рисунком 5.21.


Рисунок 5.21 ? Форма «Помощь»


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

Рисунок 5.22 - Сообщение о выходе из программы



6 Охрана труда и энергосбережение


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

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

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


6.1 Нормализация нервно-психических нагрузок на оператора при реализации информационных технологий


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


6.1.1 Анализ психофизиологических нагрузок при обработке информации и их влияние на здоровье и работоспособность оператора персонального компьютера

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

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

Цель эргономики - повышение эффективности и качества деятельности человека в системе «человек - машина (персональный компьютер) - предмет деятельности - среда» при условии сохранения здоровья человека и создании предпосылок для развития личности [10].

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

Эргономические свойства системы «человек-машина (персональный компьютер)» характеризуются комплексом эргономических показателей:

гигиенические, характеризующие факторы внешней среды - температуру, физико-химический состав воздуха, освещенность, шум и другие;

антропометрические и биомеханические, характеризующие соответствие орудий труда размерам, форме и массе тела человека, силе и направлению движений;

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

психологические, характеризующие соответствие закрепленных и формируемых навыков и возможностей восприятия, памяти и мышления;

эстетические, используемые для определения соответствия эстетических потребностей человека и реализуемых в художественно-конструкторских решениях рабочих мест (орудий труда) и производственной среды [10].

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

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

Накапливающееся утомление часто называют переутомлением. Основными причинами возникновения переутомления являются:

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

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

плохо организованный нерациональный отдых в нерабочее время, неправильная организация режима труды и отдыха в рабочее время [10].

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

На уровень и динамику работоспособности оказывают влияние:

индивидуальные особенности человека;

производственная среда, в которой осуществляется трудовая деятельность;

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

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

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


6.1.2 Выбор и обоснование технического оснащения и организации рабочего места оператора персонального компьютера в целях оптимизации нервно-психических нагрузок

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

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

Организацией рабочего места называется проведение системы мероприятий по оснащению рабочего места средствами и предметами труда и их размещению в определенном порядке. Цель организации рабочего места - оптимизация условий трудовой деятельности, обеспечение безопасности, максимальной эффективности и надежности работы человека [10].

При конструировании рабочих мест учитываются следующие общие эргономические требования:

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

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

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

необходимое естественное и искусственное освещение;

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

наличие необходимых средств защиты работающих от действия опасных и вредных производственных факторов (физических, химических, биологических, психофизиологических) [10].

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

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

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

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

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

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

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


Рисунок 6.1.2.1 - Зоны для выполнения ручных операций и размещения органов управления


Каждая из этих зон характеризиется определнным образом. Характеристика зон:

- наиболее важных и очень часто используемых органов управления (оптимальная зона моторного поля);

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

- редко используемых органов управления (зона досягаемости моторного поля) [10].

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

В целом конструкция рабочего стула (кресла) должна обеспечивать:

ширину и глубину поверхности сиденья не менее 400 миллиметров,

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

регулировку высоты поверхности сиденья в пределах 400-550 миллиметров;

высоту опорной поверхности спинки 300 ± 20 миллиметров, ширину - не менее 380 миллиметров и радиус кривизны горизонтальной плоскости - 400 миллиметров;

угол наклона спинки в вертикальной плоскости в пределах от 0 до плюс 30°;

регулировку расстояния спинки от переднего края сиденья в пределах: 260 - 400 миллиметров;

стационарные или съемные подлокотники длиной не менее 250 и шириной-50-70 миллиметров;

регулировку подлокотников по высоте над сиденьем в пределах 230 ± 30 миллиметров и внутреннего расстояния между подлокотниками в пределах 350-500 миллиметров [9].

При работе сидя, оптимальная рабочая поза обеспечивается соблюдением правильного соотношения высоты рабочей поверхности и сидения. Высота рабочей поверхности стола для взрослых пользователей должна регулироваться а пределах 680-600 миллиметров; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 миллиметров. Модульными размерами рабочей поверхности стола для персонального компьютера, на основании которых должны рассчитываться конструктивные размеры, следует считать: ширину 800, 1000, 1200 и 1400 миллиметров, глубину 800 и 1000 миллиметров при нерегулируемой его высоте, равной 725 миллиметров.

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

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

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

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

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

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


6.1.3 Рекомендации по организации режима труда и отдыха оператора персонального компьютера

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

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

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

Виды трудовой деятельности разделяются на 3 группы:

группа А - работа по считыванию информации с экрана персонального компьютера с предварительным запросом;

группа Б - работа по вводу информации;

группа В - творческая работа в режиме диалога с электронной вычислительной машиной [3].

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

Для видов трудовой деятельности устанавливаются три категории тяжести и напряженности работы за персональным компьютером, приведенные в таблице 6.1.3.1, которые определяются:

группа А - по суммарному числу считываемых знаков за рабочую смену, но не более 60 000 знаков за смену;

группа Б - по суммарному числу считываемых или вводимых знаков за рабочую смену, но не более 40 000 знаков за смену;

группа В - по суммарному времени непосредственной работы за персонального компьютера за смену, но не более 6 часов за смену [9].



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

Категория работы за персональным компьютеромУровень нагрузки за рабочую смену при видах работ за персональным компьютеромСуммарное время регламентированных перерывовгруппа А, количество знаковГруппа Б, количество знаковГруппа В, часовпри 8-ми часовой сменепри 12-ти часовой смене1до 20000до 15000До 2,030702до 40000до 30000До 4,050903до 60000до 40000До 6,070120

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

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

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

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

Суммарная продолжительность регламентированных перерывов, независимо от категории и вида трудовой деятельности, при работе за персональным компьютером в ночную смену (с 22 до 6 часов) должна увеличиваться на 60 минут [9].

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

для I категории работ через 2 часа от начала рабочей смены и через 2 часа после обеденного перерыва продолжительностью 15 минут каждый;

для II категории работ через 2 часа от начала рабочей смены и через 1,5-2 часа после обеденного перерыва продолжительностью 15 минут каждый или продолжительностью 10 минут через каждый час работы;

для III категории через 1,5-2 часа от начала рабочей смены и через 1,5-2 часа после обеденного перерыва продолжительностью 20 минут каждый или продолжительностью 15 минут через каждый час работы [9].

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

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

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

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

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

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


.2 Энергосбережение


Все последние годы интенсивно обсуждается проблема энергосбережения. По статистике, при работе в типичных офисных приложениях процессор современного компьютера использует всего лишь 5% своей мощности. Остальные 95% требуются только для "тяжелых" задач - сложных математических вычислений, работы с видеоматериалами или современных трехмерных игр. И если потребление энергии процессором постоянно остается максимальным - это означает, что большая часть ее расходуется впустую, и впустую же выделяется большая часть тепла, образующегося при работе процессора.

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

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

Подобные технологии имеют положительные аспекты:

за счет уменьшения потребления электричества увеличивается время автономной работы от батарей;

за счет уменьшения выделения тепла снижается шумность компьютера: вентилятор работает на меньших оборотах, во время простоев процессора может отключаться совсем;

за счет снижения требований к системе охлаждения снижается и общий вес компьютера;

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

Чтобы работа была комфортной и безопасной необходимо позаботиться об аппаратном оборудовании компьютера. Как правило, наибольший вред здоровью пользователя компьютера наносят устройства ввода-вывода: монитор, клавиатура, мышь.

Большинство производителей используют промышленный стандарт VESA DPMS (Display Power Management Signaling). Он определяет нормированные методы поддержки мониторами трех энергосберегающих режимов: by - экономит до 40% мощности и позволяет быстро восстановить работоспособность; - отключает цепи накала трубки монитора и имеет большее время восстановления работоспособности; off - еще большее время восстановления работоспособности, но отключает все, кроме средств восстановления работоспособности и блока питания. В этом режиме мониторы обычно потребляют менее 5 Ватт.

При выборе монитора используется ряд стандартов:1990:10 - монитор соответствует шведскому стандарту по излучениям, а также по переменным электрическому и магнитным полям; II - Стандарты и рекомендации по низкочастотным электромагнитным полям и электрическому потенциалу. Такой знак далеко не полностью отражает все условия стандарта MPR 1990:10; 9241-3 - обозначает международный стандарт, который удовлетворяет эргономическим требованиям к дисплеям и стоит на страже вашего зрения; (расшифровываются как соответствие требованиям Шведского союза профессиональных служащих по визуальным эргономическим параметрам и переменным электрическим полям). В сравнении с MPRII в ТСО'92 (был разработан специально для мониторов и определяет величину максимально допустимых электромагнитных излучений при работе монитора, и функции энергосбережения) допустимые уровни электромагнитного излучения более жесткие, так как замер показателей производится не в 50 сантиметрах от экрана, как в MPRII, а в 30. TCO 95 и TCO 99 представляют собой универсальные стандарты, регулирующие воздействие всех вредных факторов. В ТСО'95 и ТСО'99 представлены электромагнитные параметры, эргономические, энергосберегающие и экологические. Стандарт TCO95 существует вместе с TCO92 и не отменяет последний. TCO99 предъявляет более жесткие требования, чем TCO95 в области эргономики, энергия, излучений, экологии, пожарной, электрической безопасности; 55022 Европейский стандарт по методам измерений и допустимым значениям излучений для изделий информационных технологий; 50082-1 Европейский стандарт по электромагнитной совместимости; 60950 Европейский стандарт по безопасности для изделий информационных технологий (электро- и пожаробезопасность), является частью TЪV/GS-рекомендации; ЬV/GS Маркировка, подтверждающая прохождение испытаний по безопасности. Изделия с маркировкой GS соответствуют требованиям EN 60950, ZH1/618;

СЕ Европейская маркировка, которая определяет соответствие изделия требованиям стандартов EN 50081-1 (европейский стандарт по электромагнитной совместимости), EN 55022, EN 50082-1 и EN 60950.

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

Жикдкокристалические мониторы имеют ряд достоинств:

жикдкокристалические мониторы более экономичные;

у них нет электромагнитного излучения в сравнении c мониторами на базе электронно-лучевых трубок, и они практически безвредны для человека;

они не мерцают, как мониторы на базе электронно-лучевых трубок;

они легкие и не такие объемные;

у них большая видимая область экрана.

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

Применение принтеров так же приводит к потреблению электроэнергии. Существует 2 вида принтеров: струйные и лазерные.

Современные струйные принтеры выводят текст и графические изображения высокого качества и стоят более чем вдвое дешевле лазерных. Кроме того, они компактнее, не так шумят и потребляют меньше электроэнергии, чем их лазерные собратья. Исследования International Data Corporation показывают, что это одна из причин, по которым объемы продаж струйных принтеров растут быстрее, чем печатающих устройств всех других типов.

Выпуск новой линии профессиональных персональных комптютеров ESPRIMO 5925 EPA компанией Fujitsu Siemens Computers продолжает тенденцию в области создания энергоэкономичных персональных компьютеров. Новые профессиональные персональные компьютеры, которые поставляются в форм-факторе Microtower для ESPRIMO P5925 EPA и в форм-факторе Small Form Factor для ESPRIMO E5925 EPA, - это сочетание проверенной эргономичности и энергосберегающих функций, которыми отличаются все решения Fujitsu Siemens Computers, новейшего набора микросхем Intel и экономии электроэнергии до 80%. Благодаря этим технологиям данные компьютеры потребляют на 45% меньше электроэнергии по сравнению с аналогичными системами двухлетней давности.

Новые профессиональные персональные компьютеры объединяют в себе экологичные материалы и технологии, технические инновации и максимальную производительность. Технология Intel Active Management 3.0 упрощает процесс централизованного управления устройствами даже в выключенном состоянии, что позволяет сократить общее энергопотребление. Кроме того, данные персональные компьютеры работают необычайно тихо благодаря зарекомендовавшей себя системе охлаждения, используемой в корпусах ESPRIMO, спроектированных и разработанных Fujitsu Siemens Computers.

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



7 Экономический раздел


7.1 Характер проекта


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

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


7.2 Определение трудоемкости создания программного продукта


Для определения трудоемкости составим перечень всех видов и этапов работ, выполняемых при исследовании (таблица 7.2.1). Особое внимание будет уделено упорядочению выполнения работ, для каждой работы определяется ее продолжительность и квалификация исполнителя [1].


Таблица 7.2.1 - План проведения научно-исследовательской работы

Наименование этапов и видов работИсполнитель (должность, квалификация)Количество исполнителейТрудоемкость, человекодни, tож1 Составление и согласование технического заданияТехник-программист122 Сбор и изучение научно-технической литературыТехник-программист143 Формулирование возможных направлений решения задач.Техник-программист124 Разработка методики проведения исследований.Техник-программист125 Разработка и реализация алгоритма решения задачи с большим количеством ограниченийТехник-программист110Наименование этапов и видов работИсполнитель (должность, квалификация)Количество исполнителейТрудоемкость, человекодни, tож6 Оценка возможностей задачи Техник-программист127 Оценка некоторого количества задач и решение их.Техник-программист148 Исследование задач наблюдения и возможность их сведения к задачам.Техник-программист149 Решение ряда задач наблюденияТехник-программист1510 Составление плана мероприятий по техники безопасностиТехник-программист1311 Оформление документации по выполненному программному продукту.Техник-программист1712 Оформление графического материала.Техник-программист1613 Обобщение результатов исследованийТехник-программист1314 Составление и оформление отчетаТехник-программист15Всего:60

7.2.1 Оценка трудоемкости отдельных видов работ

Трудоемкость создания программного продукта определяется по сумме продолжительности выполнения каждого вида работ (таблица 7.2.1.1). Поскольку трудоемкость этапов носит вероятностный характер, то будем использовать метод экспертных оценок. Для каждой работы экспертным путем предварительно устанавливаются три оценки трудоемкости:


- минимально возможная (оптимистическая) оценка трудоемкости;

- наиболее вероятностная оценка;

- максимально возможная (пессимистическая) оценка трудоемкости.

Определим для каждой работы оптимальное время:


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

- наиболее вероятностная оценка;

- максимально возможная (пессимистическая) оценка трудоемкости [5].


Также определим дисперсию предварительных оценок трудоемкостей, которая показывает, на сколько вероятно выполнения работы в срок [5]:


Таблица 7.2.1.1 - Оценка трудоемкости

Вид работыОценка трудоемкостиРасчетные величиныtmintH.BtmaxtожD122420,111234540,111323430,111422420,111581012100,444612320,111734540,111824640,444955750,1111013430,2501167970,2501256760,1111323530,2501445650,111Итого:*********602,639

7.2.2 Построение ленточного графика создания программного продукта

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

При небольших по объему исследованиях наиболее удобным, простым и наглядным является ленточный график. Он представляет собой:

таблицу, где перечислены наименование видов работ, должности исполнителей, трудоемкость, численность исполнителей и длительность выполнения каждого вида работ (таблица 7.2.2.1);

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


Таблица 7.2.2.1 - Ленточный график создания программного продукта

Наименование этапов и видов работИсполнитель (должность, квалификация)Трудоем-кость, человеко-дни, tожКоли-чество исполни-телейПродол-житель-ность работы (дни)1 Составление и согласование технического заданияТехник-программист2122 Сбор и изучение научно-технической литературыТехник-программист4143 Формулирование возможных направлений решения задач.Техник-программист2124 Разработка методики проведения исследований.Техник-программист2125 Разработка и реализация алгоритма решения задачи с большим количеством ограниченийТехник-программист101106 Оценка возможностей задачи Техник-программист2127 Оценка некоторого количества задач и решение их.Техник-программист414Наименование этапов и видов работИсполнитель (должность, квалификация)Трудоем-кость, человеко-дни, tожКоли-чество исполни-телейПродол-житель-ность работы (дни)8 Исследование задач наблюдения и возможность их сведения к задачам.Техник-программист4149 Решение ряда задач наблюденияТехник-программист51510 Составление плана мероприятий по техники безопасностиТехник-программист31311 Оформление документации по выполненному программному продукту.Техник-программист71712 Оформление графического материала.Техник-программист61613 Обобщение результатов исследованийТехник-программист31314 Составление и оформление отчетаТехник-программист515

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

Наименование этапов и видов работПродолжительность работы в неделях, при пятидневной рабочей неделе1234567891011121 Составление и согласование технического задания2 Сбор и изучение научно-технической литературы 3 Поиск возможных вариантов решение поставленной задачи Наименование этапов и видов работПродолжительность работы в неделях, при пятидневной рабочей неделе1234567891011124 Организация экономической сущности программного продукта 5 Организация обработки необходимых данных 6 Разработки и отладка программного продукта7 Испытание программного продукта 8 Оформление проектной документации 9 Оформление документации по экологии и охране труда 10 Оформление экономической документации программного продукта 11 Оформление пояснительной записки 12 Оформление графического материала.13 Обобщение результатов исследований14 Составление и оформление отчета

Продолжительность каждой работы определяется по формуле: где - трудоемкость работ, человеко-дни;

- численность исполнителей, человек [5].


7.3 Определение цены научно-технической продукции


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

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

Калькуляция плановой себестоимости программного продукта составляется по следующим статьям затрат:

материалы и покупные комплектующие;

спецоборудование;

основная заработная плата;

дополнительная заработная плата;

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

отчисления в белгосстрах;

налоги;

расходы на служебные командировки;

прочие прямые расходы;

услуги сторонних организаций;

накладные расходы.

Часовая тарифная ставка техника-программиста:


где Ттпм - месячная тарифная ставка первого разряда, Ттпм=118000 рублей;

Тк - тарифный коэффициент, Тк =3,05;

Фр - среднемесячная норма рабочего времени в 2011 году, Фр=169,8.


Дневная ставка техника-программиста:


где - рабочее время, =8 часов.

Определение заработной платы приведено в таблице 7.3.1.




Таблица 7.3.1 - Расчет основной заработной платы

Вид работТрудоем-кость, чел/дниДневная ставка, бел. рублей.Сумма основной заработной платы, бел. рублей.1 Составление и согласование технического задания233913,62 Сбор и изучение научно-технической литературы467827,23 Формулирование возможных направлений решения задач.350870,44 Разработка общей методики проведения исследований.233913,65 Разработка и реализация алгоритма решения задачи с большим количеством ограничений101695686 Оценка возможностей задачи.233913,67 Оценка некоторого количества задач и решение их.467827,28 Исследование задач наблюдения.467827,29 Решение ряда задач наблюдения.58478410 Составление плана мероприятий по ТБ350870,411 Оформление документации по выполненному продукту.7118697,612 Оформление графического материала по выполненному программному продукту.6101740,813 Обобщение результатов исследований350870,414 Составление и оформление отчета584784Итого (Зо):601017408

Дополнительная заработная плата определяется по формуле:

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


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

где - норматив отчислений фонд социальной защиты - 34%.


Отчисления в Белгосстрах рассчитываются по формуле:


где - норматив отчислений в Белгосстрах - 0,2%.


Косвенные расходы (Нкос=120%):


Полная себестоимость программного продукта:


. (10)


Смета затрат приведена в таблице 7.3.2.


Таблица 7.3.2 - Смета затрат

Статьи затратУсловное обозначениеСумма затрат, руб1 Материалы и оборудованиеРм02 Основная заработная плата разработчиков продуктаЗо3 Дополнительная заработная плата разработчиков продуктаЗд203481,64 Отчисления на социальные нужды: 4.1 Отчисления в фонд социальной защиты населения 4.2 Отчисления в Белгосстрах Осз Об 415102,5 2441,85 Прочие прямые расходыРпр0Статьи затратУсловное обозначениеСумма затрат, руб6 Косвенные расходыРкос1220889,67 Полная себестоимостьСп2859323,5

Отпускная цена программного продукта:


. (11)


7.4 Определение экономического эффекта от внедрения программного продукта


Таблица 7.4.1 - Определение экономии времени

Перечень услуг программного продуктаВремя до автоматизации, часовВремя после автоматизации, часовЭкономия времени, часовВвод необходимых данных для учета спецодежды0,0120,0090,003Ввод необходимых данных для расчета остатков0,020,0110,009Ввод дополнительных операций0,030,020,01Осуществить поиск в базе данных0,330,0170,313Формирование и просмотр выходных данных 180,0517,05Итого:18,3920,10717,355

Таблица 7.4.2 - Определение годового фонда времени

Перечень услуг программного продуктаКоличество операций в годЭкономия времени, чГодовой фонд времени, чВвод необходимых данных для учета спецодежды180000,00354Ввод необходимых данных для расчета остатков180000,009162Ввод дополнительных операций250,010,25Перечень услуг программного продуктаКоличество операций в годЭкономия времени, чГодовой фонд времени, чОсуществить поиск в базе данных250,3137,825Формирование и просмотр выходных данных 1217,05204,6Итого:3606217,385428,675


Внедрение программного средства «Учет спецодежды в Молодечненских электрических сетях» позволило бы сэкономить 428,675 часов, что составляет 21,04 % () годового фонда времени, учитывая, что фонд рабочего времени за год, с учетом всех праздничных дней, составит 2037 часов.

С внедрением данного программного средства «Учет спецодежды в Молодечненских электрических сетях» можно условно сэкономить 21,04 % годовой ставки сотрудника отдела «Бухгалтерия». Месячный оклад сотрудника отдела «Бухгалтерия» составляет:


Зо - 1017408 рублей;

Зд - 203481,6 рублей, рассчитано по формуле 6;

ОСЗ - 415102,5 рублей, рассчитано по формуле 7.

ОБ - 2441,8 рублей, рассчитано по формуле 8.

Тогда годовой фонд заработной платы равен:

(12)


Условная экономия по заработной плате составит:


. (13)


Вывод:

Экономический эффект от внедрения программного средства «Учет спецодежды в Молодечненских электрических сетях» составит:


. (14)

Заключение


Программное средство «Учет спецодежды в Молодечненских электрических сетях» является законченным программным продуктом, хотя возможна его доработка.

Программа имеет удобный пользовательский интерфейс, она написана для использования в операционной системе Windows XP/VISTA/7. Пользование программой не составит труда для тех, кто знаком с данной оболочкой.

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

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

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

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

Разработка компонентов велась с использованием CASE-средств BPWin (для определения спецификации требований на программное средство) и ErWin (для получения схемы данных).

Произведена реализация реляционной базы данных с нормализацией таблиц.

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

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

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



Список используемых источников


1 Антонова, Н. Б. Экономика предприятия: Учебное пособие / Н. Б. Антонова, М. А. Зайцева, Л. Н. Нехорошева, - Мн.: Высшая школа., 2004. - 383 с.

Большаков, Ю. В. «Охрана труда» Республиканский журнал для специалистов и руководителей №6, декабрь, 2005г. / Ю. В. Большаков, С. Н. Винерский, А. И. Кохнюк -Мн.: 2005. - 33с.

Крылова, Е. Г. «Охрана труда и социальная защита» Республиканский научно-популярный, производственно-технический журнал №11 2005 г./ Е. Г. Крылова -Мн.: 2005. - 33с.

Куприянов, А.В. Самоучитель Windows XP: Все об использовании и настройках / А.В. Куприянов, М.Д. Матвеев, М.В. Юдин. - Санкт-Петербург: Изд-во «Наука и техника», 2006. - 624с.

Молосаева, Н. В. Дипломное проектирование: Методические рекомендации по экономическому разделу / Н. В. Молосаева, - Мн.: МГВРК, 1998. - 40с.

Сорокин, А.Н. Delphi разработка баз данных / А. Н. Сорокин. - СПб: Питер, 2005. -447с.

Фаронов, В. Программирование баз данных в Delphi 7: Учебный курс / В. Фаронов. - Санкт-Петербург: ООО «Питер Пресс», 2006. - 459с

Фаронов, В. Программирование на языке высокого уровня: Учебник для вузов / В. Фаронов. - Санкт-Петербург: ООО «Питер Пресс»,2009. - 640с.

Закон Республики Беларусь от 18.06.1993 года "О государственной экологической экспертизе".

Санитарные правила и нормы «СанПин» 9-131 Р.Б., 2000 г.



Приложение А


(обязательное)

Листинг программыProject1;

uses,in 'Unit1.pas' {Form1},in 'Unit2.pas' {ed_izm},in 'Unit3.pas' {izd},in 'Unit4.pas' {rabot},in 'Unit5.pas' {mater},in 'Unit6.pas' {stat},in 'Unit7.pas' {sostav},in 'Unit8.pas' {nov_sostav},in 'Unit9.pas' {norm_rasc},in 'Unit10.pas' {nov_norm_rasc},in 'Unit11.pas' {kalk},in 'Unit12.pas' {nov_kalk},in 'Unit13.pas' {otch_kalk},in 'Unit14.pas' {otch_sostav},in 'Unit15.pas' {otch_norm_rasc},in 'Unit16.pas' {otch_izd},in 'Unit17.pas' {otch_mat},in 'Unit18.pas' {otch_rab},in 'Unit19.pas' {o_prog},in 'Unit20.pas' {help},in 'Unit21.pas' {style};

{$R *.res}.Initialize;.Title := '';.CreateForm(TForm1, Form1);.CreateForm(Ted_izm, ed_izm);.CreateForm(Tizd, izd);.CreateForm(Trabot, rabot);.CreateForm(Tmater, mater);.CreateForm(Tstat, stat);.CreateForm(Tsostav, sostav);.CreateForm(Tnov_sostav, nov_sostav);.CreateForm(Tnorm_rasc, norm_rasc);.CreateForm(Tnov_norm_rasc, nov_norm_rasc);.CreateForm(Tkalk, kalk);.CreateForm(Tnov_kalk, nov_kalk);.CreateForm(Totch_kalk, otch_kalk);.CreateForm(Totch_sostav, otch_sostav);.CreateForm(Totch_norm_rasc, otch_norm_rasc);.CreateForm(Totch_izd, otch_izd);.CreateForm(Totch_mat, otch_mat);.CreateForm(Totch_rab, otch_rab);.CreateForm(To_prog, o_prog);.CreateForm(Thelp, help);.CreateForm(Tstyle, style);.Run;.Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, DB, IBCustomDataSet, IBDatabase, XPMan, sSkinManager, StdCtrls;= class(TForm): TIBDatabase;: TIBTransaction;_Set: TIBDataSet;_Source: TDataSource;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;_SetKOD_ED_IZM: TIntegerField;_SetED_IZM: TIBStringField;: TXPManifest;_Set: TIBDataSet;_Source: TDataSource;_SetKOD_IZD: TIntegerField;_SetKOD_OBOZN: TIBStringField;_SetIZD: TIBStringField;_SetPROEKT: TIBStringField;_Set: TIBDataSet;_Source: TDataSource;_SetKOD_RABOT: TIntegerField;_SetRABOT: TIBStringField;_set: TIBDataSet;_Source: TDataSource;_setKOD_MATER: TIntegerField;_setMATER: TIBStringField;_setKOD_ED_IZM: TIntegerField;_seted_izm: TStringField;_Set: TIBDataSet;_Source: TDataSource;_SetKOD_STAT: TIntegerField;_SetSTAT: TIBStringField;_SetKOEF: TFloatField;_Set: TIBDataSet;_Source: TDataSource;_rasc_Set: TIBDataSet;_rasc_Source: TDataSource;: TMenuItem;: TMenuItem;_Set: TIBDataSet;_Source: TDataSource;: TMenuItem;: TsSkinManager;: TMenuItem;: TMenuItem;_rasc_SetKOD_NORM_RASC: TIntegerField;_rasc_SetKOD_IZD: TIntegerField;_rasc_SetKOD_RABOT: TIntegerField;_rasc_SetMES: TIBStringField;_rasc_SetGOD: TIntegerField;_rasc_SetNORMA: TFloatField;_rasc_SetRASCENKA: TFloatField;_SetKOD_SOSTAV: TIntegerField;_SetKOD_IZD: TIntegerField;_SetKOD_MATER: TIntegerField;_SetMES: TIBStringField;_SetGOD: TIntegerField;_SetNORMA: TFloatField;_SetSTOIM: TFloatField;_Setsum: TFloatField;_Setmater: TStringField;_Seted_izm: TStringField;_rasc_Setrabot: TStringField;_Setizd: TStringField;_Setobozn: TStringField;_Setproekt: TStringField;_rasc_Setizd: TStringField;_rasc_Setobozn: TStringField;_rasc_Setproekt: TStringField;_SetKOD_KALK: TIntegerField;_SetKOD_IZD: TIntegerField;_SetKOD_STAT: TIntegerField;_SetMES: TIBStringField;_SetGOD: TIntegerField;_SetKOEF: TFloatField;_SetSUMMA: TFloatField;_Setstat: TStringField;_Setizd: TStringField;_Setproekt: TStringField;N12Click(Sender: TObject);N10Click(Sender: TObject);N9Click(Sender: TObject);N8Click(Sender: TObject);N11Click(Sender: TObject);N13Click(Sender: TObject);sostav_SetCalcFields(DataSet: TDataSet);N14Click(Sender: TObject);N5Click(Sender: TObject);N22Click(Sender: TObject);N15Click(Sender: TObject);N25Click(Sender: TObject);N21Click(Sender: TObject);N19Click(Sender: TObject);N20Click(Sender: TObject);N7Click(Sender: TObject);N23Click(Sender: TObject);N24Click(Sender: TObject);sostav_SetsumChange(Sender: TField);norm_rasc_SetNORMAChange(Sender: TField);norm_rasc_SetRASCENKAChange(Sender: TField);N17Click(Sender: TObject);sostav_SetSTOIMChange(Sender: TField);sostav_SetNORMAChange(Sender: TField);

{ Private declarations }

public

{ Public declarations };: TForm1;Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit10, Unit9, Unit11, Unit12, Unit13, Unit14, Unit15, Unit16, Unit17, Unit18, Unit19, Unit20, Unit21;

{$R *.dfm}TForm1.N12Click(Sender: TObject);_izm.Show;;TForm1.N10Click(Sender: TObject);.Show;;TForm1.N9Click(Sender: TObject);.Show;;TForm1.N8Click(Sender: TObject);.Show;;TForm1.N11Click(Sender: TObject);.Show;;TForm1.N13Click(Sender: TObject);_sostav.BitBtn1.Visible:=true;_sostav.BitBtn2.Visible:=false;_sostav.BitBtn3.Visible:=false;_sostav.Show;;TForm1.sostav_SetCalcFields(DataSet: TDataSet);,y,m: double;,s: integer;_Setsum.Value:=sostav_SetSTOIM.Value*sostav_SetNORMA.Value;:=sostav_Setsum.Value*1000;:=Trunc(x);:=n mod 10;:=n/10;:=trunc(y);s<5 then sostav_Setsum.Value:=n/100 else sostav_Setsum.Value:=(n+1)/100;;TForm1.N14Click(Sender: TObject);_norm_rasc.BitBtn1.Visible:=true;_norm_rasc.BitBtn2.Visible:=false;_norm_rasc.BitBtn3.Visible:=false;_norm_rasc.Show;;TForm1.N5Click(Sender: TObject);_sostav.BitBtn1.Visible:=false;_sostav.BitBtn2.Visible:=true;_sostav.BitBtn3.Visible:=false;_sostav.ShowModal;;TForm1.N22Click(Sender: TObject);_norm_rasc.BitBtn3.Visible:=false;_norm_rasc.BitBtn1.Visible:=false;_norm_rasc.BitBtn2.Visible:=true;_norm_rasc.ShowModal;;TForm1.N15Click(Sender: TObject);_kalk.Show;_kalk.bitbtn1.Visible:=true;_kalk.bitbtn2.Visible:=false;_kalk.BitBtn3.Visible:=false;_kalk.GroupBox3.Visible:=true;;TForm1.N25Click(Sender: TObject);_kalk.Show;_kalk.bitbtn2.Visible:=true;_kalk.bitbtn1.Visible:=false;_kalk.BitBtn3.Visible:=false;_kalk.GroupBox3.Visible:=false;;TForm1.N21Click(Sender: TObject);_kalk.GroupBox3.Visible:=false;_kalk.bitbtn1.Visible:=false;_kalk.BitBtn2.Visible:=false;_kalk.BitBtn3.Visible:=true;_kalk.Show;;TForm1.N19Click(Sender: TObject);_sostav.BitBtn3.Visible:=true;_sostav.BitBtn2.Visible:=false;_sostav.BitBtn1.Visible:=false;_sostav.Show;;TForm1.N20Click(Sender: TObject);_norm_rasc.BitBtn1.Visible:=false;_norm_rasc.BitBtn2.Visible:=false;_norm_rasc.BitBtn3.Visible:=true;_norm_rasc.Show;;TForm1.N7Click(Sender: TObject);MessageDlg('Выйти из программы?', mtCustom, [mbyes,mbno], 0) = mrYes;;TForm1.N23Click(Sender: TObject);_prog.Show;;TForm1.N24Click(Sender: TObject);.Show;;TForm1.sostav_SetsumChange(Sender: TField);: integer;: double;:=0;.sostav_Set.First;i:=0 to Form1.sostav_Set.RecordCount-1 do:=x+strtofloat(Form1.sostav_Set.fieldbyname('sum').AsString);.sostav_Set.Next;;.edit1.Text:=floattostr(x);;TForm1.norm_rasc_SetNORMAChange(Sender: TField);: integer;: double;:=0;.norm_rasc_Set.Last;.norm_rasc_Set.First;i:=0 to Form1.norm_rasc_Set.RecordCount-1 do:=x+Form1.norm_rasc_Set.fieldbyName('norma').Value;.norm_rasc_Set.Next;;_rasc.edit1.Text:=floattostr(x);;TForm1.norm_rasc_SetRASCENKAChange(Sender: TField);: integer;: double;:=0;.norm_rasc_Set.Last;.norm_rasc_Set.First;i:=0 to Form1.norm_rasc_Set.RecordCount-1 do:=y+Form1.norm_rasc_Set.fieldbyName('rascenka').Value;.norm_rasc_Set.Next;;_rasc.edit2.Text:=floattostr(y);;TForm1.N17Click(Sender: TObject);.Show;;TForm1.sostav_SetSTOIMChange(Sender: TField);: integer;: double;:=0;.sostav_Set.First;i:=0 to Form1.sostav_Set.RecordCount-1 do:=x+strtofloat(Form1.sostav_Set.fieldbyname('sum').AsString);.sostav_Set.Next;;.edit1.Text:=floattostr(x);;TForm1.sostav_SetNORMAChange(Sender: TField);: integer;: double;:=0;.sostav_Set.First;i:=0 to Form1.sostav_Set.RecordCount-1 do:=x+strtofloat(Form1.sostav_Set.fieldbyname('sum').AsString);.sostav_Set.Next;;.edit1.Text:=floattostr(x);;.Unit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, Menus, StdCtrls, DB, Buttons;_izm = class(TForm): TDBGrid;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TGroupBox;: TBitBtn;: TEdit;: TBitBtn;N11Click(Sender: TObject);N12Click(Sender: TObject);BitBtn5Click(Sender: TObject);BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N10Click(Sender: TObject);N9Click(Sender: TObject);N5Click(Sender: TObject);N6Click(Sender: TObject);Edit1Change(Sender: TObject);FormActivate(Sender: TObject);N8Click(Sender: TObject);BitBtn6Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_izm: Ted_izm;Unit1;

{$R *.dfm}Ted_izm.N11Click(Sender: TObject);.Visible:=true;.Visible:=false;.Ed_Set.Insert;;Ted_izm.N12Click(Sender: TObject);.Visible:=true;.Visible:=false;.Ed_Set.Edit;;Ted_izm.BitBtn5Click(Sender: TObject);.Ed_Set.Post;.Visible:=true;.Visible:=true;.Text:='';.Visible:=false;.Caption:='';;Ted_izm.BitBtn1Click(Sender: TObject);.Ed_Set.First;;Ted_izm.BitBtn2Click(Sender: TObject);.Ed_Set.Prior;;Ted_izm.BitBtn3Click(Sender: TObject);.Ed_Set.Next;;Ted_izm.BitBtn4Click(Sender: TObject);.Ed_Set.Last;;Ted_izm.N10Click(Sender: TObject);_izm.Close;;Ted_izm.N9Click(Sender: TObject);:integer;:integer;:=0;.Ed_Set.Last;.Ed_Set.First;i:=0 to Form1.Ed_Set.RecordCount-1 do:=k+1;.Ed_Set.Next;

end;('Количество записей в справочнике: '+IntToStr(k));

end;Ted_izm.N5Click(Sender: TObject);.Ed_Set.Active:=false;.Ed_Set.SelectSQL.Clear;.Ed_Set.SelectSQL.Add('select * from ed_izm order by ed_izm ASC');.Ed_Set.Active:=true;;Ted_izm.N6Click(Sender: TObject);.Ed_Set.Active:=false;.Ed_Set.SelectSQL.Clear;.Ed_Set.SelectSQL.Add('select * from ed_izm order by ed_izm DESC');.Ed_Set.Active:=true;;Ted_izm.Edit1Change(Sender: TObject);.Ed_Set.Locate('ed_izm',Edit1.Text,[loCaseInsensitive, loPartialKey]);;Ted_izm.FormActivate(Sender: TObject);.Visible:=false;;Ted_izm.N8Click(Sender: TObject);.Visible:=true;.Visible:=false;

groupbox1.Caption:='Введите название единицы измерения:';

end;Ted_izm.BitBtn6Click(Sender: TObject);.Visible:=true;.Visible:=true;.Text:='';.Visible:=false;.Caption:='';;.Unit3;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Grids, DBGrids, DB, Menus;= class(TForm): TDBGrid;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TGroupBox;: TBitBtn;: TEdit;: TBitBtn;: TMenuItem;: TMenuItem;N6Click(Sender: TObject);N5Click(Sender: TObject);FormActivate(Sender: TObject);N7Click(Sender: TObject);N8Click(Sender: TObject);BitBtn6Click(Sender: TObject);BitBtn5Click(Sender: TObject);N13Click(Sender: TObject);N15Click(Sender: TObject);N17Click(Sender: TObject);N14Click(Sender: TObject);N16Click(Sender: TObject);N18Click(Sender: TObject);N19Click(Sender: TObject);N20Click(Sender: TObject);N21Click(Sender: TObject);Edit1Change(Sender: TObject);BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N23Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: Tizd;: string; Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit15, Unit16, Unit17, Unit2, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}Tizd.N6Click(Sender: TObject);.Close;;Tizd.N5Click(Sender: TObject);:integer;:integer;:=0;.Izd_Set.Last;.Izd_Set.First;i:=0 to Form1.Izd_Set.RecordCount-1 do:=k+1;.Izd_Set.Next;

end;('Количество записей в справочнике: '+IntToStr(k));

end;Tizd.FormActivate(Sender: TObject);.Visible:=false;;Tizd.N7Click(Sender: TObject);.Visible:=true;.Izd_Set.Insert;;Tizd.N8Click(Sender: TObject);.Visible:=true;.Izd_Set.Edit;;Tizd.BitBtn6Click(Sender: TObject);.Visible:=false;.Visible:=false;.Visible:=true;.Text:='';.Caption:='';;Tizd.BitBtn5Click(Sender: TObject);.Izd_Set.Post;.Visible:=false;;Tizd.N13Click(Sender: TObject);.Izd_Set.Active:=false;.Izd_Set.SelectSQL.Clear;.Izd_Set.SelectSQL.Add('select * from got_izd order by kod_obozn ASC');.Izd_Set.Active:=true;;Tizd.N15Click(Sender: TObject);.Izd_Set.Active:=false;.Izd_Set.SelectSQL.Clear;.Izd_Set.SelectSQL.Add('select * from got_izd order by izd ASC');.Izd_Set.Active:=true;;Tizd.N17Click(Sender: TObject);.Izd_Set.Active:=false;.Izd_Set.SelectSQL.Clear;.Izd_Set.SelectSQL.Add('select * from got_izd order by proekt ASC');.Izd_Set.Active:=true;;Tizd.N14Click(Sender: TObject);.Izd_Set.Active:=false;.Izd_Set.SelectSQL.Clear;.Izd_Set.SelectSQL.Add('select * from got_izd order by kod_obozn DESC');.Izd_Set.Active:=true;;Tizd.N16Click(Sender: TObject);.Izd_Set.Active:=false;.Izd_Set.SelectSQL.Clear;.Izd_Set.SelectSQL.Add('select * from got_izd order by izd DESC');.Izd_Set.Active:=true;;Tizd.N18Click(Sender: TObject);.Izd_Set.Active:=false;.Izd_Set.SelectSQL.Clear;.Izd_Set.SelectSQL.Add('select * from got_izd order by proekt DESC');.Izd_Set.Active:=true;;Tizd.N19Click(Sender: TObject);:='kod_obozn';.Visible:=true;.Caption:='Введите код изделия:';.Visible:=true;.Visible:=false;;Tizd.N20Click(Sender: TObject);:='izd';.Visible:=true;

groupbox1.Caption:='Введите название изделия:';

edit1.Visible:=true;.Visible:=false;;Tizd.N21Click(Sender: TObject);:='proekt';.Visible:=true;

groupbox1.Caption:='Введите проект изделия:';

edit1.Visible:=true;.Visible:=false;;Tizd.Edit1Change(Sender: TObject);.Izd_Set.Locate(shablon,Edit1.Text,[loCaseInsensitive, loPartialKey]);;Tizd.BitBtn1Click(Sender: TObject);.Izd_Set.First;;Tizd.BitBtn2Click(Sender: TObject);.Izd_Set.Prior;;Tizd.BitBtn3Click(Sender: TObject);.Izd_Set.Next;;Tizd.BitBtn4Click(Sender: TObject);.Izd_Set.Last;;Tizd.N23Click(Sender: TObject);_izd.QuickRep1.Preview;;.Unit4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Menus, Grids, DB, DBGrids;= class(TForm): TDBGrid;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TGroupBox;: TEdit;: TBitBtn;: TBitBtn;: TMenuItem;: TMenuItem;N2Click(Sender: TObject);N3Click(Sender: TObject);BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N5Click(Sender: TObject);N6Click(Sender: TObject);BitBtn5Click(Sender: TObject);BitBtn6Click(Sender: TObject);N11Click(Sender: TObject);N12Click(Sender: TObject);N13Click(Sender: TObject);Edit1Change(Sender: TObject);N15Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: Trabot;Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit15, Unit16, Unit17, Unit18, Unit2, Unit3, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}Trabot.N2Click(Sender: TObject);:integer;:integer;:=0;.Rabot_Set.Last;.Rabot_Set.First;i:=0 to Form1.Rabot_Set.RecordCount-1 do:=k+1;.Rabot_Set.Next;

end;('Количество записей в справочнике: '+IntToStr(k));

end;Trabot.N3Click(Sender: TObject);.Close;;Trabot.BitBtn1Click(Sender: TObject);.Rabot_Set.First;;Trabot.BitBtn2Click(Sender: TObject);.Rabot_Set.Prior;;Trabot.BitBtn3Click(Sender: TObject);.Rabot_Set.Next;;Trabot.BitBtn4Click(Sender: TObject);.Rabot_Set.Last;;Trabot.N5Click(Sender: TObject);.Visible:=true;.Visible:=false;.Rabot_Set.Insert;;Trabot.N6Click(Sender: TObject);.Visible:=true;.Visible:=false;.Rabot_Set.Edit;;Trabot.BitBtn5Click(Sender: TObject);.Rabot_Set.Post;.Visible:=false;;Trabot.BitBtn6Click(Sender: TObject);.Visible:=false;.Caption:='';.Visible:=true;.Visible:=false;.Text:='';;Trabot.N11Click(Sender: TObject);.Rabot_Set.Active:=false;.Rabot_Set.SelectSQL.Clear;.Rabot_Set.SelectSQL.Add('select * from raboti order by rabot ASC');.Rabot_Set.Active:=true;;Trabot.N12Click(Sender: TObject);.Rabot_Set.Active:=false;.Rabot_Set.SelectSQL.Clear;.Rabot_Set.SelectSQL.Add('select * from raboti order by rabot DESC');.Rabot_Set.Active:=true;;Trabot.N13Click(Sender: TObject);.Visible:=true;.Caption:='Введите название выполняемых работ:';.Visible:=false;.Visible:=true;;Trabot.Edit1Change(Sender: TObject);.Rabot_Set.Locate('rabot',Edit1.Text,[loCaseInsensitive, loPartialKey]);;Trabot.N15Click(Sender: TObject);_rab.QuickRep1.Preview;;.Unit5;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Menus, Grids, DB, DBGrids;= class(TForm): TDBGrid;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TGroupBox;: TEdit;: TBitBtn;: TBitBtn;: TMenuItem;: TMenuItem;BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N2Click(Sender: TObject);N3Click(Sender: TObject);N5Click(Sender: TObject);BitBtn6Click(Sender: TObject);N6Click(Sender: TObject);BitBtn5Click(Sender: TObject);N10Click(Sender: TObject);N11Click(Sender: TObject);N13Click(Sender: TObject);Edit1Change(Sender: TObject);N15Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: Tmater;Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit15, Unit16, Unit17, Unit2, Unit3, Unit4, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}Tmater.BitBtn1Click(Sender: TObject);.mater_set.First;;Tmater.BitBtn2Click(Sender: TObject);.mater_set.Prior;;Tmater.BitBtn3Click(Sender: TObject);.mater_set.Next;;Tmater.BitBtn4Click(Sender: TObject);.mater_set.Last;;Tmater.N2Click(Sender: TObject);:integer;:integer;:=0;.mater_Set.Last;.mater_Set.First;i:=0 to Form1.mater_Set.RecordCount-1 do:=k+1;.mater_Set.Next;

end;('Количество записей в справочнике: '+IntToStr(k));

end;Tmater.N3Click(Sender: TObject);.Close;;Tmater.N5Click(Sender: TObject);.Visible:=true;.Visible:=false;.Visible:=true;.mater_set.Insert;;Tmater.BitBtn6Click(Sender: TObject);.Visible:=false;.Visible:=false;.Visible:=true;.Text:='';.Caption:='';;Tmater.N6Click(Sender: TObject);.Visible:=true;.Visible:=false;.Visible:=true;.mater_set.Edit;;Tmater.BitBtn5Click(Sender: TObject);.mater_set.Post;.Visible:=false;.Visible:=false;.Visible:=true;;Tmater.N10Click(Sender: TObject);.mater_Set.Active:=false;.mater_Set.SelectSQL.Clear;.mater_Set.SelectSQL.Add('select * from material order by mater ASC');.mater_Set.Active:=true;;Tmater.N11Click(Sender: TObject);.mater_Set.Active:=false;.mater_Set.SelectSQL.Clear;.mater_Set.SelectSQL.Add('select * from material order by mater DESC');.mater_Set.Active:=true;;Tmater.N13Click(Sender: TObject);.Visible:=true;.Visible:=true;.Visible:=false;.Caption:='Введите название материала:';;Tmater.Edit1Change(Sender: TObject);.mater_Set.Locate('mater',Edit1.Text,[loCaseInsensitive, loPartialKey]);;Tmater.N15Click(Sender: TObject);_mat.QuickRep1.Preview;;.Unit6;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, Buttons, Grids, DB, DBGrids;= class(TForm): TDBGrid;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TGroupBox;: TEdit;: TBitBtn;: TBitBtn;N2Click(Sender: TObject);N3Click(Sender: TObject);N5Click(Sender: TObject);N6Click(Sender: TObject);BitBtn5Click(Sender: TObject);BitBtn6Click(Sender: TObject);BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N7Click(Sender: TObject);N10Click(Sender: TObject);N11Click(Sender: TObject);N13Click(Sender: TObject);Edit1Change(Sender: TObject);

{ Private declarations }

{ Public declarations };: Tstat;Unit1;

{$R *.dfm}Tstat.N2Click(Sender: TObject);:integer;:integer;:=0;.stat_Set.Last;.stat_Set.First;i:=0 to Form1.stat_Set.RecordCount-1 do:=k+1;.stat_Set.Next;

end;('Количество записей в справочнике: '+IntToStr(k));

end;Tstat.N3Click(Sender: TObject);.Close;;Tstat.N5Click(Sender: TObject);.Visible:=true;.Visible:=false;.stat_Set.Insert;;Tstat.N6Click(Sender: TObject);.Visible:=true;.Visible:=false;.stat_Set.Edit;;Tstat.BitBtn5Click(Sender: TObject);.stat_Set.Post;.Visible:=false;.Visible:=true;.stat_Set.FieldByName('stat').ReadOnly:=true;;Tstat.BitBtn6Click(Sender: TObject);.Visible:=false;.Visible:=true;.Visible:=true;.Text:='';.Caption:='';.stat_Set.FieldByName('stat').ReadOnly:=true;;Tstat.BitBtn1Click(Sender: TObject);.stat_Set.First;;Tstat.BitBtn2Click(Sender: TObject);.stat_Set.Prior;;Tstat.BitBtn3Click(Sender: TObject);.stat_Set.Next;;Tstat.BitBtn4Click(Sender: TObject);.stat_Set.Last;;Tstat.N10Click(Sender: TObject);.stat_Set.Active:=false;.stat_Set.SelectSQL.Clear;.stat_Set.SelectSQL.Add('select * from stat order by stat ASC');.stat_Set.Active:=true;;Tstat.N11Click(Sender: TObject);.stat_Set.Active:=false;.stat_Set.SelectSQL.Clear;.stat_Set.SelectSQL.Add('select * from stat order by stat DESC');.stat_Set.Active:=true;;Tstat.N13Click(Sender: TObject);.Visible:=true;.Visible:=true;.Visible:=false;.Caption:='Введите статью калькуляции:';;Tstat.Edit1Change(Sender: TObject);.stat_Set.Locate('stat',Edit1.Text,[loCaseInsensitive, loPartialKey]);;.Unit7;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DBCtrls, StdCtrls, Mask, ExtCtrls, DB, Menus, Buttons;= class(TForm): TDBGrid;: TGroupBox;: TGroupBox;: TGroupBox;: TEdit;: TLabel;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TGroupBox;: TBitBtn;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TEdit;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TLabel;: TMenuItem;: TMenuItem;: TLabel;: TLabel;: TLabel;: TLabel;FormActivate(Sender: TObject);N7Click(Sender: TObject);BitBtn1Click(Sender: TObject);N9Click(Sender: TObject);N5Click(Sender: TObject);N6Click(Sender: TObject);BitBtn2Click(Sender: TObject);N14Click(Sender: TObject);N15Click(Sender: TObject);N16Click(Sender: TObject);N17Click(Sender: TObject);N18Click(Sender: TObject);N19Click(Sender: TObject);N13Click(Sender: TObject);Edit2Change(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);BitBtn5Click(Sender: TObject);BitBtn6Click(Sender: TObject);N21Click(Sender: TObject);N8Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: Tsostav;Unit1, Unit8, Unit10, Unit11, Unit12, Unit2, Unit3, Unit4, Unit5, Unit6, Unit9, Unit13, Unit14, Unit15, Unit16, Unit17, Unit18, Unit19, Unit20, Unit21;

{$R *.dfm}Tsostav.FormActivate(Sender: TObject);: integer;: double;:=0;.sostav_Set.First;i:=0 to Form1.sostav_Set.RecordCount-1 do:=x+strtofloat(Form1.sostav_Set.fieldbyname('sum').AsString);.sostav_Set.Next;;.Text:=floattostr(x);;Tsostav.N7Click(Sender: TObject);: integer;, mes: string;.sostav_Set.FieldByName('mater').ReadOnly:=false;.sostav_Set.FieldByName('ed_izm').ReadOnly:=false;.ReadOnly:=false;.Visible:=true;.Visible:=false;:=label3.Caption;:=strtoint(label4.Caption);:=label6.Caption;.sostav_Set.insert;.sostav_Set.FieldByName('mes').Value:=mes;.sostav_Set.FieldByName('god').Value:=god;.sostav_Set.FieldByName('kod_izd').Value:=strtoint(izd);;Tsostav.BitBtn1Click(Sender: TObject);.kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=nov_sostav.dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=nov_sostav.combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(nov_sostav.combobox2.Text);.kalk_Set.Active:=true;.kalk_Set.Last;Form1.kalk_Set.RecordCount<>0 then

if MessageDlg('Необходимо будет провести пересчет калькуляции. Продолжить?', mtCustom, [mbyes,mbno], 0) = mrYes.sostav_Set.Edit;.ReadOnly:=true;.Visible:=false;.Label3.Caption:=nov_sostav.combobox1.Text;.Label4.Caption:=nov_sostav.combobox2.Text;.Label5.Caption:=nov_sostav.dbLookupcombobox1.Text;.Show;.sostav_Set.FieldByName('mater').ReadOnly:=true;.sostav_Set.FieldByName('ed_izm').ReadOnly:=true;.ReadOnly:=true;;;Tsostav.N9Click(Sender: TObject);.kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=nov_sostav.dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=nov_sostav.combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(nov_sostav.combobox2.Text);.kalk_Set.Active:=true;.kalk_Set.Last;Form1.kalk_Set.RecordCount<>0 then

if MessageDlg('Необходимо будет провести пересчет калькуляции. Продолжить?', mtCustom, [mbyes,mbno], 0) = mrYes .ReadOnly:=false;MessageDlg('Удалить выбранную запись?', mtCustom, [mbyes,mbno], 0) = mrYes .sostav_Set.Delete;.Label3.Caption:=nov_sostav.combobox1.Text;.Label4.Caption:=nov_sostav.combobox2.Text;.Label5.Caption:=nov_sostav.dbLookupcombobox1.Text;.Show;.ReadOnly:=true;.sostav_Set.FieldByName('mater').ReadOnly:=true;.sostav_Set.FieldByName('ed_izm').ReadOnly:=true;;;Tsostav.N5Click(Sender: TObject);:integer;:integer;:=0;.sostav_Set.Last;.sostav_Set.First;i:=0 to Form1.sostav_Set.RecordCount-1 do:=k+1;.sostav_Set.Next;

end;('Количество затраченных материалов на изделие: '+IntToStr(k));

end;Tsostav.N6Click(Sender: TObject);.Close;;Tsostav.BitBtn2Click(Sender: TObject);.sostav_Set.FieldByName('mater').ReadOnly:=true;.ReadOnly:=true;.Visible:=false;.Visible:=false;.Visible:=true;.Caption:='';.Text:='';.sostav_Set.Cancel;;Tsostav.N14Click(Sender: TObject);.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd, material where material.kod_mater=sostav_izd.kod_mater order by mater ASC');.sostav_Set.Active:=true;;Tsostav.N15Click(Sender: TObject);.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd, material where material.kod_mater=sostav_izd.kod_mater order by mater DESC');.sostav_Set.Active:=true;;Tsostav.N16Click(Sender: TObject);.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd order by stoim ASC');.sostav_Set.Active:=true;;Tsostav.N17Click(Sender: TObject);.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd order by stoim DESC');.sostav_Set.Active:=true;;Tsostav.N18Click(Sender: TObject);.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd order by norma ASC');.sostav_Set.Active:=true;;Tsostav.N19Click(Sender: TObject);.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd order by norma DESC');.sostav_Set.Active:=true;;Tsostav.N13Click(Sender: TObject);.Visible:=true;.Visible:=true;.Visible:=false;.Caption:='Введите наименование материала:';;Tsostav.Edit2Change(Sender: TObject);.sostav_Set.Locate('mat',Edit2.Text,[loCaseInsensitive, loPartialKey]);;Tsostav.BitBtn3Click(Sender: TObject);.sostav_Set.First;;Tsostav.BitBtn4Click(Sender: TObject);.sostav_Set.Prior;;Tsostav.BitBtn5Click(Sender: TObject);.sostav_Set.Next;;Tsostav.BitBtn6Click(Sender: TObject);.sostav_Set.Last;;Tsostav.N21Click(Sender: TObject);_sostav.QuickRep1.Preview;;Tsostav.N8Click(Sender: TObject);.ReadOnly:=false;.Visible:=true;.Visible:=false;.sostav_Set.Edit;.sostav_Set.FieldByName('mater').ReadOnly:=false;.sostav_Set.FieldByName('ed_izm').ReadOnly:=false;;.Unit8;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DBCtrls;_sostav = class(TForm): TGroupBox;: TBitBtn;: TDBLookupComboBox;: TGroupBox;: TComboBox;: TComboBox;: TBitBtn;: TBitBtn;BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);FormActivate(Sender: TObject);BitBtn3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_sostav: Tnov_sostav;Unit1, Unit7, Unit2, Unit3, Unit4, Unit5, Unit6, Unit11, Unit10, Unit12, Unit13, Unit14, Unit9;

{$R *.dfm}Tnov_sostav.BitBtn1Click(Sender: TObject);(combobox1.Text='') or (combobox2.Text='') or (dblookupcombobox1.Text='')

then showmessage('Не все поля заполнены!')

else.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.sostav_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.sostav_Set.ParamByName('param_mes').Value:=combobox1.Text;.sostav_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.sostav_Set.Active:=true;Form1.sostav_Set.RecordCount=0 then

showmessage('На этот период расход данного изделия не составлен')

else.Label3.Caption:=combobox1.Text;.Label4.Caption:=combobox2.Text;.Label5.Caption:=dblookupcombobox1.Text;.Label6.Caption:=dblookupcombobox1.KeyValue;.Show;_sostav.Close;;;Tnov_sostav.BitBtn2Click(Sender: TObject);i:integer;(combobox1.Text='') or (combobox2.Text='') or (dblookupcombobox1.Text='')

then showmessage('Не все поля заполнены!')

else.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.sostav_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.sostav_Set.ParamByName('param_mes').Value:=combobox1.Text;.sostav_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.sostav_Set.Active:=true;.sostav_Set.Last;Form1.sostav_Set.RecordCount<>0

then showmessage('Расход материалов по данному изделию на данный период уже составлен')

else.Label3.Caption:=combobox1.Text;.Label4.Caption:=combobox2.Text;.Label5.Caption:=dblookupcombobox1.Text;.Label6.Caption:=dblookupcombobox1.KeyValue;.Show;_sostav.Close;;;;Tnov_sostav.FormActivate(Sender: TObject);.Text:=FormatDateTime('mmmm', Now);.Text:=FormatDateTime('yyyy', Now);;Tnov_sostav.BitBtn3Click(Sender: TObject);(combobox1.Text='') or (combobox2.Text='') or (dblookupcombobox1.Text='')

then showmessage('Не все поля заполнены!')

else.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.sostav_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.sostav_Set.ParamByName('param_mes').Value:=combobox1.Text;.sostav_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.sostav_Set.Active:=true;Form1.sostav_Set.RecordCount=0 then

showmessage('На этот период расход данного изделия не составлен')

else_sostav.QuickRep1.Preview;_sostav.Close;;;.Unit9;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, Grids, DBGrids, ExtCtrls, DB, Menus, Buttons;_rasc = class(TForm): TDBGrid;: TGroupBox;: TGroupBox;: TGroupBox;: TLabel;: TEdit;: TEdit;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TGroupBox;: TBitBtn;: TEdit;: TBitBtn;: TLabel;: TMenuItem;: TMenuItem;: TLabel;: TLabel;: TLabel;: TLabel;N2Click(Sender: TObject);N5Click(Sender: TObject);BitBtn5Click(Sender: TObject);N6Click(Sender: TObject);N7Click(Sender: TObject);BitBtn6Click(Sender: TObject);BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N13Click(Sender: TObject);N14Click(Sender: TObject);N15Click(Sender: TObject);N16Click(Sender: TObject);N17Click(Sender: TObject);N18Click(Sender: TObject);N3Click(Sender: TObject);N19Click(Sender: TObject);Edit3Change(Sender: TObject);N21Click(Sender: TObject);FormActivate(Sender: TObject);

{ Private declarations }

{ Public declarations };_rasc: Tnorm_rasc;Unit1, Unit10, Unit11, Unit12, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit13, Unit14, Unit15;

{$R *.dfm}Tnorm_rasc.N2Click(Sender: TObject);:integer;:integer;:=0;.norm_rasc_Set.Last;.norm_rasc_Set.First;i:=0 to Form1.norm_rasc_Set.RecordCount-1 do:=k+1;.norm_rasc_Set.Next;

end;('Количество бригад, выполняющие данные работы: '+IntToStr(k));

end;Tnorm_rasc.N5Click(Sender: TObject);: integer;, mes: string;.ReadOnly:=false;.norm_rasc_Set.FieldByName('rabot').ReadOnly:=false;.Visible:=true;.Visible:=false;:=label3.Caption;:=strtoint(label4.Caption);:=label6.Caption;.norm_rasc_Set.Insert;.norm_rasc_Set.Edit;Form1.norm_rasc_Set.State in [dsEdit] then.norm_rasc_Set.FieldByName('kod_izd').Value:=strtoint(label6.Caption);.norm_rasc_Set.FieldByName('mes').Value:=label3.Caption;.norm_rasc_Set.FieldByName('god').Value:=strtoint(label4.Caption);.norm_rasc_Set.FieldByName('norma').Value:=1;.norm_rasc_Set.FieldByName('rascenka').Value:=1;;;Tnorm_rasc.BitBtn5Click(Sender: TObject);.kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=nov_norm_rasc.dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=nov_norm_rasc.combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(nov_norm_rasc.combobox2.Text);.kalk_Set.Active:=true;.kalk_Set.Last;Form1.kalk_Set.RecordCount<>0 then

if MessageDlg('Необходимо будет провести пересчет калькуляции. Продолжить?', mtCustom, [mbyes,mbno], 0) = mrYes .norm_rasc_Set.Edit;.norm_rasc_Set.FieldByName('kod_izd').Value:=strtoint(label6.Caption);.norm_rasc_Set.FieldByName('mes').Value:=label3.Caption;.norm_rasc_Set.FieldByName('god').AsString:=label4.Caption;.norm_rasc_Set.Post;.Visible:=false;.Label3.Caption:=nov_norm_rasc.combobox1.Text;.Label4.Caption:=nov_norm_rasc.combobox2.Text;.Label5.Caption:=nov_norm_rasc.dbLookupcombobox1.Text;.Show;.ReadOnly:=true;.norm_rasc_Set.FieldByName('rabot').ReadOnly:=true;;;Tnorm_rasc.N6Click(Sender: TObject);.ReadOnly:=false;.norm_rasc_Set.FieldByName('rabot').ReadOnly:=false;.Visible:=true;.Visible:=false;.norm_rasc_Set.Edit;;Tnorm_rasc.N7Click(Sender: TObject);.kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=nov_norm_rasc.dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=nov_norm_rasc.combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(nov_norm_rasc.combobox2.Text);.kalk_Set.Active:=true;.kalk_Set.Last;Form1.kalk_Set.RecordCount<>0 then

if MessageDlg('Необходимо будет провести пересчет калькуляции. Продолжить?', mtCustom, [mbyes,mbno], 0) = mrYes MessageDlg('Удалить выбранную запись?', mtCustom, [mbyes,mbno], 0) = mrYes .norm_rasc_Set.Delete;.Label3.Caption:=nov_norm_rasc.combobox1.Text;.Label4.Caption:=nov_norm_rasc.combobox2.Text;.Label5.Caption:=nov_norm_rasc.dbLookupcombobox1.Text;.Show;.ReadOnly:=true;.norm_rasc_Set.FieldByName('rabot').ReadOnly:=true;;;Tnorm_rasc.BitBtn6Click(Sender: TObject);.Visible:=false;.Visible:=false;.Text:='';.Visible:=true;.Caption:='';.norm_rasc_Set.Cancel;;Tnorm_rasc.BitBtn1Click(Sender: TObject);.norm_rasc_Set.First;;Tnorm_rasc.BitBtn2Click(Sender: TObject);.norm_rasc_Set.Prior;;Tnorm_rasc.BitBtn3Click(Sender: TObject);.norm_rasc_Set.Next;;Tnorm_rasc.BitBtn4Click(Sender: TObject);.norm_rasc_Set.Last;;Tnorm_rasc.N13Click(Sender: TObject);.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki, raboti where raboti.kod_rabot=norm_rascenki.kod_rabot order by rabot ASC');.norm_rasc_Set.Active:=true;;Tnorm_rasc.N14Click(Sender: TObject);.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki, raboti where raboti.kod_rabot=norm_rascenki.kod_rabot order by rabot DESC');.norm_rasc_Set.Active:=true;;Tnorm_rasc.N15Click(Sender: TObject);.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki order by norma ASC');.norm_rasc_Set.Active:=true;;Tnorm_rasc.N16Click(Sender: TObject);.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki order by norma DESC');.norm_rasc_Set.Active:=true;;Tnorm_rasc.N17Click(Sender: TObject);.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki order by rascenka ASC');.norm_rasc_Set.Active:=true;;Tnorm_rasc.N18Click(Sender: TObject);.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki order by rascenka DESC');.norm_rasc_Set.Active:=true;;Tnorm_rasc.N3Click(Sender: TObject);_rasc.Close;;Tnorm_rasc.N19Click(Sender: TObject);.Visible:=true;.Visible:=true;.Visible:=false;.Caption:='Введите выполняемую работу:';;Tnorm_rasc.Edit3Change(Sender: TObject);.norm_rasc_Set.Locate('rab',Edit3.Text,[loCaseInsensitive, loPartialKey]);;Tnorm_rasc.N21Click(Sender: TObject);_norm_rasc.QuickRep1.Preview;;Tnorm_rasc.FormActivate(Sender: TObject);: integer;,y: double;:=0;:=0;.norm_rasc_Set.Last;.norm_rasc_Set.First;i:=0 to Form1.norm_rasc_Set.RecordCount-1 do:=x+Form1.norm_rasc_Set.fieldbyName('norma').Value;:=y+Form1.norm_rasc_Set.fieldbyName('rascenka').Value;.norm_rasc_Set.Next;;.Text:=floattostr(x);.Text:=floattostr(y);;.Unit10;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DBCtrls;_norm_rasc = class(TForm): TGroupBox;: TDBLookupComboBox;: TBitBtn;: TGroupBox;: TComboBox;: TComboBox;: TBitBtn;: TBitBtn;BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);FormActivate(Sender: TObject);BitBtn3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_norm_rasc: Tnov_norm_rasc;Unit1, Unit9, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit12, Unit15, Unit11, Unit13, Unit14;

{$R *.dfm}Tnov_norm_rasc.BitBtn1Click(Sender: TObject);(combobox1.Text='') or (combobox2.Text='') or (dblookupcombobox1.Text='')

then showmessage('Не все поля заполнены!')

else.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.norm_rasc_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.norm_rasc_Set.ParamByName('param_mes').Value:=combobox1.Text;.norm_rasc_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.norm_rasc_Set.Active:=true;Form1.norm_rasc_Set.RecordCount=0 then

showmessage('На этот период нормы времени и расценки для данного изделия не введены')

else_rasc.Label3.Caption:=combobox1.Text;_rasc.Label4.Caption:=combobox2.Text;_rasc.Label5.Caption:=dbLookupcombobox1.Text;_rasc.Label6.Caption:=dbLookupcombobox1.KeyValue;_rasc.Show;_norm_rasc.Close;;;Tnov_norm_rasc.BitBtn2Click(Sender: TObject);:integer;(combobox1.Text='') or (combobox2.Text='') or (dblookupcombobox1.Text='')

then showmessage('Не все поля заполнены!')

else.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.norm_rasc_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.norm_rasc_Set.ParamByName('param_mes').Value:=combobox1.Text;.norm_rasc_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.norm_rasc_Set.Active:=true;.norm_rasc_Set.Last;Form1.norm_rasc_Set.RecordCount<>0 then

showmessage('Нормы времени и расценки по данному изделию на этот период уже введены')

else_rasc.Label3.Caption:=combobox1.Text;_rasc.Label4.Caption:=combobox2.Text;_rasc.Label5.Caption:=dbLookupcombobox1.Text;_rasc.Label6.Caption:=dbLookupcombobox1.KeyValue;_rasc.Show;_norm_rasc.Close;;;;Tnov_norm_rasc.FormActivate(Sender: TObject);.Text:=FormatDateTime('mmmm', Now);.Text:=FormatDateTime('yyyy', Now);;Tnov_norm_rasc.BitBtn3Click(Sender: TObject);(combobox1.Text='') or (combobox2.Text='') or (dblookupcombobox1.Text='')

then showmessage('Не все поля заполнены!')

else.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.norm_rasc_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.norm_rasc_Set.ParamByName('param_mes').Value:=combobox1.Text;.norm_rasc_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.norm_rasc_Set.Active:=true;Form1.norm_rasc_Set.RecordCount=0 then

showmessage('На этот период нормы времени и расценки для данного изделия не введены')

else_norm_rasc.QuickRep1.Preview;_norm_rasc.Close;;;.Unit11;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DBCtrls, Grids, DBGrids, DB, ExtCtrls;= class(TForm): TDBGrid;: TGroupBox;: TLabel;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TLabel;: TBitBtn;: TLabel;: TLabel;: TLabel;: TBitBtn;BitBtn2Click(Sender: TObject);BitBtn1Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);BitBtn5Click(Sender: TObject);BitBtn6Click(Sender: TObject);FormActivate(Sender: TObject);

{ Private declarations }

{ Public declarations };: Tkalk;Unit1, Unit10, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit12, Unit13;

{$R *.dfm}Tkalk.BitBtn2Click(Sender: TObject);.kalk_Set.Prior;;Tkalk.BitBtn1Click(Sender: TObject);.kalk_Set.First;;Tkalk.BitBtn3Click(Sender: TObject);.kalk_Set.Next;;Tkalk.BitBtn4Click(Sender: TObject);.kalk_Set.Last;;Tkalk.BitBtn5Click(Sender: TObject);_kalk.QuickRep1.Preview;;;Tkalk.BitBtn6Click(Sender: TObject);x,y: double;: integer;

begin:=0;

//сумма на сырье и материалы

Form1.sostav_Set.Last;.sostav_Set.First;i:=0 to Form1.sostav_Set.RecordCount-1 do:=x+strtofloat(Form1.sostav_Set.fieldbyName('sum').AsString);.sostav_Set.Next;;

x:=round(x);:=0;

//сумма осн.з/п произв. рабочих

Form1.norm_rasc_Set.Last;.norm_rasc_Set.First;i:=0 to Form1.norm_rasc_Set.RecordCount-1 do:=y+Form1.norm_rasc_Set.fieldbyName('rascenka').Value;.norm_rasc_Set.Next;;

//исчисление калькуляции.kalk_Set.Last;.kalk_Set.First;i:=0 to Form1.kalk_Set.RecordCount-1 doForm1.kalk_Set.Locate('kod_stat','5',[loCaseInsensitive, loPartialKey])_ten:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_ten;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','6',[loCaseInsensitive, loPartialKey])_en:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_en;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','1',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=x;_m:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','8',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=y;_ozp:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','2',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_m/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_tzr:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','7',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_ozp*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_zp:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','9',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_zp/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_strah:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','11',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_zp/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_nesch:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','12',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_zp/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_proizv:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','13',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_m+s_tzr+s_ten+s_en+s_zp+s_strah+s_nesch+s_proizv;_pr_s:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','14',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_pr_s/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_kr:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','15',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_pr_s/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_ohr:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','16',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_pr_s+s_kr+s_ohr;_pol_s:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','17',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_pol_s/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_p:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','18',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_pol_s+s_p;_op_c:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','20',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;:=s_op_c;:=Trunc(m);:=n mod 100;s<50 then s_d_op_c:=n-s else s_d_op_c:=n+(100-s);.kalk_Set.FieldByName('summa').Value:=s_d_op_c;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','21',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_pol_s;_zat:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','22',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_d_op_c;_bezNDS:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','23',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_bezNDS/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_NDS:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','24',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_bezNDS+s_NDS;.kalk_Set.Post;;

end;('Пересчет калькуляции выполнен успешно.');

//конец исчисления;Tkalk.FormActivate(Sender: TObject);(DBGrid1.Handle, SB_VERt, false);;.Unit12;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DB, DBCtrls;_kalk = class(TForm): TGroupBox;: TDBLookupComboBox;: TBitBtn;: TGroupBox;: TComboBox;: TComboBox;: TGroupBox;: TLabel;: TLabel;: TEdit;: TBitBtn;: TLabel;: TLabel;: TBitBtn;BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);FormActivate(Sender: TObject);BitBtn3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_kalk: Tnov_kalk;_NDS, s_bezNDS, s_m, s_zp, s_ten, s_en, s_tzr, s_ozp, s_strah, s_nesch, s_proizv, s_pr_s, s_kr, s_ohr, s_pol_s, s_p, s_op_c, s_d_op_c, s_zat: double;, n, s: integer;, y, m: double;Unit1, Unit10, Unit11, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit13, Unit14, Unit15, Unit16, Unit17, Unit18, Unit19, Unit20, Unit21;

{$R *.dfm}Tnov_kalk.BitBtn1Click(Sender: TObject);_NDS, s_bezNDS, s_m, s_zp, s_ten, s_en, s_tzr, s_ozp, s_strah, s_nesch, s_proizv, s_pr_s, s_kr, s_ohr, s_pol_s, s_p, s_op_c, s_d_op_c, s_zat: double;, n, s: integer;, y, m: double;(dblookupcombobox1.Text='') or (combobox1.text='')(combobox2.Text='') or (edit1.Text='') or (edit2.Text='')

then showMessage('Не все поля заполнены!')

else.kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.kalk_Set.Active:=true;.kalk_Set.Last;Form1.kalk_Set.RecordCount<>0

then showmessage('Калькуляция по данному изделию на этот период уже составлена')

//есть ли расход материалов?

Form1.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.sostav_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.sostav_Set.ParamByName('param_mes').Value:=combobox1.Text;.sostav_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.sostav_Set.Active:=true;Form1.sostav_Set.RecordCount=0 then

begin('На этот период расход материалов на данное изделие не составлен');

//есть ли нормы и расценки?

Form1.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.norm_rasc_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.norm_rasc_Set.ParamByName('param_mes').Value:=combobox1.Text;.norm_rasc_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.norm_rasc_Set.Active:=true;Form1.norm_rasc_Set.RecordCount=0 then

begin('На этот период нормы времени и расценки для данного изделия не введены');:=0;

//сумма на сырье и материалы

Form1.sostav_Set.Last;.sostav_Set.First;i:=0 to Form1.sostav_Set.RecordCount-1 do:=x+strtofloat(Form1.sostav_Set.fieldbyName('sum').AsString);.sostav_Set.Next;;

x:=round(x);:=0;

//сумма осн.з/п произв. рабочих

Form1.norm_rasc_Set.Last;.norm_rasc_Set.First;i:=0 to Form1.norm_rasc_Set.RecordCount-1 do:=y+Form1.norm_rasc_Set.fieldbyName('rascenka').Value;.norm_rasc_Set.Next;;.stat_Set.Last;.stat_Set.First;i:=0 to Form1.stat_Set.RecordCount-1 do

begin

//добавление всех статей.kalk_Set.Insert;

Form1.kalk_Set.FieldByName('mes').Value:=combobox1.Text;.kalk_Set.FieldByName('god').Value:=strtoint(combobox2.Text);.kalk_Set.FieldByName('kod_izd').Value:=dblookupcombobox1.KeyValue;.kalk_Set.FieldByName('kod_stat').Value:=Form1.stat_Set.fieldbyname('kod_stat').Value;.kalk_Set.FieldByName('koef').Value:=Form1.stat_Set.fieldbyname('koef').Value;.stat_Set.Next;.kalk_Set.Post;

end;

//калькуляция на данное изделие на период

Form1.kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.kalk_Set.Active:=true;

//исчисление калькуляции.kalk_Set.Last;.kalk_Set.First;i:=0 to Form1.kalk_Set.RecordCount-1 doForm1.kalk_Set.Locate('kod_stat','1',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=x;_m:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','8',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=y;_ozp:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','5',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=strtofloat(edit1.Text);_ten:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','6',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=strtofloat(edit2.Text);_en:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','2',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_m/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_tzr:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','7',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_ozp*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_zp:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','9',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_zp/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_strah:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','11',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_zp/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_nesch:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','12',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_zp/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_proizv:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','13',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_m+s_tzr+s_ten+s_en+s_zp+s_strah+s_nesch+s_proizv;_pr_s:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','14',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_pr_s/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_kr:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','15',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_pr_s/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_ohr:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','16',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_pr_s+s_kr+s_ohr;_pol_s:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','17',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_pol_s/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_p:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','18',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_pol_s+s_p;_op_c:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','20',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;:=s_op_c;:=Trunc(m);:=n mod 100;s<50 then s_d_op_c:=n-s else s_d_op_c:=n+(100-s);.kalk_Set.FieldByName('summa').Value:=s_d_op_c;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','21',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_pol_s;_zat:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','22',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_d_op_c;_bezNDS:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','23',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_bezNDS/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_NDS:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','24',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_bezNDS+s_NDS;.kalk_Set.Post;;;

//конец исчисления.Label3.Caption:=combobox1.Text;.Label4.Caption:=combobox2.Text;.Label5.Caption:=dblookupcombobox1.Text;.Show;;;;;;;Tnov_kalk.BitBtn2Click(Sender: TObject);(dblookupcombobox1.Text='') or (combobox1.text='')(combobox2.Text='')showMessage('Не все поля заполнены!').kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.kalk_Set.Active:=true;Form1.kalk_Set.RecordCount=0 then

showmessage('Калькуляция на этот период по данному изделию не составлена')

else.Label3.Caption:=combobox1.Text;.Label4.Caption:=combobox2.Text;.Label5.Caption:=dblookupcombobox1.Text;.Show;_kalk.Close;;;;Tnov_kalk.FormActivate(Sender: TObject);.Text:=FormatDateTime('mmmm', Now);.Text:=FormatDateTime('yyyy', Now);;Tnov_kalk.BitBtn3Click(Sender: TObject);(dblookupcombobox1.Text='') or (combobox1.text='')(combobox2.Text='') showMessage('Не все поля заполнены!').kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.kalk_Set.Active:=true;Form1.kalk_Set.RecordCount=0 then

showmessage('Калькуляция на этот период по данному изделию не составлена')

else_kalk.QuickRep1.Preview;_kalk.Close;;;;.Unit12;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DB, DBCtrls;_kalk = class(TForm): TGroupBox;: TDBLookupComboBox;: TBitBtn;: TGroupBox;: TComboBox;: TComboBox;: TGroupBox;: TLabel;: TLabel;: TEdit;: TEdit;: TBitBtn;: TLabel;: TLabel;: TBitBtn;BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);FormActivate(Sender: TObject);BitBtn3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_kalk: Tnov_kalk;Unit1, Unit10, Unit11, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit13, Unit14, Unit15, Unit16, Unit17, Unit18, Unit19, Unit20, Unit21;

{$R *.dfm}Tnov_kalk.BitBtn1Click(Sender: TObject);_NDS, s_bezNDS, s_m, s_zp, s_ten, s_en, s_tzr, s_ozp, s_strah, s_nesch, s_proizv, s_pr_s, s_kr, s_ohr, s_pol_s, s_p, s_op_c, s_d_op_c, s_zat: double;, n, s: integer;, y, m: double;(dblookupcombobox1.Text='') or (combobox1.text='')(combobox2.Text='') or (edit1.Text='') or (edit2.Text='')

then showMessage('Не все поля заполнены!')

else.kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.kalk_Set.Active:=true;.kalk_Set.Last;Form1.kalk_Set.RecordCount<>0

then showmessage('Калькуляция по данному периода на данное изделие уже составлена')

else.sostav_Set.Active:=false;.sostav_Set.SelectSQL.Clear;.sostav_Set.SelectSQL.Add('select * from sostav_izd where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.sostav_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.sostav_Set.ParamByName('param_mes').Value:=combobox1.Text;.sostav_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.sostav_Set.Active:=true;Form1.sostav_Set.RecordCount=0 then

begin('На этот период расход материалов на данное изделие не составлен');

end.norm_rasc_Set.Active:=false;.norm_rasc_Set.SelectSQL.Clear;.norm_rasc_Set.SelectSQL.Add('select * from norm_rascenki where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.norm_rasc_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.norm_rasc_Set.ParamByName('param_mes').Value:=combobox1.Text;.norm_rasc_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.norm_rasc_Set.Active:=true;Form1.norm_rasc_Set.RecordCount=0 then

begin('На этот период нормы времени и расценки для данного изделия не введены');

end:=0;.sostav_Set.Last;.sostav_Set.First;i:=0 to Form1.sostav_Set.RecordCount-1 do:=x+strtofloat(Form1.sostav_Set.fieldbyName('sum').AsString);.sostav_Set.Next;;:=round(x);:=0;.norm_rasc_Set.Last;.norm_rasc_Set.First;i:=0 to Form1.norm_rasc_Set.RecordCount-1 do:=y+Form1.norm_rasc_Set.fieldbyName('rascenka').Value;.norm_rasc_Set.Next;;.stat_Set.Last;.stat_Set.First;i:=0 to Form1.stat_Set.RecordCount-1 do.kalk_Set.Insert;.kalk_Set.FieldByName('mes').Value:=combobox1.Text;.kalk_Set.FieldByName('god').Value:=strtoint(combobox2.Text);.kalk_Set.FieldByName('kod_izd').Value:=dblookupcombobox1.KeyValue;.kalk_Set.FieldByName('kod_stat').Value:=Form1.stat_Set.fieldbyname('kod_stat').Value;.kalk_Set.FieldByName('koef').Value:=Form1.stat_Set.fieldbyname('koef').Value;.stat_Set.Next;.kalk_Set.Post;;.kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.kalk_Set.Active:=true;.kalk_Set.Last;.kalk_Set.First;i:=0 to Form1.kalk_Set.RecordCount-1 doForm1.kalk_Set.Locate('kod_stat','1',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=x;_m:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','8',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=y;_ozp:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','5',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=strtofloat(edit1.Text);_ten:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','6',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=strtofloat(edit2.Text);_en:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','2',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_m/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_tzr:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','7',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_ozp*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_zp:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','9',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_zp/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_strah:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','11',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_zp/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_nesch:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','12',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_zp/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_proizv:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','13',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_m+s_tzr+s_ten+s_en+s_zp+s_strah+s_nesch+s_proizv;_pr_s:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','14',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_pr_s/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_kr:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','15',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_pr_s/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_ohr:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','16',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_pr_s+s_kr+s_ohr;_pol_s:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','17',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_pol_s/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_p:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','18',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_pol_s+s_p;_op_c:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','20',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;:=s_op_c;:=Trunc(m);:=n mod 100;s<50 then s_d_op_c:=n-s else s_d_op_c:=n+(100-s);.kalk_Set.FieldByName('summa').Value:=s_d_op_c;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','21',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_pol_s;_zat:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','22',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_d_op_c;_bezNDS:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','23',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=round(s_bezNDS/100*strtofloat(Form1.kalk_Set.fieldbyname('koef').AsString));_NDS:=Form1.kalk_Set.FieldByName('summa').Value;.kalk_Set.Post;;Form1.kalk_Set.Locate('kod_stat','24',[loCaseInsensitive, loPartialKey]).kalk_Set.Edit;.kalk_Set.FieldByName('summa').Value:=s_bezNDS+s_NDS;.kalk_Set.Post;;;.Label3.Caption:=combobox1.Text;.Label4.Caption:=combobox2.Text;.Label5.Caption:=dblookupcombobox1.Text;.Show;;;;;;;Tnov_kalk.BitBtn2Click(Sender: TObject);(dblookupcombobox1.Text='') or (combobox1.text='')(combobox2.Text='')showMessage('Не все поля заполнены!').kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.kalk_Set.Active:=true;Form1.kalk_Set.RecordCount=0 then

showmessage('Калькуляция по данному изделию на данный период не составлена')

else.Label3.Caption:=combobox1.Text;.Label4.Caption:=combobox2.Text;.Label5.Caption:=dblookupcombobox1.Text;.Show;_kalk.Close;;;;Tnov_kalk.FormActivate(Sender: TObject);.Text:=FormatDateTime('mmmm', Now);.Text:=FormatDateTime('yyyy', Now);;Tnov_kalk.BitBtn3Click(Sender: TObject);(dblookupcombobox1.Text='') or (combobox1.text='')(combobox2.Text='') showMessage('Не все поля заполнены!').kalk_Set.Active:=false;.kalk_Set.SelectSQL.Clear;.kalk_Set.SelectSQL.Add('select * from kalkul where kod_izd=:param_izd and mes=:param_mes and god=:param_god');.kalk_Set.ParamByName('param_izd').Value:=dbLookupcombobox1.KeyValue;.kalk_Set.ParamByName('param_mes').Value:=combobox1.Text;.kalk_Set.ParamByName('param_god').Value:=strtoint(combobox2.Text);.kalk_Set.Active:=true;Form1.kalk_Set.RecordCount=0 then

showmessage('Калькуляция по данному изделию на данный период не составлена')

else_kalk.QuickRep1.Preview;_kalk.Close;;;;.Unit13;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, QRCtrls, QuickRpt, ExtCtrls;_kalk = class(TForm): TQuickRep;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRDBText;: TQRDBText;: TQRShape;: TQRShape;: TQRShape;: TQRShape;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRExpr;: TQRShape;: TQRDBText;: TQRShape;: TQRDBText;: TQRShape;: TQRDBText;: TQRShape;: TQRShape;: TQRLabel;: TQRShape;: TQRExpr;: TQRLabel;: TQRLabel;: TQRDBText;: TQRDBText;: TQRLabel;

{ Private declarations }

{ Public declarations };_kalk: Totch_kalk;Unit1, Unit10, Unit11, Unit12, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}.Unit14;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, QRCtrls, QuickRpt, ExtCtrls, IBCustomDataSet, DB, StdCtrls;_sostav = class(TForm): TQuickRep;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRLabel;: TQRLabel;: TQRExpr;: TQRLabel;: TQRDBText;: TQRDBText;: TQRLabel;: TQRLabel;: TQRShape;: TQRShape;: TQRShape;: TQRShape;: TQRShape;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRDBText;: TQRLabel;: TQRDBText;: TQRLabel;: TQRDBText;: TQRDBText;: TQRDBText;: TQRDBText;: TQRDBText;: TQRDBText;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRExpr;

{ Private declarations }

{ Public declarations };_sostav: Totch_sostav;Unit1, Unit10, Unit11, Unit12, Unit13, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit15;

{$R *.dfm}.Unit15;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, QRCtrls, QuickRpt, ExtCtrls;_norm_rasc = class(TForm): TQuickRep;: TQRBand;: TQRShape;: TQRShape;: TQRShape;: TQRLabel;: TQRLabel;: TQRLabel;: TQRDBText;: TQRLabel;: TQRDBText;: TQRLabel;: TQRDBText;: TQRBand;: TQRDBText;: TQRDBText;: TQRDBText;: TQRBand;: TQRLabel;: TQRLabel;: TQRBand;: TQRLabel;: TQRLabel;: TQRExpr;: TQRBand;: TQRLabel;: TQRBand;: TQRLabel;: TQRDBText;: TQRDBText;: TQRLabel;: TQRExpr;: TQRExpr;: TQRLabel;

{ Private declarations }

{ Public declarations };_norm_rasc: Totch_norm_rasc;Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}.Unit16;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, QRCtrls, QuickRpt, ExtCtrls;_izd = class(TForm): TQuickRep;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRShape;: TQRShape;: TQRShape;: TQRShape;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRExpr;: TQRShape;: TQRShape;: TQRShape;: TQRExpr;: TQRDBText;: TQRDBText;: TQRDBText;

{ Private declarations }

{ Public declarations };_izd: Totch_izd;Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit15, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}.Unit17;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, QRCtrls, QuickRpt, ExtCtrls;_mat = class(TForm): TQuickRep;: TQRBand;: TQRShape;: TQRShape;: TQRShape;: TQRLabel;: TQRLabel;: TQRLabel;: TQRBand;: TQRBand;: TQRBand;: TQRLabel;: TQRLabel;: TQRExpr;: TQRBand;: TQRBand;: TQRLabel;: TQRShape;: TQRShape;: TQRShape;: TQRExpr;: TQRDBText;: TQRDBText;

{ Private declarations }

{ Public declarations };_mat: Totch_mat;Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit15, Unit16, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}.Unit18;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, QRCtrls, QuickRpt, ExtCtrls;_rab = class(TForm): TQuickRep;: TQRBand;: TQRShape;: TQRShape;: TQRLabel;: TQRBand;: TQRBand;: TQRBand;: TQRLabel;: TQRLabel;: TQRExpr;: TQRBand;: TQRBand;: TQRLabel;: TQRShape;: TQRExpr;: TQRDBText;: TQRShape;: TQRLabel;

{ Private declarations }

{ Public declarations };_rab: Totch_rab;Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit15, Unit16, Unit17, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}.Unit19;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;_prog = class(TForm): TLabel;: TLabel;: TGroupBox;: TLabel;: TLabel;: TBitBtn;: TLabel;: TLabel;BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_prog: To_prog;

{$R *.dfm}To_prog.BitBtn1Click(Sender: TObject);;;.Unit20;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ComCtrls;= class(TForm): TRichEdit;: TBitBtn;BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: Thelp;Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit15, Unit16, Unit17, Unit18, Unit19, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}Thelp.BitBtn1Click(Sender: TObject);;;.Unit21;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;= class(TForm): TBitBtn;: TGroupBox;: TListBox;BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: Tstyle;Unit1, Unit10, Unit11, Unit12, Unit13, Unit14, Unit15, Unit16, Unit17, Unit18, Unit19, Unit2, Unit20, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9;

{$R *.dfm}Tstyle.BitBtn1Click(Sender: TObject);.sSkinManager1.Active:=false;.sSkinManager1.SkinName:=listbox1.Items[listbox1.itemindex];.sSkinManager1.Active:=true;;

end.


Содержание Введение 1 Постановка задачи 1.1 Описание предметной области 1.2 Входная информация 1.3 Выходная информация 1.4 Функциональное

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

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

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

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

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