Автоматизация движения готовой продукции на складе ООО 'Амазон-колорит'
Автоматизация движения готовой
продукции на складе ООО «Амазон-колорит»
Введение
Целью данного дипломного проекта является разработка программы для учета
движения готовой продукции на складе предприятия.
В настоящее время данная тема является очень актуальной, так как ручной
учет занимает очень много времени. Автоматизированный учет позволяет сократить
это время в разы.
Для достижения цели были поставлены следующие задачи:
- изучить и проанализировать предметную область;
- ознакомиться с принципами учета движения готовой продукции на
складе;
- проанализировать и спроектировать логическую и физическую
модель данных;
- на основе результатов исследования разработать программный
продукт.
В разделе «Постановка задачи» идёт описание предметной области, входной,
постоянной и выходной информации, функциональное и информационное
моделирование, разработка структуры баз данных.
В разделе «Вычислительная система» обоснован выбор среды разработки,
операционной системы, а так же требования к аппаратному и программному
обеспечению.
В разделе «Описание программы» описываются компоненты и интерфейс
программы, вызов и загрузка программы.
В разделе «Программа тестирования и методика испытаний» идет речь о цели,
об объекте испытаний, методах испытаний, а так же о протоколе испытаний.
В разделе «Руководство пользователя» рассказывается о назначении
программы, области применения и описании применения.
Раздел «Охраны труда и энергосбережение» включает в себя нормализацию
нервно-психических нагрузок на оператора при реализации информационных
технологий. Анализ психофизиологических нагрузок при обработке информации и их
влияние на здоровье, и работоспособность оператора персонального компьютера,
выбор и обоснование технического оснащения и организации рабочего места оператора
персонального компьютера в целях оптимизации нервно-психических нагрузок,
рекомендации по организации режима труда и отдыха оператора персонального
компьютера.
В «Экономическом разделе» определяется трудоёмкость программного
продукта, оценивается трудоёмкость отдельных видов работ, определяется цена
научно технического продукта и определяется экономический эффект от внедрения
программного продукта.
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
|
Служит для связи с ADOTable1
|
DBGrid1
|
Служит для отображения таблицы
|
Таблица 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
|
Служит для связи с ADOTable1
|
DataSource2
|
Служит для связи с ADOTable2
|
Button1
|
Служит для открытия формы добавления записи
|
ADOTable1
|
Служит для связи с таблицей «rashod»
|
DBGrid2
|
Служит для отображения таблицы
|
ADOTable2
|
Служит для связи с таблицей «gp_r»
|
Button2
|
Служит для вызова функции удаления записи
|
Button3
|
Служит для открытия формы добавления записи
|
Button4
|
Служит для вызова функции удаления записи
|
Таблица 3.1.10 - Компоненты формы «Form10»
Наименование
|
Назначение
|
DBGrid1
|
Служит для отображения таблицы
|
DBGrid2
|
Служит для отображения таблицы
|
ADOTable1
|
Служит для связи с таблицей «prihod»
|
DataSource1
|
Служит для связи с ADOTable1
|
ADOTable2
|
Служит для связи с таблицей «gp_p»
|
DataSource2
|
Служит для связи с ADOTable2
|
ADOTable3
|
Служит для связи с таблицей «gp_p»
|
Tbl1
|
Служит для связи с таблицей «gp_ost»
|
Button1
|
Служит для открытия формы добавления записи
|
Button2
|
Служит для вызова функции удаления записи
|
Button3
|
Служит для открытия формы добавления записи
|
Button4
|
Служит для вызова функции удаления записи
|
Таблица 3.1.11 - Компоненты формы «Form11»
Наименование
|
Назначение
|
DBGrid1
|
Служит для отображения таблицы
|
DBGrid2
|
Служит для отображения таблицы
|
ADOTable1
|
Служит для связи с таблицей «ostatki»
|
DataSource1
|
Служит для связи с ADOTable1
|
Button1
|
Служит для открытия формы добавления записи
|
Button2
|
Служит для вызова функции удаления записи
|
Button3
|
Служит для открытия формы добавления записи
|
DataSource2
|
Служит для связи с ADOTable2
|
ADOTable2
|
Служит для связи с таблицей «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,0
|
30
|
70
|
2
|
до 40000
|
до 30000
|
До 4,0
|
50
|
90
|
3
|
до 60000
|
до 40000
|
До 6,0
|
70
|
120
|
При несоответствии фактических условий труда требованиям санитарных
правил, время регламентированных перерывов следует увеличить на 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 представлены электромагнитные параметры, эргономические,
энергосберегающие и экологические. TCO’99 предъявляет более жесткие требования,
чем TCO’95 в области эргономики, энергия, излучений, экологии, пожарной,
электрической безопасности;
- 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ож
|
1
|
2
|
3
|
4
|
1 Составление и согласование технического задания
|
Техник-программист
|
1
|
3
|
2 Сбор и изучение научно-технической литературы
|
Техник-программист
|
1
|
2
|
3 Формулирование возможных направления решения задач
|
Техник-программист
|
1
|
2
|
4 Разработка методики проведения испытаний.
|
Техник-программист
|
1
|
2
|
5 Разработка и реализация алгоритма решения задачи с
большим количеством ограничений
|
Техник-программист
|
1
|
3
|
6 Оценка возможностей задачи
|
Техник-программист
|
1
|
2
|
7 Оценка некоторого количества задач и решение их
|
Техник-программист
|
1
|
4
|
8 Исследование задач наблюдения и возможность их сведения к
задачам
|
Техник-программист
|
1
|
2
|
9 Решение ряда задач наблюдения
|
Техник-программист
|
1
|
5
|
10 Составление плана мероприятий по техники безопасности
|
Техник-программист
|
1
|
2
|
11 Оформление документации по выполненному программному
продукту
|
Техник-программист
|
1
|
3
|
12 Оформление графического материала
|
Техник-программист
|
1
|
4
|
13 Обобщение результатов исследований
|
Техник-программист
|
1
|
3
|
14 Составление и оформление отчета
|
Техник-программист
|
1
|
3
|
Всего:
|
-
|
-
|
40
|
.2.1 Оценка трудоемкости отдельных видов работ
Трудоемкость
создания программного продукта определяется по сумме продолжительности
выполнения каждого вида работ. Поскольку трудоемкость этапов носит
вероятностный характер, то будем использовать метод экспертных оценок (PERT).
Для каждой работы экспертным путем предварительно устанавливаются три оценки
трудоемкости. - минимально возможная (оптимистическая) оценка
трудоемкости. - наиболее вероятностная оценка. - максимально возможная (пессимистическая) оценка
трудоемкости.
Определим
для каждой работы оптимальное время:
(1)
Также
определим дисперсию предварительных оценок трудоемкостей, которая
показывает, на сколько вероятно выполнения работы в срок
(2)
Таблица 7.2.1.1 − Оценка трудоемкости
Вид работы
|
Оценка трудоемкости
|
Расчетные величины
|
|
tmin
|
tH.B
|
tmax
|
tож
|
D
|
2
|
3
|
4
|
3
|
0.1111111111
|
|
tmin
|
tH.B
|
tmax
|
tож
|
D
|
2
|
2
|
2
|
3
|
2
|
0,0277777778
|
3
|
1
|
2
|
3
|
2
|
0.1111111111
|
4
|
2
|
2
|
4
|
2
|
0.1111111111
|
5
|
1
|
3
|
5
|
3
|
0.4444444444
|
6
|
1
|
2
|
5
|
2
|
0.4444444444
|
7
|
2
|
4
|
6
|
4
|
0.4444444444
|
8
|
1
|
2
|
3
|
2
|
0.1111111111
|
9
|
3
|
5
|
6
|
5
|
0.2500000000
|
10
|
2
|
2
|
4
|
2
|
0.1111111111
|
11
|
2
|
3
|
4
|
3
|
0.1111111111
|
12
|
3
|
4
|
5
|
4
|
0.1111111111
|
13
|
3
|
3
|
4
|
3
|
0.0277777778
|
14
|
1
|
3
|
5
|
3
|
0.4444444444
|
Итого:
|
-
|
-
|
-
|
40
|
3,3611111109
|
.2.2 Построение ленточного графика создания программного продукта
Одной из основных целей планирования программного продукта является
определение общей продолжительности их проведения.
При небольших по объему исследованиях наиболее удобным, простым и
наглядным является ленточный график. Он представляет собой:
- таблицу, где перечислены наименование видов работ, должности
исполнителей, трудоемкость, численность исполнителей и длительность выполнения
каждого вида работ (таблица 7.2.2.1);
- рисунок, где график отражает продолжительность отдельного
вида работ в виде отрезков времени, которые располагаются в соответствии с
последовательностью выполнения работ, представлен в соответствии с рисунком
7.2.2.1.
Таблица 7.2.2.1 - Ленточный график создания программного продукта
Наименование этапов и видов работ
|
Исполнитель (должность, квалификация)
|
Трудоемкость, человеко-дни, tож
|
Количество исполнителей
|
Продолжи тельность работы (дни)
|
1 Составление и согласование технического задания
|
Техник-программист
|
3
|
1
|
3
|
2 Сбор и изучение научно-технической литературы
|
Техник-программист
|
2
|
1
|
2
|
3 Формулирование возможных направления решения задач
|
Техник-программист
|
2
|
1
|
2
|
4 Разработка методики проведения испытаний.
|
Техник-программист
|
2
|
1
|
2
|
5 Разработка и реализация алгоритма решения задачи с
большим количеством ограничений
|
Техник-программист
|
3
|
1
|
3
|
6 Оценка возможностей задачи
|
Техник-программист
|
2
|
1
|
2
|
7 Оценка некоторого количества задач и решение их
|
Техник-программист
|
4
|
1
|
4
|
8 Исследование задач наблюдения и возможность их сведения к
задачам
|
Техник-программист
|
2
|
1
|
2
|
9 Решение ряда задач наблюдения
|
Техник-программист
|
5
|
1
|
5
|
10 Составление плана мероприятий по техники безопасности
|
Техник-программист
|
2
|
1
|
2
|
11 Оформление документации по выполненному программному
продукту
|
Техник-программист
|
3
|
1
|
3
|
12 Оформление графического
материала
|
Техник-программист
|
4
|
1
|
4
|
13 Обобщение результатов
исследований
|
Техник-программист
|
3
|
1
|
3
|
14 Составление и оформление отчета
|
Техник-программист
|
3
|
1
|
3
|
Таблица 7.2.2.2 - График продолжительности отдельных видов работ
Количество исполни-телей
|
Продолжи-телность работы (дни)
|
Продолжительность работы в неделях, при пятидневной рабочей
неделе
|
|
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
1
|
3
|
|
|
|
|
|
|
|
|
1
|
2
|
|
|
|
|
|
|
|
|
1
|
2
|
|
|
|
|
|
|
|
|
1
|
2
|
|
|
|
|
|
|
|
|
1
|
3
|
|
|
|
|
|
|
|
|
1
|
2
|
|
|
|
|
|
|
|
|
1
|
4
|
|
|
|
|
|
|
|
|
1
|
2
|
|
|
|
|
|
|
|
|
1
|
5
|
|
|
|
|
|
|
|
|
1
|
2
|
|
|
|
|
|
|
|
|
1
|
3
|
|
|
|
|
|
|
|
|
1
|
4
|
|
|
|
|
|
|
|
|
1
|
3
|
|
|
|
|
|
|
|
|
1
|
3
|
|
|
|
|
|
|
|
|
Продолжительность
каждой работы определяется по формуле:
(3)
где
- трудоемкость работ, человеко-дни;
-
численность исполнителей, человек.
.3
Определение цены научно-технической продукции
Целью
планирования себестоимости программного продукта является экономически
обоснованное определение величины затрат на ее выполнение. В плановую
себестоимость программного продукта включаются все затраты, связанные с ее
выполнением, независимо от источника их финансирования. Определение затрат на
создание программного продукта производятся путем составления калькуляции
плановой себестоимости.
Все
расчеты выполнены на 18.05.2012 г. с учетом цен, ставки первого разряда,
существующих налогов и ценовых отчислений.
Калькуляция плановой себестоимости программного продукта составляется по
следующим статьям затрат:
− основная заработная плата;
− дополнительная заработная плата;
− отчисления на соц. нужды;
− косвенные расходы.
Таблица 7.3.1 - Форма калькуляции плановой себестоимости
Вид работ
|
Трудоемкость чел/дни
|
Дневная ставка, бел. рублей.
|
Сумма основной заработной платы, бел. рублей.
|
1 Составление и согласование технического задания
|
3
|
41599,44
|
124798,32
|
2 Сбор и изучение научно-технической литературы
|
2
|
41599,44
|
83198,88
|
3 Формулирование возможных направления решения задач
|
2
|
41599,44
|
83198,88
|
4 Разработка методики проведения испытаний.
|
2
|
41599,44
|
83198,88
|
5 Разработка и реализация алгоритма решения задачи с
большим количеством ограничений
|
3
|
41599,44
|
124798,32
|
6 Оценка возможностей задачи
|
2
|
41599,44
|
83198,88
|
7 Оценка некоторого количества задач и решение их
|
4
|
41599,44
|
166397,76
|
8 Исследование задач наблюдения и возможность их сведения к
задачам
|
2
|
41599,44
|
83198,88
|
9 Решение ряда задач наблюдения
|
5
|
41599,44
|
207997,2
|
10 Составление плана мероприятий по техники безопасности
|
2
|
41599,44
|
83198,88
|
11 Оформление документации по выполненному программному
продукту
|
3
|
41599,44
|
124798,32
|
12 Оформление графического материала
|
4
|
41599,44
|
166397,76
|
13 Обобщение результатов исследований
|
3
|
41599,44
|
124798,32
|
14 Составление и оформление отчета
|
3
|
41599,44
|
124798,32
|
Итого:
|
40
|
-
|
1663977,6
|
Часовая тарифная ставка определятся путем деления месячного оклада на
установленный при восьмичасовом рабочем дне фонд рабочего времени -168,6 час.
Часовая тарифная ставка техника−программиста:
(4)
Дневная ставка техника−программиста:
(5)
Дополнительная заработная плата научно-производственного персонала
определяется по формуле:
(6)
где
- норматив дополнительной заработной платы (20%)
Отчисления
в фонд социальной защиты населения и в фонд занятости рассчитывается по
формуле:
(7)
где
- норматив отчислений в фонд социальной защиты - 34%
.
Отчисления
в Белгосстрах
= (8)
Косвенные накладные расходы (Нкос=120%):
(9)
Полная себестоимость программного продукта:
(10)
Схема затрат приведена в таблице 7.3.2
Таблица 7.3.2 - Схема затрат
Статьи затрат
|
Условные обозначения
|
Сумма затрат, руб
|
1 Основная заработная плата разработчиков продукта
|
Зо
|
1663977,6
|
2 Дополнительная заработная плата разработчиков
|
Зд
|
332795,52
|
3 Отчисления на социальные нужды: 3.1 Отчисления в фонд
социальной защиты населения 3.2 Отчисления в Белгосстрах
|
Осз Об
|
678902,8608 9983,8656
|
4 Косвенные расходы
|
Ркос
|
1996773,12
|
5 Полная себестоимость
|
Сп
|
4682432,9664
|
6 Полная прибыль
|
Пп
|
0
|
7 Отпускная цена программного продукта
|
Цотп
|
4682432,9664
|
Отпускная цена программного продукта:
(11)
.4 Определение экономического эффекта от внедрения программного продукта
Таблица 7.4.1 - Определение экономии времени
Перечень услуг программного продукта
|
Время до автоматизации, ч
|
Время после автоматизации, ч
|
Экономия времени, ч
|
1 Работа со справочной информацией
|
0,2
|
0,04
|
0,16
|
2 Передача готовой продукции на склад
|
0,2
|
0,05
|
3 Просмотр отчетов по состоянию склада
|
0,1
|
0,01
|
0,09
|
4 Прием и оформление документов на поступление и списание
|
1,5
|
0,2
|
1,3
|
5 Оформление отчетов
|
2
|
0,5
|
1,5
|
Итого:
|
2,45
|
0,51
|
1,94
|
Таблица 7.4.2 - Определение годового фонда времени
Перечень услуг программного продукта
|
Количество операций в год
|
Экономия времени, ч
|
Годовой фонд времени, ч
|
1 Работа со справочной информацией
|
650
|
0,16
|
104
|
2 Передача готовой продукции на склад
|
3500
|
0,15
|
525
|
3 Просмотр отчетов по состоянию склада
|
200
|
0,09
|
18
|
4 Прием и оформление документов на поступление и списание
|
50
|
1,3
|
65
|
5 Оформление отчетов
|
10
|
1,5
|
15
|
Итого:
|
|
|
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 "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)
__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;
}
Приложение Б
Информационная модель