Министерство образования и науки
Республики Казахстан
Карагандинский государственный технический университет
Кафедра Системы автоматизированного проектирования
Зав. кафедрой
_________ “____”_____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 Режим труда
Заключение
Список использованных источников
Приложение А
Приложение Б
Приложение В
В последнее время быстрыми темпами развиваются наука и техника, которые вызвали глубокий переворот во всех отраслях производства и оказали воздействие на все стороны жизни общества.
Любая отрасль промышленности, если она не развивается, не совершенствуется, оказывается нежизнеспособной в современном мире. Поэтому назревает необходимость создания новых научно-технических средств, их проектирование и внедрение в производство.
В настоящее время компьютер стал такой же привычной и необходимой вещью на рабочем месте, как ручка и карандаш. Компьютер нужен всем людям, в той или иной степени связанным с делопроизводством, руководителям, инженерам, педагогическим работникам, журналистам, писателям, студентам, просто специалистам в своей предметной области как элементарное средство оргтехники делового человека.
Наиболее часто объектом автоматизации становится работа крупных предприятий. Но все более возрастающий ритм жизни и увеличивающееся число клиентов требуют повышения производительности любого предприятия. Современное развитие компьютерных технологий позволяет создавать весьма красивые и оптимальные решения, способные существенно преобразить и улучшить производственный цикл.
Мир стремительно развивается и любая организация, желающая ускорить весь цикл своего производства, приходит к необходимости внедрения средств автоматизации по возможности на всех стадиях производственного цикла. Не является исключением и деятельность небольших фирм, занимающихся изготовлением и подбором багет, паспарту для картин и фотографий.
Целью данной работы является разработка системы автоматизированного учета для багетной мастерской. Разрабатываемая система позволит ускорить процесс принятия и оформления заказа, а также автоматизировать ведение складского учета. Кроме того, внедрение системы учета позволит снизить трудоемкость и повысить производительность труда, повысит точность расчетов и снизит вероятность ошибок, что в итоге приведет к снижению коммерческих потерь. Для осуществления всех необходимых расчетов теперь достаточно будет воспользоваться специально предназначенной для этого программой, не прибегая к необходимости осуществлять вычисления вручную.
Наиболее часто объектом автоматизации становится работа крупных предприятий. Создание высоконадёжных систем управления позволило повсеместно автоматизировать процессы изготовления различных товаров, оборудования, линии сборки в автомобильной промышленности. Системы автоматизации позволили сократить участие человека в процессе производства до минимума. Возрастающий ритм жизни и увеличивающееся число клиентов требуют повышения производительности любого предприятия. Основные идеи автоматизации сегодня с лёгкостью можно распространить практически на все современные отрасли. Тем более что современное развитие компьютерных технологий позволяет создавать весьма красивые и оптимальные решения, способные существенно преобразить и улучшить производственный цикл любого предприятия. Не является исключением и работа таких предприятий как завод метоллоконструкций.
Любое изображение, созданное художником, за исключением только древних наскальных рисунков, имеет обрамление. Оно завершает композицию, придает ей единство, направляет внимание зрителя на само произведение, выделяет изображение и одновременно связывает его с интерьером. Картина в современном понимании этого слова, а вместе с ней и рама появляется примерно в XIV веке. История рамы, безусловно, связана с историей искусства и архитектуры: каждый новый стиль вносил свои изменения и дополнения в облик рамы. Благодаря такому долгому пути, сегодня мы имеем множество профилей багета различных направлений и стилей, расцветок и фактур. Сегодня в рамы оформляют не только живописные и графические работы. Уже невозможно представить без рамы постер или художественную фотографию, да и со вкусом оформленная любительская фотография смотрится совсем иначе. Оформить в раму можно зеркала, гобелены, вышивку, детские рисунки, документы, медали, монеты и многое другое. Для каждого вида работ существуют определенные каноны и нюансы, разобраться с которыми помогут специалисты багетной мастерской [11, 14].
Современные профессиональные багетные мастерские используют специализированные высококачественные материалы и оборудуются по последнему слову техники. Это специальные высокоточные станки для распила и сборки багета, а также для работы с дополнительными материалами. Лишь при использовании такого профессионального оборудования можно добиться очень аккуратных стыков багета волосяной толщины, а именно это является одним из критериев качества работы багетной мастерской. В пользу заказа рамы в профессиональной мастерской, а не покупки готовой стандартного размера можно привести не один довод. Безусловным преимуществом является возможность индивидуально подойти к каждой конкретной работе, учесть все ее особенности и особенности интерьера, в котором она будет размещена и, таким образом, подобрать самый удачный для данной работы вариант. Кроме того, обрамление будет "скроено" точно по размерам. Консультанты такой мастерской, как правило, имеют художественное образование и большой опыт работы и с удовольствием помогают сориентироваться в многообразии материалов [11, 14].
Любой клиент решивший воспользоваться услугами багетной мастерской должен знать, что специалисты попросят его не просто дать размеры, а привезти саму работу. Сделать это необходимо по нескольким причинам: во-первых, чтобы избежать ошибок, связанных с погрешностью измерения. Во-вторых, только имея перед глазами работу и прикладывая непосредственно к ней образцы багета, можно определить какой из предложенных вариантов окажется наиболее удачным для этой работы: подойдет ей по стилю, по цветовой гамме и подчеркнет ее достоинства. Как правило, такой вариант оказывается не один, и здесь в выборе можно руководствоваться особенностями конкретного интерьера и личных предпочтений. И, наконец, по истечении срока исполнения заказа (обычно это 3-5 дней), клиент сможет забрать уже "одетую" работу, и ему останется лишь повесить ее на стену.
Любой элемент рамы, прежде всего, несет определенную функцию и только потом является эстетическим дополнением картины. Поэтому стоит отдельно поговорить о каждой составляющей рамы.
Багет (багетная рейка) - то из чего собственно изготавливается рама. Сегодня можно увидеть в продаже деревянный, пластиковый и алюминиевый профиль всевозможных оттенков. Багет из тропических пород дерева (таких как бальза и аюс) европейского производства по достоинству признан наиболее подходящим для распила и сборки рамы. Этот легкий пористый материал в отличие от привычной сосны не имеет годовых колец, что существенно облегчает работу и повышает качество рамы. Не случайно этот материал самый дорогостоящий. Сосна также используется для производства багета, чаще всего на отечественных линиях. Современный качественный пластик по своим эстетическим характеристикам совсем не уступает дереву, а цена его обычно ощутимо ниже. Качество пластикового багета зависит от его состава: дешевый пластиковый профиль содержит примеси, что делает его хрупким. Алюминиевый профиль пришел на багетный рынок с рынка рекламных материалов и сразу занял свою нишу: современный материал, прочен, лаконичен и идеален для интерьеров в стиле хай-тек. Существует несколько разновидностей профиля: узкий графичный багет, широкий плоский (такой багет можно использовать как самостоятельно, так и при создании сложного профиля путем наложения нескольких видов багета друг на друга), классический профиль, создающий глубину восприятия, а так же профиль "обратная перспектива", который, в отличие от предыдущего, выделяет работу, поднимая ее над поверхностью стены [11, 14].
Нельзя забывать, что багет в первую очередь - это несущий остов для всей конструкции рамы. Поэтому очень важно при выборе багета соизмерять величину нагрузки и прочность багетной рейки.
Подрамник необходим при оформлении живописных работ, выполненных на холсте, а также большого размера гобеленов и батиков. Он представляет собой деревянную конструкцию, на которую натягивается полотно. Только после натяжки работу одевают в раму. Хотя, в последнее время появилась тенденция вешать современные живописные работы без обрамления [11, 14].
Задний картон служит основой для графических работ, постеров, документов, фотографий. Это может быть специальный плотный картон, оргалит, или пенокартон [11, 14].
Паспарту - это картон, в котором вырезается окно по размеру работы, а вокруг оставляются поля, ширина которых подбирается для каждого случая индивидуально, таким образом, создается цветной фон между работой и рамой. Паспарту применяется в оформлении графичных листов, постеров, фотографий, вышивок и др. Функция паспарту - создать воздушную прослойку между работой и стеклом. Существует множество вариантов оттенков и фактур паспарту, его можно комбинировать, накладывать один тон на другой, создавая канты и придавая глубину изображению [11, 14].
Стекло. В багетных работах используется только высококачественное полированное стекло не более 2мм толщиной. Оно не содержит вкраплений и не дает искажений. Функция у стекла, конечно, защитная. Под стекло оформляются все графичные работы, фотографии, постеры, не имеющие специального покрытия, папирусы, некоторые текстильные работы. Единственный недостаток стекла, что оно дает блики. Но современный синтетический материал плексигласс позволяет решить и эту проблему. Существует и натуральное безбликовое стекло [11, 14].
Специалисты знают, какое большое значение для картины имеет обрамление. Оно творит чудеса: может подать заурядную работу достойно и эффектно, а при неграмотном оформлении может испортить впечатление даже от очень профессионального произведения.
Но деятельность багетной мастерской не заканчивается только на изготовлении рамы. Необходимо еще документально оформить заказ. При этом нужно учесть наличие на складе всех необходимых для изготовления комплектующих, рассчитать расход материалов и их стоимость, а также стоимость изготовления заказа. Вся эта, казалось бы, небольшая работа при выполнении ее без средств автоматизации занимает достаточно много времени - около 10-15 минут. В течение этого времени может прийти очередной клиент, который вполне возможно не станет ждать и уйдет. Кроме того, при расчетах связанных с оформлением заказа могут возникать ошибки, от которых не застрахован ни один человек. Также необходимо вести складской учет расходуемых комплектующих и материалов.
На сегодняшний день в Караганде действует несколько багетных мастерских. Каждая мастерская старается привлечь клиента высоким качеством обслуживания, а также большим выбором комплектующих и материалов для оформления поистине неповторимого заказа. Помочь мастеру, принимающему заказ, быстро сориентироваться во всем разнообразии комплектующих и материалов имеющихся в наличии, а также рассчитать стоимость заказа, могла бы система автоматизированного учета для багетной мастерской.
На сегодняшний день рынок коммерческих компьютерных программ для автоматизации расчета и оформления заказа для завода металлоконструкций представлен несколькими программными продуктами. Рассмотрим некоторые из них.
Данный программный комплекс состоит из пяти программ - Прием заказов, Складской учет, Заработная плата, Подбор паспарту и багета и Администратор.
Программа Багетная мастерская - Прием заказов производит расчет заказа, состоящего из деревянного, пластикового, алюминиевого багета, системы "SBS", подрамника, стекла, паспарту, задника, репродукции, художественной ламинации и оформления, с последующим выводом на печать [6].
Рисунок 1.1 - Окно программы Багетная мастерская - Прием заказов
Основные возможности программы:
Два режима работы - администратор и пользователь.
По отпечатанным заказам выписывается счет, счет-фактура и накладная.
Учет оплаты заказов и готовой продукции.
Позволяет увидеть остатки материала при оформлении заказа.
Возможность работы в локальной сети и модем - модем по телефонной линии (до 5-ти пользователей).
Программа Багетная мастерская - Складской учет учитывает приход, расход и остаток - всех составляющих, по заказам выполненных в программе Багетная мастерская-Прием заказов.
Программа Багетная мастерская - Заработная плата насчитывает заработную плату, по заказам выполненных в программе Багетная мастерская - Прием заказов. Параметры начисления заработной платы устанавливаются до распечатки заказа в программе Администратор или в программе Багетная мастерская - Прием заказов, меню База данных - Составляющие цены - Заработная плата. Если параметры не установлены, начисление ведется от итоговой стоимости.
Программа Багетная мастерская - Подбор паспарту и багета позволяет произвести подбор паспарту и багета по цвету и профилю для оформления заказа.
Программа Багетная мастерская - Администратор позволяет произвести: Приход материала. Посмотреть заработную плату, расход и остаток материала. Установить параметры составляющих цены и реквизиты предприятия. Добавить в базу - Заказчиков и Работников. Рассчитать прибыль за период. Сформировать Интернет-страницу программы Прием заказов, для расчета стоимости заказа на сайте (меню Файл - Создать HTML страницу Прием заказов). Предупреждает о критическом остатке материала [6].
Основной недостаток программы - невозможность включения в один заказ нескольких изделий.
Программа "Багетный мастер" позволяет выгодно продемонстрировать подбор багет, паспарту для картин, фотографий.
Преимущества программы:
1. Удобный интерфейс.
2. Использование данных с разных компьютеров.
3. Сохранение изображений багет, паспарту в базе данных.
4. Точность вывода изображения на экран.
5. Масштабирование изображения.
6. Полноэкранный просмотр.
7. Двойной паспарту.
8. Паспарту - окантовка.
9. Возможность сохранения композиции на диск.
10. Сортировка багет, паспарту.
11. Удобный поиск [6].
Рисунок 1.2 - Окно программы Багетный мастер v1.0
Недостатки программы:
1. В программе не предусмотрен механизм расчета расхода комплектующих и материалов.
2. Не производится расчет стоимости заказа
3. Нет модуля складского учета
4. Отсутствует база данных для хранения информации о заказах и клиентах.
Эта программа разработана специалистами сайта bagetchik.ru для максимального удобства и для багетчиков-оформителей и для интересующихся оформлением своих изображений, при удаленном самостоятельном компьютерном подборе багета и паспарту к изображениям.
Потратив всего несколько минут на изучение модуля, пользователь поймет насколько все может быть красиво удобно и просто. В программе пользователю предоставляется возможность загрузить любое изображение размером не больше 60-180 кб (со своего компьютера, а не ссылкой из сети) подобрать оформление и посмотреть, как это будет выглядеть в понравившемся ему багете и паспарту. Программа автообрамления не может и не выполняет никаких действий сама. Она не подбирает багет или паспарту, не выбирает цвет, не выставляет ширину полей паспарту к картине, поскольку сделать это может только человек [12].
Рисунок 1.3 - Интернет сервис Он-лайн обрамление V.4
Данная программа позволяет пользователю:
1. Оформить фотографии, постеры, гравюры различным багетом и паспарту.
2. Посмотреть, как могут преобразиться его изображения, не посещая багетную мастерскую.
3. Заказать оформление для картин в режиме он-лайн, не выходя из дома [13].
Пользователю предлагается пошагово выбрать цвет стен, багет, верхний паспарту, средний паспарту, нижний паспарту и стекло. Далее пользователь может посмотреть, как будет выглядеть его заказ. После этого производится расчет стоимости израсходованных материалов и общая стоимость оформленной работы.
Рисунок 1.4 - Интернет сервис "Багетная мастерская"
Подводя итог, можно сказать, что имеющиеся на сегодняшний день разработки в области компьютерных систем оформления заказа для багетной мастерской, обладая многими достоинствами, либо не совсем подходят по характеру решаемых заказчиком задач, либо являются недостаточно проработанными, грешат большим количеством ошибок и неудобством работы. Кроме того, существующие программные продукты, не совсем отвечая требованиям заказчика, как правило, стоят значительных сумм денег и их внедрение связано с риском их не окупаемости. Следует разработать такую систему, которая с одной стороны будет обладать надежностью, устойчивостью в работе, а с другой стороны будет успешно решать тот круг задач, который необходим для предприятия заказчика.
Целью данной работы является разработка системы автоматизированного учета для багетной мастерской. Основной задачей разрабатываемой системы является автоматизация процесса принятия заказа и ведения складского учета расходуемых комплектующих и материалов. В ходе выполнения проекта должны быть достигнуты следующие цели:
программа должна удовлетворять требованиям заказчика;
программа должна иметь простой, удобный и интуитивно понятный интерфейс;
программа не должна содержать ошибок;
программа должна позволять произвести быстрый расчет и оформление заказа с последующим выводом на печать результатов работы;
в программе должно быть реализовано гибкое формирование состава заказа с возможностью добавления в заказ нескольких изделий;
в программе должна быть реализована возможность изменения и корректировки заказа;
работа со складом должна быть вынесена отдельно;
программа должна содержать инструкцию по ее использованию, содержащуюся в файле помощи.
Инсталляция программы должна осуществляться посредством установочного файла.
Программа должна выполнять следующие функции:
автоматизированный расчет стоимости выполнения заказа багетной мастерской;
вести оперативный учет расхода комплектующих и материалов;
оформление и вывод на печать бланка заказа;
хранение информации о клиентах и их заказах;
ведение учета расходуемых комплектующих и материалов;
выдача необходимых отчетов о расходе комплектующих и материалов.
Разработке подлежит система автоматизированного учета для багетной мастерской. Система предназначена для автоматизации процесса принятия заказа и ведения складского учета расходуемых комплектующих и материалов. Условное обозначение системы "Багетная мастерская".
Разработчиком является студент Карагандинского государственного технического университета, факультета информационных технологий, группы САПР-02-2 Сулейманов Ринат Хамитович.
Заказчиком является кафедра систем автоматизированного проектирования КарГТУ.
Основанием разработки является приказ на дипломное проектирование за номером 277с, выданный 12 марта 2007года кафедрой САПР.
Срок выполнения работ 23.06.2006 - 31.05.2007.
Результаты выполнения работы предъявляются заказчику в виде оформленной пояснительной записки и компакт-диска.
Разрабатываемая система предназначена для:
автоматизированного расчета стоимости выполнения заказа багетной мастерской;
оформления бланка заказа, вывода его на печать;
хранения информации о клиентах и их заказах;
ведения автоматизированного складского учета расходуемых комплектующих и материалов;
выдачи необходимых отчетов о расходе комплектующих и материалов.
Целью создания системы является повышение эффективности работы работника багетной мастерской занимающегося расчетом и оформлением заказов, а также организация автоматизированного складского учета расхода комплектующих и материалов.
Критерием эффективности функционирования системы является отношение эффективности, получаемой от повышения производительности труда работников мастерской, степень экономии рабочего времени, снижение ошибок в работе и четкий учет расхода комплектующих и материалов.
2.3
Характеристика объекта автоматизации
Багетная мастерская занимается изготовлением рам по индивидуальным заказам клиентов для картин, фотографий, постеров, гобеленов, вышивок и других видов произведений искусства. Практически каждый заказ является уникальным, и его стоимость зависит от размеров оформляемого изделия, состава и видов комплектующих и материалов. Стоимость работы за изготовление рамы вычисляется суммированием определенного процента от стоимости каждого составного элемента рамы.
Автоматизации подлежат следующие процедуры:
расчет расхода комплектующих и материалов, необходимых для выполнения заказа;
расчет стоимости комплектующих и материалов, необходимых для выполнения заказа;
оформление и вывод на печать документа, содержащего сведения о заказе;
ведение складского учета.
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.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.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
|
После выполнения всех оговоренных работ необходимо завизировать указанные разделы у курирующих преподавателей КарГТУ и сдать дипломный проект на рецензию лицу, утверждённому кафедрой САПР.
По возвращению с рецензии проект необходимо защитить Государственной аттестационной комиссии кафедры САПР.
На защиту дипломного проекта необходимо предоставить систему "Багетная мастерская". Перед комиссией необходимо представить пояснительную записку к дипломному проекту объёмом не менее 80 печатных листов, отвечающую всем требованиям стандартизации и нормоконтроля.
Процесс информационного потока до автоматизации выглядит следующим образом:
клиент обращается к работнику мастерской с пожеланиями красиво и грамотно оформить в раму произведение искусства;
мастер обращается к клиенту с вопросами, уточняющими состав комплектующих и материалов, необходимых для исполнения заказа;
клиент делает свой выбор относительно состава комплектующих и материалов, необходимых для исполнения заказа;
мастер вручную производит расчет расхода комплектующих и материалов, необходимых для исполнения заказа, а также стоимость заказа;
мастер вручную оформляет бланк заказа;
менеджер дает указания мастеру по организации процесса принятия заказов, устанавливает розничные цены на комплектующие и материалы;
менеджер, на основе информации полученной из бланков заказов, производит учет расхода комплектующих и материалов.
Схема движения информационных потоков при этом выглядит, как показано на рисунке 3.1.
Рисунок 3.1 - Структура информационных потоков до автоматизации
В процессе принятия заказов у мастера возникают проблемы связанные с тем, что он не может получать оперативную информацию о запасе комплектующих и материалов в мастерской, в связи с чем возникает вероятность отказа клиенту. Кроме того, ручной расчет расхода комплектующих и стоимости заказа занимает в среднем около 10-15 минут, вследствие чего в мастерской возможно скопление клиентов, ожидающих своей очереди, что негативно сказывается на общем настроении как мастера, так и клиентов.
В работе менеджера возникают следующие проблемы:
невозможность получения оперативной информации о состоянии запасов комплектующих как на складе, так и в мастерской;
невозможность получения оперативной информации о состоянии продаж комплектующих;
получения оперативной информации об общей стоимости заказов за определенный промежуток времени;
невозможность получения сведений о заказах, которые должны быть готовы к определенной дате.
Вышеуказанные проблемы негативно сказываются на работе, в результате чего мастерская теряет часть клиентов и соответственно прибыль.
Процесс информационного потока после автоматизации выглядит так:
клиент обращается к работнику мастерской с пожеланиями красиво и грамотно оформить в раму произведение искусства;
мастер обращается к клиенту с вопросами, уточняющими состав комплектующих и материалов, необходимых для исполнения заказа;
клиент делает свой выбор относительно состава комплектующих и материалов, необходимых для исполнения заказа;
мастер вводит в программу полученные от клиента исходные данные для оформления заказа;
в режиме "мастер" программа производит необходимые вычисления и выдает оформленный бланк заказа, а также вносит необходимые изменения в таблицы базы данных комплектующих, материалов, клиентов и заказов;
в режиме "менеджер" программа, помимо функций, выполняемых в режиме "мастер", также может выдавать менеджеру отчеты по расходу комплектующих и материалов;
на основе данных полученных из отчетов менеджер производит учет расхода комплектующих и материалов.
Схема движения информационных потоков при этом выглядит, как показано на рисунке 3.2.
Рисунок 3.2 - Структура информационных потоков после автоматизации.
После автоматизации сократится время, затрачиваемое на процесс принятия и расчета стоимости заказа, а также на ведение складского учета расхода комплектующих, вследствие чего ожидается рост числа обслуживаемых клиентов и соответственно увеличение получаемой прибыли.
Процесс принятия, расчета и оформления заказа, а также ведения складского учета представляется в виде системы, содержащей сведения о багете, ряде комплектующих и материалов, сведения о предыдущих заказах и клиентах, а также информацию о стоимости обработки комплектующих. Багет характеризуется высотой, шириной, наименованием, количеством, расходом и ценой. Каждое комплектующее также характеризуется наименованием, количеством, расходом и ценой. Каждый заказ характеризуется номером, наименованием, датами принятия и исполнения, клиентом и стоимостью. Каждый клиент характеризуется кодом, сведениями о фамилии, имени, отчестве, контактной информацией, суммой ранее сделанных заказов, коэффициентом скидки. Концептуальная модель объекта анализа представлена на рисунке 3.3.
Рисунок 3.3 - Концептуальная модель
На основе концептуальной модели построим логическую модель. Для каждого объекта концептуальной модели необходимо создать свою структуру данных.
Рассмотрим структуру данных "Клиенты" объекта "Справочники". Ключевым полем будет являться уникальный идентификатор клиента, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю объект "Клиенты" будет связан с объектом "Заказы". Обязательному заполнению будут подлежать следующие поля структуры данных "Клиент": "ФИО", "Сумма заказов", "Контакт" и "Скидка". Поле "Сумма заказов" будет увеличиваться автоматически после оформления очередного заказа данному клиенту.
Структура данных "Багет", объекта "Справочники", содержит поля "Наименование", "Высота", "Ширина", "Количество" и "Ед. измерения", которые подлежат обязательному заполнению. Ключевым полем будет являться уникальный идентификатор багета, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю осуществляется связь со структурой данных "Багет", относящейся к объекту "Мастерская" и со структурой данных "Багет", относящейся к объекту "Склад".
Рассмотрим структуру данных "Комплектующие" объекта "Справочники". В рассматриваемой структуре данных обязательному заполнению будут подлежать поля "Наименование" и "Количество" и "Ед. измерения". Ключевым полем будет являться уникальный идентификатор комплектующего, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю осуществляется связь со структурой данных "Комплектующие", относящейся к объекту "Мастерская" и со структурой данных "Комплектующие", относящейся к объекту "Склад".
Структура данных "Разное" объекта "Справочники", содержит поля "Наименование" и "Количество", которые подлежат обязательному заполнению. Ключевым полем будет являться уникальный идентификатор комплектующего, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю осуществляется связь со структурой данных "Разное", относящейся к объекту "Мастерская" и со структурой данных "Разное", относящейся к объекту "Склад".
Рассмотрим структуру данных "Ед. измерения" объекта "Справочники". Ключевым полем будет являться уникальный идентификатор единицы измерения, оно не должно иметь повторяющихся значений и будет заполняться автоматически. По этому полю осуществляется связь со структурами "Багет", "Комплектующие" и "Разное", относящимся к объекту "Справочники. Поле "Наименование" подлежит обязательному заполнению.
Структура данных "Заказы" объекта "Мастерская" содержит поля "№ заказа", "Наименование заказа", "Дата приема", "Время приема", "Дата окончания", "Время окончания", которые подлежат обязательному заполнению. Поля "Стоимость заказа с работой", "Стоимость заказа без работы", "Итоговая скидка", "К оплате" являются вычисляемыми автоматически.
Структура данных "Багет", объекта "Мастерская", содержит поля "Розничная цена", "Количество" и "Расход", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Багет", объекта "Справочники".
Структура данных "Комплектующие", объекта "Мастерская", содержит поля "Розничная цена", "Количество" и "Расход", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Комплектующие", объекта "Справочники".
Структура данных "Разное", объекта "Мастерская", содержит поля "Розничная цена", "Количество" и "Расход", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "разное", объекта "Справочники".
Рассмотрим структуру данных "Багет", объекта "Склад". Рассматриваемая структура, содержит поля "Наименование", "№ накладной", "Дата поступления", "Закупочная цена", "Количество" и "Объем списания", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Багет", объекта "Справочники".
Рассмотрим структуру данных "Комплектующие", объекта "Склад". Рассматриваемая структура, содержит поля "Наименование", "№ накладной", "Дата поступления", "Закупочная цена", "Количество" и "Объем списания", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Комплектующие", объекта "Справочники".
Рассмотрим структуру данных "Разное", объекта "Склад". Рассматриваемая структура, содержит поля "Наименование", "№ накладной", "Дата поступления", "Закупочная цена", "Количество" и "Объем списания", которые подлежат обязательному заполнению. Поле "Примечание" заполняется при необходимости. Поле идентификатор комплектующего служит для связи со структурой "Разное", объекта "Справочники".
Схема связей таблиц БД представлена на рисунке 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"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
1
|
2
|
3
|
4
|
Id_Pr_Bagets
|
Счетчик
|
Длинное целое
|
Идентификатор комплектующего
|
ID_Products_slave
|
Числовой
|
Длинное целое
|
Идентификатор изделия
|
Id_Mastersk_slave
|
Числовой
|
Длинное целое
|
Идентификатор комплектующего
|
Shirina
|
Числовой
|
Ширина
|
Visota
|
Числовой
|
Высота
|
Таблица "Products_Kompl_Table" содержит информацию о различных наименованиях комплектующих, в составе изделия. Структура этой таблицы отображена в таблице 3.9.
Таблица 3.9 - Структура таблицы "Products_Kompl_Table"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
Id_Pr_Kompl
|
Счетчик
|
Длинное целое
|
Идентификатор комплектующего
|
ID_Products_slave
|
Числовой
|
Длинное целое
|
Идентификатор изделия
|
Id_MasterskMater_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Id_MasterskKomplekt_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Id_Mastersk_slave
|
Числовой
|
Длинное целое
|
Идентификатор комплектующего
|
Shirina
|
Числовой
|
Ширина
|
Visota
|
Числовой
|
Высота
|
Таблица "Products_Raznoe_Table" содержит информацию о различных наименованиях разного, в составе изделия. Структура этой таблицы отображена в таблице 3.10.
Таблица 3.10 - Структура таблицы "Products_Raznoe_Table"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
Id_Pr_Raznoe
|
Счетчик
|
Длинное целое
|
Идентификатор комплектующего
|
ID_Products_slave
|
Числовой
|
Длинное целое
|
Идентификатор изделия
|
Id_MasterskMater_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Id_MasterskKomplekt_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Id_Mastersk_slave
|
Числовой
|
Длинное целое
|
Идентификатор комплектующего
|
Rashod_Komplekt
|
Числовой
|
Расход
|
Таблица "Masterskaya_Bagets_Table" содержит информацию о различных наименованиях багета, имеющегося в мастерской. Структура этой таблицы отображена в таблице 3.11
Таблица 3.11 - Структура таблицы "Masterskaya_Bagets_Table"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
Masterskaya_Id
|
Счетчик
|
Длинное целое
|
Идентификатор комплектующего
|
Id_MaterKomplekt_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Id_Komplekt_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Masterskaya_RoznCena
|
Числовой
|
Розничная цена
|
Masterskaya_Kol-vo
|
Числовой
|
Количество
|
Masterskaya_Rashod
|
Числовой
|
Расход
|
Masterskaya_Prim
|
Текстовый
|
50
|
Примечание
|
Таблица "Masterskaya_Kompl_Table" содержит информацию о различных наименованиях комплектующих, имеющихся в мастерской. Структура этой таблицы отображена в таблице 3.12.
Таблица 3.12 - Структура таблицы "Masterskaya_Kompl_Table"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
Masterskaya_Id
|
Счетчик
|
Длинное целое
|
Идентификатор комплектующего
|
Id_MaterKomplekt_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Id_Komplekt_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Masterskaya_RoznCena
|
Числовой
|
Розничная цена
|
Masterskaya_Kol-vo
|
Числовой
|
Количество
|
Masterskaya_Rashod
|
Числовой
|
Расход
|
Masterskaya_Prim
|
Текстовый
|
50
|
Примечание
|
Таблица "Masterskaya_Raznoe_Table" содержит информацию о различных наименованиях разного, имеющегося в мастерской. Структура этой таблицы отображена в таблице 3.13.
Таблица 3.13 - Структура таблицы "Masterskaya_Raznoe_Table"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
Masterskaya_Id
|
Счетчик
|
Длинное целое
|
Идентификатор комплектующего
|
Id_MaterKomplekt_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Id_Komplekt_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
Masterskaya_RoznCena
|
Числовой
|
Розничная цена
|
Masterskaya_Kol-vo
|
Числовой
|
Количество
|
Masterskaya_Rashod
|
Числовой
|
Расход
|
Masterskaya_Prim
|
Текстовый
|
50
|
Примечание
|
Таблица "Products_Table" содержит информацию об изделии в составе заказа. Структура этой таблицы отображена в таблице 3.14.
Таблица 3.14 - Структура таблицы "Products_Table"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
Id_products
|
Счетчик
|
Длинное целое
|
Идентификатор изделия
|
ID_zakaz_slave
|
Числовой
|
Длинное целое
|
Вторичный идентификатор
|
NomerProduct
|
Текстовый
|
10
|
№ изделия
|
Shirina_product
|
Числовой
|
Ширина изделия
|
Visota_product
|
Числовой
|
Высота изделия
|
NaimenDopRabota
|
Текстовый
|
40
|
Наименование дополнительной работы
|
ItogoMaterial
|
Числовой
|
Итого за материал
|
ItogoObrabotka
|
Числовой
|
Итого за обработку
|
DopRabota
|
Числовой
|
Стоимость дополнительной работы
|
ItogoProdukt
|
Числовой
|
Итого за изделие
|
Таблица "Raznoe_Table" является справочником разного. Структура этой таблицы отображена в таблице 3.15.
Таблица 3.15 - Структура таблицы "Raznoe_Table"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
Komplekt_Id
|
Счетчик
|
Длинное целое
|
Идентификатор комплектующего
|
Komplekt_Name
|
Текстовый
|
25
|
Наименование
|
Id_MaterKomlekt_slave
|
Числовой
|
Вторичный идентификатор
|
ID_EdIzm_Slave
|
Числовой
|
Ед. измерения
|
Таблица "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
|
Числовой
|
Закупочная цена
|
Sklad_Kol-vo
|
Числовой
|
Количество
|
Sklad_Rashod
|
Числовой
|
Объем списания
|
Sklad_Prim
|
Текстовый
|
50
|
Примечание
|
Таблица "Zakazi_Table" содержит информацию о заказах. Структура этой таблицы отображена в таблице 3.19.
Таблица 3.19 - Структура таблицы "Zakazi_Table"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
ZakazId
|
Счетчик
|
Длинное целое
|
Идентификатор заказа
|
NomerZakaza
|
Текстовый
|
10
|
№ заказа
|
NaimZakaz
|
Текстовый
|
50
|
Наименование
|
DataPriema
|
Дата/время
|
Дата приема
|
VremyaPriema
|
Дата/время
|
Время приема
|
DataOkonch
|
Дата/время
|
Дата окончания
|
VremyaOkonch
|
Дата/время
|
Время окончания
|
ID_Client_slave
|
Числовой
|
Длинное целое
|
Идентификатор клиента
|
ItogSRabotoi
|
Числовой
|
Стоимость с работой
|
ItogBezRaboti
|
Числовой
|
Стоимость без работы
|
Itog_Scidka
|
Числовой
|
Итоговая скидка
|
ItogoKOplate
|
Числовой
|
Итого к оплате
|
В таблице "Temp_Prodazhi" хранится информация о багете, комплектующих, разном. Данная таблица используется для отчета "Сумма продаж материалов за период". Перед выполнением отчёта в неё заносятся соответствующие детали для выбранного менеджером периода, формируется отчёт. После формирования отчета таблица очищается. Структура этой таблицы отображена в таблице 3.20.
Таблица 3.20 - Структура таблицы "Temp_Prodazhi"
Идентификатор поля
|
Тип
|
Размер
|
Название
|
Id
|
Счетчик
|
Длинное целое
|
Уникальный идентификатор
|
TipKomplekt
|
Текстовый
|
10
|
Тип комплектующего
|
Naimenovanie
|
Текстовый
|
50
|
Наименование
|
EdIzm
|
Текстовый
|
10
|
Ед. изм.
|
Rashod
|
Числовой
|
Длинное целое
|
Расход
|
Prodano
|
Числовой
|
Продано
|
Бланк заказа выводится на печать с использованием стандартного компонента QuickReport системы разработки приложений Delphi 7.
Отчеты выводятся на печать с использованием компонентов технологии Rave Reports.
Лингвистическое обеспечение - это совокупность всех языковых средств, используемых при создании и эксплуатации системы. Основными из этих средств являются входной язык, внутренний и выходной.
Входной язык служит для представления и описания исходной информации об объектах и задачах проектирования. Данный язык является естественным языком.
Входной язык программы позволяет принимать от пользователя следующие данные:
настройки программы,
исходные данные для расчета и оформления заказа,
исходные данные для выполнения запросов пользователя,
исходные данные для поиска информации, требуемой пользователю.
Указанные данные программа принимает в виде введенного с клавиатуры текста и в виде параметров, указанных мышью. В качестве элементов интерфейса используются элементы, аналогичные стандартным элементам Windows, снабженные визуальными эффектами, работающие с мышью и клавиатурой.
В качестве языка программирования для данной системы должен быть выбран универсальный язык программирования высокого уровня, который отвечает следующим требованиям:
возможность решения широкого класса задач;
набор операторов языка должен отражать принципы структурного проектирования;
возможность работы с базами данных;
возможности создания запросов к базам данных;
синтаксис языка должен быть достаточно не сложным и включать в себя возможность объектно-ориентированного программирования;
язык должен быть лёгок для изучения;
наличие компилятора с возможностью компоновки исполняемых файлов для работ под управлением операционных систем семейства Windows.
Для разработки системы " Багетная мастерская" выбираем язык Object Pascal и структурированный язык запросов SQL.
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 для обозначения специальным образом оформленной последовательности команд (подпрограмм). Доступ к такой подпрограмме может быть осуществлён из любого места основного блока программы, а также из любой процедуры или функции, описание которых следует ниже. Внутри процедуры или функции можно объявить локальные метки, константы, типы данных и переменные. Локально объявленные переменные доступны только внутри той процедуры или функции, где они объявлены, а вне её считаются недействительными.
Реляционный способ доступа к данным основан на использовании 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. При этом результирующие наборы данных должны иметь одинаковый формат, то есть одинаковый состав возвращаемых полей, и полное совпадение типов данных соответствующих полей.
Выходной язык - это средство представления результатов выполнения программы в виде, наиболее удобном и понятном пользователю. Он должен обеспечить соответствие выдаваемого результата запросам, сформированным пользователем. В данном случае в виде таблиц.
Выходной язык обеспечивает оформление и сохранение результатов работы программы в текстовом виде. Выходная информация в программе представляется в виде отчетной документации - бланк заказа, прайс-лист, а также отчетов таких, как "Остатки материалов в мастерской", "Сумма заказов за период", "Продажи материалов за период", "Заказы, которые должны быть готовы к указанной дате" и в виде сообщений пользователю.
В случае некорректного ввода данных результат работы - сообщение об ошибке. Сообщения пользователю программы разделяются на сообщения о результатах выполнения какой-либо операции, на сообщения об ошибках и предупреждающие сообщения, выдаваемые в ходе работы с системой.
Сообщения об ошибках разделяются на критические, фатальные и исправимые.
Возникновение критических ошибок приводит к прерыванию работы системы, выходу из программы и, возможно, к перезагрузке системы. Данный тип ошибок обуславливается только ошибками программирования системы, не обнаруженных на этапе тестирования. При появлении такой ошибки выдается стандартное сообщение ОС Windows: "Программа выполнила недопустимую операцию и будет закрыта", при этом нет возможности сохранить текущую работу. Фатальные ошибки приводят к прерыванию обработки текущей выполняемой операции без нарушения целостности системы. Данный тип ошибок возникает из-за ошибок в задании исходных данных, некорректном пользовании системой. После появления такой ошибки необходимо проверить исходные данные и повторить процедуру. Сообщения об исправимых ошибках информируют пользователя о таковой и переводят программу в диалоговый режим, предоставляя пользователю возможность скорректировать исходные данные либо прервать обработку. Предупреждающие сообщения информируют пользователя о возможной некорректности исходных данных либо об отсутствии некоторых данных, что может привести к погрешностям вычислений либо к иным негативным результатам.
Учитывая требования, указанные в техническом задании, выбираем в качестве общесистемного ПО операционную систему 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-дисков.
Для разработки прикладного программного обеспечения выберем среду визуального и объектно-ориентированного программирования 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 реализована надёжная система защиты от несанкционированного доступа к файлам.
База данных храниться в одном файле.
Для составления проектной документации используется текстовой процессор Microsoft Word XP корпорации Microsoft. Microsoft Word XP является одним из наиболее распространённых текстовых процессоров и предназначен для составления простых и сложных документов с иллюстрациями, формулами, графиками и диаграммами.
Перечислим основные возможности Word:
выделение абзацев;
автоматический перенос слов;
изменение границ текста;
автоматическая проверка орфографии и грамматики;
создание таблиц;
вставка в документ графического изображения (рисунков);
вставка и поддержка работы с математическими формулами;
Редактор формул позволяет создавать математические формулы любой сложности.
Набранный текст можно распечатать на принтере, подключенном к компьютеру. Microsoft Office Word предъявляет те же системные требования к машине, что и Windows XP.
Для подготовки презентации используется программный продукт Microsoft PowerPoint XP корпорации Microsoft.
Microsoft PowerPoint XP хорошо подходит для составления презентаций любой сложности, поскольку обладает обширными возможностями, при этом обеспечивая максимальную простоту и удобство работы. Процесс создания презентации в Microsoft PowerPoint состоит из таких действий, как выбор общего оформления, добавление новых слайдов и их содержимого, выбор разметки слайдов, изменение при необходимости оформления слайдов, изменение цветовой схемы, применение различных шаблонов оформления и создание таких эффектов, как эффекты анимации при демонстрации слайдов.
Система "Багетная мастерская" состоит из следующих модулей:
модуль "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
Названия процедур
|
Назначение
|
1
|
2
|
CreateALLEdIzmForm
|
Динамически создаёт форму "Единицы измерения"
|
EdIzmActExecute
|
Показать форму "Ед. изм. "
|
CreateALLKlientsForm
|
Динамически создаёт форму "Клиенты"
|
KlientsActExecute
|
Показать форму "Клиенты"
|
CreateBagetKomplektForm
|
Динамически создаёт форму "Материалы - багеты"
|
CreateAllKomplektForm
|
Динамически создаёт форму "Материалы - Комплектующие" и "Материалы - Разное"
|
ActMaterBagetExecute
|
Показать форму "Материалы - багеты"
|
ActMaterKomplektExecute
|
Показать форму "Материалы - Комплектующие"
|
ActMaterRaznoeExecute
|
Показать форму "Материалы - Разное"
|
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
|
Обработчик кнопки "удалить"
|
BBtnSaveClick
|
Обработчик кнопки "сохранить"
|
BBtnCancelClick
|
Обработчик кнопки "отмена"
|
FormCloseQuery
|
Обработчик выхода из программы
|
FormShow
|
Устанавливает начальное состояние элементов формы
|
BBtnClearClick
|
Обработчик кнопки "Очистить"
|
Таблица 5.7 - Структура модуля ALLKomplektUnit. pas
Названия
процедур
|
Назначение
|
BBtnAddClick
|
Обработчик кнопки "добавить"
|
BBtnEditClick
|
Обработчик кнопки "редактировать"
|
BBtnDeleteClick
|
Обработчик кнопки "удалить"
|
BBtnSaveClick
|
Обработчик кнопки "сохранить"
|
BBtnCancelClick
|
Обработчик кнопки "отмена"
|
FormCloseQuery
|
Обработчик выхода из программы
|
FormShow
|
Устанавливает начальное состояние элементов формы
|
BBtnClearClick
|
Обработчик кнопки "Очистить"
|
EditFindChange
|
Обработчик поля ввода "Поиск по наим. комплектующих"
|
BBtnMainAddClick
|
Обработчик кнопки "добавить тип детали"
|
BBtnMainEditClick
|
Обработчик кнопки " редактировать тип детали"
|
BBtnCancelClick
|
Обработчик кнопки "отмена"
|
FormCloseQuery
|
Обработчик выхода из программы
|
FormShow
|
Устанавливает начальное состояние элементов формы
|
BBtnMainSaveClick
|
Обработчик кнопки "сохранить изменения в типе детали"
|
BBtnMainDelClick
|
Обработчик кнопки " удалить изменения в типе детали"
|
BBtnMainCancelClick
|
Обработчик кнопки " отменить изменения в типе детали"
|
DBEditMaterKoefKeyPress
|
Проверяет корректность ввода данных
|
Таблица 5.8 - Структура модуля BagetKomplektUnit. pas
Названия
процедур
|
Назначение
|
BBtnAddClick
|
Обработчик кнопки "добавить"
|
BBtnEditClick
|
Обработчик кнопки "редактировать"
|
BBtnDeleteClick
|
Обработчик кнопки "удалить"
|
BBtnSaveClick
|
Обработчик кнопки "сохранить"
|
BBtnCancelClick
|
Обработчик кнопки "отмена"
|
FormCloseQuery
|
Обработчик выхода из программы
|
FormShow
|
Устанавливает начальное состояние элементов формы
|
BBtnClearClick
|
Обработчик кнопки "Очистить"
|
EditFindChange
|
Обработчик поля ввода "Поиск по наим. комплектующих"
|
BBtnMainAddClick
|
Обработчик кнопки "добавить тип детали"
|
BBtnMainEditClick
|
Обработчик кнопки " редактировать тип детали"
|
BBtnMainSaveClick
|
Обработчик кнопки "сохранить изменения в типе детали"
|
BBtnMainDelClick
|
Обработчик кнопки " удалить изменения в типе детали"
|
BBtnMainCancelClick
|
Обработчик кнопки " отменить изменения в типе детали"
|
DBEditMaterKoefKeyPress
|
Проверяет корректность ввода данных
|
Для усовершенствования и дополнения программы новым модулем нужно:
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].
Выбор технического обеспечения обуславливается следующими основными параметрами:
производительность. Комплекс технических средств должен удовлетворять требованиям, предъявляемым программным обеспечением;
качество. Данный параметр является связующим звеном между производительностью и стоимостью и должен обеспечивать комфортную и бесперебойную работу комплекса технических средств.
Комплекс технических средств должен быть построен на базе ПЭВМ IBM PC или совместимых с ней.
Комплекс технических средств (КТС) разрабатывается в соответствии с требованиями, предъявленными в ТЗ.
Выбор IBM PC в качестве базы КТС осуществлён исходя из выбранного программного обеспечения: ОС Windows ХР и визуальной среды разработки Borland Delphi версии 7.0, а также средств документирования для составления проектной документации Microsoft Word XP и Microsoft PowerPoint XP. Ниже будет спроектирован КТС для компьютера предназначенного для разработки и для работы пользователя системы "Багетная мастерская". Каждый компонент выбирается с учетом назначения компьютера, планируемого срока эксплуатации и совместимости компонентов с другими периферийными устройствами.
По результатам тестирования, приведенным ниже, осуществим выбор процессора.
Характеристики тестового стенда:
Материнская плата: 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]
Наименование характеристик
|
Intel Celeron D 326
|
Intel Celeron D 331
|
Intel Celeron D 336
|
Процессорный разъем
|
LGA775
|
LGA775
|
LGA775
|
Частота ядра, ГГц
|
2,53
|
2,66
|
2,8
|
Количество ядер
|
1
|
1
|
1
|
Кэш второго уровня, Кб
|
256
|
256
|
256
|
Частота шины, МГц.
|
533
|
533
|
533
|
Рассеиваемая тепловая мощность, Вт
|
84
|
84
|
84
|
Техпроцесс, нм
|
90
|
Поддержка hyper-threading
|
нет
|
нет
|
нет
|
Результаты тестирования процессоров представлены в таблице 6.2.
Таблица 6.2 - Результаты тестирования процессоров, баллы [7]
Название теста
|
Intel Celeron D 326
|
Intel Celeron D 331
|
Intel Celeron D 336
|
Battlefield 2, 1024 x 768, настройки средние "Medium"
|
198,3
|
228,5
|
295,2
|
F. E. A. R., 1024 x 768, настройки средние "Medium"
|
117
|
120
|
128
|
Serious Sam 2, 1024 x 768, настройки средние "Medium"
|
68,5
|
72,8
|
87,1
|
Quake 4, 1024 x 768, настройки средние "Medium"
|
88
|
96
|
101,7
|
Call of Duty 2, 1024 x 768, настройки средние "Medium"
|
45,5
|
49,7
|
50,3
|
По результатам тестирования выбираем процессор Intel Celeron D 336.
На основании нижеприведенных результатов тестирования, осуществим выбор материнской платы.
Характеристики тестового стенда:
операционная система 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]
Параметр
|
ECS PF5 Extreme
|
Foxconn 945P7AA-8KS2
|
ASUS P5AD2-E Premium
|
Чипсет
|
Intel 945P/ICH7R
|
Intel 945P/ICH7
|
Intel 925XE/ICH6R
|
Поддержка
процессоров
|
Socket 775, Intel Pentium 4/Pentium 4 EE/Pentium D/ Celeron D
|
Разъемы памяти
|
4 DDR2
|
Слоты расширения
|
PCIEx16, 2 PCIEx1, 3 PCI
|
Форм-фактор,
размеры, см.
|
ATX, 30,5×24,5
|
USB
|
4 USB 2.0 + 2 разъема по 2 USB 2.0
|
Порты ввода/вывода
|
1 FDD, 1 LPT на планке, 1 COM, 2 PS/2, разъем IrDA
|
1 FDD, 1 LPT, 1 COM + разъем COM, 2 PS/2, разъем IrDA
|
1 FDD, 1 LPT, 1 COM (на планке), 2 PS/2
|
Интегрированный в чипсет ATA-контроллер
|
на 2 устройства ATA100 + 4 SATA300 RAID (0, 1, 10, 5, Matrix RAID)
|
на 2 устройства ATA100 + 4 SATA300
|
1 FireWire + 2 разъема на 2 порта GigaWire на планке (TI TSB82AA2 + TSB81BA3)
|
Внешний ATA-контроллер
|
Silicon Image SiI3132CNU (интерфейс PCIEx1, 2 SATA300 RAID 0,1)
|
ITE IT8212F (4 ATA133 RAID 0, 1 и 0+1)
|
2 ATA100 + 4 SATA RAID (0, 1, Matrix RAID)
|
Звук
|
HDA-кодек Realtek ALC880, Toslink S/PDIF-In/Out
|
HDA-кодек Realtek ALC880, Coaxial S/PDIF-Out
|
HDA-кодек C-Media CMI9880, Coaxial и Toslink S/PDIF-Out, разъем для S/PDIF-In
|
Сетевой контроллер
|
Marvell 88E8053-NNC (PCIEx1 Gigabit Ethernet) + Realtek RTL8100С (Fast Ethernet)
|
Broadcom Broadcom BCM5789KFB (PCIEx1 Gigabit Ethernet)
|
2xMarvell 88E8053-NNC (PCIEx1 Gigabit Ethernet) + Marvell 88W8310-BAN (WiFi-b/g)
|
I/O-контроллер
|
Winbond W83627THF
|
ITE IT8712F-A
|
Winbond W83627EHF-A
|
BIOS
|
AMI BIOS v2.58
|
Phoenix AwardBIOS v6.00PG
|
AMI BIOS v2.51
|
Результаты тестирования материнских плат представлены в таблице 6.4.
Таблица 6.4 - Результаты тестирования материнских плат [7]
Параметр
|
ECS PF5 Extreme
|
Foxconn 945P7AA-8KS2
|
ASUS P5AD2-E Premium
|
Скорость чтения/записи памяти, Мб/с
|
3454/1598
|
3907/1992
|
3147/1397
|
Архивирование: WinRAR, мин: сек
|
2: 38
|
2: 24
|
2: 58
|
Кодирование DVD-звука в XviD 1.0.2, мин: сек
|
5: 21
|
5: 14
|
5: 43
|
Обработка изображений: Adobe Photoshop 8.0, мин: сек
|
33: 02
|
32: 18
|
35: 18
|
Игра FarCry (1024x768), fps
|
81
|
85
|
80
|
Игра Unreal Nournament 2004 (1024x768), fps
|
63,4
|
65,7
|
60,6
|
По результатам тестирования выбираем материнскую плату Foxconn 945P7AA-8KS2.
Осуществим выбор модулей памяти по результатам тестирования приведенного ниже.
Характеристики тестового стенда:
Процессор: 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]
Параметр
|
Excalibrus DDR2-533 PC 4200
|
Samsung DDR2-533 PC 4200
|
GeIL
DDR2-533 PC 4200
|
Тип памяти
|
DDR2 SDRAM
|
Тип конфигурации модуля
|
Non-ECC
|
Количество физических банков модуля памяти
|
1
|
2
|
1
|
Емкость одного физического банка модуля памяти, Мб
|
512
|
256
|
512
|
Внешняя шина данных модуля памяти, бит
|
64
|
Ширина внешнего интерфейса шины данных (тип организации) используемых микросхем памяти
|
x8
|
Рабочее напряжение модуля, В
|
1,8
|
Результаты тестирования модулей памяти представлены в таблице 6.6.
Таблица 6.6 - Результаты тестирования модулей памяти [7]
Параметр
|
Excalibrus DDR2-533 PC 4200
|
Samsung DDR2-533 PC 4200
|
GeIL DDR2-533
PC 4200
|
Средняя пропускная способность на чтение, МБ/с
|
4264
|
4268
|
4266
|
Средняя пропускная способность на запись, МБ/с
|
1371
|
1424
|
1417
|
Макс. пропускная способность на чтение, МБ/с
|
4289
|
4302
|
4284
|
Макс. пропускная способность на запись, МБ/с
|
1424
|
1433
|
1427
|
Наилучшими характеристиками по результатам тестирования обладает модуль памяти Samsung DDR2-533 PC 4200.
Опираясь на нижеприведенные результаты тестирования, осуществим выбор видеокарты.
Параметры тестового стенда:
Материнская плата: 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]
Параметр
|
NVIDIA GeForce 6600
|
ATI Radeon X1300
|
NVIDIA GeForce 7300 GS
|
Графический чип
|
NV43
|
RV515
|
G72
|
Техпроцесс, мкм
|
0,11
|
0,09
|
0,09
|
Число транзисторов, млн.
|
~143
|
~105
|
н/д
|
Площадь ядра, мм²
|
150
|
100
|
н/д
|
Рабочие частоты, MHz
(графический чип/память)
|
300/500
|
450/500
|
550/700
|
Ширина шины памяти, bit
|
128 bit
|
128/64 /32
|
64 bit
|
Число пиксельных конвейеров, шт.
|
8 (4)
|
4
|
4
|
TMU на конвейер, шт.
|
1
|
1
|
1
|
Число вершинных процессоров, шт.
|
3
|
2
|
3
|
Поддержка версии Pixel Shaders
|
3
|
3
|
3
|
Поддержка версии Vertex Shaders
|
3
|
3
|
3
|
Интерфейс
|
PCI-Express х16
|
Поддержка версии DirectX
|
9.0c
|
9.0c
|
9.0c
|
Дополнительно
|
DVI, TV-Out, VIVO (опционально)
|
DVI, TV-Out, VIVO, HDTV
|
DVI, TV-Out, VIVO, HDTV
|
Результаты тестирования видеокарт представлены в таблице 6.8.
Таблица 6.8 - Результаты тестирования видеокарт [7]
Параметры тестирования
|
NVIDIA GeForce 6600
|
ATI Radeon X1300
|
NVIDIA GeForce 7300 GS
|
3DMark 2005, default settings,
общий бал
|
2063
|
2261
|
2343
|
3DMark 2006, 1280 x 1024, default settings, общий бал
|
891
|
954
|
787
|
Half-life 2: Lost Coast, 1024 x 768, Direct3D, максимальные настройки графики, кадр/сек
|
56,5
|
52,1
|
48,3
|
Call Of Duty 2, 1024 x 768, Direct3D, настройки средние "Medium", кадр/сек
|
16,5
|
19,1
|
16,7
|
Serious Sam 2, 1024 x 768, настройки средние "Medium", кадр/сек
|
49,4
|
52,7
|
56,0
|
Quake 4, 1024 x 768, детализация графики в игре "Medium Quality",
кадр/сек
|
70,9
|
42,3
|
51,0
|
The Chronicles Of Riddick: Escape From Butcher Bay, 1024 x 768, OpenGL, максимальное качество графики, кадр/сек
|
36,5
|
25,4
|
26,7
|
F. E. A. R. ,, 1024 x 768, Direct3D, настройки "Medium", кадр/сек
|
28
|
21
|
14
|
Лучшие результаты в ходе тестирования показала видеокарта NVIDIA GeForce 6600.
На основании нижеприведенных результатов тестирования, осуществим выбор жесткого диска.
Параметры тестового стенда:
процессор 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]
Параметры
|
Maxtor DiamondMax Plus 9 6L080L0
|
Samsung SpinPoint P80 HD080HJ
|
Seagate Barracuda 7200.9 ST3802110A
|
Емкость моделей, Гб
|
80
|
Число головок
|
2/1
|
Скорость вращения шпинделя, об. /мин.
|
7200
|
Размер буфера данных, Мбайт
|
2
|
8
|
2
|
Интерфейс
|
UltraATA/133
|
SATA-300/NCQ
SATA-150
UltraATA/133
|
UltraATA/100 и
SATA-300
|
Макс. скорость интерфейса, Мбайт/с
|
133
|
133 или 150/300
|
100 или 300
|
Среднее время поиска при чтении/записи, мс
|
9,0/-
|
8,9/-
|
11/9,5
|
Гарантированное количество старт-стоп циклов
|
50 000
|
Акустический шум вращения, дБА
|
25
|
25-27
|
25
|
Акустически шум поиска, дБА
|
32 (26)
|
28
|
27
|
Допустимая температура, С, вкл. (выкл)
|
+0…60
(-40…+71)
|
+5…55 (-0…+65)
|
+0…60
(-40…+70)
|
Вес, гр.
|
690
|
630
|
580
|
Результаты тестирования жестких дисков представлены в таблице 6.10.
Таблица 6.10 - Результаты тестирования жестких дисков [7]
Наименование теста - параметр
|
Maxtor
DiamondMax Plus 9 6L080L0
|
Samsung SpinPoint P80 HD080HJ
|
Seagate
Barracuda 7200.9 ST3802110A
|
Winbench 99 - cкорость линейного чтения (в начале, середине, конце диска), 1000 байт/сек
|
59100
47770
34510
|
63570
51950
37750
|
777860
62172
42640
|
HD Tach 2.61 - cкорость работы интерфейсов (чтение из буфера), Мб/с
|
85,0
|
101,4
|
82,5
|
H2benchW - cреднее время доступа к диску, мс.
|
14,2
|
17,1
|
15,6
|
C’T H2benchW - среднее время чтения/записи, мс.
|
13,03/8,07
|
17,05/8,98
|
15,59/8,98
|
NBench 2.4 - производи-тельность при многопотоковом чтении/ записи, Мб/с
|
13,86/39,28
|
26,04/58,81
|
15,32/29,91
|
По итогам тестовых испытаний лучшие показатели имеет жесткий диск Samsung SpinPoint P80 HD080HJ.
Для корректной работы системы учета рекомендуется использовать ЭЛТ (электронно-лучевая трубка) мониторы с диагональю не менее 17".
На сегодняшний день мониторы ЭЛТ имеют следующие преимущества:
текст выглядит четче (особенно при малом размере точек);
цвета натуральнее и точнее;
отлаженная технология обеспечивает лучшее соотношение стоимости и эксплуатационных качеств.
Следовательно, такие мониторы можно рекомендовать для универсального применения.
Рассмотрим два типа мониторов фирм Samsung и LG. В таблице 6.11 представлены основные технические характеристики мониторов.
Таблица 6.11 Характеристики мониторов [7]
Основные характеристики
|
Samsung 757DFX
|
LG Flatron
F720BL
|
Зерно (шаг), мм
|
0, 20
|
0,24
|
Видимая часть экрана, мм
|
325х244
|
305х229
|
Максимальное разрешение
|
1920х1440
|
1600х1200
|
Входной разъём
|
D-Sub
|
D-Sub
|
Габариты
|
410х416х421
|
380х372х411
|
Частота вертикальной развертки, Гц
|
50-160
|
50-160
|
Частота горизонтальной развертки, Гц
|
30-96
|
30-70
|
Методика тестирования базировалась на экспертной оценке качества изображения мониторов. Мониторы одновременно подключались к одинаковым системным блокам. Все тесты проводились под управлением ОС Windows 2000 Professional. Из программного обеспечения использовались пакеты Nokia Monitor Test и Adobe Photoshop 7.0.
Результаты тестирования:
Монитор Samsung 793 DF/MG: показатель качества 93,2477.
Монитор LG Flatron F720BL: показатель качества 78,9542.
Выбираем монитор с более высоким показателем качества - Samsung 757DFX.
Для установки программного обеспечения и для архивации данных необходимо устройство чтения-записи CD. Предлагаемые на сегодняшний день CD-RW-приводы практически не отличаются друг от друга по своим характеристикам. Каждый из них имеет свои преимущества и недостатки. Выдвигаемые нами требования к CD-RW-приводу - это качество чтения и высокая скорость записи дисков. Для тестирования использовалась программа Nero 6. Результаты тестирования представлены в таблице 6.12.
Таблица 6.12 - Результаты тестирования приводов CD-RW
Модель
|
Качество чтения, баллы
|
Время записи при скорости 32x, мин
|
MSI CR52-M
|
4,95
|
3: 15
|
NEC NR-9400A
|
4,98
|
3: 20
|
ASUS CRW-5232AS
|
5
|
3: 07
|
Sony CRX230E
|
4,99
|
3: 08
|
Plextor Premium
|
4,97
|
3: 18
|
По итогам тестирования мы выбрали CD-RW-привод ASUS CRW-5232AS, как привод, показавший лучшие результаты.
Окончательная конфигурация КТС представлена в таблице 6.12.
Таблица 6.12 - Окончательная конфигурация КТС
Название устройства
|
Выбранная модель
|
Процессор
|
Intel Celeron D 336
|
Материнская плата
|
Foxconn 945P7AA-8KS2
|
Модуль памяти
|
Samsung DDR2-533 PC-4200, 512 Мб
|
Видеокарта
|
NVIDIA GeForce 6600
|
Жесткий диск
|
Samsung SpinPoint P80 HD080HJ
|
Монитор
|
Samsung 757DFX
|
Привод CD-RW
|
ASUS CRW-5232AS
|
Разработанная система представляет собой программу, предназначенную для автоматизации процесса принятия заказа и ведения складского учета расходуемых комплектующих и материалов в багетной мастерской.
Система предназначена для:
автоматизированного расчета стоимости выполнения заказа багетной мастерской;
автоматизированного оформления бланка заказа, вывода его на печать;
хранения информации о клиентах и их заказах;
ведения автоматизированного складского учета расходуемых комплектующих и материалов;
выдачи необходимых отчетов о расходе комплектующих и материалов.
Система позволит повысить эффективность работы сотрудника багетной мастерской занимающегося принятием и расчетом стоимости заказов, а также облегчить организацию ведения складского учета расхода комплектующих и материалов управляющему мастерской.
Внедрение данной системы позволит:
значительно снизить трудоемкость и повысить производительность труда сотрудников мастерской;
снизить вероятность ошибок при расчетах;
повысить уровень сервиса, вследствие уменьшения времени, необходимого на обслуживание клиентов.
Для установки системы требуется 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 - Завершение установки
Для запуска программы "Багетная мастерская" найдите на рабочем столе 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.1.
Таблица 8.1 - Исходные данные
Исходные данные
|
Значение
|
Время на разработку программного обеспечения
|
1 месяц (01.03.2007 - 31.03.2007)
|
Рабочая неделя, час
|
40
|
Аренда КТС, тенге/сутки
|
500
|
Аренда помещения, тенге/кв. м
|
1500
|
Площадь арендуемого помещения, кв. м
|
15
|
Число задействованных работников, чел.
|
1
|
Заработная плата работника, тенге/месяц
|
28000
|
Месячный расчетный показатель, тенге
|
1092
|
Себестоимость разработки автоматизированной системы определяется по формуле:
ССОЗД = МЗ + ФЗП + ЗЭЛ + ЗАР + АКТС + ЗАР П + НР, тенге (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 - Таблица по исчислению социального налога
Облагаемый доход работника
|
Ставка
|
до 15-кратного годового расчетного показателя (до 196560 тенге)
|
20 процентов с суммы облагаемого дохода
|
от 15 до 40-кратного годового расчетного показателя (от 196560 до 524160 тенге)
|
сумма налога с 15-кратного годового расчетного показателя + 15 процентов с суммы, превышающей его
|
от 40 до 200-кратного годового расчетного показателя
(от 524160 до 2620800 тенге)
|
сумма налога с 40-кратного годового расчетного показателя + 12 процентов с суммы, превышающей его
|
от 200 до 600-кратного годового расчетного показателя
(от 2620800 до 7862400 тенге)
|
сумма налога с 200-кратного годового расчетного показателя + 9 процентов с суммы,
превышающей его
|
от 600 кратного годового расчетного показателя и свыше
(от 7862400 тенге свыше)
|
сумма налога с 600-кратного годового расчетного показателя + 7 процентов с суммы,
превышающей его
|
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 тенге.
Единовременные затраты будут состоять из затрат на выпуск дисков и рекламу в сети Интернет. Для успешного ведения бизнеса необходимо продвигать разрабатываемый программный продукт на рынке. Для этого требуется разместить рекламу ПО в сети Интернет на различных сайтах посвященных ПО для компьютеров.
Стоимость размещения рекламы на веб-сайтах составляют в среднем 5000 тенге за одну публикацию. Эти затраты войдут в единовременные затраты (таблица 8.3).
СЗР
=5000 тенге.
Таблица 8.3 - Единовременные затраты
Элементы затрат
|
Кол-во
|
Стоимость за единицу
|
Общая стоимость
|
Стоимость выпуска диска
|
100
|
50
|
5000
|
Реклама в сети Интернет
|
5
|
5000
|
25000
|
Стоимость создания системы
|
1
|
72930,2
|
72930,2
|
Итого
|
102930,2
|
СЕД = 102930,2 тенге
Для вычисления экономической эффективности необходимо определить: является ли программа коммерческим продуктом или сфера ее применения ограничена предприятием заказчиком. В нашей программе будут заинтересованы владельцы средних и мелких фирм, сфера деятельности которых связана с изготовлением рам для картин, фотографий, рисунков, гобеленов, вышивок и т.п. Это обусловлено тем, что владельцы этих фирм понимают, то насколько важно внедрение средств автоматизации по возможности на всех стадиях производственного цикла. Рассчитаем себестоимость системы: минимальная стоимость одной копии аналогичных продуктов составляет в среднем 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 месяцев.
Наука, изучающая условия существования живых организмов, их взаимосвязь между собой и средой, в которой они обитают, называется экологией. Слово ‘экология ’ происходит от греческих слов ‘oicos’ - дом и ‘logos’ - наука. Этот термин был впервые использован в 1866 году. Как научная дисциплина экология имеет более чем вековую историю. Ее основы можно найти в трудах многих выдающихся мыслителей прошлого века. Однако систематические экологические исследования были начаты только в начале двадцатого столетия.
Наряду с изучением экологии животных, растений, микроорганизмов и их сообществ за последние годы все больше и больше внимание ученых привлекает экология человека. Это и понятно, потому что в современных условиях важнейшую роль среди экологических факторов играет деятельность, т.е. антропогенные факторы, которые все заметнее приводят к изменению природы как среды обитания других видов или непосредственно сказываются на их существовании. Поэтому не учитывать роль человека и человеческого общества в существовании биогеоценозов (экосистем) нельзя [18].
Современный мир отличается необычайной сложностью и противоречивостью событий, он пронизан противоборствующими тенденциями, полон сложнейших альтернатив, тревог и надежд.
Конец XX века характеризуется мощным рывком в развитии научно-технического прогресса, ростом социальных противоречий, резким демографическим взрывом, ухудшением состояния окружающей человека природной среды.
Поистине наша планета никогда ранее не подвергалась таким физическим и политическим перегрузкам, какие она испытывает на рубеже XX - XXI веков. Человек никогда ранее не взимал с природы столько дани и не оказывался столь уязвимым перед мощью, которую сам же создал.
В век научно-технического прогресса и промышленного подъема остро встал вопрос об усилении воздействия человека на природу. В отличие от животного, лишь приспосабливающегося к окружающей среде в процессе биологической эволюции, человек сознательно и активно изменяет ее для удовлетворения своих потребностей.
Воздействие человека на природу обычно связано со стремлением достигнуть какой-либо цели. Однако они не всегда совпадают с возможностями биосферы. Воздействие человека на природу тем и отличается от воздействия на нее животного тем, что деятельность первого переходит ту грань, когда сохраняется биологическое равновесие [19].
Охрана окружающей среды - одна из насущных задач человечества. Научно-техническая революция, ставшая возможной в результате великих открытий в биологии, физике, химии и других науках, охватила во второй половине ХХ в. многие страны мира. Она намного расширяет возможности интенсивного использования природных ресурсов, необходимых для дальнейшего развития производственных сил, удовлетворения материальных и духовных потребностей общества. Однако блага, которые она принесла людям, сопровождались, к сожалению, и серьезными теневыми явлениями. Охрана окружающей среды и рациональное использование ее ресурсов в условиях развития научно-технической революции и бурного роста промышленного производства стала одной из актуальнейших проблем современности.
Под "окружающей средой" принято понимать целостную систему взаимосвязанных природных и антропогенных объектов и явлений, в которой протекают труд, быт и отдых людей. Понятие "окружающая среда" включает социальные, природные и искусственно создаваемые физические, химические и биологические факторы, т.е. все то, что прямо или косвенно воздействует на жизнь и деятельность человека [17,18].
Проблема защиты окружающей среды - одна из важнейших задач современности. Выбросы промышленных предприятий, энергетических систем и транспорта в атмосферу, водоемы и недра на современном этапе развития достигли таких размеров, что в ряде районов земного шара, особенно в крупных промышленных центрах, уровни загрязнений существенно превышают допустимые санитарные нормы. Множество разработанных во второй половине ХХ в. технологических процессов и появление новых видов продукции, особенно в химической промышленности, привели не только к увеличению загрязнений, но и к существенному увеличению числа токсичных примесей, поступающих в окружающую среду. Вредные выбросы промышленных предприятий и других источников загрязнения оказывают отрицательное воздействие не только на окружающую среду, но и в ряде случаев значительно влияют на процесс эксплуатации технических средств.
Взаимодействие человека и природы - одна из актуальнейших проблем современности. В периодической печати, в передачах радио и телевидения, в фундаментальных исследованиях ученых появляется все больше материалов, свидетельствующих о том, что загрязнение атмосферы, почвы, воды, наступление общества на природу приводит довольно часто и весьма трагическим результатам.
В охране окружающей среды важную роль играют службы контроля качества окружающей среды, призванные вести систематизированные наблюдения за состоянием атмосферы, воды, и почв для получения фактических уровней загрязнения окружающей среды. Полученная информация о загрязнениях позволяет быстро выявлять причины повышения концентраций вредных веществ в окружающей среде и активно их устранять.
Проблема охраны окружающей среды - комплексная проблема. Планируя дальнейшее развитие индустриального производства, необходимо оценивать эффективность его развития не только с позиций интересов данного предприятия или отрасли, но и с позиций интересов всего общества, в том числе населения каждого региона. Комплексный характер проблемы охраны окружающей среды определяется сложностью системы, состоящей из природы, общества и производства. Оптимальное развитие этой системы невозможно без комплексного учета социальных, экологических, технических, экологических, правовых и международных аспектов проблемы.
Экологические исследования, показали, что всевозрастающее разрушительное воздействие антропогенных факторов на окружающую среду привело ее на грань кризиса. Среди различных составляющих экологического кризиса (истощение сырьевых ресурсов, нехватка чистой пресной воды, возможные климатические катастрофы) наиболее угрожающий характер приняла проблема загрязнения незаменимых природных ресурсов - воздуха, воды и почвы - отходами промышленности и транспорта. Огромное воздействие на окружающую среду оказывает и ионизирующее излучение, широко распространенное практически во всех сферах деятельности человека.
Оценка степени опасности условий труда при работе с источниками ионизирующего излучения осуществляется с помощью ряда показателей, которые не должны превышать нормативных значений. В качестве таких показателей приняты единицы, которые с достаточной степенью точности позволяют производить однозначную оценку физических параметров поля излучения и возможных биологических последствий воздействия излучения.
Сфера использования того или иного показателя зависит от характера выполняемых работ с источниками ионизирующих излучений. При работе с закрытым источником (условия внешнего облучения), т.е. с радиоактивным источником, устройство которого исключает попадание радиоактивных веществ в окружающую среду, оценку степени опасности условий труда производят по величинам эквивалентной дозы излучения или ее мощности.
Разные виды излучений сопровождаются высвобождением разного количества энергии и обладают разной проникающей способностью, поэтому они оказывают неодинаковое воздействие на ткани живого организма.
Любой источник излучения характеризуется:
видом излучения;
геометрией источника (формой и размерами);
мощностью и ее распределением по источнику;
энергетическим составом;
угловым распределением изучения.
На практике источники встречаются в неограниченном многообразии указанных характеристик.
Наиболее распространенные источники ионизирующих изучений - естественные и искусственные радиоактивные нуклиды (а их сейчас насчитывается около 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 - Искусстве
нные источники радиации
Источник
|
Годовая доза
|
Доля от
природного фона,%
(до 200 мбэр)
|
Мбэр
|
Мзв
|
Медицинские приборы (флюорография 970 мбэр,
рентгенография зуба 3 бэра, рентгеноскопия легких 2-8 бэр)
|
100-150
|
1,0-1,5
|
50-75
|
Полеты в самолете (растояние 2000 км, высота 12 км) 5 раз в год
|
2.5-5
|
0.02-0.05
|
1-2.5
|
Монитор компьютера (работа по 8 часов в день)
|
1,0
|
0,01
|
0,5
|
АЭС
|
0,1
|
0,001
|
0,05
|
Глобальные осадки от испытаний ядерного оружия
|
2,5
|
0,02
|
1,0
|
Другие источники
|
40
|
-
|
-
|
Итого, мбэр/год
|
150-200
|
Предельно допустимая доза (ПДД) - наибольшее значение индивидуальной эквивалентной дозы за год, которое при равномерном воздействии в течение 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 - Параметр риска
Отдаленные последствия
|
Параметр риска, чел-бэр
|
Лейкемия
|
2·10-5
|
Рак щитовидной железы
|
5·10-6
|
Опухоли костной ткани
|
5·10-6
|
Опухоли легких
|
2·10-5
|
Опухоли других органов и тканей
|
5·10-5
|
Все злокачественные опухоли
|
1.25·10-4
|
Наследственные дефекты
|
4·10-5
|
По современным оценкам среднегодовая смертность от профессиональных причин, включая несчастные случаи на производствах, не превышает 104 случаев в год.
Для реализации главной цепи радиационной защиты достижения и сохранения необходимых условий радиационной безопасности при всех видах деятельности, где предполагается облучение человека, - вводятся основные дозовые пределы. Используя их, рассчитываются производственные характеристики, такие, как предельно допустимые уровни внешних потоков ионизирующих изучений и допустимые концентрации радионуклидов в воде и воздухе.
Материалы, располагаемые между источником излучения и зоной размещения персонала или оборудования для ослабления потоков ионизирующих излучений, называют защитой.
Защиту от ионизирующих излучений классифицируют по:
назначению;
типу;
компоновке;
геометрии.
Защита от ионизирующих изучений должна обеспечивать:
а) допустимый уровень облучения обслуживающего установку персонала;
б) допустимый уровень радиационных повреждений “изменение прочностных характеристик, разрушение органических соединений, радиолиз воды и другие” конструкционных и защитных материалов;
в) допустимый уровень радиационного энерговыделения и температурного распределения в конструкционных и защитных материалах.
В соответствии с этим защиту подразделяют соответственно на:
биологическую;
радиационную;
тепловую.
Радиационная и тепловая защиты, которые конструктивно часто бывают совмещены, необходимы только для мощных источников изучения ядерно-технических установок, таких, например, как ядерные реакторы. При работе с изотопными источниками нео6ходимость в радиационной и тепловой защите обычно не возникает.
Защиты подразделяются на следующие типы:
сплошная защита, целиком окружающая источники излучения;
раздельная защита, когда наиболее мощные источники излучения окружает первичная защита (например, первичная защита активной зоны ядерного реактора), а между первичной и вторичной защитой имеются также источники излучения (например, система теплоносителя ядерного реактора);
теневая защита устанавливается между источником излучения и защищаемой областью, размеры которой ограничиваются лишь “тенью", “отбрасываемой” защитой. Особенно часто такая защита используется при ограничении массы и габаритов;
частичная защита - ослабленная защита для областей ограниченного доступа персонала, например, на судне с реактором в качестве энергетической установки частичная защита может осуществляться в направлении дна.
По компоновке выделяют гомогенную (из одного защитного материала) и гетерогенную (из различных материалов) защиты.
По форме внешней поверхности наиболее часто на практике встречается плоская, сферическая и цилиндрическая защиты.
По распространению нейтронов в средах можно выделить следующие группы материалов:
легкие водородосодержащие (водород, вода, полиэтилен, гидриды металлов) - эффективные замедлители нейтронов;
легкие, не содержащие водород (углерода карбид бора), используемые при технических или технологических ограничениях на введение в защиту водородосодержащих сред;
материалы, состоящие из элементов со средним атомным номером (бетон, породы, минералы);
тяжелые материалы (железо, свинец, молибден, вольфрам, титан) для снижения потоков g-квантов (улучшают свойства защиты от быстрых нейтронов благодаря высоким сечениям неупругого рассеяния этих элементов);
металловодородосодержащие среды.
Водород как материал защиты не представляет практического интереса, но как элемент он является хорошим замедлителем нейтронов и главным компонентом в большинстве защит от нейтронов. Барьерная защита из водорода обладает наилучшими защитными свойствами от нейтронов, отнесенными к единице массы. Вода - это наиболее часто используемый в защите водородосодержащий материал. Это обусловлено высокой ядерной плотностью водорода в воде, невысокой стоимостью, легкодоступностью, способностью заполнять все отведенное для нее пространство без образования щелей, пустот и раковин в защите. Характеристики ослабления нейтронного излучения в воде рассчитаны и измерены достаточно полно [17,18].
Охрана труда - это система законодательных актов, социально-экономических, технических, гигиенических и лечебно-профилактических мероприятий и средств, обеспечивающих безопасность, сохранения здоровья и работоспособность человека в процессе труда.
Всё многообразие законодательных актов, мероприятий и средств, включённых в понятие охраны труда, направленно на создание таких условий труда, при которых исключено воздействие на работающих опасных и вредных производственных факторов.
Опасный производственный фактор - это фактор, воздействие которого на работающего в определённых условиях приводит к травме или другому внезапному резкому ухудшению здоровья. К резкому ухудшению здоровья можно отнести: отравление, облучение, тепловой удар.
Вредный производственный фактор - фактор, воздействие которого на работающего в определённых условиях приводит к заболеванию или снижению работоспособности. В зависимости от уровня и продолжительности воздействия, вредный производственный фактор может стать опасным.
Условия труда - совокупность факторов производственной среды, оказывающих влияние на здоровье и работоспособность человека.
Система противопожарной защиты - совокупность организационных мероприятий и технических средств, направленных на предотвращение воздействия на людей опасных факторов пожара и ограничение материального ущерба от него [21].
Согласно гл.3 ст.16 закона РК "О безопасности и охране труда" обеспечение безопасных условий труда возлагается на работодателей. Они в свою очередь обязаны проводить обучение, инструктирование и проверку знаний по вопросам безопасности и охраны труда, а также внедрение современных средств техники безопасности, предупреждающих производственный травматизм, создание санитарно-гигиенические условий, предотвращающих возникновение травматизма и профессиональных заболеваний [20].
Согласно ст.8 п.7 Закона "О труде в Республике Казахстан" работодатель обязан обеспечить работникам условия труда в соответствии с законодательством о труде, индивидуальным трудовым, коллективным договорами. На каждом предприятии должен производиться анализ опасных и вредных факторов условий труда и разрабатываться мероприятия по их устранению [24].
Работа с компьютером характеризуется значительным умственным напряжением и нервно-эмоциональной нагрузкой операторов, высокой напряженностью зрительной работы и достаточно большой нагрузкой на мышцы рук при работе с клавиатурой ЭВМ. Большое значение имеет рациональная конструкция и расположение элементов рабочего места, что важно для поддержания оптимальной рабочей позы человека-оператора.
В процессе работы с компьютером необходимо соблюдать правильный режим труда и отдыха. В противном случае у персонала отмечаются значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи и руках.
К опасным и вредным производственным факторам, связанным с применением вычислительной техники, относятся: микроклимат; освещенность рабочего места оператора ЭВМ; пожарная безопасность; шум оборудования; поражение электрическим током; эргономичность рабочего места оператора [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
, что не соответствует СанПиН.
На основе выше изложенного можно сделать вывод, что помещение не в полной мере соответствует требованиям техники безопасности и СанПиН.
Уровень шума в помещениях с персональными компьютерами не должны превышать допустимого, регламентированного в ГОСТ 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) В ходе очередной модернизации парка вычислительных машин, при выборе комплекса технических средств, предпочтения следует отдавать ЭВМ с бесшумным охлаждением элементов системного блока.
Уменьшение шума, проникающего в помещение извне, может быть достигнуто уплотнением по периметру притворов окон, развешивание на окнах занавесей из плотной ткани.
Основным организационным мероприятием является инструктаж и обучение безопасным методам труда, а так же проверка знаний правил безопасности и инструкций в соответствии с занимаемой должностью применительно к выполняемой работе.
Проведение каждого вида инструктажа фиксируется в журнале инструктажа с указанием даты, вопросов, излагаемых в инструктаже, и подписями инструктора и инструктируемого. Планирование работ по ОТ выполняют на основе комплексного плана по ОТ.
Также, для безопасной организации работы оператора проводится ряд мероприятий по защите от поражения электрическим током, по снижению шума в ВЦ, проводят организацию отопления и вентиляции. Высокий уровень работоспособности также обеспечивает правильно спроектированное и выполненное освещение.
Рабочие места сотрудников ВЦ должны быть оборудованы одноместными столами, предназначенными для работы с ПК. Рабочее место рекомендуется оборудовать подставкой для ног, имеющей ширину не менее 30 см, глубину не менее 40 см, регулировку по высоте в пределах 15 см и по углу наклона опорной поверхности подставки до 20 градусов. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 1 см. рабочее место рекомендуется оснастить легко перемещаемым пюпитром для документов. Клавиатуру следует располагать на специальной, желательно регулируемой по высоте рабочей поверхности, отделенной от основной столешницы, или на поверхности стола на расстоянии 10-30 см от края, обращенного к пользователю. Расстояние клавиатуры от монитора должно быть не менее 30 см [
25].
Для снижения вредных излучений от дисплея необходимы следующие средства защиты:
спектральные компьютерные очки;
приэкранный защитный фильтр, не пропускающий основную часть вредных излучений;
использование жидкокристаллических экранов.
Для снижения зрительного напряжения рекомендуется для многоцветных дисплеев выбирать для знаков фона цвета с наиболее удаленными координатами цветности. Для текстовых сообщений и другой информации, требующей высокого разрешения, не рекомендуют применять воспроизведение на темном фоне изображений в цветах синего участка спектра. Конструкция монитора должна предусматривать наличие органов регулирования яркости и контрастности от минимального до максимального значений. В помещении должна находится таблица для индивидуального постоянного контроля остроты зрения, а в компьютере программа типа “Relax” для снятия усталости аккомодационных мышц.
Для поддержания нормируемых значений естественного освещения необходимо содержать в чистоте стекла оконных рам. Должна производиться замена сгоревших ламп искусственного освещения сразу же после выхода их из строя.
При проведении работ с ПК в целях предупреждения электротравматизма очень важно строго выполнять и соблюдать соответствующие организационные и технические мероприятия. К организационным мероприятиям относят: инструктаж персонала по электробезопасности, надзор во время работы со стороны инженера по ТБ за соблюдением мер безопасности.
Исключительно важное значение для предотвращения поражений электрическим током имеет правильная организация обслуживания действующих электроустановок ВЦ, проведение ремонтных, монтажных и профилактических работ.
К работам должны привлекаться лица, имеющие допуск на обслуживание электроустановок до 1000 вольт.
В ВЦ разрядные токи статического электричества чаще всего возникают при прикосновении обслуживающего персонала к любому из элементов ПЭВМ.
Заземление является основной мерой защиты от статического электричества; его цель - устранение электрических зарядов на проводящих элементах оборудования [25].
Согласно подпункту 4.4.1 и приложению 10 [16], уровни электрических и магнитных полей не должны превышать допустимых значений. Соответственно подпункту 4.4.2 [16], мощность экспозиционной дозы рентгеновского излучения в любой точке на расстоянии 0,05 м от экрана и корпуса ПК должна быть не более 2,5 мкЗв/час. Рекомендациями по снижению вредного влияния являются: работа на предписанном расстоянии от ПК (70-80 см, клавиатура 30 см от экрана), соблюдение продолжительности времени работы и отдыха, использование материалов, не накапливающих электростатический потенциал, своевременное периодическое размагничивание мониторов, использование экранных фильтров, или установка жидкокристаллических мониторов.
Для снижения величин возникающих зарядов статического электричества покрытие технологических полов следует выполнять из однослойного поливинилхлоридного антистатического линолеума марки АСН. Другим методом защиты является нейтрализация зарядов статического электричества ионизированным газом. В промышленности широко применяют радиоактивные нейтрализаторы. К общим мерам защиты от статического электричества можно отнести общее или местное увлажнение воздуха [23].
Правильно спроектированное и выполненное освещение обеспечивает высокий уровень работоспособности, оказывает положительное психологическое воздействие на работающих, способствует повышению производительности труда.
В машинных залах ВЦ рабочие места операторов, работающих с дисплеями, располагают подальше от окон и таким образом, чтобы оконные проемы находились сбоку. Если экран дисплея обращен к оконному проему, необходимы специальные экранирующие устройства. Окна рекомендуется снабжать светорассеивающими шторами, регулируемыми жалюзи или солнцезащитной пленкой с металлизированным покрытием.
В тех случаях, когда одного естественного освещения в помещении недостаточно, устраивают совмещенное освещение. При этом дополнительное искусственное освещение применяют не только в темное, но и в светлое время суток.
Для искусственного освещения помещений ВЦ следует использовать главным образом люминесцентные лампы, у которых высокая световая отдача (до 75 лм/Вт и более), продолжительный срок службы (до 10 000 ч), малая яркость светящейся поверхности, близкий к естественному спектральный состав излучаемого света, что обеспечивает хорошую цветопередачу.
Для ликвидации пожаров в начальной стадии применяются внутренние пожарные водопроводы. Пожарные краны установлены в коридорах, на площадках лестничных клеток, у входов, т.е. в доступных и заметных местах. Пожарные краны располагают в нишах на высоте 1,35 м, где также находятся пожарный ствол с напорным рукавом из тканевого материала.
Эвакуация людей проводится в соответствие с планом, приведенным на рисунке 10.2. При эвакуации стоит учесть, что дверь с кафедры металлическая двухстворчатая, причем вторая створка не открывается. Это может послужить дополнительным препятствием при срочной эвакуации учащихся.
Рисунок 10.2 - Схема эвакуации при пожаре
Пожарная профилактика представляет собой комплекс организационных и технических мероприятий, направленных на обеспечение безопасности людей, на предотвращении пожара, ограничение его распространения, а также создание условий для успешного тушения пожара. Для профилактики пожара чрезвычайно важна правильная оценка пожароопасности здания, определение опасных факторов и обоснование способов и средств пожаропредупреждения и защиты.
Для обнаружения начальной стадии загорания и оповещения службу пожарной охраны используют системы автоматической пожарной сигнализации.
Одно из условий обеспечения пожарной безопасности - ликвидация возможных источников воспламенения.
В целях предотвращения пожара необходимо проводить с персоналом, выполняющим какие-либо работы в аудитории, противопожарный инструктаж, на котором ознакомить работников с правилами противопожарной безопасности, а также обучить использованию первичных средств пожаротушения.
1) Требования к безопасности перед началом работы
Перед началом работы оператор обязан:
осмотреть и привести рабочее место в порядок;
отрегулировать освещённость на рабочем месте, убедиться в достаточности освещённости, отсутствии отражений на экране, отсутствии встречного светового потока;
убедиться в наличии защитного заземления и подключения экранного проводника к корпусу процессора;
убедиться в отсутствии дискет в дисководах системного блока компьютера;
проверить правильность установки стола, стула, подставки для ног, положения оборудования, угла наклона экрана, положение клавиатуры и, при необходимости, произвести регулировку рабочего стола и кресла, а также расположение элементов компьютера в соответствии с требованиями эргономики и в целях исключения неудобных поз и длительных напряжений тела.
При включении компьютера оператор обязан соблюдать следующую последовательность включения оборудования:
включить блок питания;
включить периферийные устройства;
включить системный блок.
Оператору запрещается приступать к работе при:
обнаружении неисправности оборудования;
отсутствии защитного заземления устройств ПЭВМ и ВДТ;
отсутствии углекислотного или порошкового огнетушителя и аптечки первой помощи;
нарушении гигиенических норм размещения ВДТ.
2) Требования безопасности во время работы
Оператор во время работы обязан:
в течение работы содержать в чистоте рабочее место;
устройство "мышь" применять только при наличии специального коврика;
при необходимости прекращения работы на некоторое время корректно закрыть все активные задачи;
выполнять санитарные нормы и режимы работы и отдыха;
соблюдать правила эксплуатации вычислительной техники в соответствии с инструкциями по эксплуатации;
при работе с текстовой информацией выбирать наиболее физиологический режим представления чёрных символов на белом фоне;
соблюдать установленные режимом рабочего времени регламентированные перерывы в работе и выполнять рекомендованные упражнения для глаз, шеи, рук, туловища, ног;
соблюдать расстояние глаз до экрана в пределах 60-80 см.
Во время работы оператору запрещается:
касаться одновременно экрана и клавиатуры;
прикасаться к задней панели системного блока при включённом питании;
производить переключение разъёмов интерфейсных кабелей периферийных устройств при включённом питании;
загромождать верхние панели устройств бумагами и посторонними предметами;
производить отключение питания во время выполнения активной задачи;
допускать попадание влаги на поверхность системного блока, монитора, рабочую поверхность клавиатуры, дисководов, принтеров и других устройств;
производить самостоятельное вскрытие и ремонт оборудования.
3) Требования безопасности в аварийных ситуациях
Оператор обязан:
во всех случаях обнаружения обрыва проводов питания, неисправности заземления и других повреждений электрооборудования, появления запаха гари немедленно отключить питание и сообщить об аварийной ситуации инженеру по ТБ;
при обнаружении человека, попавшего под напряжение, немедленно освободить его от действия тока путём отключения электропитания;
при любых случаях сбоя в работе технического оборудования или программного обеспечения немедленно сообщать инженеру по ТБ;
в случае появления рези в глазах, резком ухудшении видимости - невозможности сфокусировать взгляд или навести его на резкость, появлении боли в пальцах и кистях рук, усилении сердцебиения немедленно покинуть рабочее место и обратиться к врачу;
при возгорании оборудования отключить питание и принять меры к тушению очага пожара при помощи огнетушителя, сообщить инженеру по ТБ.
4) Требования безопасности после окончания работы
По окончании работы оператор обязан отключать оборудование вычислительной техники в следующем порядке:
произвести закрытие всех активных задач;
убедиться, что в дисководах нет дискет;
выключить питание системного блока;
выключить питание всех периферийных устройств;
отключить блок питания.
Оператор обязан осмотреть и привести в порядок рабочее место.
При работе с персональным компьютером очень важную роль играет соблюдение правильного режима труда и отдыха. В противном случае у персонала отмечаются значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи и руках.
В таблице 10.1 представлены сведения о регламентированных перерывах, которые необходимо делать при работе на компьютере, в зависимости от продолжительности рабочей смены, видов и категорий трудовой деятельности с ВДТ (видеодисплейный терминал) и ПЭВМ [16].
Таблица 10.1 - Время регламентированных перерывов при работе на ПК
Категория работы
с ВДТ или ПЭВМ
|
Уровень нагрузки за рабочую смену при видах работы с ВДТ
|
Суммарное время регламентированных перерывов, мин
|
Группа А, количество знаков
|
Группа Б, количество знаков
|
Группа В, часов
|
При 8-часовой смене
|
При 12-часовой смене
|
I
|
до 20000
|
до 15000
|
до 2,0
|
30
|
70
|
II
|
до 40000
|
до 30000
|
до 4,0
|
50
|
90
|
III
|
до 60000
|
до 40000
|
до 6,0
|
70
|
120
|
Примечание. Время перерывов дано при соблюдении указанных Санитарных правил и норм. При несоответствии фактических условий труда требованиям Санитарных правил и норм время регламентированных перерывов следует увеличить на 30%.
В соответствии с СанПиН все виды трудовой деятельности, связанные с использованием компьютера, разделяются на три группы:
группа А: работа по считыванию информации с экрана ВДТ или ПЭВМ с предварительным запросом;
группа Б: работа по вводу информации;
группа В: творческая работа в режиме диалога с ЭВМ.
Эффективность перерывов повышается при сочетании с производственной гимнастикой или организации специального помещения для отдыха персонала с удобной мягкой мебелью, аквариумом, зеленой зоной и т.п.
В рамках данного дипломного проекта была разработана система автоматизированного учета для багетной мастерской.
В разделе "Техническое задание" приведена спецификация разработанной системы, определен круг решаемых задач, а также определены требования к видам обеспечения.
В разделе "Информационное обеспечение" разработана структура информационных потоков, концептуальная модель, логическая и физическая модели данных.
В разделе "Лингвистическое обеспечение" были описаны внутренние языки системы, а также входной и выходной языки.
В разделе "Программное обеспечение" были описаны общесистемное, базовое и прикладное программное обеспечение.
В разделе "Техническое обеспечение" был описан и рекомендован комплекс технических средств.
В разделе "Методическое обеспечение" приведено руководство по установке системы, и руководство пользователя.
В разделе "Технико-экономическое обоснование" была определена себестоимость создания проекта и выполнен расчет экономической эффективности.
В разделе "Промышленная экология" рассмотрены вопросы защиты окружающей среды от вредного воздействия ионизирующих излучений.
В разделе "Охрана труда" был произведен анализ опасных и вредных производственных факторов, влияющих на здоровье человека работающего с ПК, и возможные меры по их устранению.
После разработки всех видов обеспечения системы "Багетная мастерская", были проведены тестовые испытания, результаты которых показали ее работоспособность и удобство в эксплуатации.
Использование системы, написанной на языке высокого уровня Object Pascal в среде Delphi 7.0, позволит повысить эффективность, производительность, а также упростить работу мастера и менеджера багетной мастерской, увеличив скорость принятия заказов, снижая время, затрачиваемое на расчет и оформление заказа, а также ведение складского учета.
1. Зартенова Л.Г., Мурых Е.Л. Методические указания по дипломному проектированию. - Караганда: КарГТУ, 2005, 28с.
2. Фаронов В. "Программирование баз данных в Delphi 7", Издательский дом "Питер", СПб:. 2006 г., 459с.
3. Михеева В., Харитонова И. Microsoft Access 2003. - СПб.: БХВ - Санкт-Петербург, 2004, 1072с.
4. Архангельский А.Я. Работа с локальными базами данных в Delphi 5. - М.: ЗАО "Издательство БИНОМ", 2000, 192с.
5. Сайт условно-бесплатного ПО www.freesoft.ru/index.html
6. Сайт автора программного комплекса "Багетная мастерская" www.ldm2. narod.ru/idex.html
7. Сайт тестирования и разгона аппаратного обеспечения ПК www.overclockers.ru
8. Фаронов В. Delphi 6. - М.: Издательский дом "Питер", 2002 г., 512с.
9. Глушаков С. Программирование в среде Deiphi 7. - Харьков: Фолио, 2003, 528с.
10. Культин Н. Deiphi в задачах и примерах. - СПб.: БХВ - Санкт-Петербург, 2003, 288с.
11. Сайт АРТ-предприятия "АНТУРАЖ" www.anturaj.74.ru/index1. php
12. Веб-сервис багетных мастеров www.bagetchik.ru/autobaget/faq. htm
13. Интернет-магазин www.artrex.ru/myframedart/photomodelg. php
14. Сайт сети салонов багетных мастерских в Москве http://www.art-master.ru/baget. php
15. Фурсов В.И. Экологические проблемы окружающей среды. Учебное пособие для вузов. Алма-Ата, Ана тiлi, 1991 г., 253с.
16. Санитарные правила и нормы №1 01.004.01. Гигиенические требования к организации и условиям работы с видеодисплейными терминалами и персональными электронно-вычислительными машинами. Астана. - Изд. офиц., 2001, 40 с.
17. Баклашин И.А., Марин Б.А. "Экологические исследования". Учебник для вузов.М., Недра, 1984.308с.
18. Экология и безопасность жизнедеятельности: учеб, пособие для вузов. Под ред. Л.А. Муравья. - М.: ЮНИТИ-ДАНА, 2002. - 447с.
19. Т.А. Хван, П.А. Хван. Основы экологии. Серия "Учебники и учебные пособия". Ростов н/Д: "Феникс", 2003. - 256с.
20. Закон Республики Казахстан "О безопасности и охране труда" от 28 февраля 2004 года №528-II. Издательский дом "Бико" Алматы 2004.
21. Охрана труда на предприятиях автомобильного транспорта (практические расчёты). Под ред. И.А. Салова М., "Транспорт", 1997.184с.
22. Правила пожарной безопасности в Республике Казахстан. Основные требования. ППБ РК 08-97, Алматы, 1999г.
23. Шумилин В.К. Краткий курс безопасности. Памятка для работников, занятых эксплуатацией ПЭВМ и видеодисплейных терминалов. Издательство "Соуэль" Москва: 32с.
24. Закон Республики Казахстан "О труде в Республике Казахстан" от 10 декабря 1999 года N 493. Ведомости Парламента Республики Казахстан, 1999 г., N 24, ст.1068; "Казахстанская правда" от 24 декабря 1999 г. N 294
25. Охрана труда в вычислительных центрах. - М.: Машиностроение, 1985. - 176с.
Программный код главного модуля системы "Багетная мастерская
"
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.
Образец бланка заказа генерируемого системой
Перечень замечаний и предложений нормоконтролера
Наименование документа
|
№ стр. (листа)
|
Условные пометки
|
Содержание изменений и предложений
|
Примечание
|
Пояснительная записка
|
Графическая часть
|
|