Научно-методичний центр
Научно-методический центр Санкт-Петербурга
Научные работы Доклады, курсовые, рефераты |
|
|
Примечание:
где
Для разработки программы принимается один программист: Инженер-программист
12 разряда, с трудоемкостью работ 5.2 Расчет себестоимости и цены программного продукта5.1.2 Расчет фонда заработной платыРабота программиста по условиям труда квалифицируется вредной. Согласно положению об оплате труда доплата за вредность составляет до 12% в зависимости от аттестации рабочего места. Для расчета заработной платы, тарифной ставки учитывается поправочный коэффициент за условие труда 1,12. Тарифный коэффициент 2,2 разряд 12. Дополнительный фонд заработной платы – 10% Отчисления
на социальные нужды- 19,5% Часовая тарифная ставка 2,2 разряда, с учетом доплаты за вредность, составляет: Тарифная заработная плата за отработанное время: Дополнительная заработная плата-10% от Зтар Оплата труда программиста составит:
Фонд оплаты труда на разработку программы составит:
Отчисления на социальные нужды: Общий фонд заработной платы на разработку программного обеспечения составит:
Среднемесячная заработная плата одного специалиста составит:
5.1.3 Расчет затрат на техническое обеспечения проектаДля разработки программного обеспечения необходимы технические средства: · монитор - 30000 тенге · системный блок - 95000 тенге · клавиатура – 1500 тенге · мышь – 1200 тенге · принтер – 20000 тенге · программный продукт - «Delphi» (лицензионный) - 150000 тенге · Windows XP (лицензионный) - 10000 тенге Итого затрат на техническое и программное обеспечение Соф = 307700 тенге Основные фонды переносят свою стоимость на создаваемую продукцию в виде амортизационных отчислений. Срок использования технических средств 3 года. Амортизация- это денежное выражения износа основных фондов. 5.1.4 Прочие затратыЗатраты на оплату машинного времени при отладке программы определяются путем умножения фактического времени отладки программы на цену машино-часа арендного времени: где Счас- цена машино-часа арендного времени, тен/час; tэвм- фактическое время отладки программы ЭВМ; Фактическое время отладки вычислим по формуле:
По усредненным расчетам фирм цена машино-часа арендуемого времени составляет 22,8 тг. Общие затраты на оплату машинного времени составляют:
5.1.5 Расчет затрат на текущий ремонтЗатраты на текущий и профилактический ремонт принимаются равными 5% от стоимости ЭВМ
Затраты на материалы, необходимые для обеспечения нормальной работы ПЭВМ составляют около 1% от стоимости ЭВМ:
Итого прочие затраты: Зпр = 1923,13+3684,27+384,63 = 5992 тенге 5.1.6 Затраты на материальные ресурсы1. Компакт-диск - 1 * 100 = 100 тенге 2. Вспомогательная литература 3000 тенге 3. Канцтовары – 800 тенге Итого материальные ресурсы – 3900 тенге 5.1.7 Расчет затрат на энергоресурсыДля выполнения программного проекта используется электроэнергия на технологические цели:
N - мощность технических средств- 0,5квт n - количество используемых технических средств. Ц - цена одного киловатта электроэнергии – 4,84 тг. t- время работы в часах. 35*8 = 280 5.3 Расчет экономической эффективности проектаКалькуляция себестоимости и отпускной цены
Эф = (Ц-С)/К Где Эф- экономическая эффективность. Готовая эффективность создания системы определяется из выражения: Эг = Где
где Кр- коэффициент реновации, принимается как норма амортизации с учетом срока службы существующего оборудования ( срок службы системы Т сл – 3года) и определяется по формуле: Кр = Ен/((1+Ен) тел -1), Кр = 0,15/((1+0,15)3 – 1) = 0,29 К- единовременное капиталовложение К = 97876,64 тенге (программные и технические затраты, фонд заработной платы, прочие расходы, материальные затраты, затраты на энергоносители и прочие расходы) Тогда изменение размера затрат составит:
Точная эффективность планируется в размере Эг = 130445,87 тенге. Теперь можно определить срок окупаемости Ток создания новой системы из выражения: Ток = К/Эг = 0,75 Данный срок окупаемости учитывает только материальные преимущества создания новой системы.
5.4 Технико-экономические показатели проектаПТ = Тн/Тпл*100% = 282,68/280*100% = 101 Тн- общая трудоемкость на программу Тф- фактическая трудоемкость Тф = ч*т*8 = 1*35*8 = 280 Где: Ч - численность программистов - 1 t - плановый срок выполнения работ - 35 8 - продолжительность рабочего дня 6. Мероприятия по технике безопасностии окружающей среды. 6.1. Охрана трудаОхрана труда - это система законодательных актов, социально-экономических, организационных, технических, гигиенических, и лечебно-профилактических мероприятий и средств, обеспечивающих безопасность, сохранение здоровья и работоспособности человека в процессе труда. В практической деятельности принято рассматривать законодательные акты и социально-экономические мероприятия в понятиях трудовое законодательство и управление охраной труда; технические мероприятия и средства - техника безопасности и система противопожарной защиты; гигиенические и лечебно-профилактические мероприятия и средства - гигиена труда и производственная санитария: организационные мероприятия - в понятиях как техники безопасности и производственной санитарии, так и управления охраной труда. Все многообразие законодательных актов, мероприятий и средств, включенных в понятие охраны труда, направлено на создание таких условий труда, при которых исключено воздействие на работающих опасных и вредных производственных факторов. Трудовое законодательство - это совокупность действующих законов и нормативных актов, регулирующих общественно-трудовые отношения рабочих и служащих. Законодательство о труде регулирует трудовые отношения всех рабочих и служащих, содействуя росту производительности труда, повышению эффективности производства и подъему на этой основе материального и культурного уровня жизни трудящихся, укреплению трудовой дисциплины. Оно устанавливает временную охрану права на труд рабочих и служащих и неотъемлемое право на создание им высокого уровня безопасности и здоровых условий труда. Право граждан на труд реализуется путем заключения рабочими и служащими трудового договора о роботе на соответствующем предприятии, в учреждении и организации. Трудовой вой договор есть соглашение между трудящимися и предприятием, по которому рабочий или служащий обязуется выполнять работу по определенной специальности, квалификации или должности с подчинением внутреннему распорядку. Предприятие по этому соглашению обязуется выплачивать трудящемуся заработную плату и обеспечивать условия, предусмотренные законодательством о труде коллективным договором и соглашением сторон. В соответствии с трудовым законодательством на всех предприятиях, в учреждениях и организациях должны быть созданы здоровые и безопасные условия труда. Обеспечение таких условий возлагается на администрацию, которая обязана внедрять современные средства техники безопасности, предупреждающие травматизм и создавать санитарно - гигиенические условия, предотвращающие возникновение профессиональных заболеваний. Важнейшим условием обеспечения безопасности труда является обучение, инструктаж и проверка знаний по охране труда. Лица, принимаемые на работу или переводимые на другую, проходят следующие виды, инструктажа: вводный, первичный на рабочем месте, повторный, внеплановый и текущий. Должностные лица, виновные в нарушении трудового законодательства, правил по технике безопасности и производственной санитарии, в невыполнении обязанностей по коллективным договорам и соглашениям по охране труда или в воспрепятствии деятельности профсоюзов, несут за это ответственность. В зависимости от степени вины они могут быть привлечены к дисциплинарной, административной, материальной и уголовной ответственности. Требования к рабочему месту программистаСтолы при этом должны быть достаточно больше - от 1200х800 мм до 1600х800 мм. На таком столе вы сможете разместить всю свою технику. Именно на столе, а не под столом как мы обычно это делаем, потому что под столом должно быть достаточно просторно ногам да и лазать под стол , чтобы вставить в дисковод дискету, тоже весьма утомительно. Сейчас модно иметь под столом подставку с наклоном от 5 до 15 градусов для ног, которая обеспечивает комфорт и покой ногам во время длительного сидения за компьютером. Стул при этом необходимо иметь на колёсиках, высота сидения от пола 42-53 см, высота стола – 72см. Усаживаться за компьютер нужно так, чтобы угол между туловищем и бёдрами, туловищем и предплечьем равнялся 90 градусов. Монитор должен стоять от глаз на расстоянии не менее 45см, притом желательно наклонить его так, чтобы вы глядели с монитором не «глаза в глаза», а взирали на него несколько сверху под углом от 5 до 35 градусов к поверхности экрана. Угол наклона клавиатуры к столу рекомендуется устанавливать в пределах 5-10 градусов. 6.2. Техника безопасностиТехника безопасности - система организационных мероприятий и технических средств, предотвращающих воздействие на работу в опасных производственных зонах или факторах. Существуют 5 видов инструктажей по технике безопасности: · вводный инструктаж (для всех независимо от образования или стажа работы); · первичный - на рабочем месте (в день приема на работу); · повторный (не реже одного раза в 6 месяцев); · неплановый (при изменении правил охраны труда); · текущий (проводят с работниками перед производством работ, на которых оформляется наряд-допуск). Во время работы на ПЭВМ в помещении повышается температура и снижается относительная влажность воздуха, ухудшается ионный и качественный состав воздуха; увеличивается содержание в воздухе органических веществ и двуокиси углерода. Содержание в воздухе указанных веществ может в несколько раз предельно превышать допустимой величины. По этой причине необходимо поддерживать следующие оптимальные параметры микроклимата: температура воздуха от 18 до 21° C; относительная влажность воздуха соответственно 55-62%; скорость движения воздуха менее 0,1м/с. Также должно осуществляться проветривание помещения, в зависимости от погодных условий, длительность должна быть не менее 10 мин. Наилучший обмен воздуха осуществляется при сквозном проветривании, Другой путь обеспечения воздухообмена, может, быть, достигнут установлением в оконных проемах автономных кондиционеров. Звукоизоляция ограждающих конструкций КВТ должна также отвечать определенным требованиям. Для снижения уровня шума потолок или стены выше 1.5 - 1.7 метра от пола должны облицовываться звукопоглощающим материалом с максимальным коэффициентом звукопоглощения в области частот 63-8000 Гц. Дополнительным звукопоглощением в КВТ могут быть занавески, подвешенные в складку на расстоянии 15-20 см. от ограждения, выполненные из плотной, тяжелой ткани. Для уменьшенного поглощения света потолок и стены выше панелей (3,5 - 1.7м.), если они не облицованы звукопоглощающим материалом, окрашиваются белой водоэмульсионной краской (коэффициент отражения должен быть не менее 0,7). Для окраски стены панелей рекомендуется отдавать предпочтение светлым краскам. В осветительных установках (ОУ) КВТ следует использовать систему общего освещения, выполненную потолочным или подвесным люминесцентными светильниками, равномерно размещенными по потолку рядами параллельно светопроемам так, чтобы экран видеомонитора находился в зоне защитного угла светильника, и его проекции не приходились на экран. Работающие на ПЭВМ не должны видеть отражение светильников на экране. Применять местное освещение при работе на ПЭВМ не рекомендуется. Работа на ПЭВМ может осуществляться при следующих видах освещения: Общим люминесцентном освещении, когда видеомониторы располагаются по периметру помещения или при центральном расположении рабочих мест в два ряда по длине класса с экранами, обращенные в противоположные стороны; Совмещенном освещении (естественное + искусственное) только при одном и трех рядном расположении рабочих мест, когда экран и поверхность рабочего стола находятся перпендикулярно светонесущей стене. Естественное освещение, когда рабочие места с ПЭВМ располагаются в один ряд по длине помещения на расстоянии 0,8 - 1,0м от стены с оконными проемами, и экраны находятся перпендикулярно этой стены. Основной поток естественного света при этой должен быть слева. Не допускается направление основного светового потока естественного света справа, сзади и спереди работающего на ПЭВМ. Оптимальное расстояние глаз до экрана видеомонитора должно составлять 60-70 см, допустимое не менее 50 см. Рассматривать информацию ближе 50 см не рекомендуется. Рекомендации по использованию вычислительной техники: -необходимо соблюдать ограничения на работу с персональными компьютерами для служащих, страдающих заболеваниями опорно-двигательного аппарата, глаз, кожи, а также для беременных женщин; -предпочтительнее использовать дисплеи с высокой разрешающей способностью и размером экрана не менее 14" (Hi-Resolution, Non-Interlaced); -лучше выбирать видеоадаптеры с высоким разрешением и частотой кадровой развертки не менее 70~72Гц; -обязательно ставить на дисплеи экранные фильтры с антистатическим покрытием, в несколько раз снижающие утомляемость глаз и концентрацию пылевых частиц в близи экрана монитора; -сидеть не ближе 70 см от дисплея: - экран дисплея должен быть ориентирован таким образом, чтобы исключить блики от источников света; -не следует располагать дисплей непосредственно под источником освещения или вплотную с ним; -желательно, чтобы освещенность рабочего места оператора не превышала 2/3 нормальной освещенности помещения; -стена позади дисплея должна быть освещена примерно так же, как его экран. -при размещении в одной комнате нескольких персональных компьютеров расстояние от рабочего места каждого оператора до задних и боковых стенок соседних персональных компьютеров должно составлять не менее 1.2м; - рабочее место должно быть оборудовано так, чтобы исключить неудобные позы и длительные статические напряжения тела; -общее время работы с дисплеем не должно превышать 50% всего рабочего времени оператора; - не следует превышать темп работы порядка 10 тысяч нажатий клавиш в час (примерно 1500 слов); - при обычной рабою с компьютером необходимо делать 15-минутные перерывы через каждые 2 часа, а при интенсивной работе - через каждый час. Помимо безопасности пользователя, необходимо сказать несколько слов и о безопасности компьютера и, что особенно важно, безопасности данных, хранящихся в нем. ПК, используемые для хранения особо важной информации необходимо оборудовать устройствами бесперебойного питания, поддерживающими питающее напряжение в течение некоторого времени при аварийных ситуациях в электрической сети. Нельзя загораживать заднюю стенку системного блока или ставить персональный компьютер вплотную к стене - это приводит к «тяжелому» режиму охлаждения системного блока и его перегреву. То же самое относится к дисплею - нельзя класть на него бумаги, книги и вообще все, что может закрыть его вентиляционные отверстия. Пыль и электроника плохо совместимы друг с другом, поэтому необходимо поддерживать в помещении приемлемый пылевой режим. При появлении запаха гари немедленно прекратить работу, выключить аппаратуру. Перед началом работы убедитесь в отсутствии видимых повреждений рабочего места, сядьте так, чтобы линия взора приходилась в центр экрана, чтобы, не наклоняясь пользоваться клавиатурой и воспринимать переданную на монитор информацию. Во время работы выполняйте указанные выше правила, следите за исправностью аппаратуры и немедленно прекратите работу при появлении постороннего звука или самопроизвольного отключения аппаратуры. Освещенность КВТ в учебных аудиторияхОсвещенность КВТ также имеет большое значение при работе на ПЭВМ. Она во многом определяется цветовой и сетевой обстановкой. Для уменьшенного поглощения света потолок и стены выше панелей (1,5-1,7м.), если они не облицованы звукопоглощающим материалом, окрашиваются белой водоэмульсионной краской (коэф. отражения должен быть не менее 0,7). Для окраски стены панелей рекомендуется отдавать предпочтение светлым краскам. В осветительных установках (ОУ)КВТ следует использовать систему общего освещения, вы полненную потолочным или подвесным люминесцентными светильниками, равномерно размещенными по потолку рядами параллельно светопроемам так, чтобы экран видеомонитора находился в зоне защитного угла светильника и его проекции не приходилась на экран. Работающие на ПЭВМ не должны видеть отражение светильников на экране. Применять местное освещение при работе на ПЭВМ не рекомендуется. Основной поток естественного света при этой должен быть слева. Не допускается направление основного светового потока естественного света справа, сзади и спереди работающего на ПЭВМ. Работа на ПЭВМ во время занятий или при производственной практике может осуществляться при следующих видах освещения: общим люминесцентном освещение – видеомониторы располагаются по периметру помещения или при центральном расположении рабочих мест в два ряда по длине класса с экранами, обращенными в противоположные стороны; совмещенном освещение, (естественное + искусственное) только при одном или трех рядном расположении рабочих мест, когда экран и поверхность рабочего стола находятся перпендикулярно светонесущей стене; естественное освещение, когда рабочие места с ПЭВМ располагаются в один ряд по длине класса на расстоянии 0,8-1,0м от стены с оконными проемами, и экраны находятся перпендикулярно этой стены. Основной поток естественного света при этом освещение должен быть слева. Оптимальное расстояние глаз до экрана видеомонитора должно составлять 60-70 см, допустимое не менее 50 см. Рассматривать информацию ближе 50 см не рекомендуется. Пожарная безопасность при работе на персональном компьютере.Пожары в вычислительном центре представляют особую опасность,
так как поряжены с большими материальными потерями. Характерная особенность
небольшие площади помещений. Как известно, пожар может возникнуть при
взаимодействии веществ, окислителя, и источников зажигания. Горючими
компонентами являются: строительные материалы для акустической и эстетической
отделки помещений, перегородки, полы, двери, изоляция силовых, сигнальных
кабелей и т.д. Для отвода теплоты от ЭВМ действует мощная система
кондиционирования. Поэтому кислород, как Особенностью компьютеров является очень высокая плотность расположения микросхем. При прохождении электрического тока по проводникам и деталям выделяется тепло, что в условиях их высокой плотности может привести к перегреву. Надежная работа отдельных элементов и микросхем в целом обеспечивается только в определенных интервалах температуры, влажности и при заданных электрических параметрах. При отклонении реальных условий эксплуатации от расчетных могут возникнуть пожароопасные ситуации. Кабельные линии являются наиболее пожароопасным местом. Наличие горючего изоляционного материала, вероятных источников зажигания в виде электрических искр и дуг, разветвленность и недоступность делают кабельные линии местом наиболее вероятного возникновения и развития пожара. Для понижения воспламеняемости и способности распространять пламя кабели покрывают огнезащитными покрытиями. Пожар - это неконтролируемое горение вне специального очага, который наносит огромный ущерб. Главная причина пожара неэлектрического характера является неосторожное обращение с огнем, а также взрывы газо-воздушных и паро-воздушных смесей. Электрическое горение - это замыкание, перегрузка электрического тока на электрическом оборудовании, грозовая молния. Устранение причин пожара в электрических оборудования проводится в различных направлениях: предупреждение замыкания осуществляется правильным выбором, монтажом эксплуатацией сетей; применение защиты схем в виде быстродействующих реле, а также выключателей, плавких предохранителей, автоматических выключателей. Важное внимание следует обратить на пожарную безопасность предприятия в целом и отдельных его помещений. В помещениях не должен скапливаться мусор, ненужные бумаги, хлам и др. вещи, не используемые в производственном процессе. Необходимо предусмотреть аварийный выход из пределов помещения в случае пожара. В помещении должны быть предусмотрены огнетушители. Они должны быть в рабочем состоянии и проверяться согласно нормам. В помещениях должна быть пожарная сигнализация. В случае возникновения пожара необходимо сообщить в ближайшую пожарную часть и по возможности предпринять некоторые шага по его устранению. ЭлектробезопасностьТак как работа программиста прямо связана с электрооборудованием, необходимо уметь пользоваться им правильно и соблюдать меры безопасности от поражения электрического тока. Существует множество мер от повреждения электрическим током. Одно из них защитное заземление. Защитное заземление - преднамеренно электрическое заземление с землей или ее эквивалентом металлических нетоковедущих частей, которые могут оказаться под напряжением вследствие замыкания на корпус и по другим причинам. Назначение защитного заземления - устранение опасности поражением током в случае прикосновения к корпусу и другим токоведущим частям электроустановки, оказавшимся под напряжением. Принцип действия защитного заземления - снижение до безопасных значений напряжений прикосновения и шага, обусловленных замыканием на корпус и др. причинами. Это достигается путем, уменьшения потенциала заземленного оборудования (за счет подъема потенциала основания, на котором стоит человек, до значения, близкого к значению потенциала заземленного оборудования). Также есть и такая мера защиты от поражения электрического тока, называемая занулением. Опасность поражения током при прикосновении к корпусу и другим нетоковедущим металлическим частям электрооборудования, оказавшимся под напряжением вследствие замыкания на корпусе и по др. причинам, может быть устранена быстрым отключением поврежденной электроустановки от питающей сети и вместе с тем снижением напряжения корпуса относительно земли. Этой цели и служит зануление. Зануление - преднамеренное электрическое соединение с нулевым защитным проводником металлических нетоковедущих частей, которые могут оказаться под напряжением. Нулевым защитным проводником называется проводник, соединяющий зануляемые части с глухо-заземленной нейтральной точкой источника тока или ее эквивалентом. Принцип действия зануления - превращение замыкания с целью вызвать большой ток, способный обеспечить срабатывание защиты и тем самым автоматически отключить поврежденную электроустановку от питающей сети. Также существует такое средство защиты как защитное отключение. Защитное отключение - быстродействующая защита, обеспечивающая отключение электроустановки при возникновении в ней опасности поражения человека током. Такая опасность может возникнуть, в частности, при замыкании фазы на корпус, снижения изоляции сети ниже определенного предела и, наконец, в случае прикосновения человека непосредственно к токоведущей части, находящейся под напряжением. Основными элементами устройства защитного отключения является прибор защитного отключения и автоматический выключатель. Прибор защитного отключения - совокупность отдельных элементов, которые воспринимают входную величину, реагирует на ее изменения и при заданном значении дают сигнал на ее отключение выключателя. Этими элементами являются: датчик - входное звено устройства, воспринимающие воздействия из вне и осуществляющее преобразование этого воздействия в соответствующий сигнал; усилитель, предназначенный для усиления сигнала датчика, если он оказывается недостаточно мощным; цепи контроля, служащие периодической проверки исправности защитного отключения; вспомогательные элементы - сигнальные лампы и измерительные приборы, характеризующие состояние электроустановки. Автоматический выключатель - аппарат, предназначенный для включения и отключения от цепей под нагрузкой и при коротких замыканиях. Он должен включать цепь автоматически при поступлении сигнала от прибора защитного отключения. Также есть различные электрические защитные средства от поражения током. Защитные средства могут быть условно разделены на три группы: изолирующие, ограждающие и предохранительные. Изолирующие - изолируют человека от токоведущих или заземленных частей, а также от земли. Они делятся на основные и дополнительные. Основные - обладают изоляцией, способной длительно выдерживать рабочее напряжение электроустановки и поэтому ими разрешается касаться токоведущих частей, находящихся под напряжением. К ним относятся: в электроустановках до 1000 Вт – диэлектрические перчатки, изолирующие штанги, изолирующие и электро измерительные клещи и т.д.; свыше 1000Вт - изолирующие штанги, и электроизмерительные клещи, а также средства для ремонтных работ под напряжением свыше 1000Вт. Дополнительные - обладают изоляцией неспособной выдержать рабочее напряжение электроустановки, и поэтому они не могут самостоятельно защищать человека от поражения током под этим напряжением. Их значение – усилить защитные действия основных и изолирующих средств, вместе с которыми они должны применяться, при чем при использовании основных защитных средств достаточно применения одного дополнительного защитного средства. К дополнительным относятся средства в электроустановках до 1000Вт - диэлектрические галоши н коврики, а также изолирующие подставки. 6.3 Охрана окружающей средыОхрана окружающей среды - комплекс научно-технических, производственно-хозяйственных и административно-правовых мероприятии, направленных на сохранение и надлежащее использование земли и ее недр, водных ресурсов, растительного и животного мира, обеспечение чистоты воздуха и воды, воспроизводства природных богатств, гармоничные взаимоотношения между обществом и природой. Не сложно представить себе процветающую экономику, при которой люди из года в год становятся все более больными в результате неправильного подхода к своему здоровью и загрязненной окружающей среды. По мере того, как мы строим свое общество, необходимо применять нарастающие усилия в том, чтобы наши граждане были здоровыми на протяжении всей своей жизни, и их окружала здоровая природная среда. Источником загрязнения атмосферного воздуха называется технологический агрегат, выделяющий в процессе эксплуатации вредные вещества. Количество выделенных веществ зависит от типа и мощности производства, его технической оснащенности и определяется путем инструментальных замеров или расчетов с использованием специальных отраслевых методик. Основными мероприятиями по снижению выбросов вредных веществ в, атмосферу являются совершенствование технологических процессов, включая снижение производственных выбросов; строительство новых и повышение эффективности существующих очистных устройств; ликвидация источников загрязнения, перепрофилирование производства. Применительно к предприятиям машиностроительного производства наиболее значимым представляется газа - и пылеулавливание вентиляционных выбросов, особенно при открытой разливке металлов. Очистку и обезвреживание газовых составляющих выбросов промышленных производств осуществляют методами, выбор которых определяется составом, концентрации загрязняющих веществ, типа производства, условиями выброса. Очистку вентиляционных выбросов от механических примесей осуществляют аппаратами, мокрого и сухого пылеулавливания, волокнистыми фильтрами и электрофильтрами. В качестве фильтров используют различные фильтрующие, тонкие грубо волокнистые материалы. Кроме того, на предприятиях машиностроения широкое применение получили электрофильтры, которые в зависимости от способа удаления осажденным на электродах частиц подразделяются на сухие и мокрые. Защита вод питьевого назначения также имеет глобальное значение. Степень очистки сточных вод устанавливается в зависимости от местных условий с учетом возможного использования очищенных сточных вод - для промышленных и сельскохозяйственных нужд. На предприятиях металлургической и машиностроительной промышленности очистка сточных вод осуществляется, как правило, в отстойниках, шлаконакопителях, нефте-маслоловушках с использованием ряде случаев коагулянтов. Полученный шлак, содержащий большое количество металлов, утилизируется и включается в состав шихты. Очищенные воды в большинстве случаев используются в системах оборотного водоснабжения. При этом вода основного источника или из других циклов водопользования идет на компенсацию потерь оборотной воды. Важным направлением охраны окружающей среды является охрана почв от водной и ветровой эрозии, борьба с их засолением путем введения соответствующих севооборотов, создания лесозащитных полос, закрепления и облесения оврагов и балок, использования средств мелиорации. В целях снижения загрязнения почв различными промышленными отходами в практике охраны земельных ресурсов предусматриваются следующие мероприятия: утилизация, обезвреживание методом сжигания, захоронение на специальных полигонах, организация усовершенствованных свалок. Выбор метода обезвреживания и утилизации отходов зависит от их химического состава и степени влияния на окружающую среду. В ряде случаев отходы машиностроительных и металлургических производств содержат значительное количество химических соединений, которые могут представлять ценность как сырье и использоваться в виде дополнения к шахте. 7. заключениеВ результате дипломного проектирования была разработана программа «АРМ менеджера по продажам в автосалоне «A-Motors», предназначенная для для регистрации и ведения учета продаж автомобилей. Программа предназначена для того, чтобы облегчить рутинный труд менеджера автосалона, тратящего ежедневно массу времени на бумажную работу. У данного приложения удобный интерфейс, рассчитанный на не подготовительного пользователя. Рекомендуется использовать программу на более мощных персональных компьютерах, согласно требованиям к аппаратному программному обеспечению. 8. Список использованных источников1. Епанешников А.М., Епанешников В.А. «Delphi 4 Среда разработки». Учебное пособие М: Диалог – Мифи, 1999г.- 304с. 2. Культин Н. “Программирование на Object Pascal» СПБ: БХВ – Санкт-Петербург, 1999г. 480с. 3. Фаронов В.В., Шумаков П.В. «DELPHI 4 Руководство разработки баз данных”, М: Нолидж, 1999г., 560с. 4. Шумаков П.В. «DELPHI 3 и разработка приложений баз данных” М: Нолидж, 1998г., 704с 5. Драхведидзе М.Г., Марков Е.П. . «DELPHI 4 среда визуального программирования” СП8:BHV –Санкт – Петербург, 1999г.,352с. 6. Фаронов В.В. Delphi 4. Учебный курс. - Москва, 1998 7. Валерий Фаронов Профессиональная работа в Delphi 6 Москва 2002 8. Том Сван Delphi 4 Библия разработчика Москва 1998 9. Деви Хакер Delphi 5 Руководство разработчика. (электронный вариант в формате pdf) 16. Delphi 6 Учебный курс (электронный вариант в формате CHM) 10. Иллюстрированный самоучитель по Delphi 6 (электронный вариант в формате HTML) 18. Delphi 6 и технология COM Москва 2002 11. БорисовЕ.Ф..“Основы экономической теории”, 12. Сергеев И.В.“Экономика предприятия” 13. Райзберг Б.А., Лозовский Л.Ш., Стародубцев Е.Б. “Современный экономический словарь” 14. Скала В.И. “Охрана труда и техника безопасности”, – Алматы: «LEM», 2002. –276с 15. “Охрана труда ” -М.;1989 Приложение а. основные модули приложенияА.1 Модуль формы окна «О программе»unit about; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, RxGIF, ExtCtrls; type TFAbout = class(TForm) Image1: TImage; Label1: TLabel; Label2: TLabel; procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var FAbout: TFAbout; implementation {$R *.dfm} procedure TFAbout.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; end. А.2 Модуль формы окна «Зарегистрировать автомобиль»unit add; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, glLabel, DBTables,ExtCtrls, glBevel, StdCtrls, RxGIF, DBCtrls, LMDControl, LMDBaseControl, LMDBaseGraphicButton, LMDCustomSpeedButton, LMDSpeedButton, ExtDlgs,IDGlobal, ToolEdit, Mask, LMDCustomControl, LMDCustomPanel, LMDCustomBevelPanel, LMDBaseEdit, LMDCustomEdit, LMDCustomBrowseEdit, LMDCustomFileEdit, LMDFileOpenEdit, jpeg; type TFadd = class(TForm) Panel1: TPanel; glLabel1: TglLabel; Продолжение приложения АLabel1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Panel2: TPanel; Panel3: TPanel; glLabel2: TglLabel; glLabel3: TglLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; ComboBox1: TComboBox; Edit12: TEdit; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; CheckBox6: TCheckBox; CheckBox7: TCheckBox; CheckBox8: TCheckBox; Edit13: TEdit; ComboBox2: TComboBox; Label15: TLabel; ComboBox3: TComboBox; ComboBox4: TComboBox; Label16: TLabel; Label17: TLabel; Memo1: TMemo; Label18: TLabel; Label19: TLabel; Memo2: TMemo; Image2: TImage; Panel4: TPanel; Panel5: TPanel; LMDSpeedButton1: TLMDSpeedButton; LMDSpeedButton2: TLMDSpeedButton; LMDSpeedButton3: TLMDSpeedButton; Label20: TLabel; DBLookupComboBox1: TDBLookupComboBox; Image3: TImage; Продолжение приложения АglLabel4: TglLabel; LMDSpeedButton4: TLMDSpeedButton; LMDSpeedButton5: TLMDSpeedButton; OpenPictureDialog2: TOpenPictureDialog; Image4: TImage; Image5: TImage; glLabel5: TglLabel; Label21: TLabel; Label22: TLabel; Edit14: TEdit; DateEdit1: TDateEdit; OpenPictureDialog1: TOpenPictureDialog; Image1: TImage; DBLookupComboBox2: TDBLookupComboBox; procedure LMDSpeedButton4Click(Sender: TObject); procedure LMDSpeedButton5Click(Sender: TObject); procedure LMDSpeedButton2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure LMDSpeedButton3Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure LMDSpeedButton1Click(Sender: TObject); procedure OpenPictureDialog1CanClose(Sender: TObject; var CanClose: Boolean); procedure Edit6KeyPress(Sender: TObject; var Key: Char); procedure Edit7KeyPress(Sender: TObject; var Key: Char); procedure Edit13KeyPress(Sender: TObject; var Key: Char); procedure Edit14KeyPress(Sender: TObject; var Key: Char); procedure DBLookupComboBox2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Fadd: TFadd; pic1,pic2:string; implementation uses dm; {$R *.dfm} function gen_id(table:TTable; var name:string):integer; var n:integer; begin table.First; n:=table.FieldByName(name).asinteger; while not table.Eof do begin if table.FieldByName(name).Value>n then n:=table.FieldByName(name).Value; table.Next; end; gen_id:=n+1; end; procedure TFadd.LMDSpeedButton4Click(Sender: TObject); begin OpenPictureDialog1.Execute; Продолжение приложения Аpic1:=OpenPictureDialog1.FileName; if pic1<>'' then Image4.Picture.LoadFromFile(pic1) else begin MessageBox(Handle,'Фотография кузова не выбрана!','',MB_OK); exit; end; end; procedure TFadd.LMDSpeedButton5Click(Sender: TObject); begin OpenPictureDialog1.Execute; pic2:=OpenPictureDialog1.FileName; if pic2<>'' then Image5.Picture.LoadFromFile(pic2) else begin MessageBox(Handle,'Фотография салона не выбрана!','',MB_OK); exit; end; end; procedure TFadd.LMDSpeedButton2Click(Sender: TObject); begin edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; edit6.Text:=''; edit7.Text:=''; edit8.Text:=''; edit9.Text:=''; edit10.Text:=''; edit11.Text:=''; edit12.Text:=''; edit13.Text:=''; edit14.Text:=''; CheckBox1.Checked:=false; CheckBox2.Checked:=false; CheckBox3.Checked:=false; CheckBox4.Checked:=false; CheckBox5.Checked:=false; CheckBox6.Checked:=false; CheckBox7.Checked:=false; CheckBox8.Checked:=false; Memo1.Clear; Memo2.Clear; end; procedure TFadd.FormCreate(Sender: TObject); begin // dm1.vlad.Close; // dm1.vlad.Open; Memo1.Clear; Memo2.Clear; end; procedure TFadd.LMDSpeedButton3Click(Sender: TObject); begin close; end; Продолжение приложения Аprocedure TFadd.FormClose(Sender: TObject; var Action: TCloseAction); begin edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; edit6.Text:=''; edit7.Text:=''; edit8.Text:=''; edit9.Text:=''; edit10.Text:=''; edit11.Text:=''; edit12.Text:=''; edit13.Text:=''; edit14.Text:=''; CheckBox1.Checked:=false; CheckBox2.Checked:=false; CheckBox3.Checked:=false; CheckBox4.Checked:=false; CheckBox5.Checked:=false; CheckBox6.Checked:=false; CheckBox7.Checked:=false; CheckBox8.Checked:=false; Memo1.Clear; Memo2.Clear; end; procedure TFadd.LMDSpeedButton1Click(Sender: TObject); var k1,k2,k3:integer; st1,q1,st2,q2,v,a,a_i:string; i,u:integer; begin if (edit1.Text='') or (edit2.Text='') or (edit3.Text='') or (edit4.Text='') or (DBLookupComboBox2.KeyValue=Null) or (edit9.Text='') or (edit10.Text='') or (edit11.Text='') or (edit12.Text='') or (edit13.Text='') or (edit14.Text='') or (pic1='') or (pic2='') then begin MessageBox(Handle,'Возможно некоторые поля не заполнены!','Внимание',MB_OK); exit; end else begin dm1.komplect.Append; dm1.avto_in.Append; v:='KOD_vlad'; k1:=gen_id(dm1.vlad,v); dm1.vlad.Append; dm1.vlad.FieldByName('KOD_vlad').Value:=k1; dm1.vlad.FieldByName('FAM').Value:=edit1.text; dm1.vlad.FieldByName('NAME').value:=edit2.Text; dm1.vlad.FieldByName('OTH').value:=edit3.text; dm1.vlad.FieldByName('adres').value:=edit4.text; dm1.vlad.fieldByName('mail').value:=edit5.Text; dm1.vlad.FieldByName('tel').value:=edit6.text; dm1.vlad.FieldByName('sot').value:=edit7.text; Продолжение приложения Аa:='KOD_avto'; k2:=gen_id(dm1.avto,a); dm1.avto.Append; dm1.avto.FieldByName('KOD_avto').Value:=k2; dm1.avto.FieldByName('KOD_vlad').Value:=k1; dm1.avto.FieldByName('marka').Value:=DBLookupComboBox2.KeyValue; dm1.avto.FieldByName('model').value:=edit9.Text ; dm1.avto.FieldByName('cvet').value:=edit11.text; dm1.avto.FieldByName('gos_nom').value:=edit10.text ; dm1.avto.fieldByName('tip_kuz').value:=ComboBox1.Text; dm1.avto.FieldByName('v').value:=edit12.text; dm1.avto.FieldByName('cena').value:=edit13.text; st1:=''; q1:=''; for i:=length(pic1) downto 1 do if pic1[i]<>'.' then insert(pic1[i],q1,0) else break; st1:=ExtractFilePath(Application.Exename); ForceDirectories(st1+'FOTO'); if dm1.avto.FieldByName('foto_1').AsString<>'' then DeleteFile(st1+'FOTO\'+dm1.avto.FieldByName('foto_1').AsString); if copyfileto(pchar(pic1),pchar(st1+'FOTO\'+inttostr(k2)+'kuz' + '.'+q1)) then else begin MessageBox(Handle,'Невозможно скопировать файл!','Внимание',MB_OK); exit; end; dm1.avto.FieldByName('foto_1').AsString:=inttostr(k2)+'kuz' + '.'+q1; st2:=''; q2:=''; for u:=length(pic2) downto 1 do if pic2[u]<>'.' then insert(pic2[u],q2,0) else break; st2:=ExtractFilePath(Application.Exename); ForceDirectories(st2+'FOTO'); if dm1.avto.FieldByName('foto_2').AsString<>'' then DeleteFile(st2+'FOTO\'+dm1.avto.FieldByName('foto_2').AsString); if copyfileto(pchar(pic2),pchar(st2+'FOTO\'+inttostr(k2)+'sal' + '.'+q2)) then else begin MessageBox(Handle,'Невозможно скопировать файл!','Внимание',MB_OK); exit; end; dm1.avto.FieldByName('foto_2').AsString:=inttostr(k2)+'sal' + '.'+q2; dm1.komplect.FieldByName('KOD_avto').Value:=k2; if CheckBox1.Checked=true then dm1.komplect.FieldByName('zapaska').Value:='true' else dm1.komplect.FieldByName('zapaska').Value:='false'; if CheckBox2.Checked=true then dm1.komplect.FieldByName('instrument').Value:='true' else dm1.komplect.FieldByName('instrument').Value:='false'; Продолжение приложения Аif CheckBox3.Checked=true then dm1.komplect.FieldByName('music').Value:='true' else dm1.komplect.FieldByName('music').Value:='false'; if CheckBox4.Checked=true then dm1.komplect.FieldByName('medic').Value:='true' else dm1.komplect.FieldByName('medic').Value:='false'; if CheckBox5.Checked=true then dm1.komplect.FieldByName('elect_pak').Value:='true' else dm1.komplect.FieldByName('elect_pak').Value:='false'; if CheckBox6.Checked=true then dm1.komplect.FieldByName('abs').Value:='true' else dm1.komplect.FieldByName('abs').Value:='false'; if CheckBox7.Checked=true then dm1.komplect.FieldByName('gur').Value:='true' else dm1.komplect.FieldByName('gur').Value:='false'; if CheckBox8.Checked=true then dm1.komplect.FieldByName('kondic').Value:='true' else dm1.komplect.FieldByName('kondic').Value:='false'; dm1.komplect.FieldByName('koleso').Value:=ComboBox2.Text; dm1.komplect.FieldByName('korobka').Value:=ComboBox3.Text; dm1.komplect.FieldByName('privod').Value:=ComboBox4.Text; dm1.komplect.FieldByName('info').Value:=Memo1.Text; dm1.komplect.FieldByName('defekt').Value:=Memo2.Text; a_i:='KOD_avto'; k3:=gen_id(dm1.avto,a_i); dm1.avto_in.FieldByName('KOD_in').Value:=k3; dm1.avto_in.FieldByName('akt_nom').Value:=Edit14.Text; dm1.avto_in.FieldByName('KOD_avto').Value:=k2; dm1.avto_in.FieldByName('KOD_vlad').Value:=k1; dm1.avto_in.FieldByName('KOD_sot').Value:=DBLookupComboBox1.KeyValue; dm1.avto_in.FieldByName('data').Value:=DateEdit1.Date; // dm1.vlad.Post; // dm1.avto.Post; dm1.komplect.Post; dm1.avto_in.Post; edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; edit6.Text:=''; edit7.Text:=''; edit8.Text:=''; edit9.Text:=''; edit10.Text:=''; edit11.Text:=''; edit12.Text:=''; edit13.Text:=''; Продолжение приложения Аedit14.Text:=''; CheckBox1.Checked:=false; CheckBox2.Checked:=false; CheckBox3.Checked:=false; CheckBox4.Checked:=false; CheckBox5.Checked:=false; CheckBox6.Checked:=false; CheckBox7.Checked:=false; CheckBox8.Checked:=false; Memo1.Clear; Memo2.Clear; end; end; procedure TFadd.OpenPictureDialog1CanClose(Sender: TObject; var CanClose: Boolean); begin MessageBox(Handle,'Вы не выбрали машину!','Внимание',MB_OK); end; procedure TFadd.Edit6KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9',#8: key:=key else key:=#0; end; end; procedure TFadd.Edit7KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9',#8: key:=key else key:=#0; end; end; procedure TFadd.Edit13KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9',#8: key:=key else key:=#0; end; end; procedure TFadd.Edit14KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9',#8: key:=key else key:=#0; end; end; procedure TFadd.DBLookupComboBox2Click(Sender: TObject); begin // Edit8.Text:=DBLookupComboBox2.KeyValue; end; Продолжение приложения Аend. А.3 Модуль формы «Удалить автомобиль»unit del; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, ExtCtrls, StdCtrls, LMDControl, LMDBaseControl, LMDBaseGraphicButton,ActiveX,ComObj, ComCtrls, LMDCustomSpeedButton, LMDSpeedButton,DB; type TFdel = class(TForm) Panel1: TPanel; DBGrid1: TDBGrid; Panel5: TPanel; Panel2: TPanel; Image1: TImage; LMDSpeedButton1: TLMDSpeedButton; Edit1: TEdit; RadioGroup1: TRadioGroup; Panel3: TPanel; LMDSpeedButton2: TLMDSpeedButton; Image2: TImage; RadioGroup2: TRadioGroup; Panel4: TPanel; Image3: TImage; LMDSpeedButton3: TLMDSpeedButton; LMDSpeedButton4: TLMDSpeedButton; procedure LMDSpeedButton1Click(Sender: TObject); procedure LMDSpeedButton2Click(Sender: TObject); procedure LMDSpeedButton4Click(Sender: TObject); procedure LMDSpeedButton3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Fdel: TFdel; App, Ke, Abc : Variant; ExelOtch : String; Result : HResult; AppProgID : string; ServerIsRunning :boolean; Unknown :IUnknown; i:integer; implementation uses dm; {$R *.dfm} Продолжение приложения Аprocedure TFdel.LMDSpeedButton1Click(Sender: TObject); begin if edit1.Text<>'' then begin if RadioGroup1.ItemIndex=0 then if dm1.avto_out.Locate('marka_out',edit1.Text,[loCaseInsensitive]) then else MessageBox(Handle,'Нет автомобиля такой марки...','',MB_OK); if RadioGroup1.ItemIndex=1 then if dm1.avto_out.Locate('model_out',edit1.Text,[loCaseInsensitive]) then else MessageBox(Handle,'Нет автомобиля такой модели...','',MB_OK); end else MessageBox(Handle,'Введите значение для поиска!','',MB_OK); end; procedure TFdel.LMDSpeedButton2Click(Sender: TObject); begin if RadioGroup2.ItemIndex=0 then dm1.avto_out.IndexName:='marka_out'; if RadioGroup2.ItemIndex=1 then dm1.avto_out.IndexName:='V_out'; if RadioGroup2.ItemIndex=2 then dm1.avto_out.IndexName:='tipkuz_out'; end; procedure TFdel.LMDSpeedButton4Click(Sender: TObject); begin close; end; procedure TFdel.LMDSpeedButton3Click(Sender: TObject); begin AppProgID := 'Excel.Application'; ServerIsRunning := False; Result:=GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown); try if (Result = MK_E_UNAVAILABLE) then App := CreateOleObject(AppProgID) else begin App := GetActiveOleObject(AppProgID); ServerIsRunning := True; end; ExelOtch:=ExtractFilePath(Application.EXEName)+'Проданные автомобили на '+DateToStr(Date)+'.xls'; App.WorkBooks.Add; Ke:=App.WorkBooks[1]; Abc:=Ke.WorkSheets[1]; Abc.Name:='Проданные авто('+DateToStr(Date)+').xls'; except on EinOutError do begin messageBox(handle,'Не удаётся создать файл!','Ошибка',MB_ICONERROR); exit; end; end; App.DisplayAlerts:=False; Abc.Cells[1,3]:='Проданные авто('+DateToStr(Date)+').xls'; Продолжение приложения АAbc.Cells[1,3].Font.Bold:=True; Abc.Cells[1,3].Font.Size:=11; dm1.avto_out.first; i:=3; while not dm1.avto_out.eof do begin i:=i+1; app.cells[i,1]:=vartostr(dm1.avto_out['Marka_out']); Abc.Cells[i,1].ColumnWidth:=15; app.cells[i,2]:=vartostr(dm1.avto_out['Model_out']); Abc.Cells[i,2].ColumnWidth:=15; app.cells[i,3]:=vartostr(dm1.avto_out['v_out']); Abc.Cells[i,3].ColumnWidth:=5; app.cells[i,4]:=vartostr(dm1.avto_out['cvet_out']); Abc.Cells[i,4].ColumnWidth:=15; app.cells[i,5]:=vartostr(dm1.avto_out['tipkuz_out']); Abc.Cells[i,5].ColumnWidth:=15; app.cells[i,6]:=vartostr(dm1.avto_out['cena_out']); Abc.Cells[i,6].ColumnWidth:=10; app.cells[i,7]:=vartostr(dm1.avto_out['date']); Abc.Cells[i,7].ColumnWidth:=8; dm1.avto_out.next; end; App.ActiveWorkBook.SaveAs(ExelOtch); App.Quit; App:=Unassigned; AppProgID := 'Excel.Application'; App := CreateOleObject(AppProgID); App.Visible := True; ExelOtch:=ExtractFilePath(Application.EXEName)+'Проданные автомобили на '+DateToStr(Date)+'.xls'; App.WorkBooks.Open(ExelOtch); end; end. А.4 Модуль данныхunit dm; interface uses SysUtils, Classes, DB, DBTables; type Tdm1 = class(TDataModule) dsvlad: TDataSource; dsavto: TDataSource; dssot: TDataSource; dskomplect: TDataSource; dsavto_in: TDataSource; dsavto_out: TDataSource; Продолжение приложения Аsot: TTable; komplect: TTable; avto_in: TTable; avto_out: TTable; sotKOD_SOT: TSmallintField; sotFAM: TStringField; sotNAME: TStringField; sotOTH: TStringField; avto_inKOD_IN: TFloatField; avto_inAKT_NOM: TFloatField; avto_inKOD_AVTO: TFloatField; avto_inKOD_VLAD: TFloatField; avto_inKOD_SOT: TFloatField; avto_inDATA: TDateField; komplectKOD_AVTO: TFloatField; komplectKOLESO: TStringField; komplectZAPASKA: TBooleanField; komplectINSTRUMENT: TBooleanField; komplectMUSIC: TBooleanField; komplectMEDIC: TBooleanField; komplectELECT_PAK: TBooleanField; komplectABS: TBooleanField; komplectGUR: TBooleanField; komplectKONDIC: TBooleanField; komplectINFO: TMemoField; komplectDEFEKT: TMemoField; komplectKOROBKA: TStringField; komplectPRIVOD: TStringField; avto_outKOD_OUT: TFloatField; avto_outDATE: TDateField; avto_outMARKA_OUT: TStringField; avto_outMODEL_OUT: TStringField; avto_outV_OUT: TStringField; avto_outCVET_OUT: TStringField; avto_outTIPKUZ_OUT: TStringField; avto_outCENA_OUT: TFloatField; dsmarka: TDataSource; marka: TTable; markaID_MARKA: TSmallintField; markaMARKA: TStringField; vlad: TTable; vladKOD_VLAD: TFloatField; vladFAM: TStringField; vladNAME: TStringField; vladOTH: TStringField; vladADRES: TStringField; vladMAIL: TStringField; vladTEL: TFloatField; vladSOT: TFloatField; t1: TTable; t1KOD_AVTO: TFloatField; t1KOD_VLAD: TFloatField; t1MARKA: TSmallintField; t1MODEL: TStringField; t1GOS_NOM: TStringField; t1CVET: TStringField; t1TIP_KUZ: TStringField; t1FOTO_1: TStringField; t1FOTO_2: TStringField; Продолжение приложения Аt1CENA: TFloatField; t1hoz: TStringField; t1V: TStringField; t1MMarka: TStringField; avto: TTable; avtoKOD_AVTO: TFloatField; avtoKOD_VLAD: TFloatField; avtoMARKA: TSmallintField; avtoMODEL: TStringField; avtoGOS_NOM: TStringField; avtoCVET: TStringField; avtoTIP_KUZ: TStringField; avtoFOTO_1: TStringField; avtoFOTO_2: TStringField; avtoCENA: TFloatField; avtoV: TFloatField; avtohoz: TStringField; avtoMMarka: TStringField; procedure DataModuleCreate(Sender: TObject); procedure avtoAfterScroll(DataSet: TDataSet); procedure markaBeforeInsert(DataSet: TDataSet); procedure markaAfterInsert(DataSet: TDataSet); private { Private declarations } public { Public declarations } end; var dm1: Tdm1; id : integer; implementation uses main; {$R *.dfm} procedure Tdm1.DataModuleCreate(Sender: TObject); begin avto.Close; avto.Open; komplect.Close; komplect.Open; avto_in.Close; avto_in.Open; avto_out.Close; avto_out.Open; vlad.Close; vlad.Open; sot.Close; sot.Open; end; procedure Tdm1.avtoAfterScroll(DataSet: TDataSet); begin try Fmain.Image3.Picture.LoadFromFile(ExtractFilePath(path)+'FOTO\'+dm1.avto.fieldbyname('FOTO_1').AsString); Продолжение приложения Аexcept Fmain.Image3.picture:=nil; end; try Fmain.Image4.Picture.LoadFromFile(ExtractFilePath(path)+'FOTO\'+dm1.avto.fieldbyname('FOTO_2').AsString); except Fmain.Image4.picture:=nil; end; end; procedure Tdm1.markaBeforeInsert(DataSet: TDataSet); begin id:=0; Marka.First; while not Marka.Eof do begin if Marka.FieldByName('Id_marka').asinteger > id then id := Marka.FieldByName('Id_marka').asinteger; Marka.Next; end; id:=id+1; end; procedure Tdm1.markaAfterInsert(DataSet: TDataSet); begin Marka.FieldByName('id_marka').asinteger:=id; end; end. А.5 Модуль формы «Редактирование данных»unit edit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, LMDControl, LMDBaseControl, LMDBaseGraphicButton, LMDCustomSpeedButton, LMDSpeedButton, StdCtrls, RxGIF, glLabel, Mask, ToolEdit, DBCtrls,IDGlobal, ExtDlgs, Grids, DBGrids; type TFedit = class(TForm) Panel3: TPanel; glLabel2: TglLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Image1: TImage; ComboBox1: TComboBox; Panel4: TPanel; glLabel3: TglLabel; Label15: TLabel; Продолжение приложения АLabel16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; ComboBox2: TComboBox; ComboBox3: TComboBox; ComboBox4: TComboBox; Panel1: TPanel; glLabel4: TglLabel; LMDSpeedButton8: TLMDSpeedButton; LMDSpeedButton9: TLMDSpeedButton; Image4: TImage; Image5: TImage; Panel5: TPanel; LMDSpeedButton10: TLMDSpeedButton; LMDSpeedButton12: TLMDSpeedButton; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBEdit5: TDBEdit; DBEdit6: TDBEdit; DBMemo1: TDBMemo; DBMemo2: TDBMemo; DBCheckBox1: TDBCheckBox; DBCheckBox2: TDBCheckBox; DBCheckBox3: TDBCheckBox; DBCheckBox4: TDBCheckBox; DBCheckBox5: TDBCheckBox; DBCheckBox6: TDBCheckBox; DBCheckBox7: TDBCheckBox; DBCheckBox8: TDBCheckBox; OpenPictureDialog1: TOpenPictureDialog; OpenPictureDialog2: TOpenPictureDialog; Image3: TImage; DBLookupComboBox1: TDBLookupComboBox; procedure LMDSpeedButton12Click(Sender: TObject); procedure LMDSpeedButton10Click(Sender: TObject); procedure LMDSpeedButton8Click(Sender: TObject); procedure LMDSpeedButton9Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure DBEdit6KeyPress(Sender: TObject; var Key: Char); procedure DBEdit1KeyPress(Sender: TObject; var Key: Char); procedure DBEdit3KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Fedit: TFedit; pic1,pic2:string; pole1,pole2,pole1_1,pole2_2:string; y,t:integer; implementation uses dm, DB; {$R *.dfm} Продолжение приложения Аprocedure TFedit.LMDSpeedButton12Click(Sender: TObject); begin close; end; procedure TFedit.LMDSpeedButton10Click(Sender: TObject); var st1,q1,st2,q2:string; i,u,k2:integer; begin dm1.avto.Edit; dm1.komplect.Edit; dm1.avto.FieldByName('TIP_KUZ').Value:=ComboBox1.text; dm1.komplect.FieldByName('KOLESO').value:=ComboBox2.text; dm1.komplect.FieldByName('KOROBKA').value:=ComboBox3.text; dm1.komplect.FieldByName('PRIVOD').value:=ComboBox4.text; k2:=dm1.avto.fieldbyname('KOD_avto').Value; if (pic1<>'') then begin pole1_1:=''; pole1:=''; pole1:=dm1.avto.fieldbyname('FOTO_1').AsString; for y:=1 to length(pole1) do if pole1[y]='.' then pole1_1:=copy(pole1,1,y-1); st1:=''; q1:=''; for i:=length(pic1) downto 1 do if pic1[i]<>'.' then insert(pic1[i],q1,0) else break; st1:=ExtractFilePath(Application.Exename); ForceDirectories(st1+'FOTO'); if dm1.avto.FieldByName('foto_1').AsString<>'' then DeleteFile(st1+'FOTO\'+dm1.avto.FieldByName('foto_1').AsString); if copyfileto(pchar(pic1),pchar(st1+'FOTO\'+pole1_1+ '.'+q1)) then else begin MessageBox(Handle,'Невозможно скопировать файл!','Внимание',MB_OK); exit; end; dm1.avto.FieldByName('foto_1').AsString:=pole1_1 + '.'+q1; end; if (pic2<>'') then begin pole2_2:=''; pole2:=''; pole2:=dm1.avto.fieldbyname('FOTO_2').AsString; for t:=1 to length(pole2) do if pole2[t]='.' then pole2_2:=copy(pole2,1,t-1);
st2:=''; q2:=''; for u:=length(pic2) downto 1 do if pic2[u]<>'.' then insert(pic2[u],q2,0) else break; st2:=ExtractFilePath(Application.Exename); ForceDirectories(st2+'FOTO'); if dm1.avto.FieldByName('foto_2').AsString<>'' then DeleteFile(st2+'FOTO\'+dm1.avto.FieldByName('foto_2').AsString); Продолжение приложения Аif copyfileto(pchar(pic2),pchar(st2+'FOTO\'+pole2_2+ '.'+q2)) then else begin MessageBox(Handle,'Невозможно скопировать файл!','Внимание',MB_OK); exit; end; dm1.avto.FieldByName('foto_2').AsString:=pole2_2 + '.'+q2; end; dm1.avto.Post; // dm1.komplect.Post; end; procedure TFedit.LMDSpeedButton8Click(Sender: TObject); begin OpenPictureDialog1.Execute; pic1:=OpenPictureDialog1.FileName; if pic1<>'' then Image4.Picture.LoadFromFile(pic1) else begin MessageBox(Handle,'Фотография кузова не выбрана!','',MB_OK); exit; end; end; procedure TFedit.LMDSpeedButton9Click(Sender: TObject); begin OpenPictureDialog2.Execute; pic2:=OpenPictureDialog2.FileName; if pic2<>'' then Image5.Picture.LoadFromFile(pic2) else begin MessageBox(Handle,'Фотография салона не выбрана!','',MB_OK); exit; end; end; procedure TFedit.FormActivate(Sender: TObject); begin if (dm1.avto.fieldbyname('FOTO_1').Value<>'') then Image4.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.fieldbyname('FOTO_1').AsString) else MessageBox(Handle,'Фотографии кузова НЕТ!','',MB_OK); if (dm1.avto.fieldbyname('FOTO_2').Value<>'') then Image5.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.fieldbyname('FOTO_2').AsString) else MessageBox(Handle,'Фотографии салона НЕТ!','',MB_OK); end; procedure TFedit.DBEdit6KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9',#8: key:=key else key:=#0; end; end; procedure TFedit.DBEdit1KeyPress(Sender: TObject; var Key: Char); begin Продолжение приложения Аcase key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; procedure TFedit.DBEdit3KeyPress(Sender: TObject; var Key: Char); begin case key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; end. А.6 Модуль заставкиunit logo; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls, RxGIF; type TFlogo = class(TForm) Timer1: TTimer; Image1: TImage; ProgressBar1: TProgressBar; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Flogo: TFlogo; i : integer; implementation {$R *.dfm} procedure TFlogo.FormClose(Sender: TObject; var Action: TCloseAction); begin if i=100 then Action:=caFree else Action := caNone; end; procedure TFlogo.Timer1Timer(Sender: TObject); begin i:=i+1; Продолжение приложения АProgressBar1.Position:=i; if i=100 then begin Timer1.Enabled:=false; close; end; end; procedure TFlogo.FormActivate(Sender: TObject); begin i:=0; end; end. А.7 Модуль главной формыunit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, Menus, Grids, DBGrids, Buttons, LMDSpeedButton, StdCtrls, XPMan, LMDBaseGraphicButton, LMDCustomSpeedButton, LMDControl, LMDBaseControl, DBCtrls, ImgList, LMDBaseGraphicControl, LMDGraphicControl, LMDBaseMeter, LMDCustomProgress, ExtCtrls, DBTables, DB, LMDLEDCustomLabel, LMDLEDLabel,IDGlobal; type TFmain = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N8: TMenuItem; N9: TMenuItem; N11: TMenuItem; N10: TMenuItem; N12: TMenuItem; N13: TMenuItem; N14: TMenuItem; N15: TMenuItem; N81: TMenuItem; N82: TMenuItem; N16: TMenuItem; N17: TMenuItem; ColorDialog1: TColorDialog; XPManifest1: TXPManifest; ImageList1: TImageList; Panel1: TPanel; DBGrid2: TDBGrid; DBGrid1: TDBGrid; DBGrid3: TDBGrid; Timer1: TTimer; N7: TMenuItem; Продолжение приложения АN18: TMenuItem; N19: TMenuItem; N20: TMenuItem; Panel9: TPanel; Panel6: TPanel; Image3: TImage; Image4: TImage; Panel5: TPanel; DBText1: TDBText; DBText2: TDBText; DBText3: TDBText; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; DBCheckBox1: TDBCheckBox; DBCheckBox2: TDBCheckBox; DBCheckBox3: TDBCheckBox; DBCheckBox4: TDBCheckBox; DBCheckBox5: TDBCheckBox; DBCheckBox6: TDBCheckBox; DBCheckBox7: TDBCheckBox; DBCheckBox8: TDBCheckBox; DBMemo1: TDBMemo; DBMemo2: TDBMemo; Panel2: TPanel; RadioGroup1: TRadioGroup; Panel7: TPanel; Panel10: TPanel; LMDSpeedButton3: TLMDSpeedButton; LMDSpeedButton4: TLMDSpeedButton; LMDSpeedButton5: TLMDSpeedButton; LMDSpeedButton6: TLMDSpeedButton; LMDSpeedButton7: TLMDSpeedButton; LMDSpeedButton8: TLMDSpeedButton; Edit1: TEdit; LMDSpeedButton1: TLMDSpeedButton; Label7: TLabel; Label6: TLabel; N21: TMenuItem; N22: TMenuItem; N23: TMenuItem; procedure FormShow(Sender: TObject); procedure N5Click(Sender: TObject); procedure N14Click(Sender: TObject); procedure N81Click(Sender: TObject); procedure N15Click(Sender: TObject); procedure N82Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure DBGrid1CellClick(Column: TColumn); procedure N12Click(Sender: TObject); procedure LMDSpeedButton1Click(Sender: TObject); procedure LMDSpeedButton3Click(Sender: TObject); procedure LMDSpeedButton4Click(Sender: TObject); procedure LMDSpeedButton5Click(Sender: TObject); procedure LMDSpeedButton6Click(Sender: TObject); Продолжение приложения Аprocedure LMDSpeedButton9Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure LMDSpeedButton10Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure N19Click(Sender: TObject); procedure LMDSpeedButton7Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure DBGrid1KeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure DBGrid1TitleClick(Column: TColumn); procedure N22Click(Sender: TObject); procedure N23Click(Sender: TObject); procedure N17Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Fmain: TFmain; path : string; implementation uses logo, dm, vladel, sotr, add, edit, del, query, search, marka, about; {$R *.dfm} function gen_id(table:TTable; var name:string):integer; var n:integer; begin table.First; n:=table.FieldByName(name).asinteger; while not table.Eof do begin if table.FieldByName(name).Value>n then n:=table.FieldByName(name).Value; table.Next; end; gen_id:=n+1; end; procedure TFmain.FormShow(Sender: TObject); begin flogo.showmodal; flogo.Free; Image3.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.fieldbyname('FOTO_1').AsString); Image4.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.fieldbyname('FOTO_2').AsString); end; procedure TFmain.N5Click(Sender: TObject); begin close; end; procedure TFmain.N14Click(Sender: TObject); begin Продолжение приложения АColorDialog1.Execute; DBGrid1.Font.Color:=ColorDialog1.color; end; procedure TFmain.N81Click(Sender: TObject); begin DBGrid1.Font.Size:=10; end; procedure TFmain.N15Click(Sender: TObject); begin DBGrid1.Font.Size:=12; end; procedure TFmain.N82Click(Sender: TObject); begin DBGrid1.Font.Size:=8; end; procedure TFmain.N8Click(Sender: TObject); begin fvlad.showmodal; end; procedure TFmain.N9Click(Sender: TObject); begin fsotr.showmodal; end; procedure TFmain.N11Click(Sender: TObject); begin fadd.showmodal; end; procedure TFmain.DBGrid1CellClick(Column: TColumn); begin Image3.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.fieldbyname('FOTO_1').AsString); Image4.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.fieldbyname('FOTO_2').AsString); end; procedure TFmain.N12Click(Sender: TObject); begin Fedit.showmodal; end; procedure TFmain.LMDSpeedButton1Click(Sender: TObject); begin if edit1.Text<>'' then begin if RadioGroup1.ItemIndex=0 then if dm1.avto.Locate('marka',edit1.Text,[loCaseInsensitive]) then else MessageBox(Handle,'Нет автомобиля такой марки...','',MB_OK); if RadioGroup1.ItemIndex=1 then if dm1.avto.Locate('model',edit1.Text,[loCaseInsensitive]) then else MessageBox(Handle,'Нет автомобиля такой модели...','',MB_OK); if RadioGroup1.ItemIndex=2 then Продолжение приложения Аif dm1.avto.Locate('gos_nom',edit1.Text,[loCaseInsensitive]) then else MessageBox(Handle,'Нет автомобиля c таким номером...','',MB_OK); end else MessageBox(Handle,'Введите значение для поиска!','',MB_OK); end; procedure TFmain.LMDSpeedButton3Click(Sender: TObject); begin fsotr.showmodal; end; procedure TFmain.LMDSpeedButton4Click(Sender: TObject); begin fvlad.showmodal; end; procedure TFmain.LMDSpeedButton5Click(Sender: TObject); begin fadd.showmodal; end; procedure TFmain.LMDSpeedButton6Click(Sender: TObject); begin Fedit.showmodal; end; procedure TFmain.LMDSpeedButton9Click(Sender: TObject); begin //close; Panel9.Visible := not Panel9.Visible; end; procedure TFmain.Timer1Timer(Sender: TObject); begin Label6.Caption:=TimeToStr(Time); end; procedure TFmain.LMDSpeedButton10Click(Sender: TObject); begin fquery.showmodal; end; procedure TFmain.N7Click(Sender: TObject); begin fdel.showmodal; end; procedure TFmain.N19Click(Sender: TObject); begin fquery.showmodal; end; procedure TFmain.LMDSpeedButton7Click(Sender: TObject); var v:string; k:integer; begin dm1.komplect.Edit; dm1.avto.Edit; Продолжение приложения Аv:='KOD_out'; k:=gen_id(dm1.avto_out,v); dm1.avto_out.Append; dm1.avto_out.FieldByName('KOD_out').Value:=k; dm1.avto_out.FieldByName('marka_out').Value:=dm1.avto.FieldByName('marka').Value; dm1.avto_out.FieldByName('model_out').value:=dm1.avto.FieldByName('model').value; dm1.avto_out.FieldByName('V_out').value:=dm1.avto.FieldByName('V').value; dm1.avto_out.FieldByName('cvet_out').value:=dm1.avto.FieldByName('cvet').value; dm1.avto_out.FieldByName('tipkuz_out').value:=dm1.avto.FieldByName('tip_kuz').value; dm1.avto_out.FieldByName('cena_out').value:=dm1.avto.FieldByName('cena').value; dm1.avto_out.FieldByName('date').value:=Date; if messagedlg('Продать?!',mtconfirmation, [mbYes, mbNo],0)=mrYes then begin while not dm1.komplect.Eof do dm1.komplect.Delete; dm1.avto.Delete; end; DeleteFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.FieldByName('foto_1').AsString); DeleteFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.FieldByName('foto_2').AsString); //dm1.avto.Post; //dm1.komplect.Post; dm1.avto_out.Post; end; procedure TFmain.N10Click(Sender: TObject); begin LMDSpeedButton7Click(Sender); end; procedure TFmain.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin Image3.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.fieldbyname('FOTO_1').AsString); Image4.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.fieldbyname('FOTO_2').AsString); end; procedure TFmain.FormCreate(Sender: TObject); begin path:=Application.ExeName; end; Продолжение приложения Аprocedure TFmain.DBGrid1TitleClick(Column: TColumn); begin if Column.Title.Caption='Марка' then dm1.avto.IndexName:='marka'; if Column.Title.Caption='Объём' then dm1.avto.IndexName:='V'; if Column.Title.Caption='Тип кузова' then dm1.avto.IndexName:='tip_kuz'; end; procedure TFmain.N22Click(Sender: TObject); begin FSearch.showmodal; end; procedure TFmain.N23Click(Sender: TObject); begin FMarka.Showmodal; end; procedure TFmain.N17Click(Sender: TObject); begin Fabout.ShowModal; end; end. А.8 Модуль формы поискаunit search; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, StdCtrls, Mask, glLabel, ExtCtrls, Grids, DBGrids, LMDCustomButton, LMDButton, DB, DBTables, RXDBCtrl; type TFSearch = class(TForm) Panel3: TPanel; glLabel2: TglLabel; Label8: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; ComboBox1: TComboBox; Panel4: TPanel; glLabel3: TglLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; ComboBox2: TComboBox; ComboBox3: TComboBox; ComboBox4: TComboBox; Продолжение приложения АCheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; Panel1: TPanel; DBLookupComboBox1: TDBLookupComboBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; CheckBox6: TCheckBox; CheckBox7: TCheckBox; CheckBox8: TCheckBox; CheckBox9: TCheckBox; CheckBox10: TCheckBox; CheckBox11: TCheckBox; CheckBox12: TCheckBox; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; CheckBox13: TCheckBox; CheckBox14: TCheckBox; CheckBox15: TCheckBox; CheckBox16: TCheckBox; CheckBox17: TCheckBox; Query1: TQuery; LMDButton1: TLMDButton; DataSource1: TDataSource; RxDBGrid1: TRxDBGrid; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure CheckBox9Click(Sender: TObject); procedure CheckBox10Click(Sender: TObject); procedure CheckBox11Click(Sender: TObject); procedure CheckBox12Click(Sender: TObject); procedure CheckBox4Click(Sender: TObject); procedure CheckBox5Click(Sender: TObject); procedure CheckBox6Click(Sender: TObject); procedure CheckBox7Click(Sender: TObject); procedure CheckBox8Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure CheckBox3Click(Sender: TObject); procedure LMDButton1Click(Sender: TObject); procedure DBGrid1CellClick(Column: TColumn); private { Private declarations } public { Public declarations } end; var FSearch: TFSearch; implementation uses dm, edit; {$R *.dfm} Продолжение приложения Аprocedure TFSearch.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; procedure TFSearch.CheckBox9Click(Sender: TObject); begin Label8.Enabled:=not Label8.Enabled; DBLookupComboBox1.Enabled:=not DBLookupComboBox1.Enabled; end; procedure TFSearch.CheckBox10Click(Sender: TObject); begin Label12.Enabled:=not Label12.Enabled; ComboBox1.Enabled:=not ComboBox1.Enabled; end; procedure TFSearch.CheckBox11Click(Sender: TObject); begin Label14.Enabled:=not Label14.Enabled; Edit1.Enabled:=not Edit1.Enabled; end; procedure TFSearch.CheckBox12Click(Sender: TObject); begin Label13.Enabled:=not Label13.Enabled; Edit2.Enabled:=not Edit2.Enabled; end; procedure TFSearch.CheckBox4Click(Sender: TObject); begin Label1.Enabled:=not Label1.Enabled; CheckBox17.Enabled:=not CheckBox17.Enabled; end; procedure TFSearch.CheckBox5Click(Sender: TObject); begin Label2.Enabled:=not Label2.Enabled; CheckBox16.Enabled:=not CheckBox16.Enabled; end; procedure TFSearch.CheckBox6Click(Sender: TObject); begin Label3.Enabled:=not Label3.Enabled; CheckBox15.Enabled:=not CheckBox15.Enabled; end; procedure TFSearch.CheckBox7Click(Sender: TObject); begin Label4.Enabled:=not Label4.Enabled; CheckBox14.Enabled:=not CheckBox14.Enabled; end; procedure TFSearch.CheckBox8Click(Sender: TObject); begin Label5.Enabled:=not Label5.Enabled; CheckBox13.Enabled:=not CheckBox13.Enabled; end; Продолжение приложения Аprocedure TFSearch.CheckBox1Click(Sender: TObject); begin Label15.Enabled:=not Label15.Enabled; ComboBox2.Enabled:=not ComboBox2.Enabled; end; procedure TFSearch.CheckBox2Click(Sender: TObject); begin Label16.Enabled:=not Label16.Enabled; ComboBox3.Enabled:=not ComboBox3.Enabled; end; procedure TFSearch.CheckBox3Click(Sender: TObject); begin Label17.Enabled:=not Label17.Enabled; ComboBox4.Enabled:=not ComboBox4.Enabled; end; function BoolToStr(value : boolean):string; begin if value then result:='true' else result:='false'; end; procedure TFSearch.LMDButton1Click(Sender: TObject); begin Query1.Close; Query1.SQL.Clear; try Query1.Sql.Add('select a.kod_avto, m.marka, a.model, a.cvet, a.tip_kuz, a.cena, a.v, k.korobka,k.privod '); Query1.SQL.Add('from avto a, komplect k, marka m '); Query1.SQL.Add('where '); if checkBox9.Checked then Query1.SQL.Add('a.marka = '+ Inttostr(DBLookupComboBox1.keyvalue)+' and'); if checkBox10.Checked then Query1.SQL.Add('a.tip_kuz="'+ComboBox1.Text+'" and '); if checkBox11.Checked then Query1.SQL.Add('a.v<='+Edit1.Text+' and '); if checkBox12.Checked then Query1.SQL.Add('a.cena<='+Edit2.Text+' and '); if checkBox4.Checked then Query1.SQL.Add('k.elect_pak = '+BoolToStr(CheckBox17.Checked)+' and '); if checkBox5.Checked then Query1.SQL.Add('k.kondic = '+BoolToStr(CheckBox16.Checked)+' and '); if checkBox6.Checked then Query1.SQL.Add('k.music = '+BoolToStr(CheckBox15.Checked)+' and '); if checkBox7.Checked then Query1.SQL.Add('k.gur = '+BoolToStr(CheckBox14.Checked)+' and '); if checkBox8.Checked then Query1.SQL.Add('k.abs = '+BoolToStr(CheckBox13.Checked)+' and '); if checkBox1.Checked then Query1.SQL.Add('k.koleso = "'+ComboBox2.Text+'" and '); if checkBox2.Checked then Query1.SQL.Add('k.korobka = "'+ComboBox3.Text+'" and '); if checkBox3.Checked then Query1.SQL.Add('k.privod = "'+ComboBox4.Text+'" and '); Query1.SQL.Add('a.marka=m.id_marka and a.kod_avto=k.kod_avto'); Query1.Open; except Продолжение приложения АMessageDlg('Введены не все данные',mtWarning,[mbOk],0); end; end; procedure TFSearch.DBGrid1CellClick(Column: TColumn); begin if Query1.Active then begin if dm1.avto.Locate('kod_avto',Query1.FieldByName('kod_avto').AsInteger,[loCaseInsensitive]) then fedit.showmodal; end; end; end. А.9 Модуль формы менеджеровunit sotr; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, ExtCtrls, LMDControl, LMDBaseControl, LMDBaseGraphicButton, DB, LMDCustomSpeedButton, LMDSpeedButton, StdCtrls, Mask, DBTables, DBCtrls, ImgList; type TFsotr = class(TForm) Panel1: TPanel; DBGrid1: TDBGrid; Panel2: TPanel; pedit: TPanel; Panel4: TPanel; RadioGroup1: TRadioGroup; Edit1: TEdit; LMDSpeedButton1: TLMDSpeedButton; Image1: TImage; LMDSpeedButton2: TLMDSpeedButton; LMDSpeedButton3: TLMDSpeedButton; LMDSpeedButton4: TLMDSpeedButton; LMDSpeedButton5: TLMDSpeedButton; pnew: TPanel; Image2: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; LMDSpeedButton6: TLMDSpeedButton; Продолжение приложения АLMDSpeedButton7: TLMDSpeedButton; LMDSpeedButton8: TLMDSpeedButton; LMDSpeedButton9: TLMDSpeedButton; Image3: TImage; Image4: TImage; procedure LMDSpeedButton1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure LMDSpeedButton4Click(Sender: TObject); procedure LMDSpeedButton5Click(Sender: TObject); procedure LMDSpeedButton2Click(Sender: TObject); procedure LMDSpeedButton7Click(Sender: TObject); procedure LMDSpeedButton9Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure LMDSpeedButton8Click(Sender: TObject); procedure LMDSpeedButton6Click(Sender: TObject); procedure LMDSpeedButton3Click(Sender: TObject); procedure Edit2KeyPress(Sender: TObject; var Key: Char); procedure Edit3KeyPress(Sender: TObject; var Key: Char); procedure Edit4KeyPress(Sender: TObject; var Key: Char); procedure Edit5KeyPress(Sender: TObject; var Key: Char); procedure Edit6KeyPress(Sender: TObject; var Key: Char); procedure Edit7KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Fsotr: TFsotr; implementation uses dm; {$R *.dfm} function gen_id(table:TTable; var name:string):integer; var n:integer; begin table.First; n:=table.FieldByName(name).asinteger; while not table.Eof do begin if table.FieldByName(name).Value>n then n:=table.FieldByName(name).Value; table.Next; end; gen_id:=n+1; end; procedure TFsotr.LMDSpeedButton1Click(Sender: TObject); begin if edit1.Text<>'' then begin if RadioGroup1.ItemIndex=0 then if dm1.sot.Locate('FAM',edit1.Text,[loCaseInsensitive]) then else MessageBox(Handle,'Нет записи с такой фамилией...','',MB_OK); if RadioGroup1.ItemIndex=1 then if dm1.sot.Locate('NAME',edit1.Text,[loCaseInsensitive]) then Продолжение приложения Аelse MessageBox(Handle,'Нет записи с таким именем...','',MB_OK); end else MessageBox(Handle,'Введите значение для поиска!','',MB_OK); end; procedure TFsotr.FormCreate(Sender: TObject); begin dm1.sot.IndexName:='FAM'; RadioGroup1.ItemIndex:=-1; end; procedure TFsotr.LMDSpeedButton4Click(Sender: TObject); begin if messagedlg('Удалить?!',mtconfirmation, [mbYes, mbNo],0)=mrYes then begin if dm1.sot.State=dsbrowse then dm1.sot.delete; end; end; procedure TFsotr.LMDSpeedButton5Click(Sender: TObject); begin //dm1.sot.Edit; //dm1.sot.Append; pedit.Visible:=true; Edit7.Text:=dm1.sot.fieldbyname('fam').Value; Edit6.Text:=dm1.sot.fieldbyname('name').Value; Edit5.Text:=dm1.sot.fieldbyname('oth').Value; end; procedure TFsotr.LMDSpeedButton2Click(Sender: TObject); begin pnew.Visible:=true; end; procedure TFsotr.LMDSpeedButton7Click(Sender: TObject); begin pedit.Visible:=false; Edit5.Text:=''; Edit6.Text:=''; Edit7.Text:=''; dm1.sot.Cancel; end; procedure TFsotr.LMDSpeedButton9Click(Sender: TObject); begin pnew.Visible:=false; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; dm1.sot.Cancel; end; procedure TFsotr.FormActivate(Sender: TObject); begin pedit.Visible:=true; pnew.Visible:=true; pedit.Visible:=false; pnew.Visible:=false; end; Продолжение приложения Аprocedure TFsotr.LMDSpeedButton8Click(Sender: TObject); var v:string; k:integer; begin if (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') then begin MessageBox(Handle,'Возможно некоторые поля не заполнены!','Внимание',MB_OK); exit; end else begin v:='KOD_sot'; k:=gen_id(dm1.sot,v); dm1.sot.Insert; dm1.sot.FieldByName('KOD_sot').Value:=k; dm1.sot.FieldByName('FAM').Value:=edit2.text; dm1.sot.FieldByName('NAME').value:=edit3.Text; dm1.sot.FieldByName('OTH').value:=edit4.text; dm1.sot.Post; pnew.Visible:=false; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; end; end; procedure TFsotr.LMDSpeedButton6Click(Sender: TObject); begin if (Edit5.Text='') or (Edit6.Text='') or (Edit7.Text='') then begin MessageBox(Handle,'Возможно некоторые поля не заполнены!','Внимание',MB_OK); exit; end else begin dm1.sot.Edit; dm1.sot.FieldByName('FAM').Value:=edit7.text; dm1.sot.FieldByName('NAME').value:=edit6.Text; dm1.sot.FieldByName('OTH').value:=edit5.text; dm1.sot.Post; pedit.Visible:=false; Edit5.Text:=''; Edit6.Text:=''; Edit7.Text:=''; end; end; procedure TFsotr.LMDSpeedButton3Click(Sender: TObject); begin edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; edit6.Text:=''; edit7.Text:=''; close; end; procedure TFsotr.Edit2KeyPress(Sender: TObject; var Key: Char); begin case key of Продолжение приложения А'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; procedure TFsotr.Edit3KeyPress(Sender: TObject; var Key: Char); begin case key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; procedure TFsotr.Edit4KeyPress(Sender: TObject; var Key: Char); begin case key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; procedure TFsotr.Edit5KeyPress(Sender: TObject; var Key: Char); begin case key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; procedure TFsotr.Edit6KeyPress(Sender: TObject; var Key: Char); begin case key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; procedure TFsotr.Edit7KeyPress(Sender: TObject; var Key: Char); begin case key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; end. А.10 Модуль формы о владельцахunit vladel; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, ExtCtrls, StdCtrls, LMDControl, LMDBaseControl, LMDBaseGraphicButton, LMDCustomSpeedButton, DB, LMDSpeedButton, Buttons; Продолжение приложения Аtype TFvlad = class(TForm) Panel1: TPanel; DBGrid1: TDBGrid; Panel2: TPanel; Panel3: TPanel; RadioGroup1: TRadioGroup; Edit1: TEdit; LMDSpeedButton1: TLMDSpeedButton; Image1: TImage; RadioGroup2: TRadioGroup; LMDSpeedButton2: TLMDSpeedButton; Panel4: TPanel; Image2: TImage; Image3: TImage; LMDSpeedButton4: TLMDSpeedButton; pedit: TPanel; Label4: TLabel; Label5: TLabel; Label6: TLabel; LMDSpeedButton8: TLMDSpeedButton; LMDSpeedButton9: TLMDSpeedButton; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label7: TLabel; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Image4: TImage; procedure FormCreate(Sender: TObject); procedure LMDSpeedButton1Click(Sender: TObject); procedure LMDSpeedButton2Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure LMDSpeedButton8Click(Sender: TObject); procedure LMDSpeedButton4Click(Sender: TObject); procedure LMDSpeedButton9Click(Sender: TObject); procedure Edit2KeyPress(Sender: TObject; var Key: Char); procedure Edit3KeyPress(Sender: TObject; var Key: Char); procedure Edit4KeyPress(Sender: TObject; var Key: Char); procedure Edit7KeyPress(Sender: TObject; var Key: Char); procedure Edit8KeyPress(Sender: TObject; var Key: Char); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Fvlad: TFvlad; implementation uses dm; Продолжение приложения А{$R *.dfm} procedure TFvlad.FormCreate(Sender: TObject); begin dm1.vlad.IndexName:='FAM'; RadioGroup1.ItemIndex:=-1; RadioGroup2.ItemIndex:=-1; end; procedure TFvlad.LMDSpeedButton1Click(Sender: TObject); begin if edit1.Text<>'' then begin if RadioGroup1.ItemIndex=0 then if dm1.vlad.Locate('FAM',edit1.Text,[loCaseInsensitive]) then else MessageBox(Handle,'Нет записи с такой фамилией...','',MB_OK); if RadioGroup1.ItemIndex=1 then if dm1.vlad.Locate('TEL',edit1.Text,[loCaseInsensitive]) then else MessageBox(Handle,'Нет записи с таким телефоном...','',MB_OK); end else MessageBox(Handle,'Введите значение для поиска!','',MB_OK); end; procedure TFvlad.LMDSpeedButton2Click(Sender: TObject); begin if RadioGroup2.ItemIndex=0 then dm1.vlad.IndexName:='FAM'; if RadioGroup2.ItemIndex=1 then dm1.vlad.IndexName:='NAME'; if RadioGroup2.ItemIndex=2 then dm1.vlad.IndexName:='TEL'; end; procedure TFvlad.FormActivate(Sender: TObject); begin pedit.Visible:=true; pedit.Visible:=false; end; procedure TFvlad.LMDSpeedButton8Click(Sender: TObject); begin if (Edit5.Text='') or (Edit6.Text='') or (Edit7.Text='')or (Edit8.Text='') or (Edit2.Text='')or (Edit3.Text='') or (Edit4.Text='')then begin MessageBox(Handle,'Возможно некоторые поля не заполнены!','Внимание',MB_OK); exit; end else begin dm1.vlad.Edit; dm1.vlad.FieldByName('FAM').Value:=edit2.text; dm1.vlad.FieldByName('NAME').value:=edit3.Text; dm1.vlad.FieldByName('OTH').value:=edit4.text; dm1.vlad.FieldByName('ADRES').value:=edit5.text; dm1.vlad.FieldByName('MAIL').value:=edit6.text; dm1.vlad.FieldByName('TEL').value:=edit7.text; dm1.vlad.FieldByName('SOT').value:=edit8.text; dm1.vlad.Post; Продолжение приложения Аpedit.Visible:=false; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; Edit5.Text:=''; Edit6.Text:=''; Edit7.Text:=''; Edit8.Text:=''; end; end; procedure TFvlad.LMDSpeedButton4Click(Sender: TObject); begin pedit.Visible:=true; edit2.text:=dm1.vlad.FieldByName('FAM').Value; edit3.Text:=dm1.vlad.FieldByName('NAME').value; edit4.text:=dm1.vlad.FieldByName('OTH').value; edit5.text:=dm1.vlad.FieldByName('ADRES').value; edit6.text:=dm1.vlad.FieldByName('MAIL').value; edit7.text:=dm1.vlad.FieldByName('TEL').value; edit8.text:=dm1.vlad.FieldByName('SOT').value; end; procedure TFvlad.LMDSpeedButton9Click(Sender: TObject); begin pedit.Visible:=false; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; Edit5.Text:=''; Edit6.Text:=''; Edit7.Text:=''; Edit8.Text:=''; dm1.vlad.Cancel; end; procedure TFvlad.Edit2KeyPress(Sender: TObject; var Key: Char); begin case key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; procedure TFvlad.Edit3KeyPress(Sender: TObject; var Key: Char); begin case key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; procedure TFvlad.Edit4KeyPress(Sender: TObject; var Key: Char); begin case key of 'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key else key:=#0; end; end; Продолжение приложения Аprocedure TFvlad.Edit7KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9',#8: key:=key else key:=#0; end; end; procedure TFvlad.Edit8KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9',#8: key:=key else key:=#0; end; end; procedure TFvlad.FormClose(Sender: TObject; var Action: TCloseAction); begin Edit1.Text:=''; RadioGroup1.ItemIndex:=-1; RadioGroup2.ItemIndex:=-1; close; end; end. |
|
Научно-методический центр © 2009 |
|