Автоматизация движения готовой продукции на складе ООО "Амазон-колорит"

 











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


Введение


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

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

Для достижения цели были поставлены следующие задачи:

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

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

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

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

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

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

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

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

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

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

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

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

программа готовая продукция учет

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


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

Задачи складского учета состоят в следующем:

-учет количества производимой продукции;

-учет прихода новой продукции;

-учет отгрузки готовой продукции потребителю;


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


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

-информация о готовой продукции;

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

-информация об материально-ответственных лицах;

-информация о покупателях;

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

-информация о складах;

-информация о приходе готовой продукции;

-информация о расходе готовой продукции;

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

Эти данные служат исходной информацией в учете готовой продукции на складе.

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


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

-отчет «Оборотная ведомость»;

-отчет «Состояние складов»;

-отчет «Приход»;

-отчет «Расход»;

Отчеты можно просмотреть и вывести на печать.


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


Основное понятие IDEF0-методологии - это понятие «модель». IDEF0-модель - это искусственный объект, представляющий собой виртуальный образ системы и ее компонентов, в виде функциональной структуры объекта (совокупность диаграмм), отображающих производимые им действия и связи между этими действиями. Модель разрабатывают для понимания, анализа и принятия решений о реконструкции (реинжиниринге) или замене существующей, либо проектировании новой ИС. IDEFO-модели состоят из трех типов документов: графических диаграмм, текста и глоссария. Эти документы имеют перекрестные ссылки друг на друга.

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

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

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

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

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

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

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

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

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

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

Родительская диаграмма (Parent Diagram) - диаграмма, содержащая один или более родительских блоков.

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

Дочерний блок (Child Box) - любой функциональный блок на дочерней диаграмме. Диаграмма декомпозиции - полученный при декомпозиции родительских блоков набор тщательно взаимосогласованных описаний. Диаграмма с потоками - диаграмма, описывающая все, связанное с декомпозируемым блоком и его стрелками. При декомпозиции интерфейсные стрелки, присоединенные к блоку, через ICOM коды переносятся на диаграмму-потомок. Таким образом, родительский блок и его интерфейсные дуги определяют контекст для диаграммы-потомка. Глоссарий. Для каждого из элементов IDEF0: диаграмм, функциональных блоков, интерфейсных стрелок стандарт подразумевает создание и поддержание набора соответствующих определений, ключевых слов, повествовательных изложений и т.д., которые характеризуют объект, отображенный данным элементом. Этот набор называется глоссарием и является описанием сущности данного элемента. Например, для управляющей стрелки «распоряжение об оплате» глоссарий может содержать перечень полей соответствующего дуге документа, необходимый набор виз и т.д. Глоссарий гармонично дополняет наглядный графический язык, снабжая диаграммы необходимой дополнительной информацией. Пример построения диаграммы IDEF0, в соответствии с рисунком 1.1.

Рисунок 1.1 - Диаграмма IDEF0


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


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

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

Одним из инструментов функционального моделирования является CASE-средства верхнего уровня (BPwin и Erwin). Основными функциями (BPwin и Erwin) являются, во-первых, рисование диаграмм, представляющих собой средства визуального представления отдельных компонентов моделируемой предметной области различных уровней детализации, во-вторых, проверка целостности и согласованности иерархической модели, построенной из диаграмм различных уровней детализации.

Для разработки форм приложения применялись CASE-системы, в частности Erwin 4.0. ERwin имеет два уровня представления модели - логический и физический. На логическом уровне данные не связаны с конкретной системой управления базами данных, поэтому могут быть наглядно представлены даже для неспециалистов. Физический уровень данных - это по существу отображение системного каталога, который зависит от конкретной реализации системы управления базами данных.

Пример построения логической модели, в соответствии с приложением Б «Информационная модель»


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


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

Таблицы содержит следующие поля:

а) таблица 1 «ceha»:

1)Id_ceha (integer);

2)Naim (varchar (50));

3)Glava (varchar (50)).

б) таблица 2 «ed_izm»:

1)Id_ed_izm (integer);

2)Ed_izm (varchar (50)).

в) таблица 3 «got_prod»:

1)Id_gp (integer);

2)Naim_gp (varchar(50));

3)Id_ed_izm (integer);

4)Ed_izm (varchar (50));

г) таблица 4 «mol»:

1)Id_mol (integer);

2)Fio (varchar (50));

3)Adres (varchar (50));

4)Telefon (varchar (50)).

д) таблица 5 «pokup»:

1)UNP_pokup (integer);

2)Naim_pokup (varchar (50));

3)Adres (varchar (50));

4)Telefon (varchar (50)).

е) таблица 6 «sklad»:

1)Id_sklad (integer);

2)Naim_sklad (varchar (50));

3)Id_mol (integer).

ж) таблица 7 «prihod»:

1)Id_prihoda (integer);

2)Data_prihoda (date);

3)Id_sklada (integer);

4)Id_ceha (integer).

з) таблица 8 «rashod»:

1)Id_rashoda (integer);

2)Data (date);

3)UNP_pokup (integer);

4)Id_sklada (integer).

и) таблица 9 «ostatki»:

1)Id_ost (integer);

2)Id_sklada (integer).

к) таблица 10 «gp_ost»:

1)Id_gp_ost (integer);

2)Id_ost (integer);

3)Id_gp (integer);

4)Kolvo (integer);

5)Cena (integer);

6)NDS (integer).

л) таблица 11 «gp_p»:

1)Id_gp_p (integer)

2)Id_prihoda (integer);

3)Id_gp (integer);

4)Data (date);

5)Kolvo (integer);

6)Id_sklad (integer);

7)Cena (integer);

8)NDS (integer).

м) таблица 12 «gp_r»:

1)Id_gp_r (integer);

2)Id_rashoda (integer);

3)Id_gp (integer);

4)Data (date);

5)Id_sklad (integer);

6)Kolvo (integer);

7)Cena (integer);

8)NDS (integer).

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

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


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


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

Для рабочих станций частота процессора не ниже 500 мегагерц, оперативная память - не ниже 64 мегабайт, свободного места на жестком диске не ниже 20 мегабайт, операционная система Windows 2000/XP,Vista,7.


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


Персональная электронно-вычислительная машина должна быть обеспечена:

- операционной системой Microsoft Windows 95/98/2000/XP и выше;

- системой управления базами данных Microsoft Access.

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


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

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

Версия Windows® XP Professional, операционной системы Windows, сочетает в себе преимущества Windows 2000 Professional (например, средства безопасности, управляемость и надежность) с лучшими качествами Windows 98 и Windows ME (поддержка Plug and Play, простой пользовательский интерфейс и передовые службы поддержки). Это делает Windows® XP Professional наиболее подходящей операционной системой для настольных компьютеров, применяемых в корпоративной среде. Независимо от того, где устанавливается Windows XP Professional - на одном компьютере или в масштабе локальной сети - эта система повышает вычислительные возможности предприятия, одновременно сокращая совокупную стоимость программного обеспечения всех настольных компьютеров.

Ядро Windows: в основе системы Windows XP Professional лежит проверенный код Windows NT® и Windows 2000, характеризуемый 32-разрядной вычислительной архитектурой и полностью защищенной моделью памяти. Операционная Windows XP Professional обеспечивает надежную вычислительную среду, отвечающую потребностям всех бизнес-пользователей.

Усовершенствованные средства проверки драйверов устройств: средство проверки драйверов устройств в операционной системе Windows XP Professional, созданное на основе аналогичного средства системы Windows 2000, обеспечивает еще более тщательное испытание драйверов. Драйверы устройств, прошедшие эти испытания, являются наиболее надежными в работе, что обеспечивает максимальную стабильность системы.

Существенное сокращение числа перезагрузок: Устранена большая часть конфликтных ситуаций, при которых пользователи Windows NT 4.0 и Windows 95/98/ME были вынуждены перезагружать свои компьютеры. Кроме того, во многих случаях теперь не требуется выполнять перезагрузку после установки программного обеспечения. В результате этих действий значительно увеличивается время бесперебойной работы системы.

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

Защита файлов Windows: предохраняет основные системные файлы от перезаписи при установке приложений. Если произошла перезапись файла, правильная версия будет восстановлена благодаря защите Windows. Защищая системные файлы, операционная система Windows XP Professional предотвращает наиболее типичные системные неполадки, распространенные в предыдущих версиях Windows.

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

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

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

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

Шифрованная файловая система (EFS) с мультипользовательской поддержкой: все файлы шифруются ключом, генерируемым случайным образом. Процессы шифрования и дешифрования прозрачны для пользователя. В операционной Windows XP Professional файловая система EFS позволяет иметь доступ к зашифрованному документу сразу нескольким пользователям. Высший уровень защиты от хакерских атак и несанкционированного доступа к данным.безопасность (IPSec): позволяет защитить данные, передаваемые по сети. IP-безо-пасность играет важную роль в обеспечении безопасности виртуальных частных сетей (VPN), обеспечивающих возможность безопасной передачи данных через Интернет. ИТ-администраторы смогут легко и быстро создавать безопасные виртуальные частные сети.


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

В качесты системы программирования был выбран Borland C++Builder 6.C++Builder 6 - очередная версия системы объектно-ориентированного программирования для 32-разрядных операционных систем Microsoft Windows. Интегрированная среда системы (Integrated Development Environment, IDE) обеспечивает продуктивность многократного использования визуальных компонентов в сочетании с усовершенствованными инструментами и разномасштабными средствами доступа к базам данных. Основное предназначение IDE - радикально ускорить производственный цикл разработки сложнейших программных проектов для различных областей применения.

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

