Диплом на тему Разработка системы автоматизированного учета для багетной мастерской
Работа добавлена на сайт bukvasha.net: 2015-07-01Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство образования и науки
Республики Казахстан
Карагандинский государственный технический университет
Кафедра Системы автоматизированного проектирования
Зав. кафедрой
_________ “____”_____2009 г.
(подпись) (дата)
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к дипломному проекту
Тема "Разработка системы автоматизированного учета для багетной мастерской"
Руководитель
Студент гр.
2009
Содержание
Введение
1. Предпроектные исследования
1.1 Описание предметной области
1.2 Анализ существующих разработок
1.2.1 Программный комплекс Багетная мастерская
1.2.2 Программа Багетный мастер v1.0
1.2.3 Программа Он-лайн обрамление V.4
1.2.4 Программа Багетная мастерская
1.3 Постановка задачи
2. Техническое задание
2.1 Общие сведения
2.1.1 Наименование системы и условное обозначение
2.1.2 Разработчик и заказчик
2.1.3 Основание для разработки
2.1.4 Начало и окончание работ
2.1.5 Порядок оформления и предъявления заказчику результатов работ по созданию системы
2.2 Назначение и цели создания системы
2.2.1 Назначение системы
2.2.2 Цели создания системы
2.2.3 Критерии эффективности функционирования системы
2.3 Характеристика объекта автоматизации
2.4 Требования к системе
2.4.1 Общие требования
2.4.2 Требования к видам обеспечения системы
2.5 Состав и содержание работ по созданию системы
2.6 Порядок контроля и приемки системы
3. Информационное обеспечение
3.1 Структура информационных потоков и документооборота
3.1.1 Информационные потоки до автоматизации
3.1.2 Информационные потоки после автоматизации
3.2 Концептуальная модель
3.3 Логическая модель
3.4 Физическая модель
4. Лингвистическое обеспечение
4.1 Входной язык
4.2 Внутренние языки
4.2.1 Выбор языка программирования
4.2.2 Общая характеристика языка Object Pascal
4.2.3 Структурированный язык запросов SQL
4.3 Выходной язык
5. Программное обеспечение
5.1 Общесистемное ПО
5.2 Базовое программное обеспечение
5.2.1 Средства разработки прикладного программного обеспечения
5.2.2 Средства документирования
5.3 Прикладное программное обеспечение
5.3.1 Структура прикладного программного обеспечения
5.3.3 Руководство программиста
6. Техническое обеспечение
6.1 Общие требования
6.2 Процессор
6.3 Материнская плата
6.5 Оперативная память
6.6 Видеокарта
6.7 Накопитель на жестких магнитных дисках
6.8 Монитор
6.9 Устройство чтения и записи CD
6.10 Окончательная конфигурация КТС
7. Методическое обеспечение
7.1 Руководство по установке
7.2 Руководство пользователя
8. Технико-экономическое обоснование
8.1 Расчет стоимости разработки автоматизированной системы
8.2 Единовременные затраты
8.3 Расчет экономической эффективности
9. Промышленная экология
9.1 Экология как наука
9.2 Экологические проблемы научно-технического прогресса
9.3 Защита окружающей среды от вредного воздействия ионизирующих излучений
10. Охрана труда и техника безопасности
10.1 Анализ опасных и вредных производственных факторов
10.2 Расчет уровня шума
10.3 Мероприятия по снижению вредного воздействия опасных и вредных производственных факторов
10.3.1 Общие требования к ИТР и персоналу
10.3.2 Общие требования к оборудованию рабочего места
10.3.3 Меры защиты от поражения электрическим током, электромагнитных полей, рентгеновского излучения и статического электричества
10.3.4 Освещение
10.3.5 Пожарная безопасность
10.4 Техника безопасности при работе за ПК
10.5 Режим труда
Заключение
Список использованных источников
Приложение А
Приложение Б
Приложение В
Введение
В последнее время быстрыми темпами развиваются наука и техника, которые вызвали глубокий переворот во всех отраслях производства и оказали воздействие на все стороны жизни общества.
Любая отрасль промышленности, если она не развивается, не совершенствуется, оказывается нежизнеспособной в современном мире. Поэтому назревает необходимость создания новых научно-технических средств, их проектирование и внедрение в производство.
В настоящее время компьютер стал такой же привычной и необходимой вещью на рабочем месте, как ручка и карандаш. Компьютер нужен всем людям, в той или иной степени связанным с делопроизводством, руководителям, инженерам, педагогическим работникам, журналистам, писателям, студентам, просто специалистам в своей предметной области как элементарное средство оргтехники делового человека.
Наиболее часто объектом автоматизации становится работа крупных предприятий. Но все более возрастающий ритм жизни и увеличивающееся число клиентов требуют повышения производительности любого предприятия. Современное развитие компьютерных технологий позволяет создавать весьма красивые и оптимальные решения, способные существенно преобразить и улучшить производственный цикл.
Мир стремительно развивается и любая организация, желающая ускорить весь цикл своего производства, приходит к необходимости внедрения средств автоматизации по возможности на всех стадиях производственного цикла. Не является исключением и деятельность небольших фирм, занимающихся изготовлением и подбором багет, паспарту для картин и фотографий.
Целью данной работы является разработка системы автоматизированного учета для багетной мастерской. Разрабатываемая система позволит ускорить процесс принятия и оформления заказа, а также автоматизировать ведение складского учета. Кроме того, внедрение системы учета позволит снизить трудоемкость и повысить производительность труда, повысит точность расчетов и снизит вероятность ошибок, что в итоге приведет к снижению коммерческих потерь. Для осуществления всех необходимых расчетов теперь достаточно будет воспользоваться специально предназначенной для этого программой, не прибегая к необходимости осуществлять вычисления вручную.
1. Предпроектные исследования
1.1 Описание предметной области
Наиболее часто объектом автоматизации становится работа крупных предприятий. Создание высоконадёжных систем управления позволило повсеместно автоматизировать процессы изготовления различных товаров, оборудования, линии сборки в автомобильной промышленности. Системы автоматизации позволили сократить участие человека в процессе производства до минимума. Возрастающий ритм жизни и увеличивающееся число клиентов требуют повышения производительности любого предприятия. Основные идеи автоматизации сегодня с лёгкостью можно распространить практически на все современные отрасли. Тем более что современное развитие компьютерных технологий позволяет создавать весьма красивые и оптимальные решения, способные существенно преобразить и улучшить производственный цикл любого предприятия. Не является исключением и работа таких предприятий как завод метоллоконструкций.
Любое изображение, созданное художником, за исключением только древних наскальных рисунков, имеет обрамление. Оно завершает композицию, придает ей единство, направляет внимание зрителя на само произведение, выделяет изображение и одновременно связывает его с интерьером. Картина в современном понимании этого слова, а вместе с ней и рама появляется примерно в XIV веке. История рамы, безусловно, связана с историей искусства и архитектуры: каждый новый стиль вносил свои изменения и дополнения в облик рамы. Благодаря такому долгому пути, сегодня мы имеем множество профилей багета различных направлений и стилей, расцветок и фактур. Сегодня в рамы оформляют не только живописные и графические работы. Уже невозможно представить без рамы постер или художественную фотографию, да и со вкусом оформленная любительская фотография смотрится совсем иначе. Оформить в раму можно зеркала, гобелены, вышивку, детские рисунки, документы, медали, монеты и многое другое. Для каждого вида работ существуют определенные каноны и нюансы, разобраться с которыми помогут специалисты багетной мастерской [11, 14].
Современные профессиональные багетные мастерские используют специализированные высококачественные материалы и оборудуются по последнему слову техники. Это специальные высокоточные станки для распила и сборки багета, а также для работы с дополнительными материалами. Лишь при использовании такого профессионального оборудования можно добиться очень аккуратных стыков багета волосяной толщины, а именно это является одним из критериев качества работы багетной мастерской. В пользу заказа рамы в профессиональной мастерской, а не покупки готовой стандартного размера можно привести не один довод. Безусловным преимуществом является возможность индивидуально подойти к каждой конкретной работе, учесть все ее особенности и особенности интерьера, в котором она будет размещена и, таким образом, подобрать самый удачный для данной работы вариант. Кроме того, обрамление будет "скроено" точно по размерам. Консультанты такой мастерской, как правило, имеют художественное образование и большой опыт работы и с удовольствием помогают сориентироваться в многообразии материалов [11, 14].
Любой клиент решивший воспользоваться услугами багетной мастерской должен знать, что специалисты попросят его не просто дать размеры, а привезти саму работу. Сделать это необходимо по нескольким причинам: во-первых, чтобы избежать ошибок, связанных с погрешностью измерения. Во-вторых, только имея перед глазами работу и прикладывая непосредственно к ней образцы багета, можно определить какой из предложенных вариантов окажется наиболее удачным для этой работы: подойдет ей по стилю, по цветовой гамме и подчеркнет ее достоинства. Как правило, такой вариант оказывается не один, и здесь в выборе можно руководствоваться особенностями конкретного интерьера и личных предпочтений. И, наконец, по истечении срока исполнения заказа (обычно это 3-5 дней), клиент сможет забрать уже "одетую" работу, и ему останется лишь повесить ее на стену.
Любой элемент рамы, прежде всего, несет определенную функцию и только потом является эстетическим дополнением картины. Поэтому стоит отдельно поговорить о каждой составляющей рамы.
Багет (багетная рейка) - то из чего собственно изготавливается рама. Сегодня можно увидеть в продаже деревянный, пластиковый и алюминиевый профиль всевозможных оттенков. Багет из тропических пород дерева (таких как бальза и аюс) европейского производства по достоинству признан наиболее подходящим для распила и сборки рамы. Этот легкий пористый материал в отличие от привычной сосны не имеет годовых колец, что существенно облегчает работу и повышает качество рамы. Не случайно этот материал самый дорогостоящий. Сосна также используется для производства багета, чаще всего на отечественных линиях. Современный качественный пластик по своим эстетическим характеристикам совсем не уступает дереву, а цена его обычно ощутимо ниже. Качество пластикового багета зависит от его состава: дешевый пластиковый профиль содержит примеси, что делает его хрупким. Алюминиевый профиль пришел на багетный рынок с рынка рекламных материалов и сразу занял свою нишу: современный материал, прочен, лаконичен и идеален для интерьеров в стиле хай-тек. Существует несколько разновидностей профиля: узкий графичный багет, широкий плоский (такой багет можно использовать как самостоятельно, так и при создании сложного профиля путем наложения нескольких видов багета друг на друга), классический профиль, создающий глубину восприятия, а так же профиль "обратная перспектива", который, в отличие от предыдущего, выделяет работу, поднимая ее над поверхностью стены [11, 14].
Нельзя забывать, что багет в первую очередь - это несущий остов для всей конструкции рамы. Поэтому очень важно при выборе багета соизмерять величину нагрузки и прочность багетной рейки.
Подрамник необходим при оформлении живописных работ, выполненных на холсте, а также большого размера гобеленов и батиков. Он представляет собой деревянную конструкцию, на которую натягивается полотно. Только после натяжки работу одевают в раму. Хотя, в последнее время появилась тенденция вешать современные живописные работы без обрамления [11, 14].
Задний картон служит основой для графических работ, постеров, документов, фотографий. Это может быть специальный плотный картон, оргалит, или пенокартон [11, 14].
Паспарту - это картон, в котором вырезается окно по размеру работы, а вокруг оставляются поля, ширина которых подбирается для каждого случая индивидуально, таким образом, создается цветной фон между работой и рамой. Паспарту применяется в оформлении графичных листов, постеров, фотографий, вышивок и др. Функция паспарту - создать воздушную прослойку между работой и стеклом. Существует множество вариантов оттенков и фактур паспарту, его можно комбинировать, накладывать один тон на другой, создавая канты и придавая глубину изображению [11, 14].
Стекло. В багетных работах используется только высококачественное полированное стекло не более 2мм толщиной. Оно не содержит вкраплений и не дает искажений. Функция у стекла, конечно, защитная. Под стекло оформляются все графичные работы, фотографии, постеры, не имеющие специального покрытия, папирусы, некоторые текстильные работы. Единственный недостаток стекла, что оно дает блики. Но современный синтетический материал плексигласс позволяет решить и эту проблему. Существует и натуральное безбликовое стекло [11, 14].
Специалисты знают, какое большое значение для картины имеет обрамление. Оно творит чудеса: может подать заурядную работу достойно и эффектно, а при неграмотном оформлении может испортить впечатление даже от очень профессионального произведения.
Но деятельность багетной мастерской не заканчивается только на изготовлении рамы. Необходимо еще документально оформить заказ. При этом нужно учесть наличие на складе всех необходимых для изготовления комплектующих, рассчитать расход материалов и их стоимость, а также стоимость изготовления заказа. Вся эта, казалось бы, небольшая работа при выполнении ее без средств автоматизации занимает достаточно много времени - около 10-15 минут. В течение этого времени может прийти очередной клиент, который вполне возможно не станет ждать и уйдет. Кроме того, при расчетах связанных с оформлением заказа могут возникать ошибки, от которых не застрахован ни один человек. Также необходимо вести складской учет расходуемых комплектующих и материалов.
На сегодняшний день в Караганде действует несколько багетных мастерских. Каждая мастерская старается привлечь клиента высоким качеством обслуживания, а также большим выбором комплектующих и материалов для оформления поистине неповторимого заказа. Помочь мастеру, принимающему заказ, быстро сориентироваться во всем разнообразии комплектующих и материалов имеющихся в наличии, а также рассчитать стоимость заказа, могла бы система автоматизированного учета для багетной мастерской.
1.2 Анализ существующих разработок
На сегодняшний день рынок коммерческих компьютерных программ для автоматизации расчета и оформления заказа для завода металлоконструкций представлен несколькими программными продуктами. Рассмотрим некоторые из них.
1.2.1 Программный комплекс Багетная мастерская
Данный программный комплекс состоит из пяти программ - Прием заказов, Складской учет, Заработная плата, Подбор паспарту и багета и Администратор.
Программа Багетная мастерская - Прием заказов производит расчет заказа, состоящего из деревянного, пластикового, алюминиевого багета, системы "SBS", подрамника, стекла, паспарту, задника, репродукции, художественной ламинации и оформления, с последующим выводом на печать [6].
Рисунок 1.1 - Окно программы Багетная мастерская - Прием заказов
Основные возможности программы:
Два режима работы - администратор и пользователь.
По отпечатанным заказам выписывается счет, счет-фактура и накладная.
Учет оплаты заказов и готовой продукции.
Позволяет увидеть остатки материала при оформлении заказа.
Возможность работы в локальной сети и модем - модем по телефонной линии (до 5-ти пользователей).
Программа Багетная мастерская - Складской учет учитывает приход, расход и остаток - всех составляющих, по заказам выполненных в программе Багетная мастерская-Прием заказов.
Программа Багетная мастерская - Заработная плата насчитывает заработную плату, по заказам выполненных в программе Багетная мастерская - Прием заказов. Параметры начисления заработной платы устанавливаются до распечатки заказа в программе Администратор или в программе Багетная мастерская - Прием заказов, меню База данных - Составляющие цены - Заработная плата. Если параметры не установлены, начисление ведется от итоговой стоимости.
Программа Багетная мастерская - Подбор паспарту и багета позволяет произвести подбор паспарту и багета по цвету и профилю для оформления заказа.
Программа Багетная мастерская - Администратор позволяет произвести: Приход материала. Посмотреть заработную плату, расход и остаток материала. Установить параметры составляющих цены и реквизиты предприятия. Добавить в базу - Заказчиков и Работников. Рассчитать прибыль за период. Сформировать Интернет-страницу программы Прием заказов, для расчета стоимости заказа на сайте (меню Файл - Создать HTML страницу Прием заказов). Предупреждает о критическом остатке материала [6].
Основной недостаток программы - невозможность включения в один заказ нескольких изделий.
1.2.2 Программа Багетный мастер v1.0
Программа "Багетный мастер" позволяет выгодно продемонстрировать подбор багет, паспарту для картин, фотографий.
Преимущества программы:
1. Удобный интерфейс.
2. Использование данных с разных компьютеров.
3. Сохранение изображений багет, паспарту в базе данных.
4. Точность вывода изображения на экран.
5. Масштабирование изображения.
6. Полноэкранный просмотр.
7. Двойной паспарту.
8. Паспарту - окантовка.
9. Возможность сохранения композиции на диск.
10. Сортировка багет, паспарту.
11. Удобный поиск [6].
Рисунок 1.2 - Окно программы Багетный мастер v1.0
Недостатки программы:
1. В программе не предусмотрен механизм расчета расхода комплектующих и материалов.
2. Не производится расчет стоимости заказа
3. Нет модуля складского учета
4. Отсутствует база данных для хранения информации о заказах и клиентах.
1.2.3 Программа Он-лайн обрамление V.4
Эта программа разработана специалистами сайта bagetchik.ru для максимального удобства и для багетчиков-оформителей и для интересующихся оформлением своих изображений, при удаленном самостоятельном компьютерном подборе багета и паспарту к изображениям.
Потратив всего несколько минут на изучение модуля, пользователь поймет насколько все может быть красиво удобно и просто. В программе пользователю предоставляется возможность загрузить любое изображение размером не больше 60-180 кб (со своего компьютера, а не ссылкой из сети) подобрать оформление и посмотреть, как это будет выглядеть в понравившемся ему багете и паспарту. Программа автообрамления не может и не выполняет никаких действий сама. Она не подбирает багет или паспарту, не выбирает цвет, не выставляет ширину полей паспарту к картине, поскольку сделать это может только человек [12].
Рисунок 1.3 - Интернет сервис Он-лайн обрамление V.4
1.2.4 Программа Багетная мастерская
Данная программа позволяет пользователю:
1. Оформить фотографии, постеры, гравюры различным багетом и паспарту.
2. Посмотреть, как могут преобразиться его изображения, не посещая багетную мастерскую.
3. Заказать оформление для картин в режиме он-лайн, не выходя из дома [13].
Пользователю предлагается пошагово выбрать цвет стен, багет, верхний паспарту, средний паспарту, нижний паспарту и стекло. Далее пользователь может посмотреть, как будет выглядеть его заказ. После этого производится расчет стоимости израсходованных материалов и общая стоимость оформленной работы.
Рисунок 1.4 - Интернет сервис "Багетная мастерская"
Подводя итог, можно сказать, что имеющиеся на сегодняшний день разработки в области компьютерных систем оформления заказа для багетной мастерской, обладая многими достоинствами, либо не совсем подходят по характеру решаемых заказчиком задач, либо являются недостаточно проработанными, грешат большим количеством ошибок и неудобством работы. Кроме того, существующие программные продукты, не совсем отвечая требованиям заказчика, как правило, стоят значительных сумм денег и их внедрение связано с риском их не окупаемости. Следует разработать такую систему, которая с одной стороны будет обладать надежностью, устойчивостью в работе, а с другой стороны будет успешно решать тот круг задач, который необходим для предприятия заказчика.
1.3 Постановка задачи
Целью данной работы является разработка системы автоматизированного учета для багетной мастерской. Основной задачей разрабатываемой системы является автоматизация процесса принятия заказа и ведения складского учета расходуемых комплектующих и материалов. В ходе выполнения проекта должны быть достигнуты следующие цели:
программа должна удовлетворять требованиям заказчика;
программа должна иметь простой, удобный и интуитивно понятный интерфейс;
программа не должна содержать ошибок;
программа должна позволять произвести быстрый расчет и оформление заказа с последующим выводом на печать результатов работы;
в программе должно быть реализовано гибкое формирование состава заказа с возможностью добавления в заказ нескольких изделий;
в программе должна быть реализована возможность изменения и корректировки заказа;
работа со складом должна быть вынесена отдельно;
программа должна содержать инструкцию по ее использованию, содержащуюся в файле помощи.
Инсталляция программы должна осуществляться посредством установочного файла.
Программа должна выполнять следующие функции:
автоматизированный расчет стоимости выполнения заказа багетной мастерской;
вести оперативный учет расхода комплектующих и материалов;
оформление и вывод на печать бланка заказа;
хранение информации о клиентах и их заказах;
ведение учета расходуемых комплектующих и материалов;
выдача необходимых отчетов о расходе комплектующих и материалов.
2. Техническое задание
2.1 Общие сведения
2.1.1 Наименование системы и условное обозначение
Разработке подлежит система автоматизированного учета для багетной мастерской. Система предназначена для автоматизации процесса принятия заказа и ведения складского учета расходуемых комплектующих и материалов. Условное обозначение системы "Багетная мастерская".
2.1.2 Разработчик и заказчик
Разработчиком является студент Карагандинского государственного технического университета, факультета информационных технологий, группы САПР-02-2 Сулейманов Ринат Хамитович.
Заказчиком является кафедра систем автоматизированного проектирования КарГТУ.
2.1.3 Основание для разработки
Основанием разработки является приказ на дипломное проектирование за номером 277с, выданный 12 марта 2007года кафедрой САПР.
2.1.4 Начало и окончание работ
Срок выполнения работ 23.06.2006 - 31.05.2007.
2.1.5 Порядок оформления и предъявления заказчику результатов работ по созданию системы
Результаты выполнения работы предъявляются заказчику в виде оформленной пояснительной записки и компакт-диска.
2.2 Назначение и цели создания системы
2.2.1 Назначение системы
Разрабатываемая система предназначена для:
автоматизированного расчета стоимости выполнения заказа багетной мастерской;
оформления бланка заказа, вывода его на печать;
хранения информации о клиентах и их заказах;
ведения автоматизированного складского учета расходуемых комплектующих и материалов;
выдачи необходимых отчетов о расходе комплектующих и материалов.
2.2.2 Цели создания системы
Целью создания системы является повышение эффективности работы работника багетной мастерской занимающегося расчетом и оформлением заказов, а также организация автоматизированного складского учета расхода комплектующих и материалов.
2.2.3 Критерии эффективности функционирования системы
Критерием эффективности функционирования системы является отношение эффективности, получаемой от повышения производительности труда работников мастерской, степень экономии рабочего времени, снижение ошибок в работе и четкий учет расхода комплектующих и материалов.
2.3 Характеристика объекта автоматизации
Багетная мастерская занимается изготовлением рам по индивидуальным заказам клиентов для картин, фотографий, постеров, гобеленов, вышивок и других видов произведений искусства. Практически каждый заказ является уникальным, и его стоимость зависит от размеров оформляемого изделия, состава и видов комплектующих и материалов. Стоимость работы за изготовление рамы вычисляется суммированием определенного процента от стоимости каждого составного элемента рамы.
Автоматизации подлежат следующие процедуры:
расчет расхода комплектующих и материалов, необходимых для выполнения заказа;
расчет стоимости комплектующих и материалов, необходимых для выполнения заказа;
оформление и вывод на печать документа, содержащего сведения о заказе;
ведение складского учета.
2.4 Требования к системе
2.4.1 Общие требования
2.4.1.1 Требования к структуре системы
Разрабатываемая система должна состоять из следующих подсистем:
подсистема для расчета и оформления заказов;
подсистемы для учета расхода комплектующих и материалов;
подсистема для хранения информации о клиентах и их заказах;
руководство пользователя для работы с системой.
Кроме того, разрабатываемая система должна работать в двух режимах:
1) режим работник, позволяющий рассчитывать и оформлять заказ;
2) режим менеджер, позволяющий помимо расчета и оформления заказа вести также складской учет расхода комплектующих и материалов.
2.4.1.2 Требования к функциям, выполняемым системой
Разрабатываемая система должна выполнять следующие функции:
позволять автоматически рассчитывать стоимость заказа;
позволять выводить на печать результаты расчета;
хранить информацию о клиентах и их заказах;
вести автоматизированный учет расхода комплектующих и материалов.
выдавать необходимые отчеты о расходе комплектующих и материалов.
2.4.1.3 Требования к квалификации персонала
Для работы с данной системой необходимо создать одно рабочее место. Пользователь, который будет работать с системой, должен хорошо владеть базовыми знаниями при работе с компьютером. Базовые знания включают в себя умение включить/выключить компьютер, загрузить операционную систему, запускать приложения, создавать, редактировать, удалять и искать документы, устанавливать программное обеспечение.
2.4.1.4 Требования к эргономике и технической эстетике
Интерфейс должен быть интуитивным и обеспечивать быстрый доступ пользователя ко всем функциям программы. Объединение элементов интерфейса должно происходить посредством окон, имеющих вид стандартных окон ОС семейства Windows.
2.4.1.5 Дополнительные требования
По требованию заказчика разрабатываемая система должна работать под управлением операционной системы Microsoft Windows XP Professional. Данная операционная система является рабочей операционной системой заказчика.
2.4.2 Требования к видам обеспечения системы
2.4.2.1 Требования к информационному обеспечению
Информационное обеспечение должно выполнять следующие функции: поиск информации по конкретному виду комплектующих и материалов, а также информации о клиентах по запросам пользователя системы, формирование ответов, сохранение данных. С помощью этих функций должно обеспечиваться накопление массивов данных и управление ими; рациональная организация обмена данными; размещение данных на машинных носителях.
В состав системы должна входить следующая информация: наименование, количество, расход и цена комплектующих и материалов, данные о клиентах и их заказах. Вышеуказанная информация должна храниться в таблицах базы данных.
База данных должна быть локальной и располагаться на жестком диске.
В качестве основной структуры (логической схемы базы данных) должна использоваться реляционная.
Структура базы данных должна обеспечивать:
объединение данных любого количества и объема, допускающая совместное использование общих данных различными подсистемами для разных процедур;
минимальное время обработки данных;
минимальную избыточность данных;
минимальный объем памяти внешних запоминающих устройств ЭВМ для хранения данных;
надёжность хранения информации в течение требуемого срока;
гибкость организации и открытость структуры, т.е. возможность исполнять и реорганизовывать данные без коренной перестройки или повторного создания всего информационного обеспечения;
эффективный доступ к данным в режиме диалога и обращения из прикладной программы;
достоверность данных;
защиту от постороннего доступа.
Входными данными являются высота и ширина изделия, информация о клиенте (ФИО, контактные данные, скидка), наименование заказа и даты приема и окончания исполнения заказа.
Выходными данными являются бланк заказа, содержащий сведения о составе комплектующих и материалов, необходимых для изготовления рамы, с указанием их расхода и стоимости, а также информацию о стоимости заказа с учетом и без учета скидки клиенту и отчеты, которые должны содержать следующую информацию:
сумма заказов за период, указанный пользователем системы;
остатки материалов в мастерской по всем их видам в отдельности;
сумма продаж материалов за период, указанный пользователем системы по всем видам материалов в отдельности;
сведения о заказах, которые должны быть готовы к дате определяемой пользователем системы.
2.4.2.2 Требования к лингвистическому обеспечению
2.4.2.2.1 Требования к языкам программирования
На языки программирования, которые будут использоваться при разработке системы, заказчик не накладывает никаких ограничений.
Язык программирования должен позволять создавать программные продукты под управлением линейки операционных систем Microsoft Windows.
Язык программирования должен иметь объектно-ориентированную модель программирования, а также осуществлять модульное программирование.
Кроме того, язык программирования должен удовлетворять следующим требованиям:
удобство использования, т.е. затраты времени программиста на освоения языка и главным образом на написание программ на этом языке;
универсальность, т.е. возможность использования языка для описания разнообразных алгоритмов, характерных для программного обеспечения САПР;
эффективность объектных программ, которая оценивается свойствами используемого транслятора, который, в свою очередь, зависит от свойств языка. Эффективность оценивается затратами машинного времени и памяти на исполнение программ.
2.4.2.2.2 Требования к входным, выходным и промежуточным языкам
Входным языком являются формы для ввода информации о размерах изделия, о количестве расходуемых комплектующих и материалов, а также о наименовании заказа. Данные вводятся с клавиатуры. Требованиями к входному языку являются четкость и корректность.
Промежуточным языком является файл таблиц базы данных, хранящих информацию о клиенте, геометрические параметры, а также стоимость комплектующих и материалов необходимых для исполнения заказа.
Выходным языком являются шаблоны отчетов о результатах расчета и оформления заказов. Выходной язык должен обеспечить соответствие результатов расчета и оформления заказов предъявляемым требованиям.
2.4.2.3 Требования к программному обеспечению.
2.4.2.3.1 Требования к общесистемному программному обеспечению
Общесистемное программное обеспечение должно обеспечивать функционирование базового и прикладного программного обеспечений системы. В соответствие с требованиями, изложенными в подпункте 2.4.1.5, в качестве общесистемного программного обеспечения используется операционная система Microsoft Windows XP Professional.
2.4.2.3.2 Требования к базовому программному обеспечению
В качестве базового программного обеспечения должны использоваться универсальные языки программирования высокого уровня, имеющие объектно-ориентированную и визуальную технологии программирования, а также встроенные средства и компоненты для работы с базами данных. Среда программирования должна позволять запуск программ из своей оболочки, а также иметь средства отладки.
Промежуточные данные должны храниться в файле таблиц базы данных.
Для оформления необходимой документации должен использоваться текстовый процессор с возможностями редактирования и форматирования текста.
2.4.2.3.3 Требования к прикладному программному обеспечению
Разрабатываемая система должна создаваться в виде модулей, что позволить развивать систему в дальнейшем.
Разрабатываемый продукт должен содержать руководство разработчика, отражающее структуру системы, назначение программных модулей и стиль программирования.
2.4.2.4 Требования к техническому обеспечению
Техническое обеспечение должно удовлетворять следующим требованиям:
достаточная емкость накопителя на жестком магнитном диске;
приемлемый тип видеоадаптера и дисплея для работы пользователя;
достаточная производительность центрального процессора;
наличие возможности вывода информации на бумажный, магнитный носитель;
открытость для конфигурации и дальнейшего развития;
простота освоения, эксплуатации и обслуживания;
объем оперативной памяти должен позволять использовать выбранное общесистемное, а также базовое и прикладное программное обеспечения;
приемлемая стоимость составляющих комплекса технических средств.
2.4.2.5 Требования к методическому обеспечению
Методическое обеспечение системы должно содержать инструкцию по установке и инструкцию по эксплуатации системы. Разрабатываемая система должна поставляться вместе с документом, обеспечивающим грамотное использование данной системы. Этим документом является руководство пользователя.
2.5 Состав и содержание работ по созданию системы
Состав и содержание работ по созданию системы представлен в таблице 2.1
Таблица 2.1 - Состав и содержание работ по созданию системы
Состав работ | Сроки выполнения | Вид разрабатываемой документации |
Анализ существующих разработок | 28.01.07-15.02.07 | Предпроектные исследования |
Определение основных требований к системе | 15.02.07-05.03.07 | Техническое задание |
Разработка моделей данных и структуры информационных потоков | 05.03.07-15.03.07 | Информационное обеспечение |
Определение структуры интерфейса и языков создания системы | 05.03.07-15.03.07 | Лингвистическое обеспечение |
Выбор программного обеспечения и разработка структуры прикладного программного обеспечения | 15.03.07-28.03.07 | Программное обеспечение |
Разработка комплекса технических средств | 25.03.07-02.04.07 | Техническое обеспечение |
Разработка методических указаний | 03.04.07-20.04.07 | Методическое обеспечение |
Расчет технико-экономической части | 30.03.07-25.04.07 | Технико-экономическое обоснование |
Описание технических факторов, влияющих на экологию | 15.04.07-30.04.07 | Промышленная экология |
Описание технических факторов, влияющих на здоровье человека | 20.04.07-01.05.07 | Охрана труда |
Написание кода системы, поиск ошибок и отладка кода | 15.01.07-05.03.07 |
|
Тестирование системы на различных аппаратных и программных конфигурациях | 05.03.07-15.05.07 |
|
Нормоконтроль | 29.05.07 |
|
2.6 Порядок контроля и приемки системы
После выполнения всех оговоренных работ необходимо завизировать указанные разделы у курирующих преподавателей КарГТУ и сдать дипломный проект на рецензию лицу, утверждённому кафедрой САПР.
По возвращению с рецензии проект необходимо защитить Государственной аттестационной комиссии кафедры САПР.
На защиту дипломного проекта необходимо предоставить систему "Багетная мастерская". Перед комиссией необходимо представить пояснительную записку к дипломному проекту объёмом не менее 80 печатных листов, отвечающую всем требованиям стандартизации и нормоконтроля.
3. Информационное обеспечение
3.1 Структура информационных потоков и документооборота
3.1.1 Информационные потоки до автоматизации
Процесс информационного потока до автоматизации выглядит следующим образом:
клиент обращается к работнику мастерской с пожеланиями красиво и грамотно оформить в раму произведение искусства;
мастер обращается к клиенту с вопросами, уточняющими состав комплектующих и материалов, необходимых для исполнения заказа;
клиент делает свой выбор относительно состава комплектующих и материалов, необходимых для исполнения заказа;
мастер вручную производит расчет расхода комплектующих и материалов, необходимых для исполнения заказа, а также стоимость заказа;
мастер вручную оформляет бланк заказа;
менеджер дает указания мастеру по организации процесса принятия заказов, устанавливает розничные цены на комплектующие и материалы;
менеджер, на основе информации полученной из бланков заказов, производит учет расхода комплектующих и материалов.
Схема движения информационных потоков при этом выглядит, как показано на рисунке 3.1.
Рисунок 3.1 - Структура информационных потоков до автоматизации
В процессе принятия заказов у мастера возникают проблемы связанные с тем, что он не может получать оперативную информацию о запасе комплектующих и материалов в мастерской, в связи с чем возникает вероятность отказа клиенту. Кроме того, ручной расчет расхода комплектующих и стоимости заказа занимает в среднем около 10-15 минут, вследствие чего в мастерской возможно скопление клиентов, ожидающих своей очереди, что негативно сказывается на общем настроении как мастера, так и клиентов.
В работе менеджера возникают следующие проблемы:
невозможность получения оперативной информации о состоянии запасов комплектующих как на складе, так и в мастерской;
невозможность получения оперативной информации о состоянии продаж комплектующих;
получения оперативной информации об общей стоимости заказов за определенный промежуток времени;
невозможность получения сведений о заказах, которые должны быть готовы к определенной дате.
Вышеуказанные проблемы негативно сказываются на работе, в результате чего мастерская теряет часть клиентов и соответственно прибыль.
3.1.2 Информационные потоки после автоматизации
Процесс информационного потока после автоматизации выглядит так:
клиент обращается к работнику мастерской с пожеланиями красиво и грамотно оформить в раму произведение искусства;
мастер обращается к клиенту с вопросами, уточняющими состав комплектующих и материалов, необходимых для исполнения заказа;
клиент делает свой выбор относительно состава комплектующих и материалов, необходимых для исполнения заказа;
мастер вводит в программу полученные от клиента исходные данные для оформления заказа;
в режиме "мастер" программа производит необходимые вычисления и выдает оформленный бланк заказа, а также вносит необходимые изменения в таблицы базы данных комплектующих, материалов, клиентов и заказов;
в режиме "менеджер" программа, помимо функций, выполняемых в режиме "мастер", также может выдавать менеджеру отчеты по расходу комплектующих и материалов;
на основе данных полученных из отчетов менеджер производит учет расхода комплектующих и материалов.
Схема движения информационных потоков при этом выглядит, как показано на рисунке 3.2.
Рисунок 3.2 - Структура информационных потоков после автоматизации.
После автоматизации сократится время, затрачиваемое на процесс принятия и расчета стоимости заказа, а также на ведение складского учета расхода комплектующих, вследствие чего ожидается рост числа обслуживаемых клиентов и соответственно увеличение получаемой прибыли.
3.2 Концептуальная модель
Процесс принятия, расчета и оформления заказа, а также ведения складского учета представляется в виде системы, содержащей сведения о багете, ряде комплектующих и материалов, сведения о предыдущих заказах и клиентах, а также информацию о стоимости обработки комплектующих. Багет характеризуется высотой, шириной, наименованием, количеством, расходом и ценой. Каждое комплектующее также характеризуется наименованием, количеством, расходом и ценой. Каждый заказ характеризуется номером, наименованием, датами принятия и исполнения, клиентом и стоимостью. Каждый клиент характеризуется кодом, сведениями о фамилии, имени, отчестве, контактной информацией, суммой ранее сделанных заказов, коэффициентом скидки. Концептуальная модель объекта анализа представлена на рисунке 3.3.
Рисунок 3.3 - Концептуальная модель
3.3 Логическая модель
На основе концептуальной модели построим логическую модель. Для каждого объекта концептуальной модели необходимо создать свою структуру данных.
Рассмотрим структуру данных "Клиенты" объекта "Справочники". Ключевым полем будет являться уникальный идентификатор клиента, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю объект "Клиенты" будет связан с объектом "Заказы". Обязательному заполнению будут подлежать следующие поля структуры данных "Клиент": "ФИО", "Сумма заказов", "Контакт" и "Скидка". Поле "Сумма заказов" будет увеличиваться автоматически после оформления очередного заказа данному клиенту.
Структура данных "Багет", объекта "Справочники", содержит поля "Наименование", "Высота", "Ширина", "Количество" и "Ед. измерения", которые подлежат обязательному заполнению. Ключевым полем будет являться уникальный идентификатор багета, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю осуществляется связь со структурой данных "Багет", относящейся к объекту "Мастерская" и со структурой данных "Багет", относящейся к объекту "Склад".
Рассмотрим структуру данных "Комплектующие" объекта "Справочники". В рассматриваемой структуре данных обязательному заполнению будут подлежать поля "Наименование" и "Количество" и "Ед. измерения". Ключевым полем будет являться уникальный идентификатор комплектующего, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю осуществляется связь со структурой данных "Комплектующие", относящейся к объекту "Мастерская" и со структурой данных "Комплектующие", относящейся к объекту "Склад".
Структура данных "Разное" объекта "Справочники", содержит поля "Наименование" и "Количество", которые подлежат обязательному заполнению. Ключевым полем будет являться уникальный идентификатор комплектующего, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю осуществляется связь со структурой данных "Разное", относящейся к объекту "Мастерская" и со структурой данных "Разное", относящейся к объекту "Склад".
Рассмотрим структуру данных "Ед. измерения" объекта "Справочники". Ключевым полем будет являться уникальный идентификатор единицы измерения, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю осуществляется связь со структурами "Багет", "Комплектующие" и "Разное", относящимся к объекту "Справочники. Поле "Наименование" подлежит обязательному заполнению.
Структура данных "Заказы" объекта "Мастерская" содержит поля "№ заказа", "Наименование заказа", "Дата приема", "Время приема", "Дата окончания", "Время окончания", которые подлежат обязательному заполнению. Поля "Стоимость заказа с работой", "Стоимость заказа без работы", "Итоговая скидка", "К оплате" являются вычисляемыми автоматически.
Структура данных "Багет", объекта "Мастерская", содержит поля "Розничная цена", "Количество" и "Расход", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Багет", объекта "Справочники".
Структура данных "Комплектующие", объекта "Мастерская", содержит поля "Розничная цена", "Количество" и "Расход", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Комплектующие", объекта "Справочники".
Структура данных "Разное", объекта "Мастерская", содержит поля "Розничная цена", "Количество" и "Расход", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "разное", объекта "Справочники".
Рассмотрим структуру данных "Багет", объекта "Склад". Рассматриваемая структура, содержит поля "Наименование", "№ накладной", "Дата поступления", "Закупочная цена", "Количество" и "Объем списания", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Багет", объекта "Справочники".
Рассмотрим структуру данных "Комплектующие", объекта "Склад". Рассматриваемая структура, содержит поля "Наименование", "№ накладной", "Дата поступления", "Закупочная цена", "Количество" и "Объем списания", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Комплектующие", объекта "Справочники".
Рассмотрим структуру данных "Разное", объекта "Склад". Рассматриваемая структура, содержит поля "Наименование", "№ накладной", "Дата поступления", "Закупочная цена", "Количество" и "Объем списания", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Разное", объекта "Справочники".
Схема связей таблиц БД представлена на рисунке 3.4
Рисунок 3.4 - Схема связей таблиц БД
3.4 Физическая модель
Физически база данных представляет собой файл "baget. mdb", содержащий 20 таблиц.
Рассмотрим структуру таблиц базы данных.
Таблица "Bagets_Table" является справочником багета. Структура этой таблицы отображена в таблице 3.1
Таблица 3.1 - Структура таблицы "Bagets_Table"
Идентификатор поля | Тип | Размер | Название |
Komplekt_Id | Счетчик | Длинное целое | Идентификатор багета |
Komplekt_Name | Текстовый | 25 | Наименование |
Komplekt_shirina | Числовой |
| Ширина |
Komplekt_visota | Числовой | |
Высота
Id_MaterKomlekt_slave
Числовой
Вторичный идентификатор
ID_EdIzm_Slave
Числовой
Ед. измерения
Таблица "EdIzmer_Table" является справочником единиц измерения. Структура этой таблицы отображена в таблице 3.2
Таблица 3.2 - Структура таблицы "EdIzmer_Table"
Идентификатор поля | Тип | Размер | Название |
EdIzm_Id | Счетчик | Длинное целое | Идентификатор ед. измерения |
EdIzmName | Текстовый | 10 | Наименование |
Таблица "Klients_Table" содержит информацию о клиентах мастерской. Структура этой таблицы отображена в таблице 3.3
Таблица 3.3 - Структура таблицы "Klients_Table"
Идентификатор поля | Тип | Размер | Название |
Kl_Id | Счетчик | Длинное целое | Код клиента |
Kl_Fio | Текстовый | 50 | ФИО клиента |
Kl_SumZak | Числовой |
| Общая сумма заказов |
Kl_kontakt | Текстовый | 70 | Контактная информация |
Kl_Scidka | Числовой |
| Коэффициент скидки |
Таблица "Komplekt_Table" является справочником комплектующих. Структура этой таблицы отображена в таблице 3.4
Таблица 3.4 - Структура таблицы "Komplekt_Table"
Идентификатор поля | Тип | Размер | Название |
Komplekt_Id | Счетчик | Длинное целое | Идентификатор комплектующего |
Komplekt_Name | Текстовый | 25 | Наименование |
Id_MaterKomlekt_slave | Числовой |
| Вторичный идентификатор |
ID_EdIzm_Slave | Числовой |
| Ед. измерения |
Таблица "MaterBagets_Table" хранит информацию о типе материала и коэффициенте стоимости его обработки. Структура этой таблицы отображена в таблице 3.5
Таблица 3.5 - Структура таблицы "MaterBagets_Table"
Идентификатор поля | Тип | Размер | Название |
MaterKomlekt_Id | Счетчик | Длинное целое | Идентификатор комплектующего |
MaterKomlekt_Name | Текстовый | 25 | Наименование |
MaterKomlekt_Koef | Числовой |
| Коэффициент стоимости обработки |
Таблица "MaterKomlekt_Table" хранит информацию о типе материала и коэффициенте стоимости его обработки. Структура этой таблицы отображена в таблице 3.6.
Таблица 3.6 - Структура таблицы "MaterKomlekt_Table"
Идентификатор поля | Тип | Размер | Название |
MaterKomlekt_Id | Счетчик | Длинное целое | Идентификатор комплектующего |
MaterKomlekt_Name | Текстовый | 25 | Наименование |
MaterKomlekt_Koef | Числовой |
| Коэффициент стоимости обработки |
Таблица "MaterRaznoe_Table" хранит информацию о типе материала и коэффициенте стоимости его обработки. Структура этой таблицы отображена в таблице 3.7.
Таблица 3.7 - Структура таблицы "MaterRaznoe_Table"
Идентификатор поля | Тип | Размер | Название | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MaterKomlekt_Id | Счетчик | Длинное целое | Идентификатор комплектующего | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MaterKomlekt_Name | Текстовый | 25 | Наименование | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MaterKomlekt_Koef
Таблица "Products_Bagets_Table" содержит информацию о различных наименованиях багета, в составе изделия. Структура этой таблицы отображена в таблице 3.8. Таблица 3.8 - Структура таблицы "Products_Bagets_Table"
Таблица "Products_Kompl_Table" содержит информацию о различных наименованиях комплектующих, в составе изделия. Структура этой таблицы отображена в таблице 3.9. Таблица 3.9 - Структура таблицы "Products_Kompl_Table"
Таблица "Products_Raznoe_Table" содержит информацию о различных наименованиях разного, в составе изделия. Структура этой таблицы отображена в таблице 3.10. Таблица 3.10 - Структура таблицы "Products_Raznoe_Table"
Таблица "Masterskaya_Bagets_Table" содержит информацию о различных наименованиях багета, имеющегося в мастерской. Структура этой таблицы отображена в таблице 3.11 Таблица 3.11 - Структура таблицы "Masterskaya_Bagets_Table"
Таблица "Masterskaya_Kompl_Table" содержит информацию о различных наименованиях комплектующих, имеющихся в мастерской. Структура этой таблицы отображена в таблице 3.12. Таблица 3.12 - Структура таблицы "Masterskaya_Kompl_Table"
Таблица "Masterskaya_Raznoe_Table" содержит информацию о различных наименованиях разного, имеющегося в мастерской. Структура этой таблицы отображена в таблице 3.13. Таблица 3.13 - Структура таблицы "Masterskaya_Raznoe_Table"
Таблица "Products_Table" содержит информацию об изделии в составе заказа. Структура этой таблицы отображена в таблице 3.14. Таблица 3.14 - Структура таблицы "Products_Table"
Таблица "Raznoe_Table" является справочником разного. Структура этой таблицы отображена в таблице 3.15. Таблица 3.15 - Структура таблицы "Raznoe_Table"
| Числовой |
| Ед. измерения |
Таблица "Sklad_Bagets_Table" содержит информацию о различных наименованиях багета, имеющегося на складе. Структура этой таблицы отображена в таблице 3.16.
Таблица 3.16 - Структура таблицы "Sklad_Bagets_Table"
Идентификатор поля | Тип | Размер | Название |
Sklad_Id | Счетчик | Длинное целое | Идентификатор багета |
Id_MaterKomplekt_slave | Числовой | Длинное целое | Вторичный идентификатор |
Id_Komplekt_slave | Числовой | Длинное целое | Вторичный идентификатор |
Sklad_NaimKomplekt | Текстовый | 25 | Наименование |
Sklad_NumberNakl | Текстовый | 10 | № накладной |
Sklad_Data | Дата/время |
| Дата поступления |
Sklad_ZakupCena | Числовой |
| Закупочная цена |
Sklad_Kol-vo | Числовой |
| Количество |
Sklad_Rashod | Числовой |
| Объем списания |
Sklad_Prim | Текстовый | 50 | Примечание |
Таблица "Sklad_Kompl_Table" содержит информацию о различных наименованиях комплектующих, имеющихся на складе. Структура этой таблицы отображена в таблице 3.17.
Таблица 3.17 - Структура таблицы "Sklad_Kompl_Table"
Идентификатор поля | Тип | Размер | Название |
1 | 2 | 3 | 4 |
Sklad_Id | Счетчик | Длинное целое | Идентификатор комплектующего |
Id_MaterKomplekt_slave | Числовой | Длинное целое | Вторичный идентификатор |
Id_Komplekt_slave | Числовой | Длинное целое | Вторичный идентификатор |
Sklad_NaimKomplekt | Текстовый | 25 | Наименование |
Sklad_NumberNakl | Текстовый | 10 | № накладной |
Sklad_Data | Дата/время |
| Дата поступления |
Sklad_ZakupCena | Числовой |
| Закупочная цена |
Sklad_Kol-vo | Числовой |
| Количество |
Sklad_Rashod | Числовой |
| Объем списания |
Sklad_Prim | Текстовый | 50 | Примечание |
Таблица "Sklad_Raznoe_Table" содержит информацию о различных наименованиях разного, имеющегося на складе. Структура этой таблицы отображена в таблице 3.18.
Таблица 3.18 - Структура таблицы "Sklad_Raznoe_Table"
Идентификатор поля | Тип | Размер | Название | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sklad_Id | Счетчик | Длинное целое | Идентификатор разного | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Id_MaterKomplekt_slave | Числовой | Длинное целое | Вторичный идентификатор | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Id_Komplekt_slave | Числовой | Длинное целое | Вторичный идентификатор | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sklad_NaimKomplekt | Текстовый | 25 | Наименование | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sklad_NumberNakl | Текстовый | 10 | № накладной | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sklad_Data | Дата/время |
| Дата поступления | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sklad_ZakupCena | Числовой
Таблица "Zakazi_Table" содержит информацию о заказах. Структура этой таблицы отображена в таблице 3.19. Таблица 3.19 - Структура таблицы "Zakazi_Table"
В таблице "Temp_Prodazhi" хранится информация о багете, комплектующих, разном. Данная таблица используется для отчета "Сумма продаж материалов за период". Перед выполнением отчёта в неё заносятся соответствующие детали для выбранного менеджером периода, формируется отчёт. После формирования отчета таблица очищается. Структура этой таблицы отображена в таблице 3.20. Таблица 3.20 - Структура таблицы "Temp_Prodazhi"
Бланк заказа выводится на печать с использованием стандартного компонента QuickReport системы разработки приложений Delphi 7. Отчеты выводятся на печать с использованием компонентов технологии Rave Reports. 4. Лингвистическое обеспечение Лингвистическое обеспечение - это совокупность всех языковых средств, используемых при создании и эксплуатации системы. Основными из этих средств являются входной язык, внутренний и выходной. 4.1 Входной язык Входной язык служит для представления и описания исходной информации об объектах и задачах проектирования. Данный язык является естественным языком. Входной язык программы позволяет принимать от пользователя следующие данные: настройки программы, исходные данные для расчета и оформления заказа, исходные данные для выполнения запросов пользователя, исходные данные для поиска информации, требуемой пользователю. Указанные данные программа принимает в виде введенного с клавиатуры текста и в виде параметров, указанных мышью. В качестве элементов интерфейса используются элементы, аналогичные стандартным элементам Windows, снабженные визуальными эффектами, работающие с мышью и клавиатурой. 4.2 Внутренние языки 4.2.1 Выбор языка программирования В качестве языка программирования для данной системы должен быть выбран универсальный язык программирования высокого уровня, который отвечает следующим требованиям: возможность решения широкого класса задач; набор операторов языка должен отражать принципы структурного проектирования; возможность работы с базами данных; возможности создания запросов к базам данных; синтаксис языка должен быть достаточно не сложным и включать в себя возможность объектно-ориентированного программирования; язык должен быть лёгок для изучения; наличие компилятора с возможностью компоновки исполняемых файлов для работ под управлением операционных систем семейства Windows. Для разработки системы " Багетная мастерская" выбираем язык Object Pascal и структурированный язык запросов SQL. 4.2.2 Общая характеристика языка Object Pascal Object Pascal - язык программирования высокого уровня, удовлетворяющий следующим требованиям: развитая система типов; возможность решения широкого класса задач; набор операторов языка отражает принципы структурного проектирования и позволяет записывать достаточно сложные алгоритмы в лёгкой и элегантной форме; синтаксис языка достаточно не сложный и включает в себя возможности объектно-ориентированного программирования; язык лёгок для изучения; позволяет работать с базами данных; позволяет составлять отчёты; наличие компилятора с возможностью компоновки исполняемых файлов под операционную систему Windows XP Professional, требования к которой были предъявлены в техническом задании. От языка Visual Basic Pascal отличает строгая типизированность, позволяющая компилятору ещё на этапе компиляции обнаружить многие ошибки, а также средства работы с указателями. Синтаксис С++ более сложен по сравнению с простым и ясным синтаксисом Object Pascal, поэтому Object Pascal претендует на роль языка, идеально подходящего для описания алгоритма. Во всех случаях Object Pascal имеет самый быстрый, среди продуктов подобного рода, оптимизирующий компилятор, позволяющий создавать быстрые и относительно компактные программы. В лингвистической концепции языка Object Pascal пропагандируется системный подход программирования, выражающийся, в частности, в расчленение крупных проблем на меньшие по сложности и размеру задачи, которые легче поддаются решению. Основные принципы языка Object Pascal таковы: структурное программирование. Суть его заключается в оформлении последовательностей команд как замкнутых функций или процедур и в объединении данных, связанных по смыслу, в сложные структуры данных. Благодаря этому повышается наглядность текста и упрощается его отладка. проектирование сверху вниз. Программист разбивает свою задачу на несколько более простых, после чего каждая из задач решается по отдельности. Затем компонуются результаты проектирования простых задач, и решается задача проектирования в целом. при объектно-ориентированном программировании данные объединяются со свойственными им операциями обработки в некоторые объекты. При этом свойства одних могут передаваться другим. Структура составления программы в Object Pascal можно условно разделить на три основные части: раздел объявлений и соглашений; раздел текстов процедур и функций; раздел основного блока. Ниже показана структура Object Pascal - программ. 4.2.2.1 Структура программы Object Pascal program{Заголовок программы} {$... }{Глобальные директивы компилятора} uses{Подключаемые библиотеки} label{Подраздел объявления меток} const{Подраздел объявления глобальных констант} type{Подраздел объявления глобальных типов} var{Подраздел объявления глобальных переменных} begin{Основной блок программы} end. 4.2.2.2 Структура модуля Object Pascal unit{Заголовок модуля} interface{Раздел объявлений} uses{Подключаемые библиотеки} label{Подраздел объявления меток} const{Подраздел объявления констант} type{Подраздел объявления типов} var{Подраздел объявления переменных} implementation{Раздел реализации} uses{Подключаемые библиотеки} label{Подраздел объявления меток} const{Подраздел объявления констант} type{Подраздел объявления типов} var{Подраздел объявления переменных} initialization{Раздел инициализации} finalization{Раздел завершения} end. 4.2.2.3 Структура текста процедур и функций: procedure (function) {Заголовок процедуры (функции) } label{Подраздел объявления меток} const{Подраздел объявления локальных констант} type{Подраздел объявления локальных типов} var{Подраздел объявления локальных переменных} begin{Основной блок процедуры или функции} end; В разделе объявлений и соглашений программы (до основного блока программы) программист сообщает компилятору, какими идентификаторами он обозначает данные (константы и данные), а также определяет собственные типы данных, которые он в дальнейшем намеревается использовать. В разделе глобальные директивы программы компилятору можно дать указания, определяющие режимы его работы при трансляции последующей программы. Оператор Uses играет важную роль в подключении к тексту программы системных модулей из библиотек. Следом за строкой, содержащей оператор Uses, следуют строки объявляющие: метки (Label) - описание меток вводит совокупность идентификаторов и/или целых чисел, предназначенных для организации последовательности вычислений; константы (Const) - определение констант задаёт в программе идентификаторы, являющиеся синонимами некоторых значений; определённые пользователем типы данных (Type) - определение типов предназначено для задания конкретных множеств значений; переменные (Var) - в этом разделе происходит определение глобальных переменных, переменная обозначается идентификатором и каждой переменной присваивается тип. Основной блок программы состоит из последовательности операторов, причём работа программы начинается с первого оператора основного блока программы. Тело программы ограничено операторами begin и end. После оператора end ставится точка. Модуль Object Pascal состоит из четырех разделов: объявлений, реализации, инициализации и завершения. Переменные, константы и типы, объявленные в разделе объявлений, доступны любому модулю или программе, использующим данный модуль. Переменные, константы и типы, объявленные в разделе реализации, доступны только в этом модуле. Операторы, содержащиеся в разделе инициализации, выполняются один раз при запуске программы. Операторы, содержащиеся в разделе завершения, выполняются один раз при завершении программы. Разделы инициализации и завершения являются необязательными. Процедура и функция - термины, применяемые в языке программирования Object Pascal для обозначения специальным образом оформленной последовательности команд (подпрограмм). Доступ к такой подпрограмме может быть осуществлён из любого места основного блока программы, а также из любой процедуры или функции, описание которых следует ниже. Внутри процедуры или функции можно объявить локальные метки, константы, типы данных и переменные. Локально объявленные переменные доступны только внутри той процедуры или функции, где они объявлены, а вне её считаются недействительными. 4.2.3 Структурированный язык запросов SQL Реляционный способ доступа к данным основан на использовании SQL-запросов, которые позволяют выбирать записи по сложным критериям из одной или нескольких таблиц, сортировать записи, выполнять поиск записей. Отбор данных из таблиц БД осуществляется с помощью оператора SELECT. Результат такого отбора называется выборкой. В общем виде этот оператор имеет такой формат: SELECT [DISTINCT] {*| поле1, [, поле2 …] } FROM таблица1 [, таблица2 …] [WHERE условия_отбора] [GROUP BY список_группируемых_полей] [HAVING условие_группирования] [ORDER BY список_полей_для_сортировки] [UNION оператор_SELECT] Описание оператора SELECT требует обязательного указания списка полей, а также операнда FROM, после которого приводится список таблиц, используемых для отбора данных. Все остальные операнды могут не указываться. В самом простом случае данный оператор может иметь такой вид: SELECT Tovar, Price FROM Shop При указании описателя DISTINCT после ключевого слова SELECT обеспечивается исключение из выборки одинаковых записей, для которых совпадают значения всех полей, указанных в операторе SELECT. В секции WHERE оператора SELECT задается необходимое условие отбора, что позволяет включать в выборку только те записи, которые соответствуют условию отбора. Условие поиска имеет такое общее описание: WHERE имя_поля операция константа В качестве операции может выступать одна из операций отношения: = (равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно),! < (не меньше),! > (не больше), <> (не равно). Кроме того, условие может быть составным, для объединения частей которого применяются круглые скобки и логические функции NOT, AND, OR. Группирование данных используется в ситуациях, когда необходимо получить агрегированные значения не по всему набору данных, а по каждой из входящих в него групп записей, характеризующихся одинаковым значением какого-либо поля. Например, следующий запрос позволяет получить общее количество сотрудников по каждому отделу фирмы. SELECT Otdel, COUNT (Tab_nom) FROM firm GROUP BY Otdel В ряде случаев необходимо установить некоторые ограничения на группируемые значения. Для этого применяется оператор HAVING. К примеру, если в предыдущем примере требуется вывести только те отделы, в которых количество сотрудников более 10, то это можно осуществить с помощью запроса такого вида: SELECT Otdel, COUNT (Tab_nom) FROM firm GROUP BY Otdel HAVING COUNT (Tab_nom) >10 Сортировка или упорядочение записей по возрастанию или по убыванию значений полей осуществляется с помощью операнда ORDER BY. После него приводится список полей, по которым должна производится сортировка. Записи будут упорядочены в зависимости от порядка указания полей. В некоторых случаях требуется объединить результаты выполнения нескольких операторов SELECT. Такое объединение производится с помощью оператора UNION. При этом результирующие наборы данных должны иметь одинаковый формат, то есть одинаковый состав возвращаемых полей, и полное совпадение типов данных соответствующих полей. 4.3 Выходной язык Выходной язык - это средство представления результатов выполнения программы в виде, наиболее удобном и понятном пользователю. Он должен обеспечить соответствие выдаваемого результата запросам, сформированным пользователем. В данном случае в виде таблиц. Выходной язык обеспечивает оформление и сохранение результатов работы программы в текстовом виде. Выходная информация в программе представляется в виде отчетной документации - бланк заказа, прайс-лист, а также отчетов таких, как "Остатки материалов в мастерской", "Сумма заказов за период", "Продажи материалов за период", "Заказы, которые должны быть готовы к указанной дате" и в виде сообщений пользователю. В случае некорректного ввода данных результат работы - сообщение об ошибке. Сообщения пользователю программы разделяются на сообщения о результатах выполнения какой-либо операции, на сообщения об ошибках и предупреждающие сообщения, выдаваемые в ходе работы с системой. Сообщения об ошибках разделяются на критические, фатальные и исправимые. Возникновение критических ошибок приводит к прерыванию работы системы, выходу из программы и, возможно, к перезагрузке системы. Данный тип ошибок обуславливается только ошибками программирования системы, не обнаруженных на этапе тестирования. При появлении такой ошибки выдается стандартное сообщение ОС Windows: "Программа выполнила недопустимую операцию и будет закрыта", при этом нет возможности сохранить текущую работу. Фатальные ошибки приводят к прерыванию обработки текущей выполняемой операции без нарушения целостности системы. Данный тип ошибок возникает из-за ошибок в задании исходных данных, некорректном пользовании системой. После появления такой ошибки необходимо проверить исходные данные и повторить процедуру. Сообщения об исправимых ошибках информируют пользователя о таковой и переводят программу в диалоговый режим, предоставляя пользователю возможность скорректировать исходные данные либо прервать обработку. Предупреждающие сообщения информируют пользователя о возможной некорректности исходных данных либо об отсутствии некоторых данных, что может привести к погрешностям вычислений либо к иным негативным результатам. 5. Программное обеспечение 5.1 Общесистемное ПО Учитывая требования, указанные в техническом задании, выбираем в качестве общесистемного ПО операционную систему Microsoft Windows XP Professional. Это 32 разрядная ОС с приоритетной многозадачностью. В её основе лежат следующие основные принципы: 1. Совместимость. Система может иметь привычный интерфейс ОС семейства Windows, с некоторыми добавлениями и расширениями. Большинство приложений, написанных под MSDOS, W9x, а также некоторые программы под OS/2 и POSIX запускаются и функционируют без проблем. При проектировании учитывалась возможность работы системы в различных сетевых средах, поэтому в поставку входят средства для работы в Unix - и Novell-сетях. 2. Переносимость. Система работает на различных процессорах семейства x86 производства Intel и AMD. Существует 64 битная версия Windows XP, предназначенная для работы на Intel Itanium, а также версия, предназначенная для процессоров AMD Athlon 64. 3. Система безопасности. Реализована система безопасности на уровне пользователей. 4. Распределённая обработка. Windows XP имеет встроенные в систему сетевые возможности, что обеспечивает возможность связи с различными типами компьютеров-хостов благодаря наличию разнообразных транспортных протоколов и технологии "клиент-сервер". 5. Надёжность и отказоустойчивость. Архитектура ОС защищает приложения от повреждения друг другом и самой операционной системой. При этом используется отказоустойчивая структурированная обработка особых ситуаций на всех архитектурных уровнях, которая включает восстанавливаемую файловую систему NTFS и обеспечивает защиту с помощью встроенной системы безопасности и усовершенствованных методов управления памятью. 6. Локализация. Система предоставляет возможности для работы во многих странах мира на национальных языках, что достигается применением стандарта ISO Unicode. Технические требования, предъявляемые к компьютеру, для инсталляции и работы с данной ОС: процессор Pentium с тактовой частотой минимум 233 МГц или более мощный (или совместимый с ним); рекомендуемый объем оперативной памяти 256 мегабайт (Мб); минимальный объем 128 Мб, максимальный - 4 гигабайта (Гб); 1,5 Гб свободного места на жестком диске; монитор VGA; клавиатура; мышь или совместимое указывающее устройство; дисковод компакт-дисков или DVD-дисков. 5.2 Базовое программное обеспечение 5.2.1 Средства разработки прикладного программного обеспечения Для разработки прикладного программного обеспечения выберем среду визуального и объектно-ориентированного программирования Borland Delphi 7.0, основанную на языке Object Pascal и Microsoft Access. 5.2.1.1 Borland Delphi 7.0 Рассмотрим достоинства среды разработки Delphi 7.0: высокая скорость написания приложений по сравнению с другими языками программирования, вследствие значительного упрощения работы по созданию графического интерфейса; наличие широкого набора компонентов для работы с базами данных, позволяющего решать широкий круг задач, связанных с отображением и редактированием информации, содержащейся в базе данных; обширная и удобная в использовании справка, в т. ч. контекстная; простой, интуитивно понятный интерфейс; высокая скорость работы создаваемых приложений; интеграция со средствами работы с базами данных (такими, как SQL Explorer, SQL Monitor), что позволяет в рамках единой среды выполнять весь процесс разработки программного комплекса, включая создание структуры базы данных; оптимальное сочетание низкоуровневых и высокоуровневых возможностей, что с одной стороны позволяет решать практически любые задачи в среде ОС Windows, а с другой стороны концентрироваться (там, где это необходимо) на логике программы, нежели на особенностях программной реализации. При написании прикладного программного обеспечения используются следующие стандартные библиотеки: библиотека System является основной библиотекой Object Pascal. Она реализует подпрограммы для всех встроенных возможностей, таких как ввод/вывод, обработка строк, эмуляция арифметического сопроцессора, работа с исключениями, содержит определения основных классов (в т. ч. TObject, TInterfacedObject). Библиотека System используется автоматически любым модулем или программой и не указывается в предложении Uses; библиотека Windows импортирует процедуры операционной системы для работы с файлами, объектами синхронизации, графикой, интерфейсом пользователя, трехмерной графикой (OpenGL), а также содержит определения соответствующих структур. Она становится доступной после указания её имени в предложении Uses; библиотека Classes содержит определения вспомогательных классов для работы со списками, коллекциями, потоками данных, потоками выполнения и т.п. Она становится доступной после указания её имени в предложении Uses; библиотека Controls содержит определения основных классов VCL (Visual Component Library), служащих базовыми для всех элементов управления. Она становится доступной после указания её имени в предложении Uses; библиотека Forms содержит определения классов VCL для работы с оконными формами и приложением в целом. Она становится доступной после указания её имени в предложении Uses; библиотека SysUtils содержит вспомогательные функции для преобразования типов, операций над строками и опеределения некоторых классов, в т. ч. всех классов исключений; библиотека Dialogs содержит определения классов VCL для работы со стандартными диалоговыми окнами Windows (открытие и сохранение файлов, печать и т.п.). Она становится доступной после указания её имени в предложении Uses; библиотека Messages содержит коды основных оконных сообщений Windows в виде именованных констант а также определения структур для работы с сообщениями Windows. Она становится доступной после указания её имени в предложении Uses; библиотека StdCtrls содержит определения классов VCL для работы со стандартными элементами управления Windows (окна редактирования, раскрывающиеся списки, кнопки и т.п.). Она становится доступной после указания её имени в предложении Uses; библиотека ComCtrls содержит определения классов VCL для работы с элементами управления Win32 (списки, деревья, панели инструментов и др.). Она становится доступной после указания её имени в предложении Uses; библиотека CommCtrl содержит определения структур, коды сообщений и импортируетт функции для работы с элементами управления Win32 (списки, деревья, панели инструментов и др.). Она становится доступной после указания её имени в предложении Uses; библиотека ExtCtrls содержит определения классов VCL для работы с нестандартными элементами управления (фигуры, заголовки, панели и т.п.). Она становится доступной после указания её имени в предложении Uses; библиотека Menus содержит определения классов VCL для работы с оконными и всплывающими меню. Она становится доступной после указания её имени в предложении Uses; библиотека AppEvnts содержит определение вспомогательного класса VCL для работы с событиями приложения. Она становится доступной после указания её имени в предложении Uses; библиотека Buttons содержит определения классов VCL для работы с кнопками, содержащими, помимо текста (или вместо него), графические изображения. Она становится доступной после указания её имени в предложении Uses; бибилиотека ActnList содержит определение класса VCL для работы со списками команд. Она становится доступной после указания её имени в предложении Uses; библиотека Math реализует функции для выполнения различных математических операций. Она становится доступной после указания её имени в предложении Uses; библиотека Variants реализует функции для работы с переменными, которые могут содержать значения различных типов. Она становится доступной после указания её имени в предложении Uses; библиотека DBCtrls содержит определения классов VCL для работы с элементами управления, предназначенными для отображения и редактирования информации, содержащейся в базах данных. Она становится доступной после указания её имени в предложении Uses; библиотека DBGrids содержит определения классов VCL для работы с элементами управления, предназначенными для отображения и редактирования информации, содержащейся в базах данных, в виде таблицы. Она становится доступной после указания её имени в предложении Uses; библиотека DB содержит определения классов, предназначенных для работы со структурой баз данных (поля, индексы и т.п.). Она становится доступной после указания её имени в предложении Uses; библиотека DBTables содержит определения классов VCL, предназначенных для управления конфигурацией BDE, создания устойчивых подключений к базам данных, объектов баз данных (таблиц, запросов и т.п.). Она становится доступной после указания её имени в предложении Uses; библиотека QuickRpt содержит определения основных классов для работы с системой составления отчетов. Она становится доступной после указания её имени в предложении Uses. 5.2.1.2 Microsoft Access Приложение Microsoft Access является мощной и высокопроизводительной 32-разрядной системой управления реляционной базой данных (далее СУБД). База данных - это совокупность структурированных и взаимосвязанных данных и методов, обеспечивающих добавление выборку и отображение данных. Реляционная база данных. Практически все СУБД позволяют добавлять новые данные в таблицы. С этой точки зрения СУБД не отличаются от программ электронных таблиц (Excel), которые могут эмулировать некоторые функции баз данных. Существует три принципиальных отличия между СУБД и программами электронных таблиц: СУБД разрабатываются с целью обеспечения эффективной обработки больших объёмов информации, намного больших, чем те, с которыми справляются электронные таблицы. СУБД может легко связывать две таблицы так, что для пользователя они будут представляться одной таблицей. Реализовать такую возможность в электронных таблицах практически невозможно. СУБД минимизируют общий объём базы данных. Для этого таблицы, содержащие повторяющиеся данные, разбиваются на несколько связанных таблиц. Access - мощное приложение Windows. При этом производительность СУБД органично сочетаются со всеми удобствами и преимуществами Windows. Как реляционная СУБД Access обеспечивает доступ ко всем типам данных и позволяет одновременно использовать несколько таблиц базы данных. Можно использовать таблицы, созданные в среде Paradox или dBase. В Access реализована надёжная система защиты от несанкционированного доступа к файлам. База данных храниться в одном файле. 5.2.2 Средства документирования Для составления проектной документации используется текстовой процессор Microsoft Word XP корпорации Microsoft. Microsoft Word XP является одним из наиболее распространённых текстовых процессоров и предназначен для составления простых и сложных документов с иллюстрациями, формулами, графиками и диаграммами. Перечислим основные возможности Word: выделение абзацев; автоматический перенос слов; изменение границ текста; автоматическая проверка орфографии и грамматики; создание таблиц; вставка в документ графического изображения (рисунков); вставка и поддержка работы с математическими формулами; Редактор формул позволяет создавать математические формулы любой сложности. Набранный текст можно распечатать на принтере, подключенном к компьютеру. Microsoft Office Word предъявляет те же системные требования к машине, что и Windows XP. Для подготовки презентации используется программный продукт Microsoft PowerPoint XP корпорации Microsoft. Microsoft PowerPoint XP хорошо подходит для составления презентаций любой сложности, поскольку обладает обширными возможностями, при этом обеспечивая максимальную простоту и удобство работы. Процесс создания презентации в Microsoft PowerPoint состоит из таких действий, как выбор общего оформления, добавление новых слайдов и их содержимого, выбор разметки слайдов, изменение при необходимости оформления слайдов, изменение цветовой схемы, применение различных шаблонов оформления и создание таких эффектов, как эффекты анимации при демонстрации слайдов. 5.3 Прикладное программное обеспечение 5.3.1 Структура прикладного программного обеспечения Система "Багетная мастерская" состоит из следующих модулей: модуль "MainUnit. pas" - главная форма программы (таблица 5.1); модуль "SostavProductUnit. pas" - форма определения состава изделия (таблица 5.2); модуль "SkladKomplektUnit. pas" - форма ведения складского учета (таблица 5.3); модуль "MasterskayaKomplektUnit. pas" - форма ведения учета запасов комплектующих в мастерской (таблица 5.4); модуль "KlientsUnit. pas" - форма ведения клиентского учета (таблица 5.5); модуль "EdIzmUnit. pas" - справочник единиц измерения (таблица 5.6); модуль "ALLKomplektUnit. pas" - справочник по комплектующим и материалам (таблица 5.7); модуль "BagetKomplektUnit. pas" - справочник багета (таблица 5.8); модуль "SelectDateUnit. pas" - форма выбора промежутка дат в запросах; модуль "SplashUnit. pas" - заставка программы; модуль "PrintZakazUnit. pas" - форма распечатки бланка; модуль "PassFirstUnit. pas" - форма авторизации при запуске программы; модуль "ChangePassUnit. pas" - форма изменения пароля доступа; модуль "DMReportUnit. pas" - содержит компоненты соединения с таблицами базы данных для составления запросов для отчетов; модуль "AboutUnit. pas" - форма справочной информации о программе; модуль "DataUnit. pas" - содержит компоненты для связи с таблицами базы данных. Вышеописанные модули имеют следующую структуру: UNIT Имя модуля INTERFACE {Начало раздела объявлений} USES{Используемые при объявлениях модули} CONST{Блок объявления библиотечных констант} TYPE{Блок объявления библиотечных типов} VAR{Блок объявления библиотечных переменных} IMPLEMENTATION{Начало раздела реализации} USES{Используемые при реализации модули} CONST{Блок объявления внутренних констант} TYPE{Блок объявления внутренних типов} VAR{Блок объявления внутренних переменных} LABEL{Блок объявления внутренних меток} INITIALIZATION{Начало раздела инициализации} FINALIZATION{Начало раздела финальной части} END. Более подробное описание модулей представлено в таблицах 5.1 - 5.8. Таблица 5.1 - Структура модуля Main
| Показать форму "Материалы - Разное" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CreateAllMasterskayaKomplektForm | Динамически создаёт форму для мастерской | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ActSkladKomplektExecute | Показать форму "Склад - комплектующие" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ActSkladRaznoeExecute | Показать форму "Склад - разное" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ActSkladBagetsExecute | Показать форму "Склад - багеты" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ActMaterRaznoeExecute | Показать форму "Материалы - Разное" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ExitActExecute | Выход из программы |
DBEditItogSRabotoiKeyPress | Обработчик ввода данных |
FormShow | Устанавливает начальное состояние элементов формы |
DBEditDataPriemaExit | Проверяет корректность ввода даты |
BBSortASCClick | Сортировка записей |
ButtonSostavClick | Открывает форму "состав изделия" |
FormCloseQuery | Обработчик выхода из программы |
ActPrintOptionExecute | Настройка параметров принтера |
ActPrintExecute | Распечатка заказа |
Act_Zak_EditExecute | Редактирование заказа |
Act_Zak_DelExecute | Удаление заказа |
Act_Zak_SaveExecute | Сохранить заказ |
Act_Zak_CancelExecute | Отмена изменений в заказе |
Act_Izd_AddExecute | Добавить изделие |
Act_Izd_EditExecute | Редактировать изделие |
Act_Izd_DelExecute | Удалить изделие |
Act_Izd_SaveExecute | Сохранить изменения в изделии |
Act_Izd_CancelExecute | Отменить изменения в изделии |
Act_Izd_SostavExecute | Определить состав изделия |
Act_Zak_RashitatExecute | Рассчитать заказ |
Act_R_OstatkiExecute | Выполняет отчёт "остатки материалов в мастерской" |
FormCreate | Обработчик создания формы |
Act_R_PriceListExecute | Выполняет отчёт "прайс-лист" |
CreateSelectDateForm | Создаёт форму выбора для отчёта начальной и конечной даты |
Act_R_SummaZakazovExecute | Выполняет отчёт "сумма заказов за период" |
Act_R_ZakaziKDateExecute | Выполняет отчёт "Заказы к дате" |
Act_R_ProdazhiMaterExecute | Выполняет отчёт "продажи материалов за период" |
ActArchivExecute | Открывает диалог "Файл - архивация базы" |
Act_Zak_ClearExecute | Очистить таблицу "Заказы" |
Act_Zash_ChangePassExecute | Открывает форму "Изменить пароль" |
Act_Zak_AddExecute | Выполняет пункт меню "Заказы" "добавить" |
Act_AboutExecute | Динамически создаёт форму "О программе" |
Act_HelpExecute | Открывает файл справки |
Таблица 5.2 - Структура модуля SostavProductUnit. pas
Названия процедур | Назначение |
|
|
1 | 2 |
BBtnBagetsAddClick | Обработчик кнопки "багеты - добавить" |
BBtnBagetsEditClick | Обработчик кнопки "багеты - редактировать" |
BBtnBagetsDelClick | Обработчик кнопки "багеты - удалить" |
BBtnBagetsSaveClick | Обработчик кнопки "багеты - сохранить" |
BBtnBagetsCancelClick | Обработчик кнопки "багеты - отмена" |
FormShow | Устанавливает начальное состояние элементов формы |
FormCloseQuery | Обработчик выхода из программы |
BBtnRaznoeAddClick | Обработчик кнопки "Разное - Добавить" |
BBtnRaznoeEditClick | Обработчик кнопки "Разное - Редактировать" |
BBtnRaznoeDelClick | Обработчик кнопки "Разное - Удалить" |
BBtnRaznoeSaveClick | Обработчик кнопки "Разное - Сохранить" |
BBtnRaznoeCancelClick | Обработчик кнопки "Разное - Отмена" |
DBLCBLRazkomplektDropDown | Обработчик списка "Разное - наименование детали" |
BBtnKomplAddClick | Обработчик кнопки "Комплектующие - Добавить" |
BBtnKomplEditClick | Обработчик кнопки "Комплектующие - Редактировать" |
BBtnKomplDelClick | Обработчик кнопки "Комплектующие - Удалить" |
BBtnKomplSaveClick | Обработчик кнопки "Комплектующие - Сохранить" |
BBtnKomplCancelClick | Обработчик кнопки "Комплектующие - Отмена" |
DBLCBLKompl_komplektDropDown | Обработчик списка "Комплектующие - наименование детали" |
DBEditShirinaKeyPress | Проверяет корректность ввода данных |
SpeedButton1Click | Вызов калькулятора |
DBNavigatorKomplClick | Обработчик навигатора таблицы "Комплектующие” |
Таблица 5.3 - Структура модуля SkladKomplektUnit. pas
Названия процедур | Назначение |
BBtnAddClick | Обработчик кнопки "добавить" |
BBtnEditClick | Обработчик кнопки "редактировать" |
BBtnDeleteClick | Обработчик кнопки "удалить" |
BBtnSaveClick | Обработчик кнопки "сохранить" |
BBtnCancelClick | Обработчик кнопки "отмена" |
FormCloseQuery | Обработчик выхода из программы |
FormShow | Устанавливает начальное состояние элементов формы |
BBtnClearClick | Обработчик кнопки "Очистить" |
DBEditZakupCenaKeyPress | Проверяет корректность ввода данных |
DBEditDataExit | Проверяет корректность ввода даты |
BBFindClick | Обработчик кнопки "найти" |
BBSortASCClick | Обработчик кнопки "сортировать по возрастанию" |
DBNavigatorSlaveClick | Обработчик нажатия кнопки навигатора |
BBSortDESCClick | Обработчик кнопки "сортировать по убыванию" |
BBSpisanieClick | Обработчик кнопки "списать" |
BBSpisanieSaveClick | Обработчик кнопки "Списание - сохранить" |
BBSpisanieClearClick | Обработчик кнопки "Списание - отменить" |
DBLComboBoxKomplektDropDown | Обработчик списка "Наименование детали" |
BBtnClearTableClick | Обработчик кнопки "Очистить" |
Таблица 5.4 - Структура модуля MasterskayaKomplektUnit. pas
Названия процедур | Назначение |
|
|
BBtnAddClick | Обработчик кнопки "добавить" |
BBtnEditClick | Обработчик кнопки "редактировать" |
BBtnDeleteClick | Обработчик кнопки "удалить" |
BBtnSaveClick | Обработчик кнопки "сохранить" |
BBtnCancelClick | Обработчик кнопки "отмена" |
FormCloseQuery | Обработчик выхода из программы |
FormShow | Устанавливает начальное состояние элементов формы |
BBtnClearClick | Обработчик кнопки "Очистить" |
DBEditRoznCenaKeyPress | Проверяет корректность ввода данных |
DBLComboBoxKomplektDropDown | Обработчик списка "Наименование детали" |
Таблица 5.5 - Структура модуля KlientsUnit. pas
Названия процедур | Назначение |
|
|
BBtnAddClick | Обработчик кнопки "добавить" |
BBtnEditClick | Обработчик кнопки "редактировать" |
BBtnDeleteClick | Обработчик кнопки "удалить" |
BBtnSaveClick | Обработчик кнопки "сохранить" |
BBtnCancelClick | Обработчик кнопки "отмена" |
FormCloseQuery | Обработчик выхода из программы |
FormShow | Устанавливает начальное состояние элементов формы |
DBEdit3KeyPress | Проверяет корректность ввода данных |
BBtnClearClick | Обработчик кнопки "Очистить" |
EditFindChange | Обработчик поля ввода "Поиск по ФИО" |
Таблица 5.6 - Структура модуля EdIzmUnit. pas
Названия процедур | Назначение | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BBtnAddClick | Обработчик кнопки "добавить" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BBtnEditClick | Обработчик кнопки "редактировать" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BBtnDeleteClick
Таблица 5.7 - Структура модуля ALLKomplektUnit. pas
Таблица 5.8 - Структура модуля BagetKomplektUnit. pas
5.3.3 Руководство программиста Для усовершенствования и дополнения программы новым модулем нужно: 1) написать требуемый модуль; 2) подключить его к главному модулю программы (см. таблицу 5.1); 3) дополнить главное меню требуемым пунктом и назначить на этот пункт обработчик события в виде вызова новой процедуры. В качестве примера рассмотрим добавление модуля "NewUnit": подключить модуль NewUnit в разделе Uses; создать процедуру реакции на событие; создать обработчик события и прописать следующим образом: ИМЯ_КЛАССА. ИМЯ_ПРОЦЕДУРЫ; При написании программы программисту необходимо придерживаться принципа удобочитаемости программы. Для этого нужно выполнять следующие рекомендации: не размещать на одной строке более одного оператора. Дело в том, что при пошаговой трассировке программ (а это основной способ отладки), компилятор останавливается перед выполнением очередной строки кода. Если на строке размещены несколько операторов, программист не сможет проследить работу каждого оператора в этой строке отдельно от других. выделять тела составных, условных, циклических операторов отступами по 2 символа (если этого не делать, то будет трудно определить, к какому слову begin соответствует то или иное слово end), например: begin <операторы> end; во вложенных составных операторах стараться помечать замыкающие слова end небольшими комментариями, например: if a>b then begin … if not IsNew then begin … end; // if not IsNew … end; // if a>b если тело подпрограммы содержит более 20-30 строк, следует проанализировать алгоритм и относительно самостоятельные его части вынести во вложенные подпрограммы или реализовать их с помощью вспомогательных классов; не скупиться на комментарии. Небольшие затраты времени на вставку комментария по ходу составления программы с лихвой окупятся, когда понадобиться её модернизировать. стараться использовать осмысленные идентификаторы. Для этого понадобится хотя бы начальное знание английского языка, в крайнем случае, можно русскоязычные идентификаторы записывать латинскими буквами [2,8,9,10]. 6. Техническое обеспечение 6.1 Общие требования Выбор технического обеспечения обуславливается следующими основными параметрами: производительность. Комплекс технических средств должен удовлетворять требованиям, предъявляемым программным обеспечением; качество. Данный параметр является связующим звеном между производительностью и стоимостью и должен обеспечивать комфортную и бесперебойную работу комплекса технических средств. Комплекс технических средств должен быть построен на базе ПЭВМ IBM PC или совместимых с ней. Комплекс технических средств (КТС) разрабатывается в соответствии с требованиями, предъявленными в ТЗ. Выбор IBM PC в качестве базы КТС осуществлён исходя из выбранного программного обеспечения: ОС Windows ХР и визуальной среды разработки Borland Delphi версии 7.0, а также средств документирования для составления проектной документации Microsoft Word XP и Microsoft PowerPoint XP. Ниже будет спроектирован КТС для компьютера предназначенного для разработки и для работы пользователя системы "Багетная мастерская". Каждый компонент выбирается с учетом назначения компьютера, планируемого срока эксплуатации и совместимости компонентов с другими периферийными устройствами. 6.2 Процессор По результатам тестирования, приведенным ниже, осуществим выбор процессора. Характеристики тестового стенда: Материнская плата: ASUS P5WD2 Premium (LGA775, Intel 955X Express). Память: 2048MB DDR400 SDRAM (Corsair CMX1024-3500LLPRO, 2 x 1024 MB, 2-3-2-10); Графическая карта: NVIDIA GeForce 7800 GT 256MB (PCI-E x16). Дисковая подсистема: Maxtor MaXLine III 250GB (SATA150). Операционная система: Microsoft Windows XP SP2. Технические характеристики протестированных процессоров представлены в таблице 6.1. Таблица 6.1 - Технические характеристики процессоров [7]
Результаты тестирования процессоров представлены в таблице 6.2. Таблица 6.2 - Результаты тестирования процессоров, баллы [7]
По результатам тестирования выбираем процессор Intel Celeron D 336. 6.3 Материнская плата На основании нижеприведенных результатов тестирования, осуществим выбор материнской платы. Характеристики тестового стенда: операционная система Windows XP Professional SP2,процессор Intel Pentium 4 Extreme Edition 3,46 ГГц, Socket 775,память 2x512 МБ DDR2-533 DDR2 SDRAM DIMM Corsair (CM2X512A-4300C3PRO), 3-3-3-8,видеокарта [PCIEx16] ATI Radeon X800 XT 256 Мб, жесткий диск Seagate Barracuda 7200.7 (SATA), 7200 об/мин. Технические характеристики протестированных материнских плат представлены в таблице 6.3. Таблица 6.3 - Технические характеристики материнских плат [7]
Результаты тестирования материнских плат представлены в таблице 6.4. Таблица 6.4 - Результаты тестирования материнских плат [7]
По результатам тестирования выбираем материнскую плату Foxconn 945P7AA-8KS2. 6.5 Оперативная память Осуществим выбор модулей памяти по результатам тестирования приведенного ниже. Характеристики тестового стенда: Процессор: Intel Pentium 4 3.4 ГГц (ядро Prescott, 1 МБ L2) Чипсет: Intel 925X Материнская плата: Gigabyte 8ANXP-D, версия BIOS F1 от 06/07/2004 Видео: Leadtek PX350 TDH, nVidia PCX5900 HDD: WD Raptor WD360, SATA, 10000 rpm, 36Gb Драйверы: nVidia Forceware 62.01, Intel Chipset Utility 6.0.1.1002, DirectX 9.0c. Технические характеристики протестированных модулей памяти представлены в таблице 6.5. Таблица 6.5 - Технические характеристики модулей памяти [7]
Результаты тестирования модулей памяти представлены в таблице 6.6. Таблица 6.6 - Результаты тестирования модулей памяти [7]
Наилучшими характеристиками по результатам тестирования обладает модуль памяти Samsung DDR2-533 PC 4200. 6.6 Видеокарта Опираясь на нижеприведенные результаты тестирования, осуществим выбор видеокарты. Параметры тестового стенда: Материнская плата: ABIT AN8 SLI (nForce 4 SLI), Socket 939, BIOS v.2.0; Процессор: AMD Athlon 64 3200+. Термоинтерфейс: Coollaboratory Liquid Pro; Оперативная память: 2 х 512 Mb PC3200 Corsair TWINXP1024-3200C2 (SPD: 400 MHz, 2-2-2-5_1T), @467 MHz 2-3-4-8_1T; Дисковая подсистема: SATA-II 160 Gb Seagate Barracuda 7200.9 (ST3160812AS 2AAA) 7200 RPM, 8 Mb; Корпус: ATX ASUS ASCOT 6AR2-B Black&Silver; Блок питания: MGE Magnum 500 (500 W); Монитор: LCD DELL 1800/1FP UltraSharp (1280x1024, DVI, 60 Hz). Технические характеристики протестированных видеокарт представлены в таблице 6.7. Таблица 6.7 - Технические характеристики видеокарт [7]
Результаты тестирования видеокарт представлены в таблице 6.8. Таблица 6.8 - Результаты тестирования видеокарт [7]
Лучшие результаты в ходе тестирования показала видеокарта NVIDIA GeForce 6600. 6.7 Накопитель на жестких магнитных дисках На основании нижеприведенных результатов тестирования, осуществим выбор жесткого диска. Параметры тестового стенда: процессор Intel Pentium 4 3.0C, материнская плата ABIT IC7-G на чипсете i875P, контроллер SiI3124-2 интерфейса Serial ATA II (референс-плата), системная память 2x256 Мбайт DDR400 (тайминги 2.5-3-3-6), видеокарта Matrox Millennium G400,основной жесткий диск Seagate Barracuda SATA V, блок питания Zalman ZM400A-APF, 400 Вт., корпус Arbyte YY-W201BK-A. Технические характеристики протестированных жестких дисков представлены в таблице 6.9. Таблица 6.9 - Технические характеристики жестких дисков [7]
Результаты тестирования жестких дисков представлены в таблице 6.10. Таблица 6.10 - Результаты тестирования жестких дисков [7]
По итогам тестовых испытаний лучшие показатели имеет жесткий диск Samsung SpinPoint P80 HD080HJ. 6.8 Монитор Для корректной работы системы учета рекомендуется использовать ЭЛТ (электронно-лучевая трубка) мониторы с диагональю не менее 17". На сегодняшний день мониторы ЭЛТ имеют следующие преимущества: текст выглядит четче (особенно при малом размере точек); цвета натуральнее и точнее; отлаженная технология обеспечивает лучшее соотношение стоимости и эксплуатационных качеств. Следовательно, такие мониторы можно рекомендовать для универсального применения. Рассмотрим два типа мониторов фирм Samsung и LG. В таблице 6.11 представлены основные технические характеристики мониторов. Таблица 6.11 Характеристики мониторов [7]
Методика тестирования базировалась на экспертной оценке качества изображения мониторов. Мониторы одновременно подключались к одинаковым системным блокам. Все тесты проводились под управлением ОС Windows 2000 Professional. Из программного обеспечения использовались пакеты Nokia Monitor Test и Adobe Photoshop 7.0. Результаты тестирования: Монитор Samsung 793 DF/MG: показатель качества 93,2477. Монитор LG Flatron F720BL: показатель качества 78,9542. Выбираем монитор с более высоким показателем качества - Samsung 757DFX. 6.9 Устройство чтения и записи CD Для установки программного обеспечения и для архивации данных необходимо устройство чтения-записи CD. Предлагаемые на сегодняшний день CD-RW-приводы практически не отличаются друг от друга по своим характеристикам. Каждый из них имеет свои преимущества и недостатки. Выдвигаемые нами требования к CD-RW-приводу - это качество чтения и высокая скорость записи дисков. Для тестирования использовалась программа Nero 6. Результаты тестирования представлены в таблице 6.12. Таблица 6.12 - Результаты тестирования приводов CD-RW
По итогам тестирования мы выбрали CD-RW-привод ASUS CRW-5232AS, как привод, показавший лучшие результаты. 6.10 Окончательная конфигурация КТС Окончательная конфигурация КТС представлена в таблице 6.12. Таблица 6.12 - Окончательная конфигурация КТС
7. Методическое обеспечение Разработанная система представляет собой программу, предназначенную для автоматизации процесса принятия заказа и ведения складского учета расходуемых комплектующих и материалов в багетной мастерской. Система предназначена для: автоматизированного расчета стоимости выполнения заказа багетной мастерской; автоматизированного оформления бланка заказа, вывода его на печать; хранения информации о клиентах и их заказах; ведения автоматизированного складского учета расходуемых комплектующих и материалов; выдачи необходимых отчетов о расходе комплектующих и материалов. Система позволит повысить эффективность работы сотрудника багетной мастерской занимающегося принятием и расчетом стоимости заказов, а также облегчить организацию ведения складского учета расхода комплектующих и материалов управляющему мастерской. Внедрение данной системы позволит: значительно снизить трудоемкость и повысить производительность труда сотрудников мастерской; снизить вероятность ошибок при расчетах; повысить уровень сервиса, вследствие уменьшения времени, необходимого на обслуживание клиентов. 7.1 Руководство по установке Для установки системы требуется 6,23 Мб свободного дискового пространства. Для нормальной работы системы потребуется около 40 Мб. Для того чтобы установить систему на компьютер необходимо запустить программу установки "setup. exe" с CD-диска, на котором поставляется система, либо предварительно скопировать её с CD-диска на жёсткий диск и запустить оттуда. На первом этапе установки вам будет предложено выбрать папку, в которую будет установлена программа. По умолчанию программа установки автоматически устанавливает программу на диске С по следующему пути: C: \Program Files\KSTU\Багетная мастерская. На следующем этапе вам будет предложено выбрать папку в меню "Пуск", куда будут помещены ярлыки устанавливаемой программы. По умолчанию создается папка "KSTU". Вы можете также отказаться от создания ярлыков, выбрав флажок "Не создавать ярлыки". Далее Вам будет предложено создать ярлык на рабочем столе. Вы можете отказаться от создания ярлыка, сняв флажок "Создать ярлык на рабочем столе". Далее необходимо следовать инструкциям, которые выдаёт программа установки. Процесс установки программы продемонстрирован на рисунках 7.1 - 7.7. Рисунок 7.1 - Окно приветствия
Рисунок 7.2 - Выбор папки установки Рисунок 7.3 - Выбор папки в меню "Пуск" Рисунок 7.4 - Выбор дополнительных ярлыков
Рисунок 7.5 - Все готово для начала установки Рисунок 7.6 – Инсталляция Рисунок 7.7 - Завершение установки 7.2 Руководство пользователя Для запуска программы "Багетная мастерская" найдите на рабочем столе Windows ярлык программы: и щелкните по нему дважды левой кнопкой мыши. После запуска программы Вам будет предложен диалог авторизации: Рисунок 7.8 - Диалог авторизации Для продолжения работы в режиме "Мастер" просто нажмите кнопку "ОК". Для продолжения работы в режиме "Менеджер" введите пароль и нажмите кнопку "ОК". Режим "Мастер" позволяет принимать заказы, рассчитывать их и выводить на печать бланк заказа. В этом режиме можно также распечатывать прайс-лист комплектующих и заполнять/редактировать базу клиентов и производить резервное копирование базы данных. Режим "Менеджер" позволяет, помимо вышеперечисленных функций, просматривать и распечатывать отчеты, добавлять материалы, осуществлять принятие/списание материалов на склад, пополнять запасы материалов в мастерской, редактировать таблицы базы данных. Если работа с программой осуществляется впервые, то перед тем как приступить к работе с клиентами, необходимо заполнить таблицы базы данных. Для этого нужно запустить программу в режиме "Менеджер". После запуска программы откроется главное окно программы: Рисунок 7.9 - Главное окно программы Далее нужно выполнить следующие действия: 1) Заполните справочник "Багет". Выберите пункт "Багет" меню "Справочники" для того, чтобы заполнить справочник используемого багета. Для заполнения справочника Вам будет предложена следующая форма:
Рисунок 7.10 - Форма "Багеты" Для того чтобы изменить коэффициент стоимости обработки материала нажмите кнопку "Редактировать материал" в левой части окна. После внесения изменений нажмите кнопку "Сохранить" , чтобы сохранить изменения, либо нажмите кнопку "Отменить" , чтобы отказаться от изменений. Для добавления в справочник новой записи о багете нажмите кнопку "Добавить" в правой части окна, а затем заполните поля ввода "Наименование багета", "Ширина багета (мм)", "Высота багета (мм)", а также выберите из раскрывающегося списка "Единица измерения" нужную единицу измерения, после чего нажмите кнопку "Сохранить" чтобы сохранить запись, либо нажмите кнопку "Отменить" , чтобы отказаться от добавления записи. Кнопки "Редактировать" и "Удалить" служат для того, чтобы соответственно внести изменения в запись о каком-либо багете, либо удалить ее. Поле ввода "Поиск по наим. багета" в верхней части окна служит для поиска записи о каком-либо багете в том случае, если справочник уже содержит записи. Для осуществления поиска нужно набрать в данном поле наименование искомого багета. Кнопка "Очистить" служит для очистки данного поля. 2) Заполните справочник "Комплектующие". В данный справочник вводится информация о материалах, расход которых измеряется в квадратных метрах. Выберите пункт "Комплектующие" меню "Справочники" для того, чтобы заполнить справочник используемых комплектующих. Для заполнения справочника Вам будет предложена следующая форма: Рисунок 7.11 - Форма "Комплектующие" Для того чтобы добавить в справочник новую запись о комплектующем, нажмите кнопку "Добавить материал" в левой части окна, а затем заполните поля ввода "Наименование типов комплектующих" и "Коэффициент стоимости обработки материала". Далее нажмите кнопку "Сохранить" , чтобы сохранить запись, либо нажмите кнопку "Отменить" , чтобы отказаться от добавления записи. Для того чтобы изменить коэффициент стоимости обработки материала нажмите кнопку "Редактировать материал" в левой части окна. После внесения изменений нажмите кнопку "Сохранить" , чтобы сохранить изменения, либо нажмите кнопку "Отменить" , чтобы отказаться от изменений. Для добавления в справочник новой записи о каком-либо комплектующем выберите в правой части окна тип комплектующего, воспользовавшись кнопками навигатора записей , а затем нажмите кнопку "Добавить" в правой части окна. Далее заполните поле ввода "Наименование комплектующего", а также выберите из раскрывающегося списка "Единица измерения" нужную единицу измерения, после чего нажмите кнопку "Сохранить" чтобы сохранить запись, либо нажмите кнопку "Отменить" , чтобы отказаться от добавления записи. Кнопки "Редактировать" и "Удалить" служат для того, чтобы соответственно внести изменения в запись о каком-либо комплектующем, либо удалить ее. Поле ввода "Поиск по наим. комплектующих" в верхней части окна служит для поиска записи о каком-либо материале в том случае, если справочник уже содержит записи. Для осуществления поиска нужно набрать в данном поле наименование искомого материала. Кнопка "Очистить" служит для очистки данного поля. 3) Заполните справочник "Разное". В данный справочник вводится информация о материалах, расход которых измеряется в различных единицах измерения. Выберите пункт "Разное" меню "Справочники" для того, чтобы заполнить данный справочник. Для заполнения справочника Вам будет предложена следующая форма:
Рисунок 7.12 - Форма "Разное" Работа со справочником "Разное" аналогична работе со справочником "Комплектующие". 4) Заполните записями таблицы "Склад-Багеты", "Склад-Комплектующие" и "Склад-Разное". Данные таблицы используются для ведения складского учета и могут содержать повторяющиеся записи по наименованию комплектующих, но различающиеся по номеру накладной и дате приема, а также по цене. Для заполнения таблицы "Склад-Багеты" выберите пункт "Багеты" меню "Склад". На экране монитора откроется форма "Склад-Багеты":
Рисунок 7.13 - Форма "Склад-Багеты" Чтобы добавить новую запись о каком-либо багете нажмите кнопку "Добавить" , затем выберите в раскрывающемся списке "Тип детали" строчку багет.д.алее в раскрывающемся списке "Наим-ние детали" выберите нужный багет. Затем заполните поля ввода "№ накладной", "Дата поступления", "Закупочная цена", "Кол-во" и если требуется, "Примечание". После этого нажмите кнопку "Сохранить" чтобы сохранить запись, либо нажмите кнопку "Отменить" , чтобы отказаться от добавления записи. Кнопки "Редактировать" и "Удалить" служат для того, чтобы соответственно внести изменения в информацию о каком-либо багете, либо удалить ее. Панели "Поиск по…" и "Сортировка по…" служат для удобства просмотра записей, в случае если таблица "Склад-Багеты" уже содержит записи. Поиск осуществляется по наименованию комплектующего, № накладной и дате поступления. Для осуществления поиска заполните какое-нибудь из поисковых полей ввода и нажмите кнопку "Найти" . Кнопка "Очистить" служит для очистки поисковых полей ввода. Также можно воспользоваться панелью сортировки записей по наименованию комплектующего, № накладной и дате поступления. Для осуществления сортировки записей выберите нужный пункт и нажмите кнопку "Сортировать по возрастанию" или "Сортировать по убыванию" . Для заполнения таблицы "Склад-Комплектующие" выберите пункт "Комплектующие" меню "Склад". На экране монитора откроется форма "Склад-Комплектующие": Рисунок 7.14 - Форма "Склад-Комплектующие" Чтобы добавить новую запись о каком-либо комплектующем нажмите кнопку "Добавить" , затем выберите в раскрывающемся списке "Тип детали" необходимый тип комплектующего. Далее в раскрывающемся списке "Наим-ние детали" выберите нужное наименование комплектующего. Затем заполните поля ввода "№ накладной", "Дата поступления", "Закупочная цена", "Кол-во" и если требуется, "Примечание". После этого нажмите кнопку "Сохранить" чтобы сохранить запись, либо нажмите кнопку "Отменить" , чтобы отказаться от добавления записи. Кнопки "Редактировать" и "Удалить" служат для того, чтобы соответственно внести изменения в информацию о каком-либо комплектующем, либо удалить ее. Панели "Поиск по…" и "Сортировка по…" служат для удобства просмотра записей, в случае если таблица "Склад-Комплектующие" уже содержит записи. Поиск осуществляется по наименованию комплектующего, № накладной и дате поступления. Для осуществления поиска заполните какое-нибудь из поисковых полей ввода и нажмите кнопку "Найти" . Кнопка "Очистить" служит для очистки поисковых полей ввода. Также можно воспользоваться панелью сортировки записей по наименованию комплектующего, № накладной и дате поступления. Для осуществления сортировки записей выберите нужный пункт и нажмите кнопку "Сортировать по возрастанию" или "Сортировать по убыванию" . Для заполнения таблицы "Склад-Разное" выберите пункт "Разное" меню "Склад". На экране монитора откроется форма "Склад-Разное":
Рисунок 7.15 - Форма "Склад-Разное" Работа с формой "Склад-Разное" аналогична работе с формой "Склад-Комплектующие". 5) Заполните данными таблицы "Мастерская-Багеты", "Мастерская-Комплектующие" и "Мастерская-Разное". Записи в данных таблицах не могут повторяться. Данные этих таблиц используются при формировании состава изделий в заказах. Для заполнения таблицы "Мастерская-Багеты" выберите пункт "Багеты" меню "Мастерская". На экране монитора откроется форма "Мастерская-Багеты":
Рисунок 7.16 - Форма "Мастерская-Багеты" Чтобы добавить новую запись о каком-либо багете нажмите кнопку "Добавить" , затем выберите в раскрывающемся списке "Тип детали" строчку багет.д.алее в раскрывающемся списке "Наим-ние детали" выберите нужный багет. Затем заполните поля ввода Розничная цена", "Кол-во" и если требуется, "Примечание". После этого нажмите кнопку "Сохранить" чтобы сохранить запись, либо нажмите кнопку "Отменить" , чтобы отказаться от добавления записи. Кнопки "Редактировать" и "Удалить" служат для того, чтобы соответственно внести изменения в информацию о каком-либо багете, либо удалить ее. Для заполнения таблицы "Мастерская-Комплектующие" выберите пункт "Комплектующие" меню "Мастерская". На экране монитора откроется форма "Мастерская-Комплектующие":
Рисунок 7.17 - Форма "Мастерская-Комплектующие" Работа с формой "Мастерская-Комплектующие" аналогична работе с формой "Мастерская-Багеты". Для заполнения таблицы "Мастерская-Разное" выберите пункт "Разное" меню "Мастерская". На экране монитора откроется форма "Мастерская-Разное": Рисунок 7.18 - Форма "Мастерская-Разное" Работа с формой "Мастерская-Разное" аналогична работе с формой "Мастерская-Багеты". Перед принятием заказа необходимо завести в базе данных соответствующую запись о клиенте, либо, если клиент обращается не впервые, найти запись о нем в справочнике клиентов и подредактировать ее в случае необходимости. Для этого выберите пункт "Клиенты" меню "Справочники". На экране монитора откроется форма "Клиенты": Рисунок 7.19 - Форма "Клиенты" Для добавления в справочник новой записи о клиенте нажмите кнопку "Добавить" , а затем заполните поля ввода "ФИО", "Контактная информация", "Коэффициент скидки". Скидка клиенту назначается в десятичном выражении, например: 0,2. После чего нажмите кнопку "Сохранить" чтобы сохранить запись, либо нажмите кнопку "Отменить" , чтобы отказаться от добавления записи. Эти данные будут использоваться при формировании и расчете заказа. Кнопки "Редактировать" и "Удалить" служат для того, чтобы соответственно внести изменения в запись о каком-либо клиенте, либо удалить ее. Поле ввода "Поиск по ФИО" в верхней части окна служит для поиска записи о каком-либо клиенте в том случае, если справочник уже содержит записи или клиент обращается не впервые и нужно отредактировать запись о нем. Для осуществления поиска нужно набрать в данном поле требуемые данные о ФИО искомого клиента. Кнопка "Очистить" служит для очистки данного поля. Работа по принятию и расчету заказов осуществляется с помощью главного окна программы: Рисунок 7.20 - Главное окно программы Для добавления нового заказа нажмите кнопку "Добавить заказ" панели "Заказы", либо воспользуйтесь кнопкой "Добавить заказ" , расположенной на панели инструментов под меню программы. Кроме того, это действие можно осуществить, воспользовавшись командой "Добавить заказ" меню "Заказы". Далее заполните поля ввода "№ заказа", "Наименование заказа" и отредактируйте в случае необходимости поля ввода "Дата приема", "Время приема", "Дата окончания", "Время окончания", а также выберите ФИО заказчика в раскрывающемся списке "ФИО заказчика". После этого нажмите кнопку "Сохранить" , либо воспользуйтесь кнопкой "Сохранить" панели инструментов. Кроме того, это действие можно осуществить, воспользовавшись командой "Сохранить изменения в текущем заказе" меню "Заказы". Далее необходимо определить состав заказа. Для этих действий предназначена панель "Состав заказа". Для того чтобы добавить в заказ изделие нажмите кнопку "Добавить изделие" панели "Состав заказа", либо воспользуйтесь кнопкой "Добавить изделие" , расположенной на панели инструментов под меню программы. Кроме того, это действие можно осуществить, воспользовавшись командой "Добавить изделие" меню "Изделия". Далее заполните поля ввода "№ изделия", "Ширина изделия (см)", "Высота изделия (см)". После этого нажмите кнопку "Сохранить" , либо воспользуйтесь кнопкой "Сохранить" панели инструментов. Кроме того, это действие можно осуществить, воспользовавшись командой "Сохранить изменения в текущем изделии" меню "Изделия". Далее необходимо определить состав изделия, для чего нужно нажать кнопку "Определить состав изделия" панели "Состав заказа", либо воспользуйтесь кнопкой "Определить состав изделия" , расположенной на панели инструментов под меню программы. Кроме того, это действие можно осуществить, воспользовавшись командой "Определить состав изделия" меню "Изделия". В результате вышеописанных действий на экране монитора появится форма "Состав изделия":
Рисунок 7.21 - Форма "Состав изделия" Для того чтобы добавить в состав изделия какой-либо багет нажмите кнопку "Добавить багет" панели "Багеты". Далее в раскрывающемся списке "Наименование багета" выберите нужный багет, после чего в случае необходимости отредактируйте поля ввода "Размеры - Ширина (см)" и "Размеры - Высота (см)" и нажмите кнопку "Сохранить изменения" В случае необходимости, добавьте состав изделия еще одно наименование багета, вышеуказанным способом. Для того чтобы отредактировать информацию о багете в составе изделия или удалить ее служат кнопки "Редактировать" и "Удалить" . Далее добавьте в состав изделия необходимые комплектующие, расход которых измеряется в квадратных метрах, воспользовавшись панелью "Комплектующие". Для того чтобы добавить в состав изделия какое-либо комплектующее нажмите кнопку "Добавить комплектующее" панели "Комплектующие". Далее в раскрывающемся списке "Тип комплектующего" выберите необходимый тип комплектующего и выберите нужное наименование комплектующего в раскрывающемся списке "Наименование комплектующего". Далее в случае необходимости отредактируйте поля ввода "Размеры - Ширина (см)" и "Размеры - Высота (см)" и нажмите кнопку "Сохранить изменения" Таким же образом в случае необходимости, добавьте состав изделия еще один тип и наименование комплектующего. Для того чтобы отредактировать информацию о каком-либо комплектующем в составе изделия или удалить ее служат кнопки "Редактировать" и "Удалить" . Далее добавьте в состав изделия необходимые комплектующие, расход которых измеряется в различных единицах измерения, воспользовавшись панелью "Разное". Для того чтобы добавить в состав изделия какое-либо комплектующее нажмите кнопку "Добавить разное" панели "Разное". Далее в раскрывающемся списке "Тип разного" выберите необходимый тип комплектующего и выберите нужное наименование комплектующего в раскрывающемся списке "Наименование разного" и заполните поле ввода "Расход". Далее нажмите кнопку "Сохранить изменения" . Расход разного можно подсчитать, воспользовавшись кнопкой "Калькулятор" . Таким же образом в случае необходимости, добавьте состав изделия еще один тип и наименование комплектующего. Для того чтобы отредактировать информацию о каком-либо комплектующем в составе изделия или удалить ее служат кнопки "Редактировать" и "Удалить" . После определения состава изделия нажмите кнопку "Выйти" . Далее, если требуется, нужно ввести в сведения об изделии данные о дополнительной работе. Для этого нажмите кнопку "Редактировать текущее изделие" панели "Состав заказа", либо воспользуйтесь кнопкой "Редактировать текущее изделие" , расположенной на панели инструментов под меню программы. Кроме того, это действие можно осуществить, воспользовавшись командой "Редактировать текущее изделие" меню "Изделия". Далее введите в поле ввода "Наименование доп. работы" название работы и ее стоимость в поле ввода "Доп. работа, тг". Затем нажмите кнопку "Сохранить" , либо воспользуйтесь кнопкой "Сохранить" панели инструментов. Кроме того, это действие можно осуществить, воспользовавшись командой "Сохранить изменения в текущем изделии" меню "Изделия". После того как определен состав изделия, в случае необходимости можно добавить в заказ еще одно изделие вышеописанным способом. После того как определен состав заказа, необходимо рассчитать заказ. Для этого нажмите кнопку "Рассчитать заказ" панели "Заказы", либо воспользуйтесь кнопкой "Рассчитать заказ" , расположенной на панели инструментов под меню программы. Кроме того, это действие можно осуществить, воспользовавшись командой "Рассчитать заказ" меню "Заказы". В результате в нижней части окна на панелях "Итоги по изделию" и "Итоги по заказу" отобразятся данные расчета заказа. Далее в случае необходимости выведите на печать бланк заказа. Для этого нажмите кнопку "Печать заказа" , расположенной на панели инструментов под меню программы. В результате откроется окно предварительного просмотра бланка заказа перед печатью:
Рисунок 7.22 - Окно предварительного просмотра бланка Для распечатки нажмите кнопку . Для выхода из окна предварительного просмотра нажмите кнопку . Кнопки служат для перемещения по страницам, в случае если заказ размещается на нескольких страницах. Для списания материалов со склада откройте нужную форму, воспользовавшись пунктами "Багеты", "Комплектующие" или "Разное" меню "Склад". Опишем процедуру списания со склада багета. Выберите пункт "Багеты" меню "Склад". Перед Вами откроется форма "Склад-Багеты":
Рисунок 7.23 - Форма "Склад-Багеты" Выберите багет, который нужно списать, воспользовавшись панелью "Состояние на складе". В нижней части формы на панели "Состояние в мастерской" показывается информация о текущем состоянии в "Мастерской" по выбранному материалу. Определившись с материалом, который необходимо списать, нажмите кнопку "Списать" , после чего отредактируйте поле ввода "Объем списания", а затем нажмите кнопку "Сохранить списание" . Аналогично, в случае необходимости, повторите вышеописанные действия с другими материалами. Операция списания комплектующих и разного аналогична списанию багета. В программе предусмотрены просмотр и печать пяти видов отчетов: 1) Остатки материалов в мастерской. Данный отчет позволяет просмотреть и распечатать информацию об остатках материалов в мастерской на текущий момент. 2) Прайс-лист.д.анный отчет позволяет распечатать информацию о розничных ценах на комплектующие и материалы в мастерской. 3) Сумма заказов за период… Данный отчет позволяет просмотреть и распечатать информацию о сумме стоимости заказов за период, определяемый пользователем. 4) Заказы, которые должны быть готовы к … Данный отчет позволяет просмотреть и распечатать информацию о заказах, которые должны быть готовы к дате, определяемой пользователем. 5) Продажи материалов за период… Данный отчет позволяет просмотреть и распечатать информацию об объемах продаж материалов за период, определяемый пользователем. Для того чтобы выполнить какой-либо отчет, воспользуйтесь соответствующим пунктом меню "Отчеты": Рисунок 7.24 - Выбор пункта меню "Отчеты" В случае выбора отчета, в котором необходимо указать дату, Вам будет предложен следующий диалог:
Рисунок 7.25 - Диалог выбора промежутка дат Требуется указать нужные даты, воспользовавшись соответствующими раскрывающимися списками, а затем нажать кнопку "Выполнить" . Для предотвращения потери данных, рекомендуется ежедневно копировать базу данных. Для этого воспользуйтесь командой "Архивация базы" меню "Файл": Рисунок 7.26 - Выбор пункта меню "Файл" В результате Вам будет предложен диалог для указания места копирования и задания имени файла базы данных: Рисунок 7.27 - Диалог сохранения архива БД Рекомендуется создать на одном из дисков папку "Архив" и ежедневно копировать туда базу данных под именем соответствующим текущей дате. 8. Технико-экономическое обоснование В настоящее время особо актуальна проблема автоматизации рабочих мест на всех уровнях производственного процесса. Процесс автоматизации в первую очередь является неотъемлемым признаком развития предприятия работающего в любой сфере бизнеса. Так, например, в нашем случае мы автоматизируем процесс принятия и оформления заказа, а также ведение складского учета в багетной мастерской с целью повышения эффективности работы и максимизации получаемой прибыли. Это производится путем внедрения автоматизированной системы "Багетная мастерская", облегчающей процессы приема и расчета стоимости заказов, а также ведение складского учета расходуемых комплектующих и материалов. Разрабатываемая автоматизированная система предназначена для использования в багетной мастерской. Она представляет собой систему для автоматизированного расчета и оформления заказов, а также ведения складского учета расходуемых комплектующих и материалов. Цель технико-экономического обоснования разработки автоматизированной системы, заключается в расчете экономического эффекта от ее внедрения. От того, насколько точно рассчитан экономический эффект от внедрения рассматриваемой системы, во многом зависит ее будущий успех. При этом важно правильно оценить ожидаемый денежный поток и рассчитать основные показатели эффективности проекта. 8.1 Расчет стоимости разработки автоматизированной системы Для анализа затрат, связанных с разработкой рассматриваемой системы, необходимо провести расчёт себестоимости разработки. Этот расчет будет сделан на основе имеющихся исходных данных, приведенных в таблице 8.1. Таблица 8.1 - Исходные данные
Себестоимость разработки автоматизированной системы определяется по формуле: ССОЗД = МЗ + ФЗП + ЗЭЛ + ЗАР + АКТС + ЗАР П + НР, тенге (8.1) где МЗ - материальные затраты, тенге; ФЗП - зарплата работников, тенге; ЗЭЛ - расходы на электроэнергию, тенге; ЗАР - затраты на арендуемое оборудование, тенге; АКТС - амортизационные отчисления на покупное оборудование и программное обеспечение, тенге; ЗАР П - затраты на арендуемое помещение, тенге; HP - накладные расходы, тенге; Материальные затраты рассчитываются по формуле: МЗ = КТДР + 3Д, тенге (8.2) где КТДР - канцелярские товары, тенге; 3Д - затраты на дискеты, тенге; МЗ = 1700 + 300 = 2000 тенге. Фонд заработной платы рассчитывается по формуле: ФЗП = (ЗП + ОЗП) ·ТЗ·n, тенге (8.3) где ЗП - ежемесячная оплата труда работника, тенге; ОЗП - отчисления с заработной платы (социальный налог, социальное страхование), тенге; ТЗ - время на решение задачи, месяц; n - число задействованных работников. Отчисления с заработной платы рассчитываются по формуле: ОЗП = ССТР + СН (8.4) где ССТР - социальное страхование, тенге; СН - социальный налог, тенге. Социальный налог и социальные отчисления удерживаются с работодателя, а обязательные пенсионные отчисления и подоходный налог непосредственно с работника. Поэтому необходимо рассчитать только расходы, которые несет работодатель. Социальный налог рассчитывается следующим образом. Определяем доходы, облагаемые социальным налогом, 28000 - 2800 = 25200 тенге (обязательный пенсионный взнос составляет 10% от оклада, то есть 2800 тенге). Согласно Правилам исчисления социального налога если физическое лицо поступило на работу в марте текущего года и до этого нигде не работало, то налоговый год для такого работника будет составлять 10 месяцев. В этом случае коэффициент перерасчета будет представлять собой отношение цифры 10 к количеству месяцев, за которое определяется расчетная сумма облагаемого налогом дохода. Тогда коэффициент перерасчета составит 10/1=10. В этом случае 25200 · 10 = 252000 тенге. Далее расчет осуществляется согласно ст.317 Налогового кодекса РК (таблица 8.2). Таблица 8.2 - Таблица по исчислению социального налога
196560 · 0,2 + (252000 - 185400) · 0,15 = 39312 + 9990 = 49302 тенге. Делим полученное число на коэффициент перерасчета, необходимо учесть, что сумма социального налога за предыдущие месяцы года равна 0: 49302/10 - 0 = 4930,2 тенге. Социальные отчисления составляют 2% от дохода работника: ССТР = 25200 · 0,02 = 504 тенге. Социальный налог уменьшается на размер социальных отчислений, исчисленных в соответствии с законодательным актом Республики Казахстан об обязательном социальном страховании. Таким образом, сумма социального налога к уплате и отражению в декларации равна: СН = 4930,2 - 504 = 4426,2 тенге. ОЗП = 4426,2 + 504 = 4930,2 тенге, ФЗП = (28000 + 4930,2) · 1 · 1 = 32930,2 тенге. Затраты на арендуемое оборудование: ЗАР = САР ·ТАР (8.5) где САР - стоимость аренды КТС в сутки; ТАР - количество суток работы (включая выходные дни). КТС арендуется с 01.03.2006 - 31.03.2007, в данном периоде количество дней равно 31. ТАР = 31 суток ЗАР = 500·31 = 15500 тенге. Амортизационные отчисления на покупное оборудование и программное обеспечение не ведутся, так как КТС берется в аренду. Таким образом затраты на амортизацию КТС, АКТС = 0 тенге. Затраты на арендуемое помещение: ЗАР П = ПАР П · САР П ·МАР П (8.6) где ПАР П - площадь арендуемого помещения, кв. м; САР П - стоимость аренды 1 кв. м помещения, в месяц; МАР П - количество месяцев работы. ЗАР П = 15·1500·1 = 22500 тенге. Затраты на электроэнергию и отопление не учитываются, так как они входят в стоимость аренды помещения. Накладные расходы отсутствуют. ССОЗД = 2000 + 32930,2 + 0 + 15500 + 0 + 22500 + 0 = 72930,2 тенге. 8.2 Единовременные затраты Единовременные затраты будут состоять из затрат на выпуск дисков и рекламу в сети Интернет. Для успешного ведения бизнеса необходимо продвигать разрабатываемый программный продукт на рынке. Для этого требуется разместить рекламу ПО в сети Интернет на различных сайтах посвященных ПО для компьютеров. Стоимость размещения рекламы на веб-сайтах составляют в среднем 5000 тенге за одну публикацию. Эти затраты войдут в единовременные затраты (таблица 8.3). СЗР=5000 тенге. Таблица 8.3 - Единовременные затраты
СЕД = 102930,2 тенге 8.3 Расчет экономической эффективности Для вычисления экономической эффективности необходимо определить: является ли программа коммерческим продуктом или сфера ее применения ограничена предприятием заказчиком. В нашей программе будут заинтересованы владельцы средних и мелких фирм, сфера деятельности которых связана с изготовлением рам для картин, фотографий, рисунков, гобеленов, вышивок и т.п. Это обусловлено тем, что владельцы этих фирм понимают, то насколько важно внедрение средств автоматизации по возможности на всех стадиях производственного цикла. Рассчитаем себестоимость системы: минимальная стоимость одной копии аналогичных продуктов составляет в среднем 8000 тенге. Система будет распространяться в странах СНГ. В связи с тем, что круг потенциальных пользователей системы ограничен ее спецификой (система может использоваться только в багетных мастерских), будем предполагать, что число ее покупателей составит около 100 человек. Поэтому себестоимость одной копии системы составит: СС=С/n, тенге, (8.7) где n - количество человек, которые купят систему. СС=72930,2/100=729,3 тенге Исходя из себестоимости, установим оптовую цену на систему равную 2000 тенге за одну копию. Предположим, что 100 человек будут равномерно покупать систему в течение года тогда, за один месяц систему купят 8 человек. Рассчитаем доход за месяц: Д= (Ц-СС) *n, тенге/мес, (8.8) где n - количество человек, которые купят систему за месяц; Ц - оптовая цена системы. Д= (2000-729,3) *8 = 10165,6 тенге Рассчитаем экономическую эффективность Э= ( (Ц-СС) /З) *100%,%, (8.9) где Э - экономическая эффективность,%; З - себестоимость разработки автоматизированной системы. Э= ( (2000-729,3) / 72930,2) *100%=1,74%. Получается, что экономическая эффективность составляет 1,74% в месяц. Срок окупаемости - это время, за которое окупятся единовременные затраты. Срок окупаемости рассчитывается по формуле: ОТ = ЗЕД / Д, месяц, (8.10) где ЗЕД - единовременные затраты, Д - доход. ОТ = 102930,2/10165,6 = 10 месяцев. Срок окупаемости составит 10 месяцев. 9. Промышленная экология 9.1 Экология как наука Наука, изучающая условия существования живых организмов, их взаимосвязь между собой и средой, в которой они обитают, называется экологией. Слово ‘экология ’ происходит от греческих слов ‘oicos’ - дом и ‘logos’ - наука. Этот термин был впервые использован в 1866 году. Как научная дисциплина экология имеет более чем вековую историю. Ее основы можно найти в трудах многих выдающихся мыслителей прошлого века. Однако систематические экологические исследования были начаты только в начале двадцатого столетия. Наряду с изучением экологии животных, растений, микроорганизмов и их сообществ за последние годы все больше и больше внимание ученых привлекает экология человека. Это и понятно, потому что в современных условиях важнейшую роль среди экологических факторов играет деятельность, т.е. антропогенные факторы, которые все заметнее приводят к изменению природы как среды обитания других видов или непосредственно сказываются на их существовании. Поэтому не учитывать роль человека и человеческого общества в существовании биогеоценозов (экосистем) нельзя [18]. 9.2 Экологические проблемы научно-технического прогресса Современный мир отличается необычайной сложностью и противоречивостью событий, он пронизан противоборствующими тенденциями, полон сложнейших альтернатив, тревог и надежд. Конец XX века характеризуется мощным рывком в развитии научно-технического прогресса, ростом социальных противоречий, резким демографическим взрывом, ухудшением состояния окружающей человека природной среды. Поистине наша планета никогда ранее не подвергалась таким физическим и политическим перегрузкам, какие она испытывает на рубеже XX - XXI веков. Человек никогда ранее не взимал с природы столько дани и не оказывался столь уязвимым перед мощью, которую сам же создал. В век научно-технического прогресса и промышленного подъема остро встал вопрос об усилении воздействия человека на природу. В отличие от животного, лишь приспосабливающегося к окружающей среде в процессе биологической эволюции, человек сознательно и активно изменяет ее для удовлетворения своих потребностей. Воздействие человека на природу обычно связано со стремлением достигнуть какой-либо цели. Однако они не всегда совпадают с возможностями биосферы. Воздействие человека на природу тем и отличается от воздействия на нее животного тем, что деятельность первого переходит ту грань, когда сохраняется биологическое равновесие [19]. Охрана окружающей среды - одна из насущных задач человечества. Научно-техническая революция, ставшая возможной в результате великих открытий в биологии, физике, химии и других науках, охватила во второй половине ХХ в. многие страны мира. Она намного расширяет возможности интенсивного использования природных ресурсов, необходимых для дальнейшего развития производственных сил, удовлетворения материальных и духовных потребностей общества. Однако блага, которые она принесла людям, сопровождались, к сожалению, и серьезными теневыми явлениями. Охрана окружающей среды и рациональное использование ее ресурсов в условиях развития научно-технической революции и бурного роста промышленного производства стала одной из актуальнейших проблем современности. Под "окружающей средой" принято понимать целостную систему взаимосвязанных природных и антропогенных объектов и явлений, в которой протекают труд, быт и отдых людей. Понятие "окружающая среда" включает социальные, природные и искусственно создаваемые физические, химические и биологические факторы, т.е. все то, что прямо или косвенно воздействует на жизнь и деятельность человека [17,18]. Проблема защиты окружающей среды - одна из важнейших задач современности. Выбросы промышленных предприятий, энергетических систем и транспорта в атмосферу, водоемы и недра на современном этапе развития достигли таких размеров, что в ряде районов земного шара, особенно в крупных промышленных центрах, уровни загрязнений существенно превышают допустимые санитарные нормы. Множество разработанных во второй половине ХХ в. технологических процессов и появление новых видов продукции, особенно в химической промышленности, привели не только к увеличению загрязнений, но и к существенному увеличению числа токсичных примесей, поступающих в окружающую среду. Вредные выбросы промышленных предприятий и других источников загрязнения оказывают отрицательное воздействие не только на окружающую среду, но и в ряде случаев значительно влияют на процесс эксплуатации технических средств. Взаимодействие человека и природы - одна из актуальнейших проблем современности. В периодической печати, в передачах радио и телевидения, в фундаментальных исследованиях ученых появляется все больше материалов, свидетельствующих о том, что загрязнение атмосферы, почвы, воды, наступление общества на природу приводит довольно часто и весьма трагическим результатам. В охране окружающей среды важную роль играют службы контроля качества окружающей среды, призванные вести систематизированные наблюдения за состоянием атмосферы, воды, и почв для получения фактических уровней загрязнения окружающей среды. Полученная информация о загрязнениях позволяет быстро выявлять причины повышения концентраций вредных веществ в окружающей среде и активно их устранять. Проблема охраны окружающей среды - комплексная проблема. Планируя дальнейшее развитие индустриального производства, необходимо оценивать эффективность его развития не только с позиций интересов данного предприятия или отрасли, но и с позиций интересов всего общества, в том числе населения каждого региона. Комплексный характер проблемы охраны окружающей среды определяется сложностью системы, состоящей из природы, общества и производства. Оптимальное развитие этой системы невозможно без комплексного учета социальных, экологических, технических, экологических, правовых и международных аспектов проблемы. Экологические исследования, показали, что всевозрастающее разрушительное воздействие антропогенных факторов на окружающую среду привело ее на грань кризиса. Среди различных составляющих экологического кризиса (истощение сырьевых ресурсов, нехватка чистой пресной воды, возможные климатические катастрофы) наиболее угрожающий характер приняла проблема загрязнения незаменимых природных ресурсов - воздуха, воды и почвы - отходами промышленности и транспорта. Огромное воздействие на окружающую среду оказывает и ионизирующее излучение, широко распространенное практически во всех сферах деятельности человека. 9.3 Защита окружающей среды от вредного воздействия ионизирующих излучений Оценка степени опасности условий труда при работе с источниками ионизирующего излучения осуществляется с помощью ряда показателей, которые не должны превышать нормативных значений. В качестве таких показателей приняты единицы, которые с достаточной степенью точности позволяют производить однозначную оценку физических параметров поля излучения и возможных биологических последствий воздействия излучения. Сфера использования того или иного показателя зависит от характера выполняемых работ с источниками ионизирующих излучений. При работе с закрытым источником (условия внешнего облучения), т.е. с радиоактивным источником, устройство которого исключает попадание радиоактивных веществ в окружающую среду, оценку степени опасности условий труда производят по величинам эквивалентной дозы излучения или ее мощности. Разные виды излучений сопровождаются высвобождением разного количества энергии и обладают разной проникающей способностью, поэтому они оказывают неодинаковое воздействие на ткани живого организма. Любой источник излучения характеризуется: видом излучения; геометрией источника (формой и размерами); мощностью и ее распределением по источнику; энергетическим составом; угловым распределением изучения. На практике источники встречаются в неограниченном многообразии указанных характеристик. Наиболее распространенные источники ионизирующих изучений - естественные и искусственные радиоактивные нуклиды (а их сейчас насчитывается около 2000) - являются источниками a-, b - и g-излучений [15]. Характерной особенностью этих изучений при воздействии их на живой организм является прямая или косвенная ионизация, поэтому они и называются ионизирующими излучениями. Альфа-излучение, которое представляет собой поток тяжелых частиц, состоящих их нейтронов и протонов, задерживается листом бумаги и практически не способно проникнуть через наружный слой кожи, образованный отмершими клетками. Поэтому оно не представляет опасности до тех пор, пока радиоактивные вещества, испускающие a-частицы, не попадут внутрь организма через открытую рану, с пищей или вдыхаемым воздухом. Тогда они становятся чрезвычайно опасными. Положительно заряженные ядра гелия (a-частицы) обычно испускаются радиоактивными нуклидами с большим массовым числом (так называемыми тяжёлыми ядрами). За небольшими исключениями энергия a-частиц лежит в пределах от 4 до 10 МэВ. В этой области основным видом потерь энергии при взаимодействии их с веществом являются ионизационные потери на упругие столкновения со связанными электронами атомов среды. a-частицы обладают очень большой ионизирующей способностью, и поэтому теряют свою энергию на поглощение в сравнительно тонких слоях защиты. Ионизационные потери заряженных частиц пропорциональны числу электронов в 1 см3 поглотителя и обратно пропорциональны энергии. В отличие от γ-квантов моноэнергетические α-частицы не ослабляются в поглотителе по экспоненциальному закону. Защита от внешних потоков этого вида излучений не представляет проблемы. Слой воздуха в 10 см, тонкая фольга, лист пластиката или стекла, хирургические перчатки, одежда полностью экранируют α-частицы. Бета-излучение обладает большей проникающей способностью: оно проходит в ткани организма на глубину один-два сантиметра. β-частицы испускаются при самопроизвольном превращении нестабильного ядра (Z) в ядро-изобар с зарядом Z+1. В процессе β-распада испускаются моноэнергетические электроны. Поскольку β-переходы происходят на различные возбуждённые состояния конечного ядра и, кроме того, часть своей энергии они теряют в результате взаимодействия с электронными оболочками собственного и соседних атомов, их спектр энергий оказывается непрерывным. Для большинства радионуклидов максимальная энергия не превышает 5 МэВ. При этом средняя энергия приблизительно равна 1/3 максимальной. Хотя проникающая способность β-частиц значительно больше, чем a-частиц, всё же здесь нет проблемы для защиты. Несколько миллиметров алюминия, плексигласа или стекла, а также одежда обычно полностью экранируют поток β-частиц. При прохождении через вещество β-частицы теряют свою энергию на ионизационные и радиационные потери. Радиационные потери приводят к образованию тормозного или рентгеновского излучения. Рентгеновское излучение требует усиленной защиты [15,17]. Проникающая способность гамма-излучения, которое распространяется со скоростью света, очень велика: его может задержать лишь толстая свинцовая или бетонная плита. Повреждений, вызванных в живом организме, будет тем больше, чем больше энергии оно передаст тканям. Количество такой переданной организму энергии называется дозой. Дозу излучения организм может получить от любого радионуклида или их смеси независимо от того, находятся они вне организма или внутри его (в результате попадания с пищей, воздухом или водой). Дозы можно рассчитывать по-разному. При этом учитывается размер облученного участка, чувствительность различных частей тела организма, срок распада радионуклидов, которые распадаются медленно и останутся радиоактивными и в отдаленном будущем. Действие ионизирующего излучения в определенных дозах вызывает эффекты, которые могут стать явными у самого облученного лица или проявиться у его потомства. То есть воздействие ионизирующих излучений на организм приводит к последствиям соматической и генетической природы. Соматические эффекты могут быть ранними (возникающими в период от нескольких минут до 60 суток после облучения) и отдаленными (соматико-стохастическими: увеличение частоты злокачественных новообразований, увеличение частоты катаракт, общее неспецифическое сокращение жизни). В настоящее время нет единой точки зрения ученых в толковании зависимости функции доза - эффект. Если эта функция не имеет порога, то рассматриваются, скорее, не сами эффекты, а вероятность их проявления. Тогда функцию называют стохастической. Если вредные эффекты излучения выявляются, начиная с какого-то определенного порога, то функцию называют нестохастической. При дозах, характерных для практики радиационной защиты, генетические эффекты рассматриваются как стохастические. В то же время сравнительно низком диапазоне доз основной соматический эффект - карциногенез - также принято относить к стохастическим эффектам. Нестохастические соматические эффекты характерны для отдельных органов и тканей: они проявляются в виде помутнения хрусталика глаза, незлокачественных повреждений кожи (эритемы), подавления функции клеток костного мозга, вызывающего гематологические нарушения, повреждения клеток гонад. Внешнее облучение - воздействие на организм ионизирующих излучений от внешних по отношению к нему источников излучения. Внутреннее облучение - воздействие на организм ионизирующих излучений радиоактивных веществ, находящихся внутри организма. Естественный фон излучения - ионизирующее излучение, состоящее из космического излучения и излучения естественно распределенных природных радиоактивных веществ (на поверхности земли, в приземной атмосфере в продуктах питания, в воде в организме человека и другое) [18, 19]. Персонал (профессиональные работники) - лица, которые постоянно или временно работают непосредственно с источниками ионизирующих излучений. К таким лицам также относятся операторы и пользователи ЭВМ. Нормы по искусственным источникам радиации приведены в таблице 9.1. Таблица 9.1 - Искусственные источники радиации
Предельно допустимая доза (ПДД) - наибольшее значение индивидуальной эквивалентной дозы за год, которое при равномерном воздействии в течение 50 лет не вызовет в состоянии здоровья персонала неблагоприятных изменений, обнаруживаемых современными методами. Допустимые уровни - нормативные значения поступления радиоактивных веществ в организм, содержание радиоактивных веществ в организме, их концентрация в воде и в воздухе, мощности дозы, плотности потока и т.п., рассчитанные из значений основных дозовых пределов ПДД. В порядке убывания радиочуствительности устанавливаются три группы критических органов: 1 группа - все тело, гонады и красный костный мозг; 2 группа - мышцы, щитовидная железа, жировая ткань, печень, почки, селезенка, желудочно-кишечный тракт, легкие, хрусталик глаза и другие органы, за исключением тех, которые относятся к 1-й и 3-й группам; 3 группа - кожный покров, костная ткань, кисти, предплечья, лодыжки и стопы. Контроль мощности доз g-излучения, а также плотности потоков нейтронов позволяет оценить эффективность применяемых защитных мероприятий, ориентировочно установить индивидуальные дозы обучения, оценить надежность используемых защитных средств [15, 19]. Основными задачами контроля являются: измерение дозы и потока нейтронов на рабочих местах; измерение дозы g-излучения и потоков нейтронов в смежных помещениях и прилегающей территории; измерение эффективности стационарных и передвижных защитных средств; установление контрольных уровней; установление радиационно-опасных зон при аварии. Для измерений мощности дозы g-излучения и плотности потоков нейтронов применяют различные дозиметры стационарного, переносного или носимого типов. Детекторами излучения служат ионизационные камеры, газоразрядные или сцинтилляционные счетчики. Стационарные приборы позволяют вести непрерывный контроль мощности доз во многих точках помещений, где проводятся работы с источниками ионизирующих излучений, и имеют большие диапазоны измерений. Наряду со стационарными приборами измерения мощности экспозиционных доз рентгеновского, g-излучений и потоков нейтронов осуществляют с помощью переносных дозиметров и радиометров, а также носимых дозиметров. Существуют следующие приборы контроля ДРГЗ-01, ДРГЗ-ОЗ, ДКС-05-, ДКС-04 и др. По мнению Международной комиссии по ионизационной защите “целью ионизационной защиты является обеспечение защиты от вредоносного воздействия ионизирующих излучений отдельных индивидуумов, их потомства, человечества в целом и в то же время создание соответствующих условий для необходимой практической деятельности человека, во время которой возможно воздействие ионизирующих излучений" [16]. Воздействие ионизирующих излучений на организм приводит к последствиям соматической и генетической природы. Соматические эффекты проявляются непосредственно у человека, подвергающегося облучению, а генетические - у его потомков. Соматические эффекты могут быть ранними (возникающими в период от нескольких минут до 60 суток после облучения) и отдаленными (соматико-стохастическими: увеличение частоты злокачественных новообразований, увеличение частоты катаракт, общее неспецифическое сокращение жизни). Конкретной целью ионизационной защиты является предупреждение вредных нестохастических эффектов и ограничение частоты соматико-стохастических эффектов до уровня, считающегося приемлемым. Нестохастические эффекты могут быть устранены установлением достаточно низкого предела эквивалентной дозы таким образом, чтобы минимальная доза, способная вызвать повреждения, не была достигнута в течение трудовой деятельности человека. Для ближайшего будущего разумный метод определения приемлемости риска при работе, связанной с источниками излучений, заключается в сравнении оценки этого риска с риском при работе в других областях деятельности, которые признаются минимально безопасными. Для оценки воздействия изучения применяют так называемый параметр риска R, равный средней индивидуальной вероятности смерти в результате облучения в дозе 10 мЗв. Между параметром риска и ожидаемым числом случаев смерти n существует простая связь: (9.1) Параметр риска в зависимости от типа отдаленных последствий колеблется в широких пределах. Параметр риска приведен в таблице 9.2. Таблица 9.2 - Параметр риска
По современным оценкам среднегодовая смертность от профессиональных причин, включая несчастные случаи на производствах, не превышает 104 случаев в год. Для реализации главной цепи радиационной защиты достижения и сохранения необходимых условий радиационной безопасности при всех видах деятельности, где предполагается облучение человека, - вводятся основные дозовые пределы. Используя их, рассчитываются производственные характеристики, такие, как предельно допустимые уровни внешних потоков ионизирующих изучений и допустимые концентрации радионуклидов в воде и воздухе. Материалы, располагаемые между источником излучения и зоной размещения персонала или оборудования для ослабления потоков ионизирующих излучений, называют защитой. Защиту от ионизирующих излучений классифицируют по: назначению; типу; компоновке; геометрии. Защита от ионизирующих изучений должна обеспечивать: а) допустимый уровень облучения обслуживающего установку персонала; б) допустимый уровень радиационных повреждений “изменение прочностных характеристик, разрушение органических соединений, радиолиз воды и другие” конструкционных и защитных материалов; в) допустимый уровень радиационного энерговыделения и температурного распределения в конструкционных и защитных материалах. В соответствии с этим защиту подразделяют соответственно на: биологическую; радиационную; тепловую. Радиационная и тепловая защиты, которые конструктивно часто бывают совмещены, необходимы только для мощных источников изучения ядерно-технических установок, таких, например, как ядерные реакторы. При работе с изотопными источниками нео6ходимость в радиационной и тепловой защите обычно не возникает. Защиты подразделяются на следующие типы: сплошная защита, целиком окружающая источники излучения; раздельная защита, когда наиболее мощные источники излучения окружает первичная защита (например, первичная защита активной зоны ядерного реактора), а между первичной и вторичной защитой имеются также источники излучения (например, система теплоносителя ядерного реактора); теневая защита устанавливается между источником излучения и защищаемой областью, размеры которой ограничиваются лишь “тенью", “отбрасываемой” защитой. Особенно часто такая защита используется при ограничении массы и габаритов; частичная защита - ослабленная защита для областей ограниченного доступа персонала, например, на судне с реактором в качестве энергетической установки частичная защита может осуществляться в направлении дна. По компоновке выделяют гомогенную (из одного защитного материала) и гетерогенную (из различных материалов) защиты. По форме внешней поверхности наиболее часто на практике встречается плоская, сферическая и цилиндрическая защиты. По распространению нейтронов в средах можно выделить следующие группы материалов: легкие водородосодержащие (водород, вода, полиэтилен, гидриды металлов) - эффективные замедлители нейтронов; легкие, не содержащие водород (углерода карбид бора), используемые при технических или технологических ограничениях на введение в защиту водородосодержащих сред; материалы, состоящие из элементов со средним атомным номером (бетон, породы, минералы); тяжелые материалы (железо, свинец, молибден, вольфрам, титан) для снижения потоков g-квантов (улучшают свойства защиты от быстрых нейтронов благодаря высоким сечениям неупругого рассеяния этих элементов); металловодородосодержащие среды. Водород как материал защиты не представляет практического интереса, но как элемент он является хорошим замедлителем нейтронов и главным компонентом в большинстве защит от нейтронов. Барьерная защита из водорода обладает наилучшими защитными свойствами от нейтронов, отнесенными к единице массы. Вода - это наиболее часто используемый в защите водородосодержащий материал. Это обусловлено высокой ядерной плотностью водорода в воде, невысокой стоимостью, легкодоступностью, способностью заполнять все отведенное для нее пространство без образования щелей, пустот и раковин в защите. Характеристики ослабления нейтронного излучения в воде рассчитаны и измерены достаточно полно [17,18]. 10. Охрана труда и техника безопасности Охрана труда - это система законодательных актов, социально-экономических, технических, гигиенических и лечебно-профилактических мероприятий и средств, обеспечивающих безопасность, сохранения здоровья и работоспособность человека в процессе труда. Всё многообразие законодательных актов, мероприятий и средств, включённых в понятие охраны труда, направленно на создание таких условий труда, при которых исключено воздействие на работающих опасных и вредных производственных факторов. Опасный производственный фактор - это фактор, воздействие которого на работающего в определённых условиях приводит к травме или другому внезапному резкому ухудшению здоровья. К резкому ухудшению здоровья можно отнести: отравление, облучение, тепловой удар. Вредный производственный фактор - фактор, воздействие которого на работающего в определённых условиях приводит к заболеванию или снижению работоспособности. В зависимости от уровня и продолжительности воздействия, вредный производственный фактор может стать опасным. Условия труда - совокупность факторов производственной среды, оказывающих влияние на здоровье и работоспособность человека. Система противопожарной защиты - совокупность организационных мероприятий и технических средств, направленных на предотвращение воздействия на людей опасных факторов пожара и ограничение материального ущерба от него [21]. Согласно гл.3 ст.16 закона РК "О безопасности и охране труда" обеспечение безопасных условий труда возлагается на работодателей. Они в свою очередь обязаны проводить обучение, инструктирование и проверку знаний по вопросам безопасности и охраны труда, а также внедрение современных средств техники безопасности, предупреждающих производственный травматизм, создание санитарно-гигиенические условий, предотвращающих возникновение травматизма и профессиональных заболеваний [20]. Согласно ст.8 п.7 Закона "О труде в Республике Казахстан" работодатель обязан обеспечить работникам условия труда в соответствии с законодательством о труде, индивидуальным трудовым, коллективным договорами. На каждом предприятии должен производиться анализ опасных и вредных факторов условий труда и разрабатываться мероприятия по их устранению [24]. 10.1 Анализ опасных и вредных производственных факторов Работа с компьютером характеризуется значительным умственным напряжением и нервно-эмоциональной нагрузкой операторов, высокой напряженностью зрительной работы и достаточно большой нагрузкой на мышцы рук при работе с клавиатурой ЭВМ. Большое значение имеет рациональная конструкция и расположение элементов рабочего места, что важно для поддержания оптимальной рабочей позы человека-оператора. В процессе работы с компьютером необходимо соблюдать правильный режим труда и отдыха. В противном случае у персонала отмечаются значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи и руках. К опасным и вредным производственным факторам, связанным с применением вычислительной техники, относятся: микроклимат; освещенность рабочего места оператора ЭВМ; пожарная безопасность; шум оборудования; поражение электрическим током; эргономичность рабочего места оператора [23]. Операторы ПЭВМ, работники вычислительных центров (ВЦ) постоянно сталкиваются с воздействием таких физически опасных и вредных производственных факторов, как повышенный уровень шума, повышенная температура внешней среды, отсутствие или недостаток естественного света, недостаточная освещенность рабочей зоны, блеклость экрана дисплея, электрический ток, повышенный уровень статического электричества и др. Электрические установки, к которым относится практически все оборудование ПЭВМ, представляют для человека большую потенциальную опасность. В процессе эксплуатации возможен пробой токопроводящих элементов и подача напряжения на корпусные части ПЭВМ. Повышенный уровень статического электричества возникает вследствие накопления статических зарядов на экранах мониторов, других деталях компьютеров и принтеров, находящихся в рассматриваемом помещении. На рабочем месте из всего оборудования металлическим является лишь корпус системного блока компьютера, но здесь используются системные блоки, отвечающие стандарту фирмы IBМ, в которых кроме рабочей изоляции предусмотрен элемент для заземления и провод с заземляющей жилой для присоединения к источнику питания. Опасное и вредное воздействие на людей электрического тока, электрической дуги и электромагнитных полей проявляется в виде электротравм и профессиональных заболеваний. Рассмотрим основные причины поражения человека электрическим током на рабочем месте: прикосновение к металлическим нетоковедущим частям (корпусу, периферии компьютера), которые могут оказаться под напряжением в результате повреждения изоляции; нерегламентированное использование электрических приборов; отсутствие инструктажа сотрудников по правилам электробезопасности. Источниками электромагнитного излучения являются мониторы с электронно-лучевой трубкой. Наиболее опасными являются источники слабого электромагнитного излучения, которое действует в течение длительного промежутка времени. Проблема электромагнитного излучения исходящего от персональных компьютеров встаёт достаточно остро ввиду нескольких причин: компьютер имеет два источника излучения (монитор и системный блок); длительное время воздействия. Кроме этого существует вторичный фактор, который усугубляет ситуацию, наиболее сильным источником электромагнитного излучения является монитор, особенно его боковые и задние стенки, т.к они не имеют специального защитного покрытия, которое есть у лицевой части экрана. Многие сотрудники вычислительных центров связаны с воздействием таких психофизиологических факторов, как умственное перенапряжение, перенапряжение зрительных и слуховых анализаторов, монотонность труда, эмоциональные перегрузки. Воздействие указанных неблагоприятных факторов приводит к снижению работоспособности, вызываемое развивающимся утомлением. Помещения с ЭВМ, их размеры должны в первую очередь соответствовать количеству работающих и размещаемому в них комплексу технических средств. В них предусматривают соответствующие параметры температуры, освещения, чистоты воздуха, обеспечивают изоляцию от производственных шумов и т.д. [24]. Пожары представляют особую опасность, так как сопряжены с большими человеческими и материальными потерями. Электронные устройства, очень чувствительны к повышению температуры, для них могут быть опасны даже небольшие пожары и возгорания, которые приводят к большим убыткам, так как на незначительных площадях сосредоточены большие материальные ценности. Аудитория по пожарной опасности строительных конструкций относится к категории "малопожароопасное", поскольку здесь присутствуют только трудносгораемые вещества, которые при взаимодействии с огнем не способны к взрыву. Горючими компонентами являются: оконные рамы, полы, мебель, изоляция силовых кабелей, а также радиотехнические детали и изоляция соединительных кабелей. В аудитории источниками воспламенения могут быть: неисправное электрооборудование, неисправности в электропроводке, электрических розетках и выключателях. Для исключения возникновения пожара по этим причинам необходимо вовремя выявлять и устранять неисправности, проводить плановый осмотр и своевременно устранять все неисправности; неисправные электроприборы. Необходимые меры для исключения пожара включают в себя своевременный ремонт электроприборов, качественное исправление поломок, не использование неисправных электроприборов; попадание в здание молнии. В летний период во время грозы возможно попадание молнии вследствие чего возможен пожар. Во избежание этого рекомендуется установить на крыше здания молниеотвод; несоблюдение мер пожарной безопасности может привести к пожару. Аудитория № 422 представляет собой комнату размерами: длина 6м, ширина 4м, высота 3,2м (см. рисунок 10.1). Дверь 1 имеет размер: ширина 0,8 м и высота 2 м, открывается наружу. В комнате имеется одно окно 6 с размерами: 1,5 м и 2,5 м. Под окном установлен радиатор отопления не прикрытый деревянной решёткой. Стены комнаты и потолок окрашены водоэмульсионной краской, на полу линолеум.
Рисунок 10.1 - Учебная аудитория 422 В аудитории имеется девять компьютерных столов 2, столы не приспособлены под компьютеры. При каждом столе находится обычный стул 7. Расстояния между стенами и столами 5см, что не соответствует СанПиН. Расстояние между соседними мониторами 1,2 м, что соответствует СанПиН. Компьютеры имеют два вентилятора, расположенных в системном блоке, размер экрана монитора 17 дюймов. В стене имеется две розетки 3. Компьютеры имеют заземление, проведённое в специальном кабеле, лежащем на полу. Отсутствует защитное зануление и отключение. На потолке установлены два светильника ЛПО 36 с зеркальными решётками, имеющих по четыре люминесцентных лампы (7), которые обеспечивают необходимую освещенность в аудитории. Освещённость на горизонтальной поверхности стола низкая, что подвергает дополнительной нагрузке зрение учащихся. Температура в аудитории 22°С (допустимая 20-24°С), относительная влажность воздуха не превышает 75%, что соответствует СанПиН. Из-за отсутствия эффективной системы вентиляции, воздух в помещении в летний и зимний период часто бывает тяжелым. В рассматриваемой аудитории площадь равна 6∙4=24 м2, при количестве персональных компьютеров 9 шт. Это означает, что на один компьютер приходится 2,67 м2, что не соответствует СанПиН. На основе выше изложенного можно сделать вывод, что помещение не в полной мере соответствует требованиям техники безопасности и СанПиН. 10.2 Расчет уровня шума Уровень шума в помещениях с персональными компьютерами не должны превышать допустимого, регламентированного в ГОСТ 12.2 003-83 "Шум. Общие требования безопасности". Уровень шума в помещениях ВЦ не должен превышать 50дБ. Источниками шума в помещении ВЦ являются: два вентилятора системного блока компьютера, с уровнем шума каждого 34 дБ; жёсткий дик системного блока компьютера, с уровнем шума 31 дБ; необходимые разговоры между работниками, с уровнем шума, от каждого человека 55 дБ; шум с улицы от окна на 2-ом этаже, уровень шума 40 дБ. Определим уровень шума от одного персонального компьютера, (работают два вентилятора и жесткий диск). Уровень шума от двух вентиляторов определяется по формуле (3.10) [21]: LСУМ=L1+10∙lgn, (10.1) где L1 - уровень интенсивности звука одного источника, дБ; n - число источников; LСУМ=34+10∙lg2=37 дБ Рассмотри два вентилятора как один источник шума, и определим уровень шума с жёстким диском. Согласно формуле (3.11) [21] при одновременном действии двух источников с различными уровнями L1 и L2 суммарный уровень равен: LСУМ=L1+∆L, (10.2) где L1 - больший из двух суммируемых уровней, дБ; (2 вентилятора 37дБ); ∆L - добавка к L1, дБ; ∆L определяется по шкале для сложения уровней звукового давления, согласно которой необходимо определить разность уровней шума от разных источников, и по шкале сопоставить соответствующее значение ∆L. Разность уровней шума от вентилятора и жёсткого диска составляет 37-31=6 дБ. Тогда по шкале определим ∆L=0,98 дБ. Подставив данные в (10.1) определим суммарный уровень шума от одного вентилятора и жёсткого диска ПК: LСУМ=37+0,98=37,98 дБ. Определим суммарный общий уровень шума от работы ПК и разговоров людей в помещении, по формуле [21]: LСУМ ОБ=10 lg , (10.3) где Li - уровень интенсивности звука i-го источника шума; n - количество источников шума; Подставив в (10.3) значения уровней шума от 9-ти персональных компьютеров и 9-ти человек получим: LСУМ ОБ =10 lg (9∙100,1∙37,98 + 9∙100,1∙55 +100,1∙40) =63,1 дБ Полученное значение превышает допустимый уровень шума в помещениях ВЦ. Рекомендуемые меры для снижения уровня шума. Для снижения шума, создаваемого на рабочих местах внутренними источниками, следует: 1) Ослабить шум самих источников: установка жёстких дисков на звукопоглощающем основании, установка корпусов системных блоков обладающих повышенной звукоизоляцией. 2) Снизить эффект суммарного воздействия на рабочие места отраженных звуковых волн: отделать помещение звукопоглощающим материалом пенобетоном или пропитанным негорючим материалом пенопластом. 3) В ходе очередной модернизации парка вычислительных машин, при выборе комплекса технических средств, предпочтения следует отдавать ЭВМ с бесшумным охлаждением элементов системного блока. Уменьшение шума, проникающего в помещение извне, может быть достигнуто уплотнением по периметру притворов окон, развешивание на окнах занавесей из плотной ткани. 10.3 Мероприятия по снижению вредного воздействия опасных и вредных производственных факторов 10.3.1 Общие требования к ИТР и персоналу Основным организационным мероприятием является инструктаж и обучение безопасным методам труда, а так же проверка знаний правил безопасности и инструкций в соответствии с занимаемой должностью применительно к выполняемой работе. Проведение каждого вида инструктажа фиксируется в журнале инструктажа с указанием даты, вопросов, излагаемых в инструктаже, и подписями инструктора и инструктируемого. Планирование работ по ОТ выполняют на основе комплексного плана по ОТ. Также, для безопасной организации работы оператора проводится ряд мероприятий по защите от поражения электрическим током, по снижению шума в ВЦ, проводят организацию отопления и вентиляции. Высокий уровень работоспособности также обеспечивает правильно спроектированное и выполненное освещение. 10.3.2 Общие требования к оборудованию рабочего места Рабочие места сотрудников ВЦ должны быть оборудованы одноместными столами, предназначенными для работы с ПК. Рабочее место рекомендуется оборудовать подставкой для ног, имеющей ширину не менее 30 см, глубину не менее 40 см, регулировку по высоте в пределах 15 см и по углу наклона опорной поверхности подставки до 20 градусов. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 1 см. рабочее место рекомендуется оснастить легко перемещаемым пюпитром для документов. Клавиатуру следует располагать на специальной, желательно регулируемой по высоте рабочей поверхности, отделенной от основной столешницы, или на поверхности стола на расстоянии 10-30 см от края, обращенного к пользователю. Расстояние клавиатуры от монитора должно быть не менее 30 см [25]. Для снижения вредных излучений от дисплея необходимы следующие средства защиты: спектральные компьютерные очки; приэкранный защитный фильтр, не пропускающий основную часть вредных излучений; использование жидкокристаллических экранов. Для снижения зрительного напряжения рекомендуется для многоцветных дисплеев выбирать для знаков фона цвета с наиболее удаленными координатами цветности. Для текстовых сообщений и другой информации, требующей высокого разрешения, не рекомендуют применять воспроизведение на темном фоне изображений в цветах синего участка спектра. Конструкция монитора должна предусматривать наличие органов регулирования яркости и контрастности от минимального до максимального значений. В помещении должна находится таблица для индивидуального постоянного контроля остроты зрения, а в компьютере программа типа “Relax” для снятия усталости аккомодационных мышц. Для поддержания нормируемых значений естественного освещения необходимо содержать в чистоте стекла оконных рам. Должна производиться замена сгоревших ламп искусственного освещения сразу же после выхода их из строя. 10.3.3 Меры защиты от поражения электрическим током, электромагнитных полей, рентгеновского излучения и статического электричества При проведении работ с ПК в целях предупреждения электротравматизма очень важно строго выполнять и соблюдать соответствующие организационные и технические мероприятия. К организационным мероприятиям относят: инструктаж персонала по электробезопасности, надзор во время работы со стороны инженера по ТБ за соблюдением мер безопасности. Исключительно важное значение для предотвращения поражений электрическим током имеет правильная организация обслуживания действующих электроустановок ВЦ, проведение ремонтных, монтажных и профилактических работ. К работам должны привлекаться лица, имеющие допуск на обслуживание электроустановок до 1000 вольт. В ВЦ разрядные токи статического электричества чаще всего возникают при прикосновении обслуживающего персонала к любому из элементов ПЭВМ. Заземление является основной мерой защиты от статического электричества; его цель - устранение электрических зарядов на проводящих элементах оборудования [25]. Согласно подпункту 4.4.1 и приложению 10 [16], уровни электрических и магнитных полей не должны превышать допустимых значений. Соответственно подпункту 4.4.2 [16], мощность экспозиционной дозы рентгеновского излучения в любой точке на расстоянии 0,05 м от экрана и корпуса ПК должна быть не более 2,5 мкЗв/час. Рекомендациями по снижению вредного влияния являются: работа на предписанном расстоянии от ПК (70-80 см, клавиатура 30 см от экрана), соблюдение продолжительности времени работы и отдыха, использование материалов, не накапливающих электростатический потенциал, своевременное периодическое размагничивание мониторов, использование экранных фильтров, или установка жидкокристаллических мониторов. Для снижения величин возникающих зарядов статического электричества покрытие технологических полов следует выполнять из однослойного поливинилхлоридного антистатического линолеума марки АСН. Другим методом защиты является нейтрализация зарядов статического электричества ионизированным газом. В промышленности широко применяют радиоактивные нейтрализаторы. К общим мерам защиты от статического электричества можно отнести общее или местное увлажнение воздуха [23]. 10.3.4 Освещение Правильно спроектированное и выполненное освещение обеспечивает высокий уровень работоспособности, оказывает положительное психологическое воздействие на работающих, способствует повышению производительности труда. В машинных залах ВЦ рабочие места операторов, работающих с дисплеями, располагают подальше от окон и таким образом, чтобы оконные проемы находились сбоку. Если экран дисплея обращен к оконному проему, необходимы специальные экранирующие устройства. Окна рекомендуется снабжать светорассеивающими шторами, регулируемыми жалюзи или солнцезащитной пленкой с металлизированным покрытием. В тех случаях, когда одного естественного освещения в помещении недостаточно, устраивают совмещенное освещение. При этом дополнительное искусственное освещение применяют не только в темное, но и в светлое время суток. Для искусственного освещения помещений ВЦ следует использовать главным образом люминесцентные лампы, у которых высокая световая отдача (до 75 лм/Вт и более), продолжительный срок службы (до 10 000 ч), малая яркость светящейся поверхности, близкий к естественному спектральный состав излучаемого света, что обеспечивает хорошую цветопередачу. 10.3.5 Пожарная безопасность Для ликвидации пожаров в начальной стадии применяются внутренние пожарные водопроводы. Пожарные краны установлены в коридорах, на площадках лестничных клеток, у входов, т.е. в доступных и заметных местах. Пожарные краны располагают в нишах на высоте 1,35 м, где также находятся пожарный ствол с напорным рукавом из тканевого материала. Эвакуация людей проводится в соответствие с планом, приведенным на рисунке 10.2. При эвакуации стоит учесть, что дверь с кафедры металлическая двухстворчатая, причем вторая створка не открывается. Это может послужить дополнительным препятствием при срочной эвакуации учащихся.
Рисунок 10.2 - Схема эвакуации при пожаре Пожарная профилактика представляет собой комплекс организационных и технических мероприятий, направленных на обеспечение безопасности людей, на предотвращении пожара, ограничение его распространения, а также создание условий для успешного тушения пожара. Для профилактики пожара чрезвычайно важна правильная оценка пожароопасности здания, определение опасных факторов и обоснование способов и средств пожаропредупреждения и защиты. Для обнаружения начальной стадии загорания и оповещения службу пожарной охраны используют системы автоматической пожарной сигнализации. Одно из условий обеспечения пожарной безопасности - ликвидация возможных источников воспламенения. В целях предотвращения пожара необходимо проводить с персоналом, выполняющим какие-либо работы в аудитории, противопожарный инструктаж, на котором ознакомить работников с правилами противопожарной безопасности, а также обучить использованию первичных средств пожаротушения. 10.4 Техника безопасности при работе за ПК 1) Требования к безопасности перед началом работы Перед началом работы оператор обязан: осмотреть и привести рабочее место в порядок; отрегулировать освещённость на рабочем месте, убедиться в достаточности освещённости, отсутствии отражений на экране, отсутствии встречного светового потока; убедиться в наличии защитного заземления и подключения экранного проводника к корпусу процессора; убедиться в отсутствии дискет в дисководах системного блока компьютера; проверить правильность установки стола, стула, подставки для ног, положения оборудования, угла наклона экрана, положение клавиатуры и, при необходимости, произвести регулировку рабочего стола и кресла, а также расположение элементов компьютера в соответствии с требованиями эргономики и в целях исключения неудобных поз и длительных напряжений тела. При включении компьютера оператор обязан соблюдать следующую последовательность включения оборудования: включить блок питания; включить периферийные устройства; включить системный блок. Оператору запрещается приступать к работе при: обнаружении неисправности оборудования; отсутствии защитного заземления устройств ПЭВМ и ВДТ; отсутствии углекислотного или порошкового огнетушителя и аптечки первой помощи; нарушении гигиенических норм размещения ВДТ. 2) Требования безопасности во время работы Оператор во время работы обязан: в течение работы содержать в чистоте рабочее место; устройство "мышь" применять только при наличии специального коврика; при необходимости прекращения работы на некоторое время корректно закрыть все активные задачи; выполнять санитарные нормы и режимы работы и отдыха; соблюдать правила эксплуатации вычислительной техники в соответствии с инструкциями по эксплуатации; при работе с текстовой информацией выбирать наиболее физиологический режим представления чёрных символов на белом фоне; соблюдать установленные режимом рабочего времени регламентированные перерывы в работе и выполнять рекомендованные упражнения для глаз, шеи, рук, туловища, ног; соблюдать расстояние глаз до экрана в пределах 60-80 см. Во время работы оператору запрещается: касаться одновременно экрана и клавиатуры; прикасаться к задней панели системного блока при включённом питании; производить переключение разъёмов интерфейсных кабелей периферийных устройств при включённом питании; загромождать верхние панели устройств бумагами и посторонними предметами; производить отключение питания во время выполнения активной задачи; допускать попадание влаги на поверхность системного блока, монитора, рабочую поверхность клавиатуры, дисководов, принтеров и других устройств; производить самостоятельное вскрытие и ремонт оборудования. 3) Требования безопасности в аварийных ситуациях Оператор обязан: во всех случаях обнаружения обрыва проводов питания, неисправности заземления и других повреждений электрооборудования, появления запаха гари немедленно отключить питание и сообщить об аварийной ситуации инженеру по ТБ; при обнаружении человека, попавшего под напряжение, немедленно освободить его от действия тока путём отключения электропитания; при любых случаях сбоя в работе технического оборудования или программного обеспечения немедленно сообщать инженеру по ТБ; в случае появления рези в глазах, резком ухудшении видимости - невозможности сфокусировать взгляд или навести его на резкость, появлении боли в пальцах и кистях рук, усилении сердцебиения немедленно покинуть рабочее место и обратиться к врачу; при возгорании оборудования отключить питание и принять меры к тушению очага пожара при помощи огнетушителя, сообщить инженеру по ТБ. 4) Требования безопасности после окончания работы По окончании работы оператор обязан отключать оборудование вычислительной техники в следующем порядке: произвести закрытие всех активных задач; убедиться, что в дисководах нет дискет; выключить питание системного блока; выключить питание всех периферийных устройств; отключить блок питания. Оператор обязан осмотреть и привести в порядок рабочее место. 10.5 Режим труда При работе с персональным компьютером очень важную роль играет соблюдение правильного режима труда и отдыха. В противном случае у персонала отмечаются значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи и руках. В таблице 10.1 представлены сведения о регламентированных перерывах, которые необходимо делать при работе на компьютере, в зависимости от продолжительности рабочей смены, видов и категорий трудовой деятельности с ВДТ (видеодисплейный терминал) и ПЭВМ [16]. Таблица 10.1 - Время регламентированных перерывов при работе на ПК
Примечание. Время перерывов дано при соблюдении указанных Санитарных правил и норм. При несоответствии фактических условий труда требованиям Санитарных правил и норм время регламентированных перерывов следует увеличить на 30%. В соответствии с СанПиН все виды трудовой деятельности, связанные с использованием компьютера, разделяются на три группы: группа А: работа по считыванию информации с экрана ВДТ или ПЭВМ с предварительным запросом; группа Б: работа по вводу информации; группа В: творческая работа в режиме диалога с ЭВМ. Эффективность перерывов повышается при сочетании с производственной гимнастикой или организации специального помещения для отдыха персонала с удобной мягкой мебелью, аквариумом, зеленой зоной и т.п. Заключение В рамках данного дипломного проекта была разработана система автоматизированного учета для багетной мастерской. В разделе "Техническое задание" приведена спецификация разработанной системы, определен круг решаемых задач, а также определены требования к видам обеспечения. В разделе "Информационное обеспечение" разработана структура информационных потоков, концептуальная модель, логическая и физическая модели данных. В разделе "Лингвистическое обеспечение" были описаны внутренние языки системы, а также входной и выходной языки. В разделе "Программное обеспечение" были описаны общесистемное, базовое и прикладное программное обеспечение. В разделе "Техническое обеспечение" был описан и рекомендован комплекс технических средств. В разделе "Методическое обеспечение" приведено руководство по установке системы, и руководство пользователя. В разделе "Технико-экономическое обоснование" была определена себестоимость создания проекта и выполнен расчет экономической эффективности. В разделе "Промышленная экология" рассмотрены вопросы защиты окружающей среды от вредного воздействия ионизирующих излучений. В разделе "Охрана труда" был произведен анализ опасных и вредных производственных факторов, влияющих на здоровье человека работающего с ПК, и возможные меры по их устранению. После разработки всех видов обеспечения системы "Багетная мастерская", были проведены тестовые испытания, результаты которых показали ее работоспособность и удобство в эксплуатации. Использование системы, написанной на языке высокого уровня Object Pascal в среде Delphi 7.0, позволит повысить эффективность, производительность, а также упростить работу мастера и менеджера багетной мастерской, увеличив скорость принятия заказов, снижая время, затрачиваемое на расчет и оформление заказа, а также ведение складского учета. Список использованных источников
Приложение А Программный код главного модуля системы "Багетная мастерская" unit MainUnit; // Главный модуль var MainForm: TMainForm; implementation {$R *. dfm} // процедура динамически создаёт форму "Единицы измерения" procedure TMainForm. CreateALLEdIzmForm; Var MyEdIzmForm: TEdIzmForm; // переменная типа формы "Единицы измерения" begin MyEdIzmForm: =TEdIzmForm. Create (Owner); // создаём MyEdIzmForm. ShowModal; // показываем пользователю MyEdIzmForm. Free // уничтожаем переменную end; // Показать форму "Ед. изм." procedure TMainForm. EdIzmActExecute (Sender: TObject); begin CreateALLEdIzmForm; end; // процедура динамически создаёт форму "Клиенты" procedure TMainForm. CreateALLKlientsForm; Var MyKlientsForm: TKlientsForm; begin MyKlientsForm: =TKlientsForm. Create (Owner); MyKlientsForm. ShowModal; MyKlientsForm. Free; end; procedure TMainForm. KlientsActExecute (Sender: TObject); begin CreateALLKlientsForm; end; // процедура динамически создаёт форму "Материалы - багеты" // sCaption - заголовок окна, dsMain - главный набор данных, dsSlave - подчинённый набор днных procedure TMainForm. CreateBagetKomplektForm (sCaption: String; dsMain, dsSlave: TDataSource); Var MyBagetKomplektForm: TBagetKomplektForm; begin MyBagetKomplektForm: =TBagetKomplektForm. Create (Owner); // Устанавливаем свойства элементов формы MyBagetKomplektForm. DBGridSlave. DataSource: =dsSlave; MyBagetKomplektForm. DBNavigatorSlave. DataSource: =dsSlave; MyBagetKomplektForm. DBEditName. DataSource: =dsSlave; MyBagetKomplektForm. DBEditName. DataField: ='Komplekt_Name'; MyBagetKomplektForm. DBLComboBoxEdIzm. DataSource: =dsSlave; MyBagetKomplektForm. DBLComboBoxEdIzm. DataField: ='LEdIzm'; MyBagetKomplektForm. DBEditShirina. DataSource: =dsSlave; MyBagetKomplektForm. DBEditShirina. DataField: ='Komplekt_shirina'; MyBagetKomplektForm. DBEditVisota. DataSource: =dsSlave; MyBagetKomplektForm. DBEditVisota. DataField: ='Komplekt_visota'; MyBagetKomplektForm. DBListBoxMater. DataSource: =dsMain; MyBagetKomplektForm. DBListBoxMater. DataField: ='MaterKomlekt_Name'; MyBagetKomplektForm. DBNavigatorMain. DataSource: =dsMain; MyBagetKomplektForm. DBEditMaterName. DataSource: =dsMain; MyBagetKomplektForm. DBEditMaterName. DataField: ='MaterKomlekt_Name'; MyBagetKomplektForm. DBEditMaterKoef. DataSource: =dsMain; MyBagetKomplektForm. DBEditMaterKoef. DataField: ='MaterKomlekt_Koef'; MyBagetKomplektForm. Caption: =sCaption; MyBagetKomplektForm. ShowModal; MyBagetKomplektForm. Free; end; // процедура динамически создаёт форму "Материалы - Комплектующие" и "Материалы - Разное" // sCaption - заголовок окна, dsMain - главный набор данных, dsSlave - подчинённый набор днных procedure TMainForm. CreateAllKomplektForm (sCaption: String; dsMain, dsSlave: TDataSource); Var MyALLKomplektForm: TALLKomplektForm; begin MyALLKomplektForm: =TALLKomplektForm. Create (Owner); // Устанавливаем свойства элементов формы MyALLKomplektForm. DBGridSlave. DataSource: =dsSlave; MyALLKomplektForm. DBNavigatorSlave. DataSource: =dsSlave; MyALLKomplektForm. DBEditName. DataSource: =dsSlave; MyALLKomplektForm. DBEditName. DataField: ='Komplekt_Name'; MyALLKomplektForm. DBLComboBoxEdIzm. DataSource: =dsSlave; MyALLKomplektForm. DBLComboBoxEdIzm. DataField: ='LEdIzm'; MyALLKomplektForm. DBListBoxMater. DataSource: =dsMain; MyALLKomplektForm. DBListBoxMater. DataField: ='MaterKomlekt_Name'; MyALLKomplektForm. DBNavigatorMain. DataSource: =dsMain; MyALLKomplektForm. DBEditMaterName. DataSource: =dsMain; MyALLKomplektForm. DBEditMaterName. DataField: ='MaterKomlekt_Name'; MyALLKomplektForm. DBEditMaterKoef. DataSource: =dsMain; MyALLKomplektForm. DBEditMaterKoef. DataField: ='MaterKomlekt_Koef'; MyALLKomplektForm. Caption: =sCaption; MyALLKomplektForm. ShowModal; MyALLKomplektForm. Free; end; procedure TMainForm. ActMaterBagetExecute (Sender: TObject); begin CreateBagetKomplektForm ('Багеты', DM1. DSMaterBagets, DM1. DSBagets); end; procedure TMainForm. ActMaterKomplektExecute (Sender: TObject); begin CreateAllKomplektForm ('Комплектующие', DM1. DSMaterKomlekt, DM1. DSKomplekt); end; procedure TMainForm. ActMaterRaznoeExecute (Sender: TObject); begin CreateAllKomplektForm ('Разное', DM1. DSMaterRaznoe, DM1. DSRaznoe); end; // процедура динамически создаёт форму для мастерской // sCaption - заголовок окна, dsSlave - главный набор данных, Material - набор данных со всеми деталями // Например, со всеми багетами или со всеми комплектующими procedure TMainForm. CreateAllMasterskayaKomplektForm (sCaption: String; dsSlave, Material: TDataSource); Var MyMasterskaya_KomplektForm: TMasterskaya_KomplektForm; begin MyMasterskaya_KomplektForm: =TMasterskaya_KomplektForm. Create (Owner); // Устанавливаем свойства элементов формы MyMasterskaya_KomplektForm. DBGridSlave. DataSource: =dsSlave; MyMasterskaya_KomplektForm. DBNavigatorSlave. DataSource: =dsSlave; MyMasterskaya_KomplektForm. DBLComboBoxMaterKomplekt. DataSource: =dsSlave; MyMasterskaya_KomplektForm. DBLComboBoxMaterKomplekt. DataField: ='LMaterKomplekt'; MyMasterskaya_KomplektForm. DBLComboBoxKomplekt. DataSource: =dsSlave; MyMasterskaya_KomplektForm. DBLComboBoxKomplekt. DataField: ='LKomplekt'; MyMasterskaya_KomplektForm. DBEditRoznCena. DataSource: =dsSlave; MyMasterskaya_KomplektForm. DBEditRoznCena. DataField: ='Masterskaya_RoznCena'; MyMasterskaya_KomplektForm. DBEditKolVo. DataSource: =dsSlave; MyMasterskaya_KomplektForm. DBEditKolVo. DataField: ='Masterskaya_Kol-vo'; MyMasterskaya_KomplektForm. DBEditRashod. DataSource: =dsSlave; MyMasterskaya_KomplektForm. DBEditRashod. DataField: ='Masterskaya_Rashod'; MyMasterskaya_KomplektForm. DBEditOstatok. DataSource: =dsSlave; MyMasterskaya_KomplektForm. DBEditOstatok. DataField: ='CMasterskaya_Ostatok'; MyMasterskaya_KomplektForm. DBEditPrim. DataSource: =dsSlave; MyMasterskaya_KomplektForm. DBEditPrim. DataField: ='Masterskaya_Prim'; dsSlave. DataSet. Close; dsSlave. DataSet. Open; MyMasterskaya_KomplektForm. myMaterial: =Material; MyMasterskaya_KomplektForm. Caption: =sCaption; MyMasterskaya_KomplektForm. ShowModal; MyMasterskaya_KomplektForm. Free; end; procedure TMainForm. Act_Master_KomplektExecute (Sender: TObject); begin CreateAllMasterskayaKomplektForm ('Мастерская - Комплектующие', DM1. DSMasterskaya_Kompl, DM1. DSMaterKomlekt); end; procedure TMainForm. Act_Master_RaznoeExecute (Sender: TObject); begin CreateAllMasterskayaKomplektForm ('Мастерская - Разное', DM1. DSMasterskaya_Raznoe, DM1. DSMaterRaznoe); end; procedure TMainForm. Act_Master_BagetsExecute (Sender: TObject); begin CreateAllMasterskayaKomplektForm ('Мастерская - Багеты', DM1. DSMasterskaya_Bagets, DM1. DSMaterBagets); end; // процедура динамически создаёт форму для склада // sCaption - заголовок окна, dsSlave - главный набор данных, Material - набор данных со всеми деталями // Например, со всеми багетами или со всеми комплектующими // dsVspomog - набор данных для раскрыв. списка наимен. комплект. // MySqlZapros - SQL-запрос для dsVspomog procedure TMainForm. CreateAllSkladKomplektForm (sCaption: String; dsSlave, dsVspomog, Material: TDataSource; MySqlZapros: string); Var MySklad_KomplektForm: TSklad_KomplektForm; begin MySklad_KomplektForm: =TSklad_KomplektForm. Create (Owner); MySklad_KomplektForm. DBGridSlave. DataSource: =dsSlave; MySklad_KomplektForm. DBNavigatorSlave. DataSource: =dsSlave; MySklad_KomplektForm. DBLComboBoxMaterKomplekt. DataSource: =dsSlave; MySklad_KomplektForm. DBLComboBoxMaterKomplekt. DataField: ='LMaterKomplekt'; MySklad_KomplektForm. DBLComboBoxKomplekt. DataSource: =dsSlave; MySklad_KomplektForm. DBLComboBoxKomplekt. DataField: ='LKomplekt'; MySklad_KomplektForm. DBEditNumberNakl. DataSource: =dsSlave; MySklad_KomplektForm. DBEditNumberNakl. DataField: ='Sklad_NumberNakl'; MySklad_KomplektForm. DBEditData. DataSource: =dsSlave; MySklad_KomplektForm. DBEditData. DataField: ='Sklad_Data'; MySklad_KomplektForm. DBEditZakupCena. DataSource: =dsSlave; MySklad_KomplektForm. DBEditZakupCena. DataField: ='Sklad_ZakupCena'; MySklad_KomplektForm. DBEditKolVo. DataSource: =dsSlave; MySklad_KomplektForm. DBEditKolVo. DataField: ='Sklad_Kol-vo'; MySklad_KomplektForm. DBEditRashod. DataSource: =dsSlave; MySklad_KomplektForm. DBEditRashod. DataField: ='Sklad_Rashod'; MySklad_KomplektForm. DBEditOstatok. DataSource: =dsSlave; MySklad_KomplektForm. DBEditOstatok. DataField: ='CMasterskaya_Ostatok'; MySklad_KomplektForm. DBEditPrim. DataSource: =dsSlave; MySklad_KomplektForm. DBEditPrim. DataField: ='Sklad_Prim'; // обновим dsSlave. DataSet. Close; dsSlave. DataSet. Open; MySklad_KomplektForm. myMaterial: =Material; dsVspomog. DataSet. Close; TADOQuery (dsVspomog. DataSet). SQL. Clear; // очищаем TADOQuery (dsVspomog. DataSet). SQL. Add (MySqlZapros); // Добавляем текст запроса TADOQuery (dsVspomog. DataSet). FieldByName ('LKomplekt'). LookupDataSet: =TADOQuery (dsSlave. DataSet). FieldByName ('LKomplekt'). LookupDataSet; // устанавливаем параметры TADOQuery (dsVspomog. DataSet). Parameters. ParamByName ('Id_Komplekt_slave'). DataType: =ftInteger; TADOQuery (dsVspomog. DataSet). Parameters. ParamByName ('Id_Komplekt_slave'). Direction: =pdInput; TADOQuery (dsVspomog. DataSet). Parameters. ParamByName ('Id_Komplekt_slave'). Value: =0; dsVspomog. DataSet. Open; MySklad_KomplektForm. DBEditKomplekt. DataSource: =dsVspomog; MySklad_KomplektForm. DBEditKomplekt. DataField: ='LKomplekt'; MySklad_KomplektForm. DBEditVspomCena. DataSource: =dsVspomog; MySklad_KomplektForm. DBEditVspomCena. DataField: ='Masterskaya_RoznCena'; MySklad_KomplektForm. DBEditVspomKolVo. DataSource: =dsVspomog; MySklad_KomplektForm. DBEditVspomKolVo. DataField: ='Masterskaya_Kol-vo'; MySklad_KomplektForm. DBEditVspomRashod. DataSource: =dsVspomog; MySklad_KomplektForm. DBEditVspomRashod. DataField: ='Masterskaya_Rashod'; MySklad_KomplektForm. DBEditVspomOstatok. DataSource: =dsVspomog; MySklad_KomplektForm. DBEditVspomOstatok. DataField: ='CMasterskaya_Ostatok'; MySklad_KomplektForm. Caption: =sCaption; MySklad_KomplektForm. ShowModal; MySklad_KomplektForm. Free; end; procedure TMainForm. ActSkladKomplektExecute (Sender: TObject); begin CreateAllSkladKomplektForm ('Склад - Комплектующие', DM1. DSSklad_Kompl, Dm1. DSVspomog, DM1. DSMaterKomlekt, 'Select * From Masterskaya_Kompl_Table ' + 'Where Id_Komplekt_slave =: Id_Komplekt_slave'); end; procedure TMainForm. ActSkladRaznoeExecute (Sender: TObject); begin CreateAllSkladKomplektForm ('Склад - Разное', DM1. DSSklad_Raznoe, Dm1. DSVspomog, DM1. DSMaterRaznoe, 'Select * From Masterskaya_Raznoe_Table ' + 'Where Id_Komplekt_slave =: Id_Komplekt_slave'); end; procedure TMainForm. ActSkladBagetsExecute (Sender: TObject); begin CreateAllSkladKomplektForm ('Склад - Багеты', DM1. DSSklad_Bagets, Dm1. DSVspomog, DM1. DSMaterBagets, 'Select * From Masterskaya_Bagets_Table ' + 'Where Id_Komplekt_slave =: Id_Komplekt_slave'); end; procedure TMainForm. ExitActExecute (Sender: TObject); begin Close; end; // нажатие кнопки в поле ввода "Итого с работой" procedure TMainForm. DBEditItogSRabotoiKeyPress (Sender: TObject; var Key: Char); begin // допускаем ввод только положительных чисел DM1. CheckNumericKeyPress (Sender, Key); end; // нажатие кнопки в поле ввода "Итого без работы" procedure TMainForm. DBEditItogBezRabotiKeyPress (Sender: TObject; var Key: Char); begin DM1. CheckNumericKeyPress (Sender, Key); end; // нажатие кнопки в поле ввода "Итоговая скидка" procedure TMainForm. DBEditItog_ScidkaKeyPress (Sender: TObject; var Key: Char); begin DM1. CheckNumericKeyPress (Sender, Key); end; // нажатие кнопки в поле ввода "Итого к оплате" procedure TMainForm. DBEditItogoKOplateKeyPress (Sender: TObject; var Key: Char); begin DM1. CheckNumericKeyPress (Sender, Key); end; // происходит при показе формы procedure TMainForm. FormShow (Sender: TObject); begin // MainForm. Visible: =true; // AnimateWindow (Handle, 800, AW_CENTER or AW_SLIDE); // MainForm. Refresh; MainForm. SetFocus; DBGridMain. DataSource. DataSet. DisableControls; // отключить связанные с набором данных контролы DBGridMain. DataSource. DataSet. Refresh; // обновить DBGridMain. DataSource. DataSet. EnableControls; // проверить состояние, вкл. или выкл. нужные кнопки DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); // if (Act_Zak_Edit. Enabled=False) and (Act_Zak_Del. Enabled=False) then begin BitSave. Enabled: =False; BitCan. Enabled: =False; BitDel. Enabled: =False; BitEdit. Enabled: =False; end; if (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False) then begin BitSave. Enabled: =False; BitCan. Enabled: =False; end; // // if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False) then begin BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; BitIzd_Del. Enabled: =False; BitIzd_Edit. Enabled: =False; end; if (Act_Izd_Save. Enabled=False) and (Act_Izd_Cancel. Enabled=False) then begin BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; end; // end; // происходит при выходе из поля ввода "Дата приёма" procedure TMainForm. DBEditDataPriemaExit (Sender: TObject); Var MyDate: TDate; MyStr: string; begin MyDate: =Date (); // инициализируем Try MyStr: =TDBEdit (Sender). text; MyDate: =StrToDate (MyStr); Except on EConvertError do // если ошибка преобразования строки в дату Application. MessageBox ('Введите корректную дату! ', 'Неправильная дата', MB_OK + MB_ICONASTERISK); End; // следующине три строки внесены в код для того, чтобы компилятор дельфи не выдавал предупреждений. // Не влияют на ход программы If MyDate = Date () Then Exit; end; // происходит при выходе из поля ввода "Дата окончания" procedure TMainForm. DBEditDataOkonchExit (Sender: TObject); Var MyDate: TDate; MyStr: string; begin MyDate: =Date (); Try MyStr: =TDBEdit (Sender). text; MyDate: =StrToDate (MyStr); Except on EConvertError do Application. MessageBox ('Введите корректную дату! ', 'Неправильная дата', MB_OK + MB_ICONASTERISK); End; If MyDate = Date () Then Exit; end; // нажатие кнопки в поле ввода "дополн. работа" procedure TMainForm. DBEditDopRabotaKeyPress (Sender: TObject; var Key: Char); begin DM1. CheckNumericKeyPress (Sender, Key); end; // нажатие кнопки в поле ввода "Итого за материал" procedure TMainForm. DBEditItogoMaterialKeyPress (Sender: TObject; var Key: Char); begin DM1. CheckNumericKeyPress (Sender, Key); end; // нажатие кнопки в поле ввода "Итого за обработку" procedure TMainForm. DBEditItogoObrabotkaKeyPress (Sender: TObject; var Key: Char); begin DM1. CheckNumericKeyPress (Sender, Key); end; // нажатие кнопки в поле ввода "Итого за изделие" procedure TMainForm. DBEditItogoProduktKeyPress (Sender: TObject; var Key: Char); begin DM1. CheckNumericKeyPress (Sender, Key); end; // нажатие кнопки в поле ввода "высота изделия" procedure TMainForm. DBEditVisota_productKeyPress (Sender: TObject; var Key: Char); begin DM1. CheckNumericKeyPress (Sender, Key); end; // нажатие кнопки в поле ввода "ширина изделия" procedure TMainForm. DBEditShirina_productKeyPress (Sender: TObject; var Key: Char); begin DM1. CheckNumericKeyPress (Sender, Key); end; // Кнопка "Сортировка по возрастанию" procedure TMainForm. BBSortASCClick (Sender: TObject); Var MyADOQuery: TADOQuery; begin MyADOQuery: =TADOQuery (DBGridMain. DataSource. DataSet); MyADOQuery. DisableControls; MyADOQuery. close; MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =''; // очищаем последнюю строку запроса // в зависимости от выбранного переключателя делаем case RadioGroup1. ItemIndex of 0: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY NomerZakaza'; 1: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY NaimZakaz'; 2: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY DataPriema'; 3: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY DataOkonch'; 4: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY ItogoKOplate'; end; MyADOQuery. Open; MyADOQuery. EnableControls; DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); end; // Кнопка "Сортировка по убыванию" procedure TMainForm. BBSortDESCClick (Sender: TObject); Var MyADOQuery: TADOQuery; begin MyADOQuery: =TADOQuery (DBGridMain. DataSource. DataSet); MyADOQuery. DisableControls; MyADOQuery. close; MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =''; case RadioGroup1. ItemIndex of 0: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY NomerZakaza DESC'; 1: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY NaimZakaz DESC'; 2: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY DataPriema DESC'; 3: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY DataOkonch DESC'; 4: MyADOQuery. SQL. Strings [MyADOQuery. SQL. Count-1]: =' ORDER BY ItogoKOplate DESC'; end; MyADOQuery. Open; MyADOQuery. EnableControls; DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); end; // Кнопка "определить состав изделия" procedure TMainForm. ButtonSostavClick (Sender: TObject); Var MySostavProductForm: TSostavProductForm; begin MySostavProductForm: =TSostavProductForm. Create (Owner); MySostavProductForm. ShowModal; MySostavProductForm. Free; end; // щелчок по навигатору для заказов procedure TMainForm. DBNavigatorMainClick (Sender: TObject; Button: TNavigateBtn); begin DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); // if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False) then begin {BitIzd_Add. Enabled: =True; BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; } BitIzd_Del. Enabled: =false; BitIzd_Edit. Enabled: =false; end; // if (Act_Izd_Edit. Enabled=true) and (Act_Izd_Del. Enabled=true) then begin {BitIzd_Add. Enabled: =True; BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; } BitIzd_Del. Enabled: =true; BitIzd_Edit. Enabled: =true; end; // end; // происходит при запросе на закрытие формы procedure TMainForm. FormCloseQuery (Sender: TObject; var CanClose: Boolean); begin If Application. MessageBox ('Вы уверены, что хотите выйти? ', 'Выход из программы', MB_YESNO + MB_ICONINFORMATION) = IDYES Then // если набор данных в режиме просмотра If (DBGridMain. DataSource. State = dsBrowse) and (DBGridSlave. DataSource. State = dsBrowse) Then Begin CanClose: =True; End Else Begin CanClose: =False; Application. MessageBox ('Нельзя закрыть окно, т.к данные в режиме редактирования! ', 'Закрытие окна', MB_OK + MB_ICONERROR); End Else CanClose: =False; end; procedure TMainForm. BitBtn1Click (Sender: TObject); begin Close; end; procedure TMainForm. ActPrintOptionExecute (Sender: TObject); begin PrinterSetupDialog1. Execute; // настройка параметров принтера end; procedure TMainForm. ActPrintExecute (Sender: TObject); begin PrintZakazForm. QuickRep1. ReportTitle: ='Заказ №: ' + DBEditNomerZakaza. Text; PrintZakazForm. QuickRep1. PreviewModal; // распечатка заказа end; // редактирование заказа procedure TMainForm. Act_Zak_EditExecute (Sender: TObject); begin If DBGridMain. DataSource. DataSet. CanModify // если данные можно изменять Then DBGridMain. DataSource. DataSet. Edit Else Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION); DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); // if (Act_Zak_Edit. Enabled=False) and (Act_Zak_Add. Enabled=False) and (Act_Zak_Del. Enabled=False) then begin BitAdd. Enabled: =false; BitSave. Enabled: =true; BitCan. Enabled: =true; BitDel. Enabled: =false; BitEdit. Enabled: =false; end; // DBEditNomerZakaza. SetFocus; end; // удаление заказа procedure TMainForm. Act_Zak_DelExecute (Sender: TObject); begin If Application. MessageBox ('Удалить заказ со всеми изделиями? ', 'Удаление записи', MB_YESNO + MB_ICONINFORMATION) = IDYES Then Begin DBGridMain. DataSource. DataSet. DisableControls; DBGridSlave. DataSource. DataSet. DisableControls; DBGridMain. DataSource. DataSet. Delete; // удалить текущий заказ DBGridMain. DataSource. DataSet. EnableControls; DBGridSlave. DataSource. DataSet. EnableControls; End; DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); // if (Act_Zak_Edit. Enabled=False) and (Act_Zak_Del. Enabled=False) and (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False) then begin BitAdd. Enabled: =True; BitSave. Enabled: =False; BitCan. Enabled: =False; BitDel. Enabled: =False; BitEdit. Enabled: =False; end; // end; // сохранить заказ procedure TMainForm. Act_Zak_SaveExecute (Sender: TObject); begin If (DBEditNomerZakaza. Text = '') or (DBEditNaimZakaz. Text = '') or (DBEditDataPriema. Text = '') or (DBEditVremyaPriema. Text = '') or (DBEditDataOkonch. Text = '') or (DBEditVremyaOkonch. Text = '') or (DBLCBLName_Client. Text = '') or (DBEditItogSRabotoi. Text = '') or (DBEditItogBezRaboti. Text = '') or (DBEditItog_Scidka. Text = '') or (DBEditItogoKOplate. Text = '') Then Begin Application. MessageBox ('Вы незаполнили некоторые поля! Заполните, пож-та, все поля! ', 'Незаполненные поля', MB_OK + MB_ICONASTERISK); DBEditNomerZakaza. SetFocus; Exit End; If DBGridMain. DataSource. DataSet. Modified // если данные были изменены or (DBEditNomerZakaza. Modified) or (DBEditNaimZakaz. Modified) or (DBEditDataPriema. Modified) or (DBEditVremyaPriema. Modified) or (DBEditDataOkonch. Modified) or (DBEditVremyaOkonch. Modified) or (DBEditItogSRabotoi. Modified) or (DBEditItogBezRaboti. Modified) or (DBEditItog_Scidka. Modified) or (DBEditItogoKOplate. Modified) Then DBGridMain. DataSource. DataSet. Post; // сохранить данные DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); BitIzd_Add. Enabled: =true; // if (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False) then begin BitAdd. Enabled: =True; BitSave. Enabled: =False; BitCan. Enabled: =False; BitDel. Enabled: =true; BitEdit. Enabled: =true; end; // end; // отмена изменений в заказе procedure TMainForm. Act_Zak_CancelExecute (Sender: TObject); begin DBGridMain. DataSource. DataSet. Cancel; DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); BitIzd_Add. Enabled: =true; // if (Act_Zak_Edit. Enabled=False) and (Act_Zak_Del. Enabled=False) then begin BitAdd. Enabled: =True; BitSave. Enabled: =False; BitCan. Enabled: =False; BitDel. Enabled: =False; BitEdit. Enabled: =False; end; if (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False) then begin BitAdd. Enabled: =True; BitSave. Enabled: =False; BitCan. Enabled: =False; BitDel. Enabled: =true; BitEdit. Enabled: =true; end; if (Act_Zak_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False) and (Act_Zak_Edit. Enabled=False) and (Act_Zak_Del. Enabled=False) then begin BitAdd. Enabled: =True; BitSave. Enabled: =False; BitCan. Enabled: =False; BitDel. Enabled: =false; BitEdit. Enabled: =false; end; // end; // добавить изделие procedure TMainForm. Act_Izd_AddExecute (Sender: TObject); begin If DBGridSlave. DataSource. DataSet. CanModify Then DBGridSlave. DataSource. DataSet. Append Else Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); DBEditNomerProduct. SetFocus; // BitIzd_Add. Enabled: =False; BitIzd_Edit. Enabled: =False; BitIzd_Del. Enabled: =False; BitIzd_Save. Enabled: =True; BitIzd_Can. Enabled: =True; // end; // редактировать изделие procedure TMainForm. Act_Izd_EditExecute (Sender: TObject); begin If DBGridSlave. DataSource. DataSet. CanModify Then DBGridSlave. DataSource. DataSet. Edit Else Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); DBEditNomerProduct. SetFocus; // if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Add. Enabled=False) and (Act_Izd_Del. Enabled=False) then begin BitIzd_Add. Enabled: =false; BitIzd_Save. Enabled: =true; BitIzd_Can. Enabled: =true; BitIzd_Del. Enabled: =false; BitIzd_Edit. Enabled: =false; end; end; // удалить изделие procedure TMainForm. Act_Izd_DelExecute (Sender: TObject); begin If Application. MessageBox ('Удалить изделие со всеми деталями? ', 'Удаление записи', MB_YESNO + MB_ICONINFORMATION) = IDYES Then DBGridSlave. DataSource. DataSet. Delete; DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); // if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False) and (Act_Izd_Save. Enabled=False) and (Act_Zak_Cancel. Enabled=False) then begin BitIzd_Add. Enabled: =True; BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; BitIzd_Del. Enabled: =False; BitIzd_Edit. Enabled: =False; end; // end; // сохранить изменения в изделии procedure TMainForm. Act_Izd_SaveExecute (Sender: TObject); begin If (DBEditNomerProduct. Text = '') or (DBEditShirina_product. Text = '') or (DBEditVisota_product. Text = '') or (DBEditItogoMaterial. Text = '') or (DBEditItogoObrabotka. Text = '') or (DBEditItogoProdukt. Text = '') Then Begin Application. MessageBox ('Вы незаполнили некоторые поля! Заполните, пож-та, все поля! ', 'Незаполненные поля', MB_OK + MB_ICONASTERISK); DBEditNomerProduct. SetFocus; Exit End; If DBGridSlave. DataSource. DataSet. Modified or (DBEditNomerProduct. Modified) or (DBEditShirina_product. Modified) or (DBEditVisota_product. Modified) or (DBEditNaimenDopRabota. Modified) or (DBEditDopRabota. Modified) Then DBGridSlave. DataSource. DataSet. Post; DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); // if (Act_Izd_Save. Enabled=False) and (Act_Izd_Cancel. Enabled=False) then begin BitIzd_Add. Enabled: =True; BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; BitIzd_Del. Enabled: =true; BitIzd_Edit. Enabled: =true; end; end; // отменить изменения в изделии procedure TMainForm. Act_Izd_CancelExecute (Sender: TObject); begin DBGridSlave. DataSource. DataSet. Cancel; DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); // if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False) then begin BitIzd_Add. Enabled: =True; BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; BitIzd_Del. Enabled: =False; BitIzd_Edit. Enabled: =False; end; if (Act_Izd_Save. Enabled=False) and (Act_Izd_Cancel. Enabled=False) then begin BitIzd_Add. Enabled: =True; BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; BitIzd_Del. Enabled: =true; BitIzd_Edit. Enabled: =true; end; if (Act_Izd_Save. Enabled=False) and (Act_Izd_Cancel. Enabled=False) and (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False) then begin BitIzd_Add. Enabled: =True; BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; BitIzd_Del. Enabled: =false; BitIzd_Edit. Enabled: =false; end; // end; // определить состав изделия procedure TMainForm. Act_Izd_SostavExecute (Sender: TObject); Var MySostavProductForm: TSostavProductForm; begin If DBGridSlave. DataSource. DataSet. RecordCount <> 0 // если таблица не пустая Then Begin MySostavProductForm: =TSostavProductForm. Create (Owner); MySostavProductForm. ShowModal; MySostavProductForm. Free; End Else Application. MessageBox ('Добавьте, пож-та, изделие', 'Отсутствие изделия', MB_OK + MB_ICONINFORMATION); end; // рассчитать заказ procedure TMainForm. Act_Zak_RashitatExecute (Sender: TObject); Var ItogoBezRaboti, ItogoSRabotoi: Currency; i, j: integer; // рассчитывает стоимость изделия в составе заказа Procedure RashitatProduct (MyProduct: TAdoQuery); Var i: integer; ItogoMaterial1,ItogoObrabotka1: Currency; Begin ItogoMaterial1: =0; ItogoObrabotka1: =0; With DM1 Do // обрабатываем багеты в составе изделия Begin ADOQProducts_Bagets. First; For i: =1 to ADOQProducts_Bagets. RecordCount do Begin ItogoMaterial1: =ItogoMaterial1 + ADOQProducts_Bagets. fieldByName ('CItogoZaRashod'). AsCurrency; ItogoObrabotka1: =ItogoObrabotka1 + ADOQProducts_Bagets. fieldByName ('CObrabotka'). AsCurrency; ADOQProducts_Bagets. Next; End; // обрабатываем разное в составе изделия ADOQProducts_Raznoe. First; For i: =1 to ADOQProducts_Raznoe. RecordCount do Begin ItogoMaterial1: =ItogoMaterial1 + ADOQProducts_Raznoe. fieldByName ('CItogoZaRashod'). AsCurrency; ItogoObrabotka1: =ItogoObrabotka1 + ADOQProducts_Raznoe. fieldByName ('CObrabotka'). AsCurrency; ADOQProducts_Raznoe. Next; End; // обрабатываем комплектующие в составе изделия ADOQProducts_Kompl. First; For i: =1 to ADOQProducts_Kompl. RecordCount do Begin ItogoMaterial1: =ItogoMaterial1 + ADOQProducts_Kompl. fieldByName ('CItogoZaRashod'). AsCurrency; ItogoObrabotka1: =ItogoObrabotka1 + ADOQProducts_Kompl. fieldByName ('CObrabotka'). AsCurrency; ADOQProducts_Kompl. Next; End; End; With DM1 do Begin If ADOQProducts. CanModify Then ADOQProducts. Edit Else Begin Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION); Exit; End; // заполняем соответствующие поля ADOQProducts. FieldByName ('ItogoMaterial'). AsCurrency: =ItogoMaterial1; ADOQProducts. FieldByName ('ItogoObrabotka'). AsCurrency: =ItogoObrabotka1; ADOQProducts. FieldByName ('ItogoProdukt'). AsCurrency: =ItogoMaterial1 + ItogoObrabotka1 + ADOQProducts. FieldByName ('DopRabota'). AsCurrency; If ADOQProducts. Modified Then ADOQProducts. Post; End; End; begin DM1. ADOQZakazi. DisableControls; DM1. ADOQProducts. DisableControls; If DM1. ADOQProducts. RecordCount <> 0 // если есть изделия Then // обрабатываем все изделия в составе заказа Begin DM1. ADOQProducts. First; For j: =1 to DM1. ADOQProducts. RecordCount Do Begin // обновляем информацию Dm1. ADOQProducts_Bagets. Close; Dm1. ADOQProducts_Bagets. Open; Dm1. ADOQProducts_Raznoe. Close; Dm1. ADOQProducts_Raznoe. Open; Dm1. ADOQProducts_Kompl. Close; Dm1. ADOQProducts_Kompl. Open; RashitatProduct (DM1. ADOQProducts); // рассчитываем изделие DM1. ADOQProducts. Next; End; ItogoBezRaboti: =0; ItogoSRabotoi: =0; With DM1 Do Begin ADOQProducts. First; // прогоняем все изделия For i: =1 to ADOQProducts. RecordCount do Begin ItogoBezRaboti: =ItogoBezRaboti + ADOQProducts. fieldByName ('ItogoMaterial'). AsCurrency; ItogoSRabotoi: =ItogoSRabotoi + ADOQProducts. fieldByName ('ItogoProdukt'). AsCurrency; ADOQProducts. Next; End; End; With DM1 do Begin If ADOQZakazi. CanModify Then ADOQZakazi. Edit Else Begin Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION); Exit; End; // заполняем соответствующие поля ADOQZakazi. FieldByName ('ItogSRabotoi'). AsCurrency: =ItogoSRabotoi; ADOQZakazi. FieldByName ('ItogBezRaboti'). AsCurrency: =ItogoBezRaboti; ADOQZakazi. FieldByName ('Itog_Scidka'). AsCurrency: =ItogoSRabotoi * ADOQZakazi. FieldByName ('LScidka_client'). AsCurrency; ADOQZakazi. FieldByName ('ItogoKOplate'). AsCurrency: =ItogoSRabotoi - ADOQZakazi. FieldByName ('Itog_Scidka'). AsCurrency; If ADOQZakazi. Modified Then ADOQZakazi. Post; End; End Else Begin Application. MessageBox ('Добавьте в заказ изделие', 'Нет изделия', MB_OK + MB_ICONINFORMATION); DM1. ADOQZakazi. EnableControls; DM1. ADOQProducts. EnableControls; Exit; End; DM1. ADOQZakazi. EnableControls; DM1. ADOQProducts. EnableControls; end; // отчёт "остатки материалов в мастерской" procedure TMainForm. Act_R_OstatkiExecute (Sender: TObject); begin RvProject1. Open; // открываем проект с отчётами Try RvProject1. ExecuteReport ('OstatkiMaterReport') // выполняем отчёт Finally RvProject1. Close; // закрываем проект с отчётами End; end; // происходит при создании формы procedure TMainForm. FormCreate (Sender: TObject); begin // если файл с отчётами существует If FileExists (GetCurrentDir + '\BagetReport. rav') Then // подключаем файл с отчётами RvProject1. ProjectFile: =GetCurrentDir + '\BagetReport. rav' Else Begin Application. MessageBox ('Файл с отчётами не найден! Завершаю программу! ', 'Файл отчётов', MB_OK + MB_ICONERROR); Application. Terminate; End; end; // отчёт "прайс-лист" procedure TMainForm. Act_R_PriceListExecute (Sender: TObject); begin RvProject1. Open; Try RvProject1. ExecuteReport ('PriceListReport') Finally RvProject1. Close; End; end; // процедура создаёт форму выбора для отчёта начальной и конечной даты // sCaption - заголовок // VidForm - вид отчёта (1 - сумма заказов за период, 2 - заказы к дате, 3 - продажи материалов за период) // isEmpty - поиск не нашёл ни одной записи procedure TMainForm. CreateSelectDateForm (sCaption: String; VidForm: byte; Var isEmpty: boolean); Var MySelectDateForm: TSelectDateForm; i: integer; begin MySelectDateForm: =TSelectDateForm. Create (Owner); MySelectDateForm. Caption: =sCaption; // в зависимости от вида подготавливаем форму case VidForm of 1: Begin MySelectDateForm. Tag: =1; End; 2: Begin MySelectDateForm. Label1. Visible: =False; MySelectDateForm. DTPickerStart. Visible: =False; MySelectDateForm. DTPickerStart. Date: =StrToDateTime ('01.01.1900'); MySelectDateForm. Height: =150; MySelectDateForm. Tag: =2; End; 3: Begin MySelectDateForm. Tag: =3; End; end; MySelectDateForm. ShowModal; If MySelectDateForm. ModalResult = mrOk // если нажали на кнопку "выполнить" Then case VidForm of 1: Begin DMReport. ADOQSummaZakazovReport. Close; // устанавливаем параметры DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataPriema'). DataType: =ftDate; DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataPriema'). Value: =MySelectDateForm. DTPickerStart. Date; DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataOkonch'). DataType: =ftDate; DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date; DMReport. ADOQSummaZakazovReport. Open; If DMReport. ADOQSummaZakazovReport. RecordCount = 0 // если ничего не нашли Then Begin Application. MessageBox ('Не найдено ни одной записи! Измените условия поиска', 'Поиск', MB_OK + MB_ICONASTERISK); isEmpty: =True; End; End; 2: Begin DMReport. ADOQZakaziKDate. Close; // устанавливаем параметры DMReport. ADOQZakaziKDate. Parameters. ParamByName ('DataOkonch'). DataType: =ftDate; DMReport. ADOQZakaziKDate. Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date; DMReport. ADOQZakaziKDate. Open; If DMReport. ADOQZakaziKDate. RecordCount = 0 Then Begin Application. MessageBox ('Не найдено ни одной записи! Измените условия поиска', 'Поиск', MB_OK + MB_ICONASTERISK); isEmpty: =True; End; End; 3: Begin With DMReport. ADOQProdazhiZaPeriodBagets Do Begin Close; // устанавливаем параметры Parameters. ParamByName ('DataPriema'). DataType: =ftDate; Parameters. ParamByName ('DataPriema'). Value: =MySelectDateForm. DTPickerStart. Date; Parameters. ParamByName ('DataOkonch'). DataType: =ftDate; Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date; Open; End; With DMReport. ADOQProdazhiZaPeriodKomplekt Do Begin Close; // устанавливаем параметры Parameters. ParamByName ('DataPriema'). DataType: =ftDate; Parameters. ParamByName ('DataPriema'). Value: =MySelectDateForm. DTPickerStart. Date; Parameters. ParamByName ('DataOkonch'). DataType: =ftDate; Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date; Open; End; With DMReport. ADOQProdazhiZaPeriodRaznoe Do Begin Close; // устанавливаем параметры Parameters. ParamByName ('DataPriema'). DataType: =ftDate; Parameters. ParamByName ('DataPriema'). Value: =MySelectDateForm. DTPickerStart. Date; Parameters. ParamByName ('DataOkonch'). DataType: =ftDate; Parameters. ParamByName ('DataOkonch'). Value: =MySelectDateForm. DTPickerEnd. Date; Open; End; If (DMReport. ADOQProdazhiZaPeriodBagets. RecordCount = 0) and (DMReport. ADOQProdazhiZaPeriodKomplekt. RecordCount = 0) and (DMReport. ADOQProdazhiZaPeriodRaznoe. RecordCount = 0) // если ничего не нашли Then Begin Application. MessageBox ('Не найдено ни одной записи! Измените условия поиска', 'Поиск', MB_OK + MB_ICONASTERISK); isEmpty: =True; Exit; End; // Очистка таблицы по продажам DMReport. ADOComProdazhiDelete. Execute; // Добавление в таблицу по продажам багетов DMReport. ADOTableProdazhiZaPeriod. Close; DMReport. ADOTableProdazhiZaPeriod. Open; DMReport. ADOTableProdazhiZaPeriod. First; DMReport. ADOQProdazhiZaPeriodBagets. First; For i: =1 to DMReport. ADOQProdazhiZaPeriodBagets. RecordCount Do Begin If DMReport. ADOTableProdazhiZaPeriod. CanModify Then DMReport. ADOTableProdazhiZaPeriod. Append; With DMReport. ADOTableProdazhiZaPeriod Do Begin FieldByName ('TipKomplekt'). AsString: =DM1. ADOQMaterBagets. fieldByName ('MaterKomlekt_Name'). AsString; FieldByName ('Naimenovanie'). AsString: =DMReport. ADOQProdazhiZaPeriodBagets. FieldByName ('Lkomplekt'). AsString; FieldByName ('EdIzm'). AsString: =DMReport. ADOQProdazhiZaPeriodBagets. FieldByName ('LEdIzm'). AsString; FieldByName ('Rashod'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodBagets. FieldByName ('CRashod_Komplekt'). AsCurrency; FieldByName ('Prodano'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodBagets. FieldByName ('CItogoZaRashod'). AsCurrency; End; If DMReport. ADOTableProdazhiZaPeriod. Modified Then DMReport. ADOTableProdazhiZaPeriod. Post; DMReport. ADOQProdazhiZaPeriodBagets. Next End; // Добавление в таблицу по продажам комплектующих DMReport. ADOQProdazhiZaPeriodKomplekt. First; For i: =1 to DMReport. ADOQProdazhiZaPeriodKomplekt. RecordCount Do Begin If DMReport. ADOTableProdazhiZaPeriod. CanModify Then DMReport. ADOTableProdazhiZaPeriod. Append; With DMReport. ADOTableProdazhiZaPeriod Do Begin FieldByName ('TipKomplekt'). AsString: =DMReport. ADOQProdazhiZaPeriodKomplekt. fieldByName ('LMasterMaterKomplekt'). AsString; FieldByName ('Naimenovanie'). AsString: =DMReport. ADOQProdazhiZaPeriodKomplekt. FieldByName ('Lkomplekt'). AsString; FieldByName ('EdIzm'). AsString: =DMReport. ADOQProdazhiZaPeriodKomplekt. FieldByName ('LEdIzm'). AsString; FieldByName ('Rashod'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodKomplekt. FieldByName ('CRashod_Komplekt'). AsCurrency; FieldByName ('Prodano'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodKomplekt. FieldByName ('CItogoZaRashod'). AsCurrency; End; If DMReport. ADOTableProdazhiZaPeriod. Modified Then DMReport. ADOTableProdazhiZaPeriod. Post; DMReport. ADOQProdazhiZaPeriodKomplekt. Next End; // Добавление в таблицу по продажам разного DMReport. ADOQProdazhiZaPeriodRaznoe. First; For i: =1 to DMReport. ADOQProdazhiZaPeriodRaznoe. RecordCount Do Begin If DMReport. ADOTableProdazhiZaPeriod. CanModify Then DMReport. ADOTableProdazhiZaPeriod. Append; With DMReport. ADOTableProdazhiZaPeriod Do Begin FieldByName ('TipKomplekt'). AsString: =DMReport. ADOQProdazhiZaPeriodRaznoe. fieldByName ('LMasterMaterKomplekt'). AsString; FieldByName ('Naimenovanie'). AsString: =DMReport. ADOQProdazhiZaPeriodRaznoe. FieldByName ('Lkomplekt'). AsString; FieldByName ('EdIzm'). AsString: =DMReport. ADOQProdazhiZaPeriodRaznoe. FieldByName ('LEdIzm'). AsString; FieldByName ('Rashod'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodRaznoe. FieldByName ('Rashod_Komplekt'). AsCurrency; FieldByName ('Prodano'). AsCurrency: =DMReport. ADOQProdazhiZaPeriodRaznoe. FieldByName ('CItogoZaRashod'). AsCurrency; End; If DMReport. ADOTableProdazhiZaPeriod. Modified Then DMReport. ADOTableProdazhiZaPeriod. Post; DMReport. ADOQProdazhiZaPeriodRaznoe. Next End; // Открываем сгруппированный запрос DMReport. ADOQGroupProdazhiZaPeriod. Close; DMReport. ADOQGroupProdazhiZaPeriod. Open; End; // // / end Else isEmpty: =True; MySelectDateForm. Free; // уничтожаем переменную end; // отчёт "сумма заказов за период" procedure TMainForm. Act_R_SummaZakazovExecute (Sender: TObject); var Empty: boolean; TmpRaveComponent: TRaveComponent; // компонент рейва DateStart, // начальная дата DateEnd: string; // конечная дата begin Empty: =False; CreateSelectDateForm ('Отчёт - Сумма заказов за период с ____ по ____', 1, Empty); // показать форму выбора дат If Empty Then Exit; RvProject1. Open; // Поиск и активизация необходимого отчета. Метод вернет false если отчет не найден if not RvProject1. SelectReport ('ZakaziZaPeriodReport', true) Then EXIT; // Поиск компонента с именем 'TittleText' на первой странице отчета TmpRaveComponent: = RvProject1. ProjMan. FindRaveComponent ('TittleText',RvProject1. ProjMan. ActiveReport. FirstPage); // Если объект найден, и он произошел от класса TRaveText if (TmpRaveComponent <> nil) and (TmpRaveComponent is TRaveText) Then Begin DateStart: =DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataPriema'). Value; DateEnd: =DMReport. ADOQSummaZakazovReport. Parameters. ParamByName ('DataOkonch'). Value; // Замена выводимого текста TRaveText (TmpRaveComponent). Text: = 'Сумма заказов за период с ' + DateStart + ' г' + ' по ' + DateEnd + ' г'; End; Try // Генерация активного отчета RvProject1. Execute; Finally RvProject1. Close; End; end; // отчёт "Заказы к дате" procedure TMainForm. Act_R_ZakaziKDateExecute (Sender: TObject); Var Empty: boolean; TmpRaveComponent: TRaveComponent; DateEnd: string; begin Empty: =False; CreateSelectDateForm ('Отчёт - Заказы, которые должны быть готовы к _дата_', 2, Empty); If Empty // если ничего не нашли Then Exit; RvProject1. Open; // Поиск и активизация необходимого отчета. Метод вернет false если отчет не найден if not RvProject1. SelectReport ('ZakaziKSroku', true) Then EXIT; // Поиск компонента с именем 'TittleText' на первой странице отчета TmpRaveComponent: = RvProject1. ProjMan. FindRaveComponent ('TittleText',RvProject1. ProjMan. ActiveReport. FirstPage); // Если объект найден, и он произошел от класса TRaveText if (TmpRaveComponent <> nil) and (TmpRaveComponent is TRaveText) Then Begin DateEnd: =DMReport. ADOQZakaziKDate. Parameters. ParamByName ('DataOkonch'). Value; // Замена выводимого текста TRaveText (TmpRaveComponent). Text: = 'Заказы, которые должны быть готовы к ' + DateEnd + ' г'; End; Try // Генерация активного отчета RvProject1. Execute; Finally RvProject1. Close; End; end; // отчёт "продажи материалов за период" procedure TMainForm. Act_R_ProdazhiMaterExecute (Sender: TObject); var Empty: boolean; TmpRaveComponent: TRaveComponent; DateStart, DateEnd: string; begin Empty: =False; CreateSelectDateForm ('Отчёт - Продажи материалов за период... ', 3, Empty); If Empty Then Exit; RvProject1. Open; // Поиск и активизация необходимого отчета. Метод вернет false если отчет не найден if not RvProject1. SelectReport ('ProdazhiZaPeriod', true) Then EXIT; // Поиск компонента с именем 'Text1' на первой странице отчета TmpRaveComponent: = RvProject1. ProjMan. FindRaveComponent ('Text1',RvProject1. ProjMan. ActiveReport. FirstPage); // Если объект найден, и он произошел от класса TRaveText if (TmpRaveComponent <> nil) and (TmpRaveComponent is TRaveText) Then Begin DateStart: =DMReport. ADOQProdazhiZaPeriodBagets. Parameters. ParamByName ('DataPriema'). Value; DateEnd: =DMReport. ADOQProdazhiZaPeriodBagets. Parameters. ParamByName ('DataOkonch'). Value; // Замена выводимого текста TRaveText (TmpRaveComponent). Text: = 'Продажи материалов за период с ' + DateStart + ' г' + ' по ' + DateEnd + ' г'; End; Try // Генерация активного отчета RvProject1. Execute; Finally RvProject1. Close; // Очистка таблицы по продажам DMReport. ADOComProdazhiDelete. Execute; End; end; // "Файл - архивация базы" procedure TMainForm. ActArchivExecute (Sender: TObject); begin If (DM1. ADOQZakazi. State = dsBrowse) and (DM1. ADOQProducts. State = dsBrowse) Then If SaveArchivDialog. Execute // если выбран файл для сохранения Then Begin if FileExists (ExtractFileDir (Application. ExeName) +'\baget. mdb') // если файл существует Then // копируем файл с БД If CopyFile (PChar (ExtractFileDir (Application. ExeName) +'\baget. mdb'), PChar (SaveArchivDialog. FileName),true) Then Application. MessageBox ('База данных успешно скопирована! ', 'База данных', MB_OK + MB_ICONASTERISK) Else Application. MessageBox ('Ошибка копирования БД', 'База данных', MB_OK + MB_ICONError) Else Application. MessageBox ('Файл базы данных не существует! ', 'База данных', MB_OK + MB_ICONERRor); End Else Else Application. MessageBox ('Нельзя выполнить архивацию, т.к данные в режиме редактирования! ', 'Закрытие окна', MB_OK + MB_ICONERROR); end; // Очистить заказы procedure TMainForm. Act_Zak_ClearExecute (Sender: TObject); begin DM1. OchistitZakaz: =True; // устанавливаем флаг ОЧИСТКИ заказа DM1. ClearTable (Application. Handle, TADOQuery (DBGridMain. DataSource. Dataset)); // очищаем DM1. OchistitZakaz: =False; // сбрасываем флаг ОЧИСТКИ заказа DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); end; // процедура устанавливает уровень доступа // 1 - мастер, 2 - менеджер procedure TMainForm. SetLevelAccess (RezhimRaboti: byte); begin case RezhimRaboti of 1: Begin // отключаем всё ненужное EdIzmAct. Enabled: =False; ActMaterBaget. Enabled: =False; ActMaterKomplekt. Enabled: =False; ActMaterRaznoe. Enabled: =False; Act_Master_Bagets. Enabled: =False; Act_Master_Komplekt. Enabled: =False; Act_Master_Raznoe. Enabled: =False; ActSkladBagets. Enabled: =False; ActSkladKomplekt. Enabled: =False; ActSkladRaznoe. Enabled: =False; // Act_Zak_Clear. Enabled: =False; Act_R_Ostatki. Enabled: =False; Act_R_PriceList. Enabled: =True; Act_R_SummaZakazov. Enabled: =False; Act_R_ZakaziKDate. Enabled: =False; Act_R_ProdazhiMater. Enabled: =False; Act_Zash_ChangePass. Enabled: =False; End; 2: Begin // пока ничего:) End; end; end; // Защита - изменить пароль procedure TMainForm. Act_Zash_ChangePassExecute (Sender: TObject); Var MyChangePassForm: TChangePassForm; begin MyChangePassForm: =TChangePassForm. Create (Owner); MyChangePassForm. ShowModal; MyChangePassForm. Free; end; // "заказы - добавить" procedure TMainForm. Act_Zak_AddExecute (Sender: TObject); begin If DBGridMain. DataSource. DataSet. CanModify Then DBGridMain. DataSource. DataSet. Append Else Application. MessageBox ('Данные нельзя модифицировать! ', 'Модификация данных', MB_OK + MB_ICONINFORMATION); DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); Act_Izd_Add. Enabled: =False; // BitAdd. Enabled: =False; BitDel. Enabled: =False; BitEdit. Enabled: =False; BitSave. Enabled: =True; BitCan. Enabled: =True; // BitIzd_Add. Enabled: =false; BitIzd_Edit. Enabled: =false; BitIzd_Del. Enabled: =false; // DBEditNomerZakaza. SetFocus; end; // при щелчке по ячейкам таблицы заказов procedure TMainForm. DBGridMainCellClick (Column: TColumn); begin DM1. CheckActionState (DBGridMain. DataSource, Act_Zak_Add, Act_Zak_Edit, Act_Zak_Del, Act_Zak_Save, Act_Zak_Cancel, DBGridMain, DBNavigatorMain); DM1. CheckActionState (DBGridSlave. DataSource, Act_Izd_Add, Act_Izd_Edit, Act_Izd_Del, Act_Izd_Save, Act_Izd_Cancel, DBGridSlave, DBNavigatorSlave); // if (Act_Izd_Edit. Enabled=False) and (Act_Izd_Del. Enabled=False) then begin {BitIzd_Add. Enabled: =True; BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; } BitIzd_Del. Enabled: =false; BitIzd_Edit. Enabled: =false; end; // if (Act_Izd_Edit. Enabled=true) and (Act_Izd_Del. Enabled=true) then begin {BitIzd_Add. Enabled: =True; BitIzd_Save. Enabled: =False; BitIzd_Can. Enabled: =False; } BitIzd_Del. Enabled: =true; BitIzd_Edit. Enabled: =true; end; // end; // происходит при закрытии программы procedure TMainForm. FormClose (Sender: TObject; var Action: TCloseAction); begin AnimateWindow (handle, 500, AW_BLEND or AW_HIDE); PlaySound ('Bye. wav',0,SND_SYNC); end; // процедура динамически создаёт форму "о программе" procedure TMainForm. Act_AboutExecute (Sender: TObject); Var MyAboutUnitForm: TAboutForm; begin MyAboutUnitForm: =TAboutForm. Create (Owner); MyAboutUnitForm. ShowModal; MyAboutUnitForm. Free; end; procedure TMainForm. Act_HelpExecute (Sender: TObject); begin if FileExists (ExtractFileDir (Application. ExeName) +'\help. chm') // если файл существует Then // WinExec (PChar (ExtractFileDir (Application. ExeName) +'\help. chm'), SW_Restore) // запустить справку ShellExecute (Handle,nil,'help. chm',nil,nil,SW_RESTORE) Else Application. MessageBox ('Файл справки не найден! ', 'Справка', MB_OK + MB_ICONASTERISK); end; end. Приложение Б Образец бланка заказа генерируемого системой Приложение В Перечень замечаний и предложений нормоконтролера
2. Реферат на тему Распространенный крупноочаговый псориаз 3. Реферат Утопический социализм 4. Реферат Современное рыночное хозяйство 5. Реферат Изучение и анализ программ курсов по выбору и элективных курсов по технологии 6. Курсовая на тему Расчет параметров посадки и калибров для проверки отверстия и вала 7. Реферат на тему Charlemagne Essay Research Paper IntroductionThroughout history there 8. Сочинение Женские образы в романе Ивана Тургенева Отцы и дети 9. Курсовая Социально-экономические причины насилия 10. Реферат Энергосберегающие бытовые приборы |