Среди множества нововведений следует особо отметить эффективные средства для поддержки web-служб и разработки переносимых (cross-platform) проектов. Технологии DataSnap, WebServices и WebSnap дают возможность быстро и легко создавать и интегрировать коммерческие сетевые приложения (как персональные, так и коллективные). Клиентский и серверный модули распределенного приложения обмениваются XML- или WSDL-документами в рамках транспортных протоколов TCP/IP, HTTP, SOAP. Библиотека компонентов CLX обеспечивает переносимость исполняемого кода между платформами Windows и Linux. CLX-приложения совместимы на уровне языка C++ с программными продуктами, которые корпорация Borland планирует выпускать для операционной системы Linux.

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

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

Microsoft Office Access или просто Microsoft Access - реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.

Корпорация Microsoft для построения полноценных клиент-серверных приложений на базе MS Access рекомендует использовать в качестве движка базы данных СУБД MS SQL Server. При этом имеется возможность совместить с присущей MS Access простотой инструменты для управления БД и средства разработки.

Основные компоненты MS Access:

-построитель таблиц;

-построитель экранных форм;

-построитель SQL-запросов (язык SQL в MS Access не соответствует стандарту ANSI);

-построитель отчётов, выводимых на печать.


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


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


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

НаименованиеНазначениеMainMenu1Отображает меню программыADOConnection1Служит для связи БД Database1.accdb с компонентами

Таблица 3.1.2 - Компоненты формы «Form2»

НаименованиеНазначениеButton1Служит для открытия формы добавления записиButton 2Служит для вызова функции удаления записиADOTable1Служит для связи с таблицей «got_prod»DataSource1Служит для связи с ADOTable1DBGrid1Служит для отображения таблицы

Таблица 3.1.3 - Компоненты формы «Form3»

НаименованиеНазначениеDBGrid1Служит для отображения таблицыButton1Служит для открытия формы добавления записиButton 2Служит для вызова функции удаления записиADOTable1Служит для связи с таблицей «pokup»DataSource1Служит для связи с ADOTable1

Таблица 3.1.4 - Компоненты формы «Form4»

НаименованиеНазначениеDBGrid1Служит для отображения таблицыButton1Служит для открытия формы добавления записиButton2Служит для вызова функции удаления записиADOTable1Служит для связи с таблицей «mol»DataSource1Служит для связи с ADOTable1Таблица 3.1.5 - Компоненты формы «Form5»

НаименованиеНазначениеButton1Служит для открытия формы добавления записиButton2Служит для вызова функции удаления записиDBGrid1Служит для отображения таблицыADOTable1Служит для связи с таблицей «ceha»DataSource1Служит для связи с ADOTable1

Таблица 3.1.6 - Компоненты формы «Form6»

НаименованиеНазначениеDBGrid1Служит для отображения таблицыButton1Служит для открытия формы добавления записиButton2Служит для вызова функции удаления записиADOTable1Служит для связи с таблицей «sklad»DataSource1Служит для связи с ADOTable1

Таблица 3.1.7 - Компоненты формы «Form7»

НаименованиеНазначениеDBGrid1Служит для отображения таблицыButton1Служит для открытия формы добавления записиButton2Служит для вызова функции удаления записиADOTable1Служит для связи с таблицей «ed_izm»DataSource1Служит для связи с ADOTable1

Таблица 3.1.9 - Компоненты формы «Form9»

НаименованиеНазначениеDBGrid1Служит для отображения таблицыDataSource1Служит для связи с ADOTable1DataSource2Служит для связи с ADOTable2Button1Служит для открытия формы добавления записиADOTable1Служит для связи с таблицей «rashod»DBGrid2Служит для отображения таблицыADOTable2Служит для связи с таблицей «gp_r»Button2Служит для вызова функции удаления записиButton3Служит для открытия формы добавления записиButton4Служит для вызова функции удаления записи

Таблица 3.1.10 - Компоненты формы «Form10»

НаименованиеНазначениеDBGrid1Служит для отображения таблицыDBGrid2Служит для отображения таблицыADOTable1Служит для связи с таблицей «prihod»DataSource1Служит для связи с ADOTable1ADOTable2Служит для связи с таблицей «gp_p»DataSource2Служит для связи с ADOTable2ADOTable3Служит для связи с таблицей «gp_p»Tbl1Служит для связи с таблицей «gp_ost»Button1Служит для открытия формы добавления записиButton2Служит для вызова функции удаления записиButton3Служит для открытия формы добавления записиButton4Служит для вызова функции удаления записи

Таблица 3.1.11 - Компоненты формы «Form11»

НаименованиеНазначениеDBGrid1Служит для отображения таблицыDBGrid2Служит для отображения таблицыADOTable1Служит для связи с таблицей «ostatki»DataSource1Служит для связи с ADOTable1Button1Служит для открытия формы добавления записиButton2Служит для вызова функции удаления записиButton3Служит для открытия формы добавления записиDataSource2Служит для связи с ADOTable2ADOTable2Служит для связи с таблицей «gp_ost»Button4Служит для вызова функции удаления записи

Таблица 3.1.12 - Компоненты формы «Form12»

НаименованиеНазначениеButton1Служит для добавления новой записиButton2Служит для отмены добавления новой записиDBEdit1Служит для ввода наименования готовой продукцииDBLookupComboBox1Служит для выбора единицы измеренияLabel1Служит для отображения текста «Наименование»Label2Служит для отображения текста «Единицы измерения»

Таблица 3.1.13 - Компоненты формы «Form13»

НаименованиеНазначениеButton1Служит для добавления новой записиButton2Служит для отмены добавления новой записиDBEdit1Служит для ввода УНП покупателяDBEdit2Служит для ввода наименования покупателяDBEdit3Служит для ввода адреса покупателяDBEdit4Служит для ввода телефона покупателяLabel1Служит для отображения текста «УНП покупателя»Label2Служит для отображения текста «Наименование»Label3Служит для отображения текста «Адрес»Label4Служит для отображения текста «Телефон»

Таблица 3.1.14 - Компоненты формы «Form14»

НаименованиеНазначениеButton1Служит для добавления новой записиButton2Служит для отмены добавления новой записиDBEdit1Служит для ввода ФИО материально-ответственного лицаDBEdit2Служит для ввода адреса материально-ответственного лицаDBEdit3Служит для ввода адреса материально-ответственного лицаLabel1Служит для отображения текста «ФИО»Label2Служит для отображения текста «Адрес»Label3Служит для отображения текста «Телефон»

Таблица 3.1.15 - Компоненты формы «Form15»

НаименованиеНазначениеButton1Служит для добавления новой записиButton2Служит для отмены добавления новой записиDBEdit1Служит для ввода наименования цехаDBEdit2Служит для ввода ФИО начальника цехаLabel1Служит для отображения текста «Наименование»Label2Служит для отображения текста «Начальник»

Таблица 3.1.16 - Компоненты формы «Form16»

НаименованиеНазначениеButton1Служит для добавления записиDBEdit1Служит для ввода наименования складаDBLookupComboBox1Служит для выбора материально-ответственного лицаLabel1Служит для отображения текста «Наименование»Label2Служит для отображения текста «Материально-ответственное лицо»

Таблица 3.1.17 - Компоненты формы «Form17»

НаименованиеНазначениеButton1Служит для добавления новой записиButton2Служит для отмены добавления новой записиDBEdit1Служит для ввода наименования единицы измерения

Таблица 3.1.18 - Компоненты формы «Form18»

НаименованиеНазначениеButton1Служит для добавления новой записиButton2Служит для отмены добавления новой записиdtp1Служит для выбора даты приходаDBLookupComboBox1Служит для выбора складаDBLookupComboBox2Служит для выбора цехаLabel1Служит для отображения текста «Дата»Label2Служит для отображения текста «На склад»Label3Служит для отображения текста «Из цеха»

Таблица 3.1.19 - Компоненты формы «Form19»

НаименованиеНазначениеDBLookupComboBox1Служит для выбора наименования готовой продукцииDBEdit1Служит для ввода количества готовой продукцииDBEdit2Служит для ввода цены DBEdit3Служит для ввода НДСDBEdit4Служит для отображения стоимостиLabel1Служит для отображения текста «Наименование»Label2Служит для отображения текста «Количество»Label3Служит для отображения текста «Цена»Label1Служит для отображения текста «НДС»Label2Служит для отображения текста «Стоимость»Button1Служит для добавления новой записиButton2Служит для отмены добавления новой записи

Таблица 3.1.21 - Компоненты формы «Form21»

НаименованиеНазначениеButton1Служит для добавления новой записиButton2Служит для отмены добавления новой записиDBLookupComboBox1Служит для выбора наименования складаDBLookupComboBox2Служит для выбора покупателяdtp1Служит для выбора даты расходаLabel1Служит для отображения текста «Дата»Label2Служит для отображения текста «Наименование»Label3Служит для отображения текста «Покупатель»

Таблица 3.1.22 - Компоненты формы «Form22»

НаименованиеНазначениеButton1Служит для добавления записиButton2Служит для отмены добавления записиDBEdit1Служит для ввода количества расходуемой продукцииDBLookupComboBox1Служит для выбора наименования готовой продукцииLabel1Служит для отображения текста «На складе»Label2Служит для отображения текста «Цена»Label3Служит для отображения текста «НДС»Label4Служит для отображения текста «Наименование»Label5Служит для отображения текста «На складе»DBText1Служит для отображения количества данной продукции на складеDBText2Служит для отображения цены данной продукции DBText3Служит для отображения НДС данной продукции

Таблица 3.1.24 - Компоненты формы «Form24»

НаименованиеНазначениеButton1Служит для добавления записиButton2Служит для отмены добавления записиDBLookupComboBox1Служит для выбора складаLabel1Служит для отображения текста «На склад»

Таблица 3.1.25 - Компоненты формы «Form25»

НаименованиеНазначениеButton1Служит для добавления записиButton2Служит для отмены добавления записиDBEdit1Служит для ввода количестваDBEdit2Служит для ввода ценыDBEdit3Служит для ввода НДСdtp1Служит для выбора даты ввода остатковDBLookupComboBox1Служит для выбора готовой продукцииLabel2Служит для отображения текста «Продукция»Label1Служит для отображения текста «Дата»Label3Служит для отображения текста «Количество»Label4Служит для отображения текста «Цена»Label5Служит для отображения текста «НДС»DBEdit4Служит для отображения стоимостиLabel6Служит для отображения текста «Стоимость»

Таблица 3.1.26 - Компоненты формы «Form26»

НаименованиеНазначениеButton1Служит для формирования отчетаButton2Служит для отмены формирования отчетаDateTimePicker1Служит для выбора начальной датыDateTimePicker2Служит для выбора конечной датыRadioButton1Служит для выбора типа отчета: на датуRadioButton2Служит для выбора типа отчета: за период

Таблица 3.1.27 - Компоненты формы «Form27»

НаименованиеНазначениеButton1Служит для формирования отчета по остаткамButton2Служит для отмены фоормирования отчета по остаткамADOTable1Служит для связи с таблицей «gp_ost»

Таблица 3.1.28 - Компоненты формы «Form28»

НаименованиеНазначениеQuickRep10Служит для создания отчетаQuickRep11Служит для создания отчетаQuickRep5Служит для создания отчетаQuickRep9Служит для создания отчета

Таблица 3.1.29 - Компоненты формы «Form29»

НаименованиеНазначениеADOTable1Служит для связи с таблицей «ostatki»RadioButton1Служит для выбора типа отчета: на датуRadioButton2Служит для выбора типа отчета: за периодDateTimePicker1Служит для выбора начальной датыDateTimePicker2Служит для выбора конечной датыButton1Служит для вызова функции просмотра отчетаButton2Служит для отмены просмотра отчетаTbl1Служит для связи с таблицей «mati»New_queryСлужит для связи с таблицей «got_prod»Mat_pСлужит для связи с таблицей «got_prod»Mat_sСлужит для связи с таблицей «got_prod»ostatkiСлужит для связи с таблицей «got_prod»

Таблица 3.1.30 - Компоненты формы «Form30»

НаименованиеНазначениеADOTable1Служит для связи с таблицей «ostatki»RadioButton1Служит для выбора типа отчета: на датуRadioButton2Служит для выбора типа отчета: за периодDateTimePicker1Служит для выбора начальной датыDateTimePicker2Служит для выбора конечной датыButton1Служит для вызова функции просмотра отчетаButton2Служит для отмены просмотра отчетаTbl1Служит для связи с таблицей «mati»New_queryСлужит для связи с таблицей «got_prod»Mat_pСлужит для связи с таблицей «got_prod»Mat_sСлужит для связи с таблицей «got_prod»ostatkiСлужит для связи с таблицей «got_prod»

Таблица 3.1.31 - Компоненты формы «Form31»

НаименованиеНазначениеADOTable1Служит для связи с таблицей «ostatki»RadioButton1Служит для выбора типа отчета: на датуRadioButton2Служит для выбора типа отчета: за периодDateTimePicker1Служит для выбора начальной датыDateTimePicker2Служит для выбора конечной датыButton1Служит для вызова функции просмотра отчетаButton2Служит для отмены просмотра отчетаTbl1Служит для связи с таблицей «mati»New_queryСлужит для связи с таблицей «got_prod»Mat_pСлужит для связи с таблицей «got_prod»Mat_sСлужит для связи с таблицей «got_prod»ostatkiСлужит для связи с таблицей «got_prod»

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


Применяемые сегодня методы разработки проектов зачастую не считаются с необходимостью разработки интерфейса. Это упущение может быть следствием того, что специалисты по разработке интерфейсов привлекаются к проекту слишком поздно, когда возможности улучшения качества взаимодействия между пользователем и продуктом большей частью уже потеряны. Интерфейсом удобнее всего заниматься именно на начальных стадиях разработки. И если специалисты по интерфейсам привлекаются уже после того, как программное обеспечение спроектировано и определены его инструменты или когда разработка программы уже почти завершена, то их рекомендации могут потребовать переделки всей выполненной работы, что, естественно, является неприемлемым. Когда бюджет проекта уже исчерпан и рабочий план почти завершен, перспектива отказа от большей части или даже всего дизайна и готового кода, конечно, не может вызвать энтузиазма у менеджеров проекта. Так что даже в такой современной книге по управлению проектами, как «UML Toolkit» (Eriksson and Magnus, 1998), не говорится о необходимости рассматривать интерфейс уже на стадии анализа требований к проекту, которую авторы обозначают как первую фазу его разработки. Однако в действительности разработка интерфейса не должна откладываться до стадии технической реализации, которая в плане Эриксона и Магнуса является третьей фазой. Определив задачу, для которой продукт предназначен, сначала спроектируйте интерфейс, после чего приступайте к его реализации. Это повторяющийся процесс. Определение задачи будет меняться во время разработки интерфейса. Поэтому весь процесс разработки продукта будет проходить в соответствии с изменениями в задаче продукта и его интерфейсе. Здесь необходимо стремиться к максимальной гибкости. На первом этапе разработки следует определить, что именно должен сделать пользователь для получения того или иного результата и как система должна отвечать на каждое его действие.

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

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

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

- большему удобству для пользователя;

- большей ценности в глазах покупателя;

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

- ускорению и упрощению процесса внедрения;

- преимуществу перед конкурентами на рынке;

- лояльности к данной марке;

- упрощению инструкций и онлайновой помощи;

- более безопасным продуктам.

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

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

Специалисты по разработке интерфейсов работают в области, в которой неправильные решения могут вызвать физические поражения и способствовать психологическим расстройствам. Например, если интерфейс создает необходимость слишком часто нажимать на клавиши или кнопку мыши, это может привести к возникновению или обострению хронического стрессового нарушения (repetitive stress injuries). Плохой интерфейс может вызывать психологические расстройства. Таким образом, требуется создание основы для установления юридических норм защиты добросовестных специалистов. Другой необходимостью является установление определенных профессиональных стандартов (речь идет не о стандартах разработки интерфейсов). Меры, упомянутые в этой книге, а также те, которые будут разработаны в будущем, могут помочь установить количественные, объективные нормы. Например, инженер-строитель должна показать, что она спроектировала мост, который отвечает установленным стандартам, в соответствии с которыми этот мост должен выдерживать нагрузку, скажем, в два раза превышающую минимально возможный уровень. Выбросы из автомобиля должны содержать не более 0,2% CO для того, чтобы этот автомобиль мог быть сертифицирован. Аналогичным образом, мы могли бы установить, что интерфейс текстового процессора не может быть принят, если, скажем, его общая информационно-теоретическая эффективность меньше 0,7 или если общая символьная производительность является меньше 0,8, а отдельные элементы имеют эффективность меньше 0,5.

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

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

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

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

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

Что касается данного программного средства, то его интерфейс отвечает следующим требованиям:

- понятность для пользователей различной степени квалификации;

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

- большему удобству для пользователя.

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


Рисунок 3.1 - Главное окно


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


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


Объектом испытаний является программное средство «Учет движения готовой продукции на складе».

Целью испытаний является определение работоспособности программного средства «Автоматизация движения готовой продукции на складе ООО «Амазон-Колорит».


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


Для проведения испытаний наличие на персональной электронной вычислительной машины операционной системы не ниже Windows XP, манипулятора типа "Мышь", клавиатуры, видеоадаптера, установленной среды программирования Borland C++ Builder 6, система управления базами данных Microsoft Access.

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


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


Тестирование программного обеспечения - процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта.

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

При тестировании белого ящика (англ. white-box testing, также говорят - прозрачного ящика), разработчик теста имеет доступ к исходному коду программ и может писать код, который связан с библиотеками тестируемого ПО. Это типично для юнит-тестирования (англ. unit testing), при котором тестируются только отдельные части системы. Оно обеспечивает то, что компоненты конструкции - работоспособны и устойчивы, до определённой степени. При тестировании белого ящика используются метрики покрытия кода.

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

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

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

Бета-тестирование в целом ограничено техникой чёрного ящика (хотя постоянная часть тестировщиков обычно продолжает тестирование белого ящика параллельно бета-тестированию). Таким образом, термин «бета-тестирование» может указывать на состояние программы (ближе к выпуску чем «альфа»), или может указывать на некоторую группу тестировщиков и процесс, выполняемый этой группой. Итак, тестировщик может продолжать работу по тестированию белого ящика, хотя ПО уже «в бете» (стадия), но в этом случае он не является частью «бета-тестирования» (группы/процесса).


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


Приступил к тестированию программного средства «Автоматизация движения готовой продукции на складе ООО «Амазон-Колорит».

Тест прихода продукции из цеха на склад представлен в таблице 4.4.1. Ожидаемый и полученный результаты теста представлены в таблице 4.4.2.


Таблица 4.4.1 - Тест прихода продукции на склад

Описание тестаНаименование поляВносимые данныеДобавление записи в «Приход»Дата Склад Цех Продукция Количество Цена НДС Стоимость13.06.2012 Склад №1 Цех №1 Вода 202 1000 1000 20

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

Ожидаемый результатПрисвоить полям следующие значения: Дата - 13.06.2012 Склад - Склад №1 Цех - Цех №1 Продукция - Вода 202 Количество - 1000 Цена - 1000 НДС - 20 Стоимость - 1200000Полученный результатПрисвоены значения для следующих полей: Дата - 13.06.2012 Склад - Склад №1 Цех - Цех №1 Продукция - Вода 202 Количество - 1000 Цена - 1000 НДС - 20 Стоимость - 1200000Результат тестированияТест пройден.

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


Таблица 4.4.3 - Тест заполнения расхода готовой продукции

Описание тестаНаименование поляВносимые данныеДобавление записи в «Расход»Дата Склад УНП покупателя Покупатель Продукция Количество Цена НДС13.06.2012 Склад №1 ИП Гончаров Вода 202 1000 1000 20Таблица 4.4.4 - Ожидаемый и полученный результат при тестировании и возможности сохранения информации по расходу

Ожидаемый результатПрисвоить полям следующие значения: Дата - 13.06.2012 Склад - Склад №1 УНП покупателя - 24332 Покупатель - ИП Гончаров Продукция - Вода 202 Количество - 1000 Цена - 1000 НДС - 20Полученный результатПрисвоены значения для следующих полей: Дата - 13.06.2012 Склад - Склад №1 УНП покупателя - 24332 Покупатель - ИП Гончаров Продукция - Вода 202 Количество - 1000 Цена - 1000Результат тестированияТест пройден.

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


Таблица 4.4.5 - Тест добавления остатков

Описание тестаНаименование поляВносимые данныеДобавление остатковДата Склад Продукция Количество Цена НДС Стоимость10.06.2012 Склад №1 Вода 202 1000 1000 20 1200000

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

Ожидаемый результатПрисвоить полям следующие значения: Дата - 10.06.2012 Склад - Склад №1 Продукция - Вода 202 Количество - 1000 Цена - 1000 НДС - 20 Стоимость - 1200000Полученный результатПрисвоены значения для следующих полей: Дата - 10.06.2012 Склад - Склад №1 Продукция - Вода 202 Количество - 1000 Цена - 1000 НДС - 20 Стоимость - 1200000Результат тестированияТест пройден.

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


Для запуска программы требуется запустить файл с названием Project1 с папки «Автоматизация движения готовой продукции на складе ООО «Амазон-Колорит». После его запуска появляется главное окно, в соответствии с рисунком 5.1.


Рисунок 5.1 - Главная форма


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


Рисунок 5.2 - Справочник готовой продукции

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


Рисунок 5.3 - Добавление готовой продукции в справочник


Работа с остальными справочниками осуществляется аналогично.

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


Рисунок 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 - Отчет «Расход»

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


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

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

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

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


.1 Нормализация нервно-психических нагрузок на оператора ПК при разработке и эксплуатации программы


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Список зон:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


Таблица 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 минут.

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

Большинство производителей используют промышленный стандарт VESA DPMS (Display Power Management Signaling). Он определяет нормированные методы поддержки мониторами трех энергосберегающих режимов:

-Stand-by - экономит до 40% мощности и позволяет быстро восстановить работоспособность;

-Suspend - отключает цепи накала трубки монитора и имеет большее время восстановления работоспособности;

-Active-off - еще большее время восстановления работоспособности, но отключает все, кроме средств восстановления работоспособности и блока питания. В этом режиме мониторы обычно потребляют менее 5 Вт.

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

-MPR 1990:10 - монитор соответствует шведскому стандарту по излучениям, а также по переменным электрическому и магнитным полям;

-MPR II - Стандарты и рекомендации по низкочастотным электромагнитным полям и электрическому потенциалу. Такой знак далеко не полностью отражает все условия стандарта MPR 1990:10;

-ISO 9241-3 - обозначает международный стандарт, который удовлетворяет эргономическим требованиям к дисплеям и стоит на страже зрения;

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

В сравнении с MPRII в ТСО'92 (был разработан специально для мониторов и определяет величину максимально допустимых электромагнитных излучений при работе монитора, и функции энергосбережения) допустимые уровни электромагнитного излучения более жесткие, так как замер показателей производится не в 50 см от экрана, как в MPRII, а в 30. TCO 95 и TCO 99 представляют собой универсальные стандарты, регулирующие воздействие всех вредных факторов. В ТСО'95 и ТСО'99 представлены электромагнитные параметры, эргономические, энергосберегающие и экологические. TCO99 предъявляет более жесткие требования, чем TCO95 в области эргономики, энергия, излучений, экологии, пожарной, электрической безопасности;

-EN 55022 Европейский стандарт по методам измерений и допустимым значениям излучений для изделий информационных технологий;

-EN 50082-1 Европейский стандарт по электромагнитной совместимости;

-EN 60950 Европейский стандарт по безопасности для изделий информационных технологий (Электра- и пожаробезопасность), является частью TЪV/GS-рекомендации;

-TЬ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. Экономический раздел


.1 Характеристика проекта


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


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


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


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

Наименование этапов и видов работИсполнитель (должность, квалификация)Количество исполнителейТрудоемкость, чело- веко-дни,tож12341 Составление и согласование технического заданияТехник-программист132 Сбор и изучение научно-технической литературыТехник-программист123 Формулирование возможных направления решения задачТехник-программист124 Разработка методики проведения испытаний.Техник-программист125 Разработка и реализация алгоритма решения задачи с большим количеством ограниченийТехник-программист136 Оценка возможностей задачиТехник-программист127 Оценка некоторого количества задач и решение ихТехник-программист148 Исследование задач наблюдения и возможность их сведения к задачамТехник-программист129 Решение ряда задач наблюденияТехник-программист1510 Составление плана мероприятий по техники безопасностиТехник-программист1211 Оформление документации по выполненному программному продуктуТехник-программист1312 Оформление графического материалаТехник-программист1413 Обобщение результатов исследованийТехник-программист1314 Составление и оформление отчетаТехник-программист13Всего:--40

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

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

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


(1)

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


(2)


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

Вид работыОценка трудоемкостиРасчетные величиныtmintH.BtmaxtожD123430.1111111111tmintH.BtmaxtожD222320,0277777778312320.1111111111422420.1111111111513530.4444444444612520.4444444444724640.4444444444812320.1111111111935650.25000000001022420.11111111111123430.11111111111234540.11111111111333430.02777777781413530.4444444444Итого:---403,3611111109

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

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

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

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

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


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

Наименование этапов и видов работИсполнитель (должность, квалификация)Трудоемкость, человеко-дни, tожКоличество исполнителейПродолжи тельность работы (дни)1 Составление и согласование технического заданияТехник-программист3132 Сбор и изучение научно-технической литературыТехник-программист2123 Формулирование возможных направления решения задачТехник-программист2124 Разработка методики проведения испытаний.Техник-программист2125 Разработка и реализация алгоритма решения задачи с большим количеством ограниченийТехник-программист3136 Оценка возможностей задачиТехник-программист2127 Оценка некоторого количества задач и решение ихТехник-программист4148 Исследование задач наблюдения и возможность их сведения к задачамТехник-программист2129 Решение ряда задач наблюденияТехник-программист51510 Составление плана мероприятий по техники безопасностиТехник-программист21211 Оформление документации по выполненному программному продуктуТехник-программист31312 Оформление графического материалаТехник-программист41413 Обобщение результатов исследованийТехник-программист31314 Составление и оформление отчетаТехник-программист313

Таблица 7.2.2.2 - График продолжительности отдельных видов работ

Количество исполни-телейПродолжи-телность работы (дни)Продолжительность работы в неделях, при пятидневной рабочей неделе123456781312121213121412151213141313

Продолжительность каждой работы определяется по формуле:


(3)

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

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


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


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

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

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

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

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

? отчисления на соц. нужды;

? косвенные расходы.


Таблица 7.3.1 - Форма калькуляции плановой себестоимости

Вид работТрудоемкость чел/дниДневная ставка, бел. рублей.Сумма основной заработной платы, бел. рублей.1 Составление и согласование технического задания341599,44124798,322 Сбор и изучение научно-технической литературы241599,4483198,883 Формулирование возможных направления решения задач241599,4483198,884 Разработка методики проведения испытаний.241599,4483198,885 Разработка и реализация алгоритма решения задачи с большим количеством ограничений341599,44124798,326 Оценка возможностей задачи241599,4483198,887 Оценка некоторого количества задач и решение их441599,44166397,768 Исследование задач наблюдения и возможность их сведения к задачам241599,4483198,889 Решение ряда задач наблюдения541599,44207997,210 Составление плана мероприятий по техники безопасности241599,4483198,8811 Оформление документации по выполненному программному продукту341599,44124798,3212 Оформление графического материала441599,44166397,7613 Обобщение результатов исследований341599,44124798,3214 Составление и оформление отчета341599,44124798,32Итого:40-1663977,6

Часовая тарифная ставка определятся путем деления месячного оклада на установленный при восьмичасовом рабочем дне фонд рабочего времени -168,6 час.

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


(4)


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


(5)


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


(6)

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

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


(7)


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

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


= (8)


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


(9)


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


(10)


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


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

Статьи затратУсловные обозначенияСумма затрат, руб1 Основная заработная плата разработчиков продуктаЗо1663977,62 Дополнительная заработная плата разработчиковЗд332795,523 Отчисления на социальные нужды: 3.1 Отчисления в фонд социальной защиты населения 3.2 Отчисления в БелгосстрахОсз Об678902,8608 9983,86564 Косвенные расходыРкос1996773,125 Полная себестоимостьСп4682432,96646 Полная прибыльПп07 Отпускная цена программного продуктаЦотп4682432,9664

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


(11)


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


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

Перечень услуг программного продуктаВремя до автоматизации, чВремя после автоматизации, чЭкономия времени, ч1 Работа со справочной информацией0,20,040,162 Передача готовой продукции на склад0,20,050,153 Просмотр отчетов по состоянию склада0,10,010,094 Прием и оформление документов на поступление и списание1,50,21,35 Оформление отчетов20,51,5Итого:2,450,511,94

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

Перечень услуг программного продуктаКоличество операций в годЭкономия времени, чГодовой фонд времени, ч1 Работа со справочной информацией6500,161042 Передача готовой продукции на склад35000,155253 Просмотр отчетов по состоянию склада2000,09184 Прием и оформление документов на поступление и списание501,3655 Оформление отчетов101,515Итого:727

Внедрение программного продукта «Автоматизация движения готовой продукции на складе ООО «Амазон-Колорит» позволило сэкономить 727 часа, что составляет 0.36 (К=0.36) годового фонда времени.

С внедрением данного программного средства «Автоматизация движения готовой продукции на складе ООО «Амазон-Колорит» можно условно экономить 0.36 годовой ставки библиотекаря.

Годовой фонд заработной платы кладовщика составляет:


- 859320 рублей.

- 171864 рублей, рассчитано по формуле 6.

- 355758,48 рубля, рассчитано по формулам 7, 8.


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


рубля (12)


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


рубля (13)


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

Экономический эффект от внедрения программного средства «Автоматизация движения готовой продукции на складе ООО «Амазон-Колорит» составит:


рубля (14)

Заключение


В данном дипломном проекте разработано программное средство, автоматизирующее работу склада готовой продукции ООО «Амазон-Колорит».

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

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

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

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

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

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

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


1 Бахтизин, В.В. Структурный анализ и моделирование в среде Case-средства BPWin. / В.В. Бахтизин, Л.А. Глухова - Мн.: БГУИР, 2002. - 44с.

2 Бахтизин, В.В. Учебное пособие по курсу «Технология проектирования программ»: Информационное моделирование с помощью Case-средства ERWin 3.0. / В.В. Бахтизин, Л.А. Глухова - Мн.: БГУИР, 1999. - 35с.

Грицай, А.В. Дипломное проектирование: Методические рекомендации по разделу «Охрана труда». А.В.Гриций; Мн.: МГВРК,1998. - 214с.

4 Джен, Л.К. Проектирование реляционных баз данных. Просто и доступно. / Л.К. Джен, Г.О. Харингтон - М.: издательство «Лори», 2000. - 230с.

. Сорокин, А.В. «С++ Builder 6. Разработка баз данных». / А.В. Сорокин - СПб.: Питер, 2007. -447с.

Приложение А

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


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


#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit8.h"

#include "Unit9.h"

#include "Unit10.h"

#include "Unit11.h"

#include "Unit13.h"

#include "Unit26.h"

#include "Unit27.h"

#include "Unit29.h"

#include "Unit30.h"

#include "Unit31.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form1;

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm1::N5Click(TObject *Sender)

{();

}__fastcall TForm1::N6Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N7Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N8Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N9Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N10Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N11Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N12Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N13Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N14Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N15Click(TObject *Sender)

{

Form11->ShowModal();

}__fastcall TForm1::N3Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N19Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N18Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm1::N17Click(TObject *Sender)

{->ShowModal();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit2.h"

#include "Unit1.h"

#include "Unit12.h"

#include "Unit10.h"

#include "Unit11.h"

#include "Unit13.h"

#include "Unit14.h"

#include "Unit15.h"

#include "Unit16.h"

#include "Unit17.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit8.h"

#include "Unit9.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form2;

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm2::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm2::Button2Click(TObject *Sender)

{(MessageBox(Handle, PChar("Вы уверены что хотите удалить запись?"), PChar("Подтверждение удаления"), MB_YESNOCANCEL)==mrYes)(ADOTable1->RecordCount>0) ADOTable1->Delete();

else Application->MessageBoxA("В таблице отсутствуют записи!","Ошибка!");

}__fastcall TForm2::FormActivate(TObject *Sender)

{(!ADOTable1->Eof) {->ADOTable1->Locate("id_ed_izm", ADOTable1id_ed_izm->Value, TLocateOptions());->Edit();ed_izm->AsString=Form7->ADOTable1ed_izm->AsString;->Post();->Next();

}->First();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit3.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit12.h"

#include "Unit13.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form3;

__fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm3::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm3::Button2Click(TObject *Sender)

{(MessageBox(Handle, PChar("Вы уверены что хотите удалить запись?"), PChar("Подтверждение удаления"), MB_YESNOCANCEL)==mrYes)(ADOTable1->RecordCount>0) ADOTable1->Delete();

else Application->MessageBoxA("В таблице отсутствуют записи!","Ошибка!");

}

#include <vcl.h>

#pragma hdrstop

#include "Unit4.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit12.h"

#include "Unit13.h"

#include "Unit14.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form4;

__fastcall TForm4::TForm4(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm4::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm4::Button2Click(TObject *Sender)

{(MessageBox(Handle, PChar("Вы уверены что хотите удалить запись?"), PChar("Подтверждение удаления"), MB_YESNOCANCEL)==mrYes)(ADOTable1->RecordCount>0) ADOTable1->Delete();

else Application->MessageBoxA("В таблице отсутствуют записи!","Ошибка!");

}

#include <vcl.h>

#pragma hdrstop

#include "Unit5.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit12.h"

#include "Unit13.h"

#include "Unit14.h"

#include "Unit15.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form5;

__fastcall TForm5::TForm5(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm5::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm5::Button2Click(TObject *Sender)

{(MessageBox(Handle, PChar("Вы уверены что хотите удалить запись?"), PChar("Подтверждение удаления"), MB_YESNOCANCEL)==mrYes)(ADOTable1->RecordCount>0) ADOTable1->Delete();

else Application->MessageBoxA("В таблице отсутствуют записи!","Ошибка!");

}

#include <vcl.h>

#pragma hdrstop

#include "Unit6.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit12.h"

#include "Unit13.h"

#include "Unit14.h"

#include "Unit15.h"

#include "Unit16.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form6;

__fastcall TForm6::TForm6(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm6::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm6::Button2Click(TObject *Sender)

{(ADOTable1->RecordCount>0)->Delete();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit7.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit12.h"

#include "Unit13.h"

#include "Unit14.h"

#include "Unit15.h"

#include "Unit16.h"

#include "Unit17.h"

#include "Unit8.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form7;

__fastcall TForm7::TForm7(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm7::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm7::Button2Click(TObject *Sender)

{(MessageBox(Handle, PChar("Вы уверены что хотите удалить запись?"), PChar("Подтверждение удаления"), MB_YESNOCANCEL)==mrYes)(ADOTable1->RecordCount>0) ADOTable1->Delete();

else Application->MessageBoxA("В таблице отсутствуют записи!","Ошибка!");

}

#include <vcl.h>

#pragma hdrstop

#include "Unit8.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit20.h"

#include "Unit23.h"

#include "Unit11.h"

#include "Unit6.h"

#include "Unit9.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form8;

__fastcall TForm8::TForm8(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm8::ADOTable2CalcFields(TDataSet *DataSet)

{stoim->Value=(ADOTable2kolvo->Value*ADOTable2cena->Value)+((ADOTable2kolvo->Value*ADOTable2cena->Value)*ADOTable2nds->Value)/100;

}__fastcall TForm8::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm8::ADOTable2AfterPost(TDataSet *DataSet)

{->ADOTable2->Locate("data",ADOTable1data_ttn->Value, TLocateOptions());->ADOTable2->Insert();->ADOTable2data->Value=ADOTable1data_ttn->Value;->ADOTable2id_sklada->Value=ADOTable1id_sklada->Value;->ADOTable2cena->Value=ADOTable2cena->Value;->ADOTable2kolvo->Value=ADOTable2kolvo->Value;->ADOTable2nds->Value=ADOTable2nds->Value;->ADOTable2id_gp->Value=ADOTable2id_gp->Value;->ADOTable2->Post();

}__fastcall TForm8::Button3Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm8::FormActivate(TObject *Sender)

{->Active=False;->Active=true;->Active=False;->Active=true;

}__fastcall TForm8::Button2Click(TObject *Sender)

{(ADOTable1->RecordCount>0)->Delete();

}__fastcall TForm8::Button4Click(TObject *Sender)

{(ADOTable2->RecordCount>0)->Delete();

}__fastcall TForm8::ADOTable1AfterPost(TDataSet *DataSet)

{->ADOTable1->Insert();->ADOTable1data->Value=Form8->ADOTable1data_ttn->Value;->ADOTable1id_sklada->Value=Form8->ADOTable1id_sklada->Value;->ADOTable1unp_pokup->Value=Form8->ADOTable1unp_pokup->Value;->ADOTable1->Post();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit9.h"

#include "Unit1.h"

#include "Unit8.h"

#include "Unit10.h"

#include "Unit11.h"

#include "Unit12.h"

#include "Unit13.h"

#include "Unit14.h"

#include "Unit15.h"

#include "Unit16.h"

#include "Unit17.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit21.h"

#include "Unit22.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form9;

__fastcall TForm9::TForm9(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm9::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm9::ADOTable2AfterPost(TDataSet *DataSet)

{->ADOTable2->Edit();->ADOTable2kolvo->Value -=ADOTable2kolvo->Value;->ADOTable2->Post();

}__fastcall TForm9::Button3Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm9::FormActivate(TObject *Sender)

{->Active=False;->Active=true;->Active=False;->Active=true;

}__fastcall TForm9::Button2Click(TObject *Sender)

{(ADOTable1->RecordCount>0)->Delete();

}__fastcall TForm9::Button4Click(TObject *Sender)

{(ADOTable2->RecordCount>0)->Delete();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit10.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit18.h"

#include "Unit19.h"

#include "Unit11.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form10;

__fastcall TForm10::TForm10(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm10::ADOTable2CalcFields(TDataSet *DataSet)

{stoim->Value=(ADOTable2kolvo->Value*ADOTable2cena->Value)+((ADOTable2kolvo->Value*ADOTable2cena->Value)*ADOTable2nds->Value)/100;

}__fastcall TForm10::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm10::Button3Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm10::ADOTable2AfterPost(TDataSet *DataSet)

{(Form11->ADOTable1->Locate("id_sklada", ADOTable2id_sklad->Value, TLocateOptions()))

{->Active=false;->Active=true;->Filtered=false;->Filter="id_ost='"+Form11->ADOTable1id_ost->AsString+"' and id_gp='"+ADOTable2id_gp->Value+"' and cena='"+ADOTable2cena->Value+"'";->Filtered=true;(tbl1->RecordCount>0)

{

tbl1->Edit();kolvo->Value=tbl1kolvo->Value/2+tbl1kolvo->Value/2;k=ADOTable2kolvo->Value;kolvo->Value=tbl1kolvo->Value+k;cena->Value=ADOTable2cena->Value;nds->Value=ADOTable2nds->Value;->Post(); }{->Insert();id_ost->Value=Form11->ADOTable1id_ost->Value;id_gp->Value=ADOTable2id_gp->Value;kolvo->Value=ADOTable2kolvo->Value;cena->Value=ADOTable2cena->Value;nds->Value=ADOTable2nds->Value;->Post();

} }->Filtered=false;

}__fastcall TForm10::FormActivate(TObject *Sender)

{->Active=False;->Active=true;->Active=False;->Active=true;->ADOTable1->Filtered=false;->ADOTable1->Filter="show like 1";->ADOTable1->Filtered=true;

}__fastcall TForm10::Button2Click(TObject *Sender)

{(ADOTable1->RecordCount>0)->Delete();

}__fastcall TForm10::Button4Click(TObject *Sender)

{(ADOTable2->RecordCount>0)->Delete();

}__fastcall TForm10::ADOTable1AfterPost(TDataSet *DataSet)

{(!Form11->ADOTable1->Locate("id_sklada", ADOTable1id_sklada->Value, TLocateOptions())) {->ADOTable1->Insert();->ADOTable1id_sklada->Value=ADOTable1id_sklada->Value;->ADOTable1->Post();

}

}

#include <vcl.h>

#pragma hdrstop

#include "Unit11.h"

#include "Unit1.h"

#include "Unit6.h"

#include "Unit2.h"

#include "Unit24.h"

#include "Unit25.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form11;

__fastcall TForm11::TForm11(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm11::Button1Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm11::ADOTable2CalcFields(TDataSet *DataSet)

{stoim->Value=(ADOTable2kolvo->Value*ADOTable2cena->Value)+((ADOTable2kolvo->Value*ADOTable2cena->Value)*ADOTable2nds->Value)/100;

}__fastcall TForm11::Button3Click(TObject *Sender)

{->ShowModal();

}__fastcall TForm11::FormActivate(TObject *Sender)

{->Active=False;->Active=true;->Active=False;->Active=true;

}__fastcall TForm11::Button2Click(TObject *Sender)

{(ADOTable1->RecordCount>0)->Delete();

}__fastcall TForm11::Button4Click(TObject *Sender)

{(ADOTable2->RecordCount>0)->Delete();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit12.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit8.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form12;

__fastcall TForm12::TForm12(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm12::FormActivate(TObject *Sender)

{->ADOTable1->Insert();->Enabled=true;->Enabled=true;

}__fastcall TForm12::Button1Click(TObject *Sender)

{((DBEdit1->Text!="") && (DBLookupComboBox1->Text!="")) {->ADOTable1->Post();

}{>MessageBoxA("Заполните необходимые поля!","Ошибка!");(DBEdit1->Text=="")->Color=clRed;DBLookupComboBox1->Color=clRed;

}->ADOTable1->First();(!Form2->ADOTable1->Eof) {->ADOTable1->Locate("id_ed_izm", Form2->ADOTable1id_ed_izm->Value, TLocateOptions());->ADOTable1->Edit();->ADOTable1ed_izm->AsString=Form7->ADOTable1ed_izm->AsString;->ADOTable1->Post();->ADOTable1->Next();

}->Close();

}__fastcall TForm12::Button2Click(TObject *Sender)

{->ADOTable1->Cancel();->Close();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit13.h"

#include "Unit1.h"

#include "Unit12.h"

#include "Unit2.h"

#include "Unit3.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form13;

__fastcall TForm13::TForm13(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm13::FormActivate(TObject *Sender)

{->ADOTable1->Insert();

}__fastcall TForm13::Button2Click(TObject *Sender)

{->ADOTable1->Cancel();->Close();

}__fastcall TForm13::Button1Click(TObject *Sender)

{((DBEdit1->Text!="") && (DBEdit2->Text!="") &&

(DBEdit3->Text!="") && (DBEdit4->Text!="")) {->ADOTable1->Post();

}{>MessageBoxA("Заполните необходимые поля!","Ошибка!");(DBEdit1->Text=="") DBEdit1->Color=clRed;if (DBEdit2->Text=="") DBEdit2->Color=clRed;if (DBEdit3->Text=="") DBEdit3->Color=clRed;DBEdit4->Color=clRed;

}

}

#include <vcl.h>

#pragma hdrstop

#include "Unit14.h"

#include "Unit1.h"

#include "Unit12.h"

#include "Unit13.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form14;

__fastcall TForm14::TForm14(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm14::Button2Click(TObject *Sender)

{->ADOTable1->Cancel();->Close();

}__fastcall TForm14::Button1Click(TObject *Sender)

{((DBEdit1->Text!="") && (DBEdit2->Text!="") && (DBEdit3->Text!=""))

{->ADOTable1->Post();

}{>MessageBoxA("Заполните необходимые поля!","Ошибка!");(DBEdit1->Text=="")->Color=clRed;(DBEdit2->Text=="")->Color=clRed;->Color=clRed;

}->Close();

}__fastcall TForm14::FormActivate(TObject *Sender)

{->ADOTable1->Insert();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit15.h"

#include "Unit1.h"

#include "Unit12.h"

#include "Unit13.h"

#include "Unit14.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form15;

__fastcall TForm15::TForm15(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm15::FormActivate(TObject *Sender)

{->ADOTable1->Insert();

}__fastcall TForm15::Button2Click(TObject *Sender)

{->ADOTable1->Cancel();->Close();

}__fastcall TForm15::Button1Click(TObject *Sender)

{((DBEdit1->Text!="") && (DBEdit2->Text!="")) {->ADOTable1->Post();

}{>MessageBoxA("Заполните необходимые поля!","Ошибка!");(DBEdit1->Text=="")->Color=clRed;DBEdit2->Color=clRed;

}->Close();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit16.h"

#include "Unit1.h"

#include "Unit12.h"

#include "Unit13.h"

#include "Unit14.h"

#include "Unit15.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form16;

__fastcall TForm16::TForm16(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm16::Button1Click(TObject *Sender)

{->ADOTable1->Post();();

}__fastcall TForm16::Button2Click(TObject *Sender)

{->ADOTable1->Cancel();();

}__fastcall TForm16::FormActivate(TObject *Sender)

{->ADOTable1->Insert();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit17.h"

#include "Unit1.h"

#include "Unit12.h"

#include "Unit13.h"

#include "Unit14.h"

#include "Unit15.h"

#include "Unit16.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form17;

__fastcall TForm17::TForm17(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm17::FormActivate(TObject *Sender)

{->ADOTable1->Insert();

}__fastcall TForm17::Button2Click(TObject *Sender)

{->ADOTable1->Cancel();->Close();

}__fastcall TForm17::Button1Click(TObject *Sender)

{->ADOTable1->Post();->Close();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit18.h"

#include "Unit10.h"

#include "Unit11.h"

#include "Unit6.h"

#include "Unit5.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form18;

__fastcall TForm18::TForm18(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm18::FormActivate(TObject *Sender)

{->ADOTable1->Insert();

}__fastcall TForm18::btn2Click(TObject *Sender)

{->ADOTable1->Cancel();();

}__fastcall TForm18::btn1Click(TObject *Sender)

{->ADOTable1show->Value=1;->ADOTable1data_prihoda->Value=FormatDateTime("dd.mm.yyyy",dtp1->Date);->ADOTable1->Post();();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit19.h"

#include "Unit10.h"

#include "Unit11.h"

#include "Unit2.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form19;

__fastcall TForm19::TForm19(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm19::FormActivate(TObject *Sender)

{->ADOTable2->Insert();

}__fastcall TForm19::btn1Click(TObject *Sender)

{->ADOTable2show->Value=1;->ADOTable2id_sklad->Value=Form10->ADOTable1id_sklada->Value;->ADOTable2data->Value=Form10->ADOTable1data_prihoda->Value;->ADOTable2->Post();();

}__fastcall TForm19::btn2Click(TObject *Sender)

{->ADOTable2->Cancel();();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit20.h"

#include "Unit8.h"

#include "Unit6.h"

#include "Unit11.h"

#include "Unit3.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form20;

__fastcall TForm20::TForm20(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm20::FormActivate(TObject *Sender)

{->ADOTable1->Insert();

}__fastcall TForm20::btn1Click(TObject *Sender)

{->ADOTable1data_ttn->Value=FormatDateTime("dd.mm.yyyy",dtp1->Date);->ADOTable1->Post();();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit21.h"

#include "Unit9.h"

#include "Unit3.h"

#include "Unit6.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form21;

__fastcall TForm21::TForm21(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm21::btn1Click(TObject *Sender)

{->ADOTable1data->Value=FormatDateTime("dd.mm.yyyy", dtp1->Date);->ADOTable1->Post();();

}__fastcall TForm21::btn2Click(TObject *Sender)

{->ADOTable1->Cancel();();

}__fastcall TForm21::FormActivate(TObject *Sender)

{->ADOTable1->Insert();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit22.h"

#include "Unit2.h"

#include "Unit9.h"

#include "Unit11.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form22;

__fastcall TForm22::TForm22(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm22::FormActivate(TObject *Sender)

{->ADOTable2->Insert();

}__fastcall TForm22::btn1Click(TObject *Sender)

{->ADOTable2data->Value=Form9->ADOTable1data->Value;->ADOTable2id_sklada->Value=Form9->ADOTable1id_sklada->Value;->ADOTable2cena->Value= Form11->ADOTable2cena->Value;->ADOTable2nds->Value= Form11->ADOTable2nds->Value;->ADOTable2->Post();();

}__fastcall TForm22::Button1Click(TObject *Sender)

{->ADOTable2->Cancel();();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit23.h"

#include "Unit8.h"

#include "Unit2.h"

#include "Unit11.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form23;

__fastcall TForm23::TForm23(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm23::btn1Click(TObject *Sender)

{->ADOTable2cena->Value=Form11->ADOTable2cena->Value;->ADOTable2nds->Value=Form11->ADOTable2nds->Value;->ADOTable2->Post();();

}__fastcall TForm23::FormActivate(TObject *Sender)

{->ADOTable2->Insert();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit24.h"

#include "Unit11.h"

#include "Unit6.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form24;

__fastcall TForm24::TForm24(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm24::FormActivate(TObject *Sender)

{->ADOTable1->Insert();

}__fastcall TForm24::Button1Click(TObject *Sender)

{->ADOTable1->Post();();

}__fastcall TForm24::Button2Click(TObject *Sender)

{->ADOTable1->Cancel();();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit25.h"

#include "Unit11.h"

#include "Unit2.h"

#include "Unit10.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form25;

__fastcall TForm25::TForm25(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm25::FormActivate(TObject *Sender)

{->ADOTable2->Insert();

}__fastcall TForm25::btn1Click(TObject *Sender)

{->ADOTable2->Post();();

}__fastcall TForm25::btn2Click(TObject *Sender)

{->ADOTable2->Cancel();();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit26.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form26;

__fastcall TForm26::TForm26(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm26::RadioButton1Click(TObject *Sender)

{->Enabled=false;

}__fastcall TForm26::RadioButton2Click(TObject *Sender)

{->Enabled=true;

}__fastcall TForm26::Button2Click(TObject *Sender)

{();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit27.h"

#include "Unit28.h"

#include "Unit1.h"

#include "Unit11.h"

#include "Unit6.h"

#include "Unit2.h"

#include "Unit7.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form27;

__fastcall TForm27::TForm27(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm27::Button2Click(TObject *Sender)

{();

}__fastcall TForm27::FormActivate(TObject *Sender)

{->Active=false;->Active=true;

}__fastcall TForm27::Button1Click(TObject *Sender)

{->QuickRep5->Preview();

}

#include <vcl.h>

#pragma hdrstop

#include "Unit28.h"

#include "Unit27.h"

#include "Unit29.h"

#include "Unit30.h"

#include "Unit31.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form28;

__fastcall TForm28::TForm28(TComponent* Owner)

: TForm(Owner)

{

}

#include <vcl.h>

#pragma hdrstop

#include "Unit29.h"

#include "Unit28.h"

#include "Unit1.h"

#include "Unit7.h"

#include "Unit2.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form29;

__fastcall TForm29::TForm29(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm29::Button1Click(TObject *Sender)

{_query->SQL->Text="create table mati (id counter primary key, id_gp int, kolvo int, id_sklad int, id_ost int, cena int, nds int, foreign key(id_ost) references ostatki)";_query->ExecSQL();_query->SQL->Text="select * from mati";_query->Active=true;(int i=0; i=new_query->RecordCount;i++)_query->Delete();_p->Close();_p->SQL->Clear();(rb1->Checked) {_p->SQL->Text="select id_prihoda, id_gp, sum(kolvo) as summ, id_sklad, cena, nds from gp_p where data <= :D and show not like 0 group by id_prihoda, id_gp, id_sklad, cena, nds";_p->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp5->Date); }{_p->SQL->Text="select id_prihoda, id_gp, sum(kolvo) as summ, id_sklad, cena, nds from gp_p where data between :D and :DD and show not like 0 group by id_prihoda, id_gp, id_sklad, cena, nds";_p->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp5->Date);_p->Parameters->ParamByName("DD")->Value = FormatDateTime("dd.mm.yyyy",dtp6->Date);

}_p->Open();_p->First();(mat_p->RecordCount>0)(int i=0; i<mat_p->RecordCount; i++) {_query->Insert();_query->FieldByName("id_gp")->Value=mat_p->FieldByName("id_gp")->Value;_query->FieldByName("kolvo")->Value=mat_p->FieldByName("summ")->Value;_query->FieldByName("id_sklad")->Value=mat_p->FieldByName("id_sklad")->Value;_query->FieldByName("cena")->Value=mat_p->FieldByName("cena")->Value;_query->FieldByName("nds")->Value=mat_p->FieldByName("nds")->Value;_query->Post(); int sk=new_query->FieldByName("id_sklad")->Value;>Filter="id_sklada like '"+IntToStr(sk)+"'";>Filtered=True;_query->Edit();_query->FieldByName("id_ost")->Value=ostatki->FieldByName("id_ost")->Value;_query->Post();>Filtered=false;_p->Next();

}->TableName="mati";->Active=false;->Active=true;->QuickRep9->Preview();_query->Active=false;_query->SQL->Text="drop table mati";_query->ExecSQL();

}__fastcall TForm29::tbl1CalcFields(TDataSet *DataSet)

{stoim->Value=(tbl1kolvo->Value*tbl1cena->Value)+((tbl1kolvo->Value*tbl1cena->Value)*tbl1nds->Value)/100;

}__fastcall TForm29::rb1Click(TObject *Sender)

{->Enabled=false;

}__fastcall TForm29::rb2Click(TObject *Sender)

{->Enabled=true;

}__fastcall TForm29::Button2Click(TObject *Sender)

{();

}__fastcall TForm29::FormActivate(TObject *Sender)

{>Active=false;>Active=true;_p->Active=false;_p->Active=true;_s->Active=false;_s->Active=true;

}

#include <vcl.h>

#pragma hdrstop

#include "Unit30.h"

#include "Unit28.h"

#include "Unit7.h"

#include "Unit1.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form30;

__fastcall TForm30::TForm30(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm30::Button1Click(TObject *Sender)

{_query->SQL->Text="create table mati (id counter primary key, id_gp int, kolvo int, id_sklad int, id_ost int, cena int, nds int, foreign key(id_ost) references ostatki)";_query->ExecSQL();_query->SQL->Text="select * from mati";_query->Active=true;(int i=0; i=new_query->RecordCount;i++)_query->Delete();_s->Close();_s->SQL->Clear();(rb7->Checked) {_s->SQL->Text="select id_rashoda, id_gp, sum(kolvo) as summ, id_sklada, cena, nds from gp_r where data <= :D group by id_rashoda, id_gp, id_sklada, cena, nds";_s->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp9->Date); }{_s->SQL->Text="select id_rashoda, id_gp, sum(kolvo) as summ, id_sklada, cena, nds from gp_r where data between :D and :DD group by id_rashoda, id_gp, id_sklada, cena, nds";_s->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp9->Date);_s->Parameters->ParamByName("DD")->Value = FormatDateTime("dd.mm.yyyy",dtp10->Date);

}_s->Open();_s->First();(mat_s->RecordCount>0)(int i=0; i<mat_s->RecordCount; i++) {_query->Insert();_query->FieldByName("id_gp")->Value=mat_s->FieldByName("id_gp")->Value;_query->FieldByName("kolvo")->Value=mat_s->FieldByName("summ")->Value;_query->FieldByName("id_sklad")->Value=mat_s->FieldByName("id_sklada")->Value;_query->FieldByName("cena")->Value=mat_s->FieldByName("cena")->Value;_query->FieldByName("nds")->Value=mat_s->FieldByName("nds")->Value;_query->Post(); int sk=new_query->FieldByName("id_sklad")->Value;>Filter="id_sklada like '"+IntToStr(sk)+"'";>Filtered=True;_query->Edit();_query->FieldByName("id_ost")->Value=ostatki->FieldByName("id_ost")->Value;_query->Post();>Filtered=false;_s->Next();

}->TableName="mati";->Active=false;->Active=true;->QuickRep11->Preview();_query->Active=false;_query->SQL->Text="drop table mati";_query->ExecSQL();

}__fastcall TForm30::Button2Click(TObject *Sender)

{();

}__fastcall TForm30::tbl1CalcFields(TDataSet *DataSet)

{stoim->Value=(tbl1kolvo->Value*tbl1cena->Value)+((tbl1kolvo->Value*tbl1cena->Value)*tbl1nds->Value)/100;

}__fastcall TForm30::rb7Click(TObject *Sender)

{->Enabled=false;

}__fastcall TForm30::rb8Click(TObject *Sender)

{->Enabled=true;

}__fastcall TForm30::FormActivate(TObject *Sender)

{>Active=false;>Active=true;_p->Active=false;_p->Active=true;_s->Active=false;_s->Active=true;

}

#include <vcl.h>

#pragma hdrstop

#include "Unit31.h"

#include "Unit28.h"

#include "Unit7.h"

#include "Unit1.h"

#include "Unit2.h"

#pragma package(smart_init)

#pragma resource "*.dfm"*Form31;

__fastcall TForm31::TForm31(TComponent* Owner)

: TForm(Owner)

{

}__fastcall TForm31::Button1Click(TObject *Sender)

{->SQL->Text="create table osv (id counter primary key, id_gp int, id_sklad int, n_ost int, prih int, rash int, ost int, id_ost int, cena int, nds int, foreign key(id_ost) references ostatki)";->ExecSQL();->SQL->Clear();->SQL->Text="select * from osv";->Active=true;_p->Close();_p->SQL->Clear();(rb3->Checked) {_p->SQL->Text="select id_prihoda, id_gp, sum(kolvo) as summ, id_sklad, cena, nds from gp_p where data <= :D and show=0 group by id_prihoda, id_gp, id_sklad, cena, nds order by id_sklad";_p->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp4->Date); }{_p->SQL->Text="select id_prihoda, id_gp, sum(kolvo) as summ, id_sklad, cena from gp_p where data between :D and :DD and show=0 group by id_prihoda, id_gp, id_sklad, cena, nds order by id_sklad";_p->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp4->Date);_p->Parameters->ParamByName("DD")->Value = FormatDateTime("dd.mm.yyyy",dtp7->Date);

}_p->Open();_p->First();(int i=0; i<mat_p->RecordCount; i++) {->Insert();id_gp->Value=mat_p->FieldByName("id_gp")->Value;id_sklad->Value=mat_p->FieldByName("id_sklad")->Value;n_ost->Value=mat_p->FieldByName("summ")->Value;cena->Value=mat_p->FieldByName("cena")->Value;nds->Value=mat_p->FieldByName("nds")->Value;->Post();sk=qry9->FieldByName("id_sklad")->Value;>Filter="id_sklada like '"+IntToStr(sk)+"'";>Filtered=True;->Edit();->FieldByName("id_ost")->Value=ostatki->FieldByName("id_ost")->Value;->Post();>Filtered=false;_p->Next();

}_p->Close();_p->SQL->Clear();(rb3->Checked) {_p->SQL->Text="select id_prihoda, id_gp, sum(kolvo) as summ, id_sklad, cena, nds from gp_p where (data <= :D) and show not like 0 group by id_prihoda, id_gp, id_sklad, cena, nds order by id_sklad";_p->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp4->Date);

}{_p->SQL->Text="select id_prihoda, id_gp, sum(kolvo) as summ, id_sklad, cena, nds from gp_p where (data between :D and :DD) and show not like 0 group by id_prihoda, id_gp, id_sklad, cena, nds order by id_sklad";_p->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp4->Date);_p->Parameters->ParamByName("DD")->Value = FormatDateTime("dd.mm.yyyy",dtp7->Date);

}_p->Open();_p->First();(int i=0; i<mat_p->RecordCount; i++) {->Filter="id_sklad like '"+mat_p->FieldByName("id_sklad")->AsString+"' and id_gp like '"+mat_p->FieldByName("id_gp")->AsString+"'";->Filtered=true;(qry9->RecordCount==0) {->Filtered=false;->Insert();id_gp->Value=mat_p->FieldByName("id_gp")->Value;id_sklad->Value=mat_p->FieldByName("id_sklad")->Value;cena->Value=mat_p->FieldByName("cena")->Value;nds->Value=mat_p->FieldByName("nds")->Value;prih->Value=mat_p->FieldByName("summ")->Value;->Post();sk=qry9->FieldByName("id_sklad")->Value;>Filter="id_sklada like '"+IntToStr(sk)+"'";>Filtered=True;->Edit();->FieldByName("id_ost")->Value=ostatki->FieldByName("id_ost")->Value;->Post();>Filtered=false; }if (qry9->RecordCount>0) if (qry9->Locate("cena", mat_p->FieldByName("cena")->Value, TLocateOptions())) {->Edit(); int k=0; k=qry9prih->Value + mat_p->FieldByName("summ")->Value;prih->Value=k;->Post();->Filtered=false;

}{->Filtered=false;->Insert();id_gp->Value=mat_p->FieldByName("id_gp")->Value;id_sklad->Value=mat_p->FieldByName("id_sklad")->Value;cena->Value=mat_p->FieldByName("cena")->Value;nds->Value=mat_p->FieldByName("nds")->Value;prih->Value=mat_p->FieldByName("summ")->Value;->Post();sk=qry9->FieldByName("id_sklad")->Value;>Filter="id_sklada like '"+IntToStr(sk)+"'";>Filtered=True;->Edit();->FieldByName("id_ost")->Value=ostatki->FieldByName("id_ost")->Value;->Post();>Filtered=false;

}_p->Next();

}_s->SQL->Clear();(rb3->Checked) {_s->SQL->Text="select id_rashoda, id_gp, sum(kolvo) as summ, id_sklada, cena, nds from gp_r where data <= :D group by id_rashoda, id_gp, id_sklada, cena, nds";_s->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp4->Date); }{_s->SQL->Text="select id_rashoda, id_gp, sum(kolvo) as summ, id_sklada, cena, nds from gp_r where data between :D and :DD group by id_rashoda, id_gp, id_sklada, cena, nds";_s->Parameters->ParamByName("D")->Value = FormatDateTime("dd.mm.yyyy",dtp4->Date);_s->Parameters->ParamByName("DD")->Value = FormatDateTime("dd.mm.yyyy",dtp7->Date);

}_s->Active=true;_s->First();(int i=0; i<mat_s->RecordCount; i++) {->Filter="id_gp like '"+mat_s->FieldByName("id_gp")->AsString+"' and id_sklad like '"+mat_s->FieldByName("id_sklada")->AsString+"'";->Filtered=true;(qry9->RecordCount==0) {->Filtered=false;->Insert();id_gp->Value=mat_s->FieldByName("id_gp")->Value;id_sklad->Value=mat_s->FieldByName("id_sklada")->Value;rash->Value=mat_s->FieldByName("summ")->Value;->Post();sk=qry9->FieldByName("id_sklad")->Value;>Filter="id_sklada like '"+IntToStr(sk)+"'";>Filtered=True;->Edit();->FieldByName("id_ost")->Value=ostatki->FieldByName("id_ost")->Value;->Post();>Filtered=false; }if (qry9->Locate("cena", mat_s->FieldByName("cena")->Value, TLocateOptions())) {->Edit();rash->Value=mat_s->FieldByName("summ")->Value;->Post();->Filtered=false;

}_s->Next();

}->First();(int i=0; i<qry9->RecordCount; i++) {->Edit();(qry9n_ost->AsString=="") qry9n_ost->Value=0;(qry9prih->AsString=="") qry9prih->Value=0;(qry9rash->AsString=="") qry9rash->Value=0;ost->Value=qry9n_ost->Value + qry9prih->Value - qry9rash->Value;->Post();->Next(); }->TableName="osv";->Active=false;->Active=true;->QuickRep10->Preview();_query->SQL->Text="drop table osv";_query->ExecSQL();->Active=false;

}__fastcall TForm31::Button2Click(TObject *Sender)

{();

}__fastcall TForm31::tbl3CalcFields(TDataSet *DataSet)

{stoim->Value=(tbl3ost->Value*tbl3cena->Value)+((tbl3ost->Value*tbl3cena->Value)*tbl3nds->Value)/100;

}__fastcall TForm31::rb3Click(TObject *Sender)

{->Enabled=false;

}__fastcall TForm31::rb4Click(TObject *Sender)

{->Enabled=true;

}__fastcall TForm31::FormActivate(TObject *Sender)

{>Active=false;>Active=true;_p->Active=false;_p->Active=true;_s->Active=false;_s->Active=true;

}

Приложение Б


Информационная модель



Автоматизация движения готовой продукции на складе ООО «Амазон-колорит» Введение Целью данного д

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

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

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

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

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