/>ДЕПАРТАМЕНТ ОБРАЗОВАНИЯ ГОРОДА АСТАНА
Политехническийколледж города Астана
010000 3706002
ДИПЛОМНЫЙ ПРОЕКТ
АРМменеджера в автосалоне «A-Motors»
ДИПЛОМНЫЙ ПРОЕКТ
(Пояснительнаязаписка)
ДП.3706.П401.31.06.07.ПЗ
Дипломник ХикимовН.Б.
Руководитель проекта ЛапенкоС.А.
Консультант по технологическомуразделу Лапенко С.А.
Консультант по экономическому разделу ПриходькоЛ.И.
Консультант по разделу «ТБ и охранатруда» Старунов В.И.
Нормоконтролер ВотчалГ.К.
Рецензент
Дата защиты ___________ Оценка____________
Протокол №____________
2007
СОДЕРЖАНИЕ/>
ВВЕДЕНИЕ. 6
1. Постановочная часть. 8
1.1 Формулировка задачи. 8
1.2 Описание входной и выходной документации. 8
1.3 Требования к интерфейсу Windows-приложения. 8
2. Проектная часть. 16
2.1 Описание информационной базы… 16
2.2 Спецификации набора данных. 18
2.3 Спецификации набора данных. 18
2.4 Проект базы данных, используемой в задаче. 19
2.5 Разработка алгоритмов обработки данных. 20
2.6 Разработка SQL-запросов к базе данных. 22
2.7 Разработка форм приложения, меню, отчетов. 23
3. ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РЕАЛИЗАЦИИ ДИПЛОМНОГО ПРОЕКТА… 26
3.1 Краткая характеристика операционных систем. 26
3.2 Краткая характеристика языка программирования Object Pascal и среды Delphi 26
3.3 Краткая характеристика используемой СУБД… 28
4. ЭКСПЛУАТАЦИЯ… 31
4.1.Требования к аппаратному обеспечению… 31
4.2.Инструкция пользователю… 31
4.3 Инструкция программисту. 39
5. ЭКОНОМИЧЕСКАЯ ЧАСТЬ. 40
5.1. Определение затрат на создание программного продукта. 40
5.2 Расчет себестоимости и цены программного продукта. 42
5.3 Расчет экономической эффективности проекта. 44
5.4 Технико-экономические показатели проекта. 46
6. Мероприятия по технике безопасности и окружающей среды. 47
6.1. Охрана труда. 47
6.2. Техника безопасности. 49
6.3 Охрана окружающей среды… 56
7. заключение. 59
8. Список использованных источников… 60
Приложение а. основные модули приложения… 61
А.1 Модуль формы окна «О программе». 61
А.2 Модуль формы окна «Зарегистрировать автомобиль». 61
А.3 Модуль формы «Удалить автомобиль». 69
А.4 Модуль данных. 71
А.5 Модуль формы «Редактирование данных». 74
А.6 Модуль заставки. 78
А.7 Модуль главной формы… 79
А.8 Модуль формы поиска. 85
А.9 Модуль формы менеджеров. 89
А.10 Модуль формы о владельцах. 93ВВЕДЕНИЕ
Потоки информации, циркулирующиев мире, который нас окружает, огромны. Во времени ониимеют тенденцию к увеличению. Поэтому в любой организации, как большой, так и маленькой,возникает проблема такой организации управления данными, которая обеспечила бынаиболее эффективную работу. Некоторые организации используют для этого шкафыс папками, но большинство предпочитают компьютеризированные способы – базыданных, позволяющие эффективно хранить, структурировать и систематизироватьбольшие объемы данных. И уже сегодня безбаз данных невозможно представить работу большинства финансовых, промышленных,торговых и прочих организаций. Не будь баз данных, они бы просто захлебнулись винформационной лавине.
Существует много веских причинперевода существующей информации на компьютерную основу. Сейчас стоимость хранения информации в файлах ЭВМдешевле, чем на бумаге. Базы данных позволяют хранить, структурироватьинформацию и извлекать оптимальным для пользователя образом. Использованиефайл/серверных и клиент/серверных технологий позволяют сберечь значительныесредства, а главное и время для получения необходимой информации, а также упрощаютдоступ и ведение, поскольку они основываются на комплексной обработке данных ицентрализации их хранения. Кроме того ЭВМпозволяет хранить любые форматы данных текст, чертежи, данные в рукописнойформе, фотографии, записи голоса и т.д.
Дляиспользования столь огромных объемов хранимой информации, помимо развитиясистемных устройств, средств передачи данных, памяти необходимы средстваобеспечения диалога человек-ЭВМ, которые позволяют пользователю вводитьзапросы, читать файлы, модифицировать хранимые данные, добавлять новые данныеили принимать решения на основании хранимых данных. Для обеспечения этихфункций созданы специализированные средства – системы управления базами данных(СУБД). СовременныеСУБД — многопользовательские системы управления базой данных, которыеспециализируется на управлении массивом информации одним или множествомодновременно работающих пользователей. Актуальность и цель дпломного проекта
Данный программный продукт разработан для менеджеров попродажам в автосалоне «A-Motors». Программа предназначена длярегистрации и ведения учета продаж автомобилей.
В данный момент у нас в городе существует несколькоавтомобильных рынков занимающихся продажей, в которой они выступают какпосредники. Менеджеры по продажам, работающие на авторынках тратят массувремени на бумажную работу. Время на регистрацию автомобиля и поиск нужногобланка в куче папок на столе и полках очень обременяет, это неудобство побудиломеня автоматизировать данный процесс.
Разрабатываемый программный продукт должен оперативнопроизводить поиск, сортировки, составлять различного рода запросы по пожеланиямклиента, а также вести отчётность.1. Постановочная часть 1.1Формулировка задачи
Задачей дипломного проекта является разработка программы дляавтоматизации процесса регистрации и учета продаж автомобилей, и с последующейвозможностью распечатки.
Программа, создаваемая в данном дипломном проектепредназначена для производственно-технического отдела продаж автомобильногосалона «А-Motors». Программа должна осуществлятьуправление данными об автомобилях принятых на реализацию автомобильным салоном,регистрировать характеристики автомобиля, осуществлять поиск в базе автомобилейпо заданным критериям. Выводить на печать результаты поиска, а также отчет опроданных автомобилях. 1.2Описание входной и выходной документации
Входные документы
1. Техническийпаспорт автомобиля – содержит основные паспортные данные автомобиля – выдаетсяпри регистрации автомобиля в РЭО УДП УВД РК.
2. Графическоеизображение автобусов (рисунки, фотографии)
3. Анкета владельцатранспортного средства
4. Акт о приемеавтомобиля на реализацию
Выходные документы
1. Карточкаавтомобиля
2. Списокавтомобилей удовлетворяющих критериям поиска
3. Список проданныхавтомобилей за заданный период
4. Переченьзарегистрированных марок автомобилей1.3 Требования к интерфейсу Windows-приложения
Под графическим интерфейсом пользователя (Graphical User Interface — GUI) подразумевается тип экранного представления, прикотором пользователь может выбирать команды, запускать задачи и просматриватьсписки файлов, указывая на пиктограммы или пункты в списках меню, показанныхна экране. Действия могут, как правило, выполняться с помощью мыши, либо нажатиемклавиш на клавиатуре. Типичным примером графического интерфейса пользователяявляется Windows 95/98.
Delphi предоставляет разработчику приложения широкие возможностибыстрого и качественного проектирования графического интерфейса пользователя —различных окон, кнопок, меню и т.д. Есть определенные принципы построенияграфического интерфейса пользователя, и пренебрегающий ими обречен на то, чтоего приложение будет выглядеть чужеродным объектом в среде Windows.
Для пользователя одним из принципиальных преимуществ работы сWindows является то, что большинствоимеющихся приложений выглядят и ведут себя сходным образом. После того, как выпоработаете с несколькими приложениями, вы обнаружите, что можете заранеепочти наверняка сказать, где можно найти ту или иную функцию в программе,которую только что приобрели, или какие быстрые клавиши надо использовать длявыполнения тех или иных операций.
Чаще всего сколько-нибудь сложное приложение не можетограничиться одним окном. Поэтому прежде всего вам нужно решить вопросуправления окнами. Есть две различные модели приложений: с интерфейсом одногодокумента (SDI) и с интерфейсом множествадокументов (MDI).
В большинстве случаев следует отдавать предпочтение интерфейсуSDI. Этот интерфейс не обязательнопредполагает наличие действительно только одного окна, как в приложениях Windows, типа «Калькулятор». Такое приложение,как «Проводник» Windows, также является SDI приложением, но в нужные моменты оносоздает вторичные окна для поиска файлов или папок, задания параметров,просмотра свойств файлов и других целей.
Основным элементом любого приложения является форма —контейнер, в котором размещаются другие визуальные и невизуальные компоненты. Сточки зрения пользователя форма — это окно, в котором он работает сприложением.
К внешнему виду окон в Windows предъявляются определенные требования. К счастью, Delphi автоматически обеспечиваетстандартный для Windows вид оконвашего приложения. Но вам надо продумать и указать, какие кнопки в полосесистемного меню должны быть доступны в том или ином окне, должно ли окнодопускать изменение пользователем его размеров, каким должен быть заголовококна. Все эти характеристики окон обеспечиваются установкой и управлениемсвойствами формы.
Без особой необходимости не делайте окна приложения сизменяемыми пользователем размерами. При изменении размеров, если не примененыспециальные приемы, нарушается компоновка окна и пользователь ничего невыигрывает от своих операций с окном. Окно имеет смысл делать с изменяемымиразмерами, только если это позволяет пользователю изменять полезную площадькаких-то расположенных в нем компонентов отображения и редактированияинформации: текстов, изображений, списков и т.п.
Цвет является мощным средством воздействия на психику человека.Именно поэтому обращаться с ним надо очень осторожно. Неудачное цветовоерешение может приводить к быстрому утомлению пользователя, работающего с вашимприложением, к рассеиванию его внимания, к частым ошибкам. Слишком яркий илинеподходящий цвет может отвлекать внимание пользователя или вводить его взаблуждение, создавать трудности в работе. А удачно подобранная гамма цветов,осмысленные цветовые акценты снижают утомляемость, сосредоточивают вниманиепользователя на выполняемых в данный момент операциях, повышают эффективностьработы. С помощью цвета вы можете на что-то намекнуть или привлечь внимание к определеннымобластям экрана. Цвет может также связываться с различными состояниямиобъектов.
Надо стремиться использовать ограниченный набор цветов иуделять внимание их правильному сочетанию. Расположение ярких цветов, таких,как красный, на зеленом или черном фоне затрудняет возможность сфокусироватьсяна них. Не рекомендуется использовать дополнительные цвета. Обычно наиболееприемлемым цветом для фона будет нейтральный цвет, например, светло-серый(используется в большинстве продуктов Microsoft). Помните также, что яркие цвета кажутся выступающими изплоскости экрана, в то время как темные как бы отступают вглубь.
Цвет не должен использоваться в качестве основного средствапередачи информации. Можно использовать различные панели, формы, штриховку идругие методики выделения областей экрана. Microsoft даже рекомендует разрабатыватьприложение сначала в черно-белом варианте, а уже потом добавлять к нему цвет.
Нельзя также забывать, что восприятие цвета очень индивидуально.А по оценке Microsoft девять процентов взрослого населениявообще страдают нарушениями цветовосприятия. Поэтому не стоит навязыватьпользователю свое видение цвета, даже если оно безукоризненно. Надопредоставить пользователю возможность самостоятельной настройки на наиболее приемлемуюдля него гамму. К тому же не стоит забывать, что может быть кто-то захочетиспользовать вашу программу на машине с монохромным монитором.
Статические цвета вы выбираете сами и они будут оставатьсянеизменными при работе приложения на любом компьютере. Это не очень хорошо,поскольку пользователь не сможет адаптировать вид вашего приложения к своимпотребностям. При выборе желательной ему цветовой схемы пользователь можетруководствоваться самыми разными соображениями: начиняя с практических (например,он может хотеть установить черный фон, чтобы экономить энергию батареи), икончая эстетическими (он может предпочитать, например, шкалу оттенков серого,потому что не различает цвета). Все это он не может делать, если вы задали вприложении статические цвета. Но уж если по каким-то соображениям вам надо ихзадать, старайтесь использовать базовый набор из 16 цветов. Если выпопытаетесь использовать 256 (или, что еще хуже, 16 миллионов) цветов, этоможет замедлить работу вашего приложения, или оно будет выглядеть плохо намашине пользователя с 16 цветами. К тому же подумайте (а, как правило, этонадо проверить и экспериментально), как будет выглядеть ваше приложение намонохромном дисплее.
Исходя из изложенных соображений, везде, где это имеет смысл,следует использовать для своего приложения палитру системных цветов. Это тецвета, которые устанавливает пользователь при настройке Windows. Когда вы создаете новую форму илиразмещаете на ней компоненты, Delphiавтоматически присваивает им цвета в соответствии со схемой цветов, установленнойв Windows. Конечно, вы будете менять этиустановки по умолчанию. Но если при этом вы используете соответствующиеконстанты системных цветов, то, когда пользователь изменит цветовую схемуоформления экрана Windows, вашеприложение также будет соответственно меняться, и не будет выпадать из общегостиля других приложений.
Не злоупотребляйте в приложении яркими цветами. Пестроеприложение — обычно признак дилетантизма разработчика, утомляет пользователя,рассеивает его внимание. Как правило, используйте системные цвета, которыепользователь может перестраивать по своему усмотрению. Из статических цветовобычно имеет смысл использовать только clBlack — черный, clWhite — белый и clRed— красный цвет предупреждения об опасности.
Использование шрифтов по умолчанию: System или MS Sans Serif, чаще всего позволяет избежать неприятностей.Впрочем, увы, не всегда. Если вы используете для надписей русские тексты, топри запуске приложения на компьютере с нерусифицированным Windows иногда возможны неприятности. Дляподобных случаев все-таки полезно приложить файлы использованных шрифтов квашей программе.
Другой выход из положения — ввести в приложение командувыбора шрифта пользователем. Это позволит ему выбрать подходящий шрифт изимеющихся в его системе. Проведенную пользователем установку можно запоминать вфайле .INI, в реестре или в файле конфигурациии читать автоматически информацию из этого файла при каждом запуске приложения(см. разделы 7.3 и 7.4).
Практически любое приложение должно иметь меню, посколькуименно меню дает наиболее удобный доступ к функциям программы. Существуетнесколько различных типов меню: главное меню с выпадающими списками разделов,каскадные меню, в которых разделу первичного меню ставится в соответствие списокподразделов, и всплывающие или контекстные меню, появляющиеся, еслипользователь щелкает правой кнопкой мыши на каком-то компоненте.
Основное требование к меню — их стандартизация. Это требованиеотносится ко многим аспектам меню: месту размещения заголовков меню и ихразделов, форме самих заголовков, клавишам быстрого доступа, организациикаскадных меню. Цель стандартизации — облегчить пользователю работу сприложением. Надо, чтобы пользователю не приходилось думать, в каком меню и какему надо открыть или сохранить файл, как ему получить справку, как работать сбуфером обмена Clipboard и т.д.Для осуществления всех этих операций у пользователя, поработавшего хотя бы снесколькими приложениями Windows,вырабатывается стойкий автоматизм действий и недопустимо этот автоматизмломать.
Начнем рассмотрение требований с размещения заголовков меню.Конечно, состав меню зависит от конкретного приложения. Но размещениеобщепринятых разделов должно быть стандартизированным. Все пользователи ужепривыкли, что меню Файл размещается слева в полосе главного меню, разделсправки — справа, перед ним в приложениях MDI размещается меню Окно и т.д. Главное меню должнотакже снабжаться инструментальной панелью (см. рис. 1.5), быстрые кнопки которойдублируют наиболее часто используемые команды меню. На этих кнопках надоиспользовать, по возможности, привычные картинки.
По возможности стандартным должно быть и расположениеразделов в выпадающих меню.
Группы функционально связанных разделов отделяются в выпадающихменю разделителями.
Названия разделов меню должны быть привычными пользователю.Если вы не знаете, как назвать какой-то раздел, не изобретайте свое имя, апопытайтесь найти аналогичный раздел в какой-нибудь русифицированной программеMicrosoft для Windows.Названия должны быть краткими и понятными. Не используйте фраз, да и вообщебольше двух слов, поскольку это перегружает экран и замедляет выборпользователя. Названия разделов должны начинаться с заглавной буквы.
Названия разделов меню, связанных с вызовом диалоговых окон,должны заканчиваться многоточием, показывающим пользователю, что при выбореэтого раздела ему предстоит установить в диалоге еще какие-то параметры.
Разделы, к которым относятся каскадные меню должны заканчиватьсястрелкой, указывающей на наличие дочернего меню данного раздела.
В каждом названии раздела должен быть выделен подчеркиваниемсимвол, соответствующий клавише быстрого доступа к разделу (клавиша Alt плюс подчеркнутый символ). Хотя врядли такими клавишами часто пользуются, но традиция указания таких клавишнезыблема. В реальной работе, вероятно, они используются только в случае,когда отказала мышь.
Многим разделам могут быть поставлены в соответствие «горячие»клавиши, позволяющие обратиться к команде данного раздела, даже не заходя вменю. Комбинации таких «горячих» клавиш должны быть традиционными. Например,команды вырезания, копирования и вставки фрагментов текста практически всегдаимеют «горячие» клавиши Ctrl-X, Ctrl-C и Ctrl-V соответственно. Заданные сочетания клавиш отображаются взаголовках соответствующих разделов.
Каждое окно, которое вы вводите в свое приложение, должнобыть тщательно продумано и скомпоновано. Удачная компоновка можетстимулировать эффективную работу пользователя, а неудачная — рассеиватьвнимание, отвлекать, заставлять тратить лишнее время на поиск нужной кнопкиили индикатора.
Управляющие элементы и функционально связанные с нимикомпоненты экрана должны быть зрительно объединены в группы, заголовки которыхкоротко и четко поясняют их назначение. Такое объединение позволяютосуществлять различные панели. Можно рекомендовать, как правило, размещатькомпоненты не непосредственно на форме, а на панелях. Но и внутри панелей надопродумывать размещение компонентов как с точки зрения эстетики, так и с точкизрения визуального отражения взаимоотношений элементов. Например, если имеетсякнопка, которая разворачивает окно списка, то эти два компонента должны бытьвизуально связаны между собой: размещены на одной панели и в непосредственнойблизости друг от друга. Если же ваш экран представляет собой случайныескопления кнопок, то именно так он и будет восприниматься. И в следующий разпользователь не захочет пользоваться вашей программой.
Каждое окно должно иметь некоторую центральную тему, которойподчиняется его композиция. Пользователь должен понимать, для чегопредназначено данное окно и что в нем наиболее важно. При этом недопустимоперегружать окно большим числом органов управления, ввода и отображенияинформации. В окне должно отображаться главное, а все детали и дополнительнуюинформацию можно отнести на вспомогательные окна. Для этого полезно вводить вокно кнопки с надписью Больше..., многоточие в которой показывает, что принажатии этой кнопки откроется вспомогательное окно с дополнительнойинформацией.
Помогают также разгрузить окно многостраничные компоненты сзакладками. Они дают возможность пользователю легко переключаться междуразными по тематике страницами, на каждой из которых имеется необходимыйминимум информации.
Еще один принцип, которого надо придерживаться при проектированииокон — стилистическое единство всех окон в приложении. Недопустимо, чтобысходные по функциям органы управления в разных окнах назывались по-разному илиразмещались в разных местах окон. Все это мешает работе с приложением,отвлекает пользователя, заставляет его думать не о сущности работы, а о том,как приспособиться к тому или иному окну.
При проектировании приложения важно правильно определитьпоследовательность табуляции оконных компонентов. Под этим понимаетсяпоследовательность, в которой переключается фокус с компонента на компонент,когда пользователь нажимает клавишу табуляции Tab. Это важно, поскольку в ряде случаев пользователюудобнее работать не с мышью, а с клавиатурой. Пусть, например, вводя данные окаком-то сотруднике, пользователь должен в отдельных окнах редактированияуказать фамилию, имя и отчество. Конечно, набрав фамилию, ему удобнее нажатьклавишу Tab и набирать имя, а потом опять, нажавTab, набирать отчество, чем каждый разотрываться от клавиатуры, хватать мышь и переключаться в новое окноредактирования.
Приложение должно предельно облегчать работу пользователя,снабжая его системой подсказок, помогающих сориентироваться в приложении. Эта система включает всебя:
· Ярлычки, которые всплывают, когдапользователь задержит курсор мыши над каким-то элементом окна приложения. Вчастности, такими ярлычками обязательно должны снабжаться быстрые кнопкиинструментальных панелей, поскольку нанесенные на них пиктограммы часто ненастолько выразительны, чтобы пользователь без дополнительной подсказки могпонять их назначение.
· Болееразвернутые подсказки в панели состояния или в другом отведенном под это местеэкрана, которые появляются при перемещении курсора мыши в ту или иную областьокна приложения.
· Встроеннуюсистему контекстно-зависимой оперативной справки, вызываемую по клавише F1.
· Разделменю Справка, позволяющий пользователю открыть стандартный файл справки Windows.hlp, содержащий в видегипертекста развернутую информацию по интересующим пользователя вопросам.
При работе программы могут возникать различного рода ошибки:переполнение, деление на нуль, попытка открыть несуществующий файл и т.п. Привозникновении таких исключительных ситуаций программа генерирует такназываемое исключение я выполнение дальнейших вычислений в данном блоке прекращается.Исключение — это объект специального вида, характеризующий возникшую впрограмме исключительную ситуацию. Он может также содержать в виде параметровнекоторую уточняющую информацию. Особенностью исключений является то, что этосугубо временные объекты. Как только они обработаны каким-то обработчиком, ониразрушаются.
Программист должен принять все мыслимые меры, чтобы ни прикаких ошибках пользователя и ни при каких сочетаниях данных приложение не заканчивалосьбы аварийно. Но если все-таки аварийное завершение происходит, необходимаполная зачистка «мусора» — удаление временных файлов, освобождение памяти,разрыв связей с базами данных и т.д.2. Проектная часть 2.1Описание информационной базы
Данный программный продукт имеет шесть таблиц БД.
Таблица 2.1 Владельцы — vladelec.dbf
Наименование поля
Тип
Размер
Назначение * Kod_vlad Number 5 Код владельца Fam Character 20 Фамилия Name Character 20 Имя Oth Character 20 Отчество Adres Character 20 Адрес Mail Character 30 Адрес электронной почты Tel Number 20 Номер телефон Sot Number 20 Номер мобильного телефона
Таблица 2.2 Менеджеры — sotrud.dbf
Наименование поля
Тип
Размер
Назначение * Kod_sot Number 3 Код сотрудника Fam Character 20 Фамилия Name Character 20 Имя Oth Character 20 Отчество
Таблица 2.3 Автомобили — avto.dbf
Наименование поля
Тип
Размер
Назначение * Kod_avto Number 6 Код автомобиля Kod_vlad Number 5 Код владельца Kod_Marka Number 6 Код марки Model Character 20 Модель автомобиля V Character 5 Объем двигателя Gos_nom Character 8 Государственный номер Cvet Character 20 Цвет Tip_kuz Character 20 Тип кузова Foto_1 Character 20 Фотография 1 Foto_2 Character 20 Фотография 2 Cena Number 10 Цена
Таблица 2.4 Регистрация — avto_in.dbf
Наименование поля
Тип
Размер
Назначение * Kod_in Number 6 Регистрационный номер Akt_nom Number 6 Номер акта Kod_avto Number 6 Код автомобиля Kod_vlad Number 6 Код владельца Kod_sot Number 6 Код менеджера Data Date Дата регистрации
Таблица 2.5 Комплектность — komplect.dbf
Наименование поля
Тип
Размер
Назначение Kod_avto Number 6 Код автомобиля Koleso Character 15 Оформление колес Zapaska Logical Наличие запасного колеса Instrument Logical Наличие инструмента Music Logical Наличие магнитолы Medic Logical Наличие аптечки Elect_pak Logical Наличие электропакета ABS Logical Наличие АБС GUR Logical Наличие гидроусилителя рулевого колеса Kondic Logical Наличие кондиционера Korobka Character 15 Тип КПП Privod Character 15 Вид привода Info Memo Дополнительная информация Defekt Memo Описание дефектов
Таблица 2.6 Продажа — avto_out.dbf
Наименование поля
Тип
Размер
Назначение * Kod_out Number 6 Код продажи Data Date Дата продажи Marka_out Number 6 Код марки Model_out Character 20 Модель автомобиля V_out Character 5 Объем двигателя Cvet_out Character 20 Цвет Tipkuz_out Character 20 Тип кузова Cena Number 10 Цена
Таблица 2.7 Марки автомобилей — marka.dbf
Наименование поля
Тип
Размер
Назначение * Kod_marka Number 6 Код марки Marka Character 20 Марка автомобиля 2.2 Спецификации набора данных
Таблица 2.8 Имя набора данных в программе Имя набора данных на внешнем носителе Длина записи набора данных (в байтах) Тип файла Метод доступа Vlad vladelec.dbf 155 Dbase IV Произвольный Sot sotrud.dbf 63 Dbase IV Произвольный Avto avto.dbf 140 Dbase IV Произвольный Avto_in avto_in.dbf 36 Dbase IV Произвольный Complect komplect.dbf >52 Dbase IV Произвольный Auto_out avto_out.dbf 93 Dbase IV Произвольный Marka Marka.bdf 26 Dbase IV Произвольный 2.3 Спецификации набора данных
Таблица 2.9 Обозначение Назначение Примечание 1 2 3 vladelec.dbf Информация о владельцах sotrud.dbf Информация о менеджерах avto.dbf Информация об автомобилях avto_in.dbf Регистрация автомобиля komplect.dbf Комплектация автомобиля
Продолжениетаблицы 2.91 2 3 avto_out.dbf Проданные автомобили Marka.bdf Справочник марок автомобилей
2.4 Проект базы данных, используемой взадаче/> />
2.5 Разработка алгоритмов обработкиданных2.5.1 Алгоритм работы главной формы приложения
/>
Схема 3.12.5.2 Алгоритм работы форм приложения
/>
Схема 3.22.5 Таблица идентификаторов
Таблица 2.10Идентификатор Смысловое содержание Тип Разрядность Main.path Путь к папке программы string Add.pic1 Путь к первому изображению String
Продолжение таблицы 2.10Add.pic2 Путь ко второму изображению string Del. AppProgID Идентификатор приложения Microsoft Excel string Del.App Указатель на приложение Microsoft Excel Variant Del.Ke Указатель на рабочую книгу Microsoft Excel Variant Del.Abc Указатель на лист Microsoft Excel Variant Del.Result Предназначена для проверки удачной активизации приложения Mcirosoft Excel HResult Del.i Счетчик цикла integer 2.6 Разработка SQL-запросов к базеданных
Запрос на выборку автомобилей по необходимым критериямформируется динамически, в зависимости от выбранных параметров поиска.
procedureTFSearch.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
if checkBox12.Checked then Query1.SQL.Add('a.cena
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;
2.7 Разработка форм приложения, меню, отчетов
Разработка форм, меню и множество других графическихэлементов относятся к дизайну приложения. Дизайн приложения или интерфейспользователя, должен быть прост, удобен.
Для написания данной программы я использовал как стандартныйнабор компонентов палитры Delphi7, так и дополнительные (RXLib,GlobusLib, LmdTools v6.12.00 Professional For Delphi 7).
В программе реализованы такие функции как отчёт, он жеэкспорт в Excel. Данные которые отображаются втаблице БД по инициативе пользователя могут быть помещены в отчёт. Все отчётысозданные программой хранятся во вложенном каталоге «Reports». Название отчётов формируется из параметров: место впрограмме откуда был произведён отчёт и текущая дата.
Меню, спроектированное на главной форме можно представитьследующим образом:
· Файл
o Выход
· Справочники
o Менеджеры
o Владельцы
o Марки
o Проданныеавтомобили
· Операции
o Зарегистрироватьавтомобиль
o Редактироватьданные
o Продатьавтомобиль
o Поиск
· Вид
o Размер шрифта
§ Большой
§ Средний
§ Маленький
o Цвет шрифта
· Помощь
o Справка
o О программе
Подробное описание назначения и использования команд главногоменю описано в инструкции пользователю (п. 5.2).
Наиболее часто используемые команды вынесены на формы в видекнопок, кроме того, на некоторые команды назначены горячие функциональныеклавиши.
В приложении использованы стандартные системные цвета, что позволитпользователю использовать удобную для себя цветовую палитру.
Ко всем элементам интерфейса определены всплывающие подсказки,указывающие назначение данного элемента.
По возможности произведена обработка исключений, генерируемыхпри работе с базой данных.3. ИНСТРУМЕНТАЛЬНЫЕСРЕДСТВА РЕАЛИЗАЦИИ ДИПЛОМНОГО ПРОЕКТА 3.1Краткая характеристика операционных систем
Windows 95, Windows 98, Windows NT, Windows 2000 — это последнеевоплощение графических операционных систем, впервые представленных в ноябре1985 и последующем развитии до 1999 года для использования на компьютерах типаIBM PC и совместимых с ним. По мере проникновения на рынок, за последнеедесятилетие, Windows 95, Windows NT, Windows 98.Windows 2000 почти полностьювытеснили всех имевшихся конкурентов и стали, фактическими, эталонамиоперационной системы для персональных компьютеров. Теперь, если вы пишетепрограмму для совместимых с IBM PC компьютеров, то вы пишете для Windows95, WindowsNT, Windows 98,Windows 2000.
Windows обладает важными преимуществами и для пользователей,и для программистов по сравнению со средой MS-DOS. Выгоды для пользователей ивыгоды для создателей программ на самом деле весьма схожи, поскольку задача создателя программы состоит в том, чтобы дать пользователю то, в чём оннуждается и то, что он хочет. Windows 95, Windows NT, Windows 98, Windows 2000 делает это возможным.
Операционная система не может реализовывать многозадачностьбез управления памятью. Так как одни программы запускаются, а другиезавершаются, память фрагментируется. Система должна быть способной объединятьсвободное пространство.
3.2 Краткая характеристика языкапрограммирования
Object Pascal и среды Delphi
Delphi — это комбинация нескольких важнейших технологий:
· Высокопроизводительныйкомпилятор в машинный код
· Объектно-ориентированнаямодель компонент
· Визуальное (а,следовательно, и скоростное) построение приложений из программных прототипов
· Масштабируемыесредства для построения баз данных
Повсеместное признание концепции объектно-ориентированногопрограммирования и компонентного подхода к созданию оттеснило на второй планвопросы программирования, без которого невозможна разработка действительносерьезных, профессиональных программ.
Если рассмотреть все компоненты библиотеки визуальныхкомпонентов Delphi с точки зрения реализуемых функций, то окажется, чтовыполняемая компонентом основная операция состоит из нескольких более простых.Причем этих простых операций не так уж и много – это ввод и вывод данных,работа с адресным пространством, обработка списков, использование объектов.
Поэтому разъезженная в десятках книг метафора приобретаетновый смысл. Оказывается и в самом программировании в Delphi также можновыделить некую модульную структуру. При этом под программированием понимаетсясоздание собственного исходного кода приложения, а не перенос компонентов наформу и настройка их в Инспекторе объектов, — для этого процесса имеетсяхорошее и емкое определение – визуальное программирование.
Итак, в разработке программ – визуальное программированиеобеспечивает быстрое и качественное выполнение стандартных задач.Программирование позволяет решать нестандартные и сложные задачи и увеличиватьэффективность, хотя при этом используются те же самые программные инструменты.
Концепция Delphi была реализована в конце 1994 года, когдавышла первая версия среды разработки. В основу программного продукта легликонцепции объектно-ориентированного программирования на базе языка ObjectPascal и визуального подхода к построению приложений. Именно благодаря этомусочетанию каждая новая версия среды разработки становилась событием.
Среда Delphi 5 представляет собой оболочку разработчика, вкоторую входит набор специализированных программ, ответственных за разные этапысоздания готового приложения. Исходный текст программы готовится в среде Delphi 5 с помощью встроенного редактора исходных текстов. Этот редакторспециализирован. Он отличается гибкими возможностями цветового выделенияразличных элементов текста программы и предоставляет возможность быстрого вводачасто встречающихся конструкций.
Левая панель редактора представляет собой Проводник,позволяющий быстро перемещать между частями исходного текста и по структуресоздаваемой программе.
Важнейшая характеристика разрабатываемой программы – удобствоее пользовательского интерфейса, наличие и доступность необходимых элементовуправления. В системе Delphi 5 имеется специальный проектировщик форм, спомощью которого окна будущей программы подготавливаются в виде форм.Проектировщик позволяет подобрать оптимальные размеры окон, разместить инастроить всевозможные элементы управления и меню, добавить готовыеизображения, указать заголовки, подсказки, подписи и так далее.
Любая работа в Delphi начинается с создания нового проекта.Как правило, из одного проекта получается одно приложение. Таким образом,проект представляет собой фундамент или каркас, на который “крепятся” все нужныедетали. Самый маленький проект представляет собой только один файл с исходнымкодом проекта, имеющий расширение DPR, он называется главным файлом проекта.Серьезный большой проект содержит десятки разнообразных форм, модулей, а такжединамические библиотеки и ресурсы и т.д.
В главном файле содержится описание всех модулей и форм,входящих в состав проекта. Кроме того, в секции begin…end может располагатьсялюбой код, который должен выполняться перед началом работы приложения или впроцессе его закрытия.
Модулем называется текстовый файл с расширением PAS, вкотором содержится некоторый исходный код на языке Object Pascal. С модулемможет быть связана форма, которая представляет собой отдельно взятое окнопрограммы с расположением на нем интерфейсными элементами. Служебная информацияо формах хранится в файлах с расширением DFM. В общем случае в состав проектамогут входить модули, не имеющие связанных с ними форм.
В проекте Delphi помимо модулей и форм могут присутствоватьразличные служебные файлы. Среди них важное место занимают ресурсы (расширениеRES), которые хранят значки, курсоры, строки сообщений, информацию о версиипрограммы и т.д.
Группа проектов объединяет для совместной разработкинесколько проектов. Файл группы проектов имеет расширение BPG и представляетсобой текстовый файл с системной информацией и описанием проектов, входящих вгруппу.
3.3 Краткая характеристикаиспользуемой СУБД
Основные идеи современной информационной технологиибазируются на концепции, согласно которой данные должны быть организованы вбазы данных с целью адекватного отображения изменяющегося реального мира иудовлетворения информационных потребностей пользователей. Эти базы данныхсоздаются и функционируют под управлением специальных программных комплексов,называемых системами управления базами данных (СУБД).
Увеличение объема и структурной сложности хранимых данных,расширение круга пользователей информационных систем привели к широкомураспространению наиболее удобных и сравнительно простых для пониманияреляционных (табличных) СУБД. Для обеспечения одновременного доступа к данныммножества пользователей, нередко расположенных достаточно далеко друг от другаи от места хранения баз данных, созданы сетевые мультипользовательские версииСУБД. В них тем или иным путем решаются специфические проблемы параллельныхпроцессов, целостности (правильности) и безопасности данных, а такжесанкционирования доступа. Формат dBase
Этот формат представляет собой обычный плоский файл *.DBF.Записи расположены в порядке добавления, поскольку новые записи помещаютсявсегда в конец файла. Если Вы хотите просматривать записи в порядке, отличномот естественного, то Вы должны построить индекс. Индекс имеет структуруB-дерева, элементами которого являются ключевые значения и номерасоответствующих записей в DBF-файле. Таким образом, при поиске или просмотреданных по индексу, из индекса берется номер записи, соответствующий конкретномузначению ключа, и осуществляется выборка нужной записи из DBF-файла. Если в индексеключевые значения расположены последовательно, то соответствующие им записи вDBF — произвольно, и при таком способе доступа происходят частые перемещения пофайлу с записями, что безусловно замедляет работу
(например FILTER в Clipper) и более того, при больших объемахданных делает работу аппаратного или программного кэша практически бесполезной(кэш в этом случае помогает только индексу).
Для удаления записей применяется следующий подход — чтобы неоставлять «пустоты» в файле записей, при удалении первый байт записипринимает специальное значение, индицирующее, что запись удалена. Такие записиисключаются из просмотра, и как-бы отсутствуют. Безусловно, есть средства,позволяющие просматривать таблицу и с
удаленными записями, а также восстанавливать их (отменятьфлаг удаления). Номера записей остаются соответствующими физическим, и еслиудалена запись N 5, то при просмотре подряд идут записи с номерами 4 и 6.
При упаковке таблицы удаленные записи затираются записями,находящимися после них по порядку. Т.к. записи переместились (и изменились ихфизические порядковые номера), все индексы нужно перестроить.
Как результат, ориентация программы на номера записейDBF-файла имеет недостатки — номера записей никак не связаны с содержимымзаписей, и могут меняться после упаковки файла. Однако механизм закладок BDEдля формата DBF использует именно номера записей, т.к. они стабильны в течениесеанса работы, и не зависят от используемого индекса.4. ЭКСПЛУАТАЦИЯ 4.1.Требования к аппаратному обеспечению
Чтобы комфортно эксплуатировать программу требуется, чтобыкомпьютер был сконфигурирован следующим образом:
1. Процессор Pentium 800MHz (рекомендуется 1500 MHz);
2. Оперативная память (ОЗУ) 128 MB (рекомендуется 256 Mb);
3. Свободного места на винчестере 100 Mб;
4. Window XР, MS Office (можно не весь пакет, а толькоExcel для отчётов)4.2.Инструкция пользователю
После загрузки программы на экране появляется основноерабочее окно. В данном окне отображаются основные данные, об имеющихся вналичии автомобилях, и их характеристики. Из этого окна можно перейти к любомумодулю программы по нажатию на соответствующую кнопку на панели кнопок.
По нажатию на кнопку «Менеджеры» — Открывается справочникменеджеров. Перейти к справочнику менеджеров так же можно при помощи меню:Справочники \ Менеджеры.
По нажатию на кнопку «Владельцы» — Открывается справочниквладельцев. Перейти к справочнику владельцев так же можно при помощи меню:Справочники \ Владельцы.
По нажатию на кнопку «Проданные» — Открывается окно,содержащее основную информацию по проданным автомобилям. Перейти в окнопроданных автомобилей так же можно при помощи меню: Справочники \ Проданные.
По нажатию на кнопку «Добавить» — Открывается окнорегистрации автомобиля. Перейти к окну регистрации можно при помощи меню:Правка \ Зарегистрировать автомобиль.
По нажатию на кнопку «Редактировать» — Открывается окноредактирования записи. Перейти к окну редактирования можно при помощи меню:Правка \ Редактировать данные. ВАЖНО! В окне редактирования отображаетсятекущая выделенная запись, для того чтобы внести корректировки в нужную запись,следует сначала выделить её.
По нажатии на кнопку «Продать» — Появляется запрос наподтверждение удаления. Если Вы выбрали «Yes», то в фоновом режиме происходиткопирование основных данных в таблицу проданные, после чего запись в основнойтаблице удаляется. Продать автомобиль можно и через меню: Правка \ Продатьавтомобиль.
По нажатии на кнопку «Справка» — Открывается справочнаясистема по программе. Так же вызвать справку можно при помощи меню: Помощь \Справка, или же по нажатию на клавишу F1.
По нажатии на кнопку «Выход» — программа будет закрыта.Закрыть программу так же можно из меню: Файл \ Выход.
По нажатии на кнопку «Искать» — Происходит поиск по БДавтомобили. Предварительно нужно ввести параметр для поиска и выбрать поле, покоторому будет производиться поиск.
По нажатии на кнопку «Сортировать» — Происходит сортировказаписей в таблице в алфавитном порядке (для цифровых полей – по возрастанию).
По нажатии на кнопку «Сформировать запрос» — Открываетсяокно формирования запросов. Так же открыть данное окно можно при помощи меню:Файл \ Создать запрос.
Справочник менеджеров. В этом окне отображены данные оперсонале (фамилия, имя, отчество.
По нажатию на кнопку «Искать» — Происходит поиск по БД.Предварительно в поле необходимо ввести параметр поиска (искомое значение),затем выбрать где искать (имя, фамилия) и нажать на кнопку «Искать».Если в БД содержится запись с таким значением курсор таблицы переместится нанеё, если же нет, то программа выдаст сообщение о том что нет такой записи.
По нажатию на кнопку «Редактировать» — Внизу окна появляетсяпанель, куда автоматически переносятся данные из выделенной записи. Послевнесения необходимых корректировок нужно нажать на кнопку «Сохранить», впротивном случае «Отмена».
По нажатию на кнопку «Новый» - Внизу окна появляется панельдля ввода данных о новом сотруднике. После ввода следует нажать на кнопку«Сохранить», в противном случае «Отмена». Панель добавления нового менеджера.
Па нажатию на кнопку «Удалить» — Появляется запрос наподтверждение удаления. Если Вы выбрали «Yes» то выделенная запись будетудалена. Запрос на подтверждение удаления
Справочник владельцев. В этом окне отображены данные овладельцах автомобилей (фамилия, имя, отчество, адрес, E-mail, телефон,сотовый) которые зарегистрированных в базе данных.
По нажатию на кнопку «Искать» — Происходит поиск по БД.Предварительно в поле необходимо ввести параметр поиска (искомое значение),затем выбрать где искать (фамилия, № телефона) и нажать на кнопку«Искать». Если в БД содержится запись с таким значением курсортаблицы переместится на неё, если же нет, то программа выдаст сообщение о томчто нет такой записи.
По нажатию на кнопку «Сортировать» - Происходитсортировка записей в таблице БД в алфавитном порядке (для числовых полей – впорядке возрастания). Предварительно нужно указать поле по которому будетпроисходить сортировка.
По нажатию на кнопку «Редактировать» — Внизу окна появляетсяпанель, куда автоматически переносятся данные из выделенной записи. Послевнесения необходимых корректировок нужно нажать на кнопку «Сохранить», впротивном случае «Отмена».Панель редактирования.
Справочник проданных автомобилей. В данном окне отображаютсяданные о проданных автомобилях (марка, модель, объём, свет, тип кузова, цена,дата продажи), которых в данный момент физически нет.
По нажатию на кнопку «Искать» — Происходит поиск по БД.Предварительно в поле необходимо ввести параметр поиска (искомое значение),затем выбрать где искать (марка, модель) и нажать на кнопку «Искать».Если в БД содержится запись с таким значением курсор таблицы переместится нанеё, если же нет, то программа выдаст сообщение о том что нет такой записи.
По нажатию на кнопку «Сортировать» - Происходитсортировка записей в таблице БД в алфавитном порядке (для числовых полей – впорядке возрастания). Предварительно нужно указать поле по которому будетпроисходить сортировка.
По нажатию на кнопку «Отчёт» — Происходит экспорт данных изтаблицы БД в MS Excel. После окончания создания отчёта откроется окно MS Excel,в котором будут помещены данные.
По нажатию на кнопку «Назад» — Закрывается справочникпроданных автомобилей, происходит возврат к основному рабочему окну.
Окно регистрации автомобиля. Это окно предназначено длядобавления новой записи об автомобиле и его владельце, комплектности ифотографий в соответствующие базы данных.
После заполнения всех полей и прикрепления фотографий следуетнажать на кнопку «Записать», после чего если все поля заполнены корректнопроисходит запись в БД.
При необходимости можно отчистить все поля разом, для этогонеобходимо нажать на кнопку «Очистить» .
Окно редактирования записи. Это окно предназначено дляредактирования выбранной (выделенной) записи в таблице базы данных.
Пользователю предлагается внести необходимые корректировки вполях и если всё готово, нажать на кнопку «Записать».
Окно поиска. Это окно предназначено для формирования запросовпо различным критериям базе данных.
В данном окне пользователю предлагается ввести (выбрать)параметры запроса и нажать кнопку «Найти». По нажатию на эту кнопкупроисходит обработка запроса и результат его выполнения отображается в таблице. 4.3 Инструкция программисту
Для того чтобы программа работала, на компьютере пользователядолжно быть установлено ядро BDE, и желательно Windows XР. Все фотографиикоторыми пользуется программа должна находится во вложенной папке «FOTO». Все файлы базы данных должны находится в корневом каталоге.
Инсталляция программы не требуется.5. ЭКОНОМИЧЕСКАЯ ЧАСТЬ
В экономической части дипломного проекта должна бытьопределена:
· себестоимость-цена,
· экономическаяэффективность проекта.
Для подсчета себестоимости продукции и экономическойэффективности данного программного продукта, нужно знать следующиесоставляющие:
· затрат натехническое и программное обеспечение проекта;
· расчет затрат наматериальные ресурсы;
· расчетзатрат на энергоресурсы;
· амортизационныеотчисления;
· расчетфонда заработной платы;
· прочиерасходы. 5.1.Определение затрат на создание программного продукта
Трудоемкостьразработки программного продукта можно определить следующим способом:
/> (6.1)
где
/> - затраты труда на подготовкуописание задачи;
/> - затраты труда на разработкуалгоритма решение задачи;
/> - затраты труда на разработкублок-схемы алгоритма решение задачи;
/> - затраты труда на составлениепрограммы по готовой блок-схеме;
/> - затраты труда на подготовкудокументации задачи;
/> - затраты труда на отладкупрограммы на ЭВМ при комплексной отладке задачи.
Составляющие затрат, всвою очередь можно вычислить через условное число операторов Q. В нашем случае число операторов вотлаженной программе Q=4.200творческим характером работы, в место этого оценим затраты труда на изучениеописания задачи с учетом уточнения описания и квалификации программистаопределяются:
/> (6.2)
где
В — коэффициент увеличения затраттруда вследствие недостаточного описания задачи, уточнение и некоторойдоработки. (В = от 1,2 до 5). В = 1,2
К — коэффициент квалификацииразработчика (К = от 0,8 до 1,5) К = 1,1 5.1.1 Трудоемкостьработ на разработку программы№№ Этапы проектирования В К Формула расчета Трудоемкость чел. час. 1
Подготовительный /> 1,2 1,1
/> 39,27 2
Алгоритм решения задачи />
/> 40,91 3
Блок-схема алгоритма/>
/>/> 40,91 4
Составление программы по блок-схеме />
/> 40,91 5
Отладка программы на ЭВМ />
/>
/> 92,05 6
Подготовка документации />
/>
/>
16,36
12,27 Итого:
Тн=282,68
Примечание:
/> (6.3)
где
/> - затраты труда на подготовкуматериалов и рукописи.
/>-затраты на редактирование, печатьи оформление документации.
Дляразработки программы принимается один программист:
Инженер-программист12 разряда, с трудоемкостью работ /> 5.2 Расчетсебестоимости и цены программного продукта5.1.2 Расчетфонда заработной платы
Работапрограммиста по условиям труда квалифицируется вредной. Согласно положению обоплате труда доплата за вредность составляет до 12% в зависимости от аттестациирабочего места.
Для расчетазаработной платы, тарифной ставки учитывается поправочный коэффициент заусловие труда 1,12. Тарифный коэффициент 2,2 разряд 12.
Дополнительныйфонд заработной платы – 10%
Отчисленияна социальные нужды- 19,5%
Определение фондазаработной платы инженера-программиста 12 разряда.
Часоваятарифная ставка 2,2 разряда, с учетом доплаты за вредность, составляет:
/>
Тарифнаязаработная плата за отработанное время:
/>
Дополнительнаязаработная плата-10% от Зтар
/>
Оплататруда программиста составит:
/> 40050,10+ 4005 = 44055,11
Фонд оплатытруда на разработку программы составит:
/> 44055,11
Отчисленияна социальные нужды:
/>
Общий фондзаработной платы на разработку программного обеспечения составит:
/> 44055,11+8811 = 52866,13
Среднемесячнаязаработная плата одного специалиста составит:
/> 31718,185.1.3 Расчет затрат на техническоеобеспечения проекта
Для разработки программногообеспечения необходимы технические средства:
· монитор — 30000 тенге
· системныйблок — 95000 тенге
· клавиатура – 1500 тенге
· мышь – 1200 тенге
· принтер – 20000 тенге
· программныйпродукт — «Delphi» (лицензионный) — 150000 тенге
· Windows XP (лицензионный) — 10000 тенге
Итого затрат на техническое ипрограммное обеспечение Соф = 307700 тенге
Основные фонды переносят своюстоимость на создаваемую продукцию в виде амортизационных отчислений.
Срок использования техническихсредств 3 года.
Амортизация- это денежное выраженияизноса основных фондов.
/>5.1.4 Прочие затраты
Затраты на оплату машинного временипри отладке программы определяются путем умножения фактического времени отладкипрограммы на цену машино-часа арендного времени:
/>
где
Счас — цена машино-часа арендного времени,тен/час;
tэвм — фактическое время отладки программыЭВМ;
Фактическое время отладки вычислим поформуле:
/>= 40,91+92,05+28,64= 161,59
По усредненным расчетам фирм ценамашино-часа арендуемого времени составляет 22,8 тг.
Общие затраты на оплату машинноговремени составляют:
/>= 3684,275.1.5 Расчет затрат на текущий ремонт
Затраты на текущий и профилактическийремонт принимаются равными 5% от стоимости ЭВМ
/>/12*1,5= 1923,13тенге
Затраты на материалы, необходимые дляобеспечения нормальной работы ПЭВМ составляют около 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 Расчет экономической эффективности проекта
Калькуляция себестоимости и отпускнойцены№ П/П Статьи и затраты Сумма (тенге) 1 Материалы 3900,00 2 Энергоресурсы 2032,80 3 Основная заработная плата 44055,11 4 Дополнительная заработная плата 4005,00 5 Отчисление на социальные нужды 8811,00 6 Амортизационные нужды 13687,95 7 Прочие затраты 5992,00 8
Расходы на подготовку и осваивание производства
0,5% от /> 1/>7 412,42 9
Общехозяйственные расходы 3 %/> от 1/>/7 2474,52 10 Производственная себестоимость 1/9 85370,80 11 Прибыль предприятия 20% от гр 10 17074,16 12 Цена продукции гр 10+11 102444,96 13 НДС- 14% от гр 12 14342,29 14 Отпускная цена гр 12+гр 13 116787,25
Эф = (Ц-С)/К
Где Эф- экономическаяэффективность.
Готовая эффективность созданиясистемы определяется из выражения:
Эг = />З/(Ен+Кр) = 57132,29/0,44 = 130445,87
Где />З-изменение размера затрат на создание и обслуживание информационной системыопределяется из выражения:
/>З =/>И∑ — К*(Ен+Кр) = 57132,29
где />И∑ — абсолютное изменение издержек работы с использованием программ.
Кр — коэффициент реновации,принимается как норма амортизации с учетом срока службы существующегооборудования ( срок службы системы Т сл – 3года) и определяется по формуле:
Кр = Ен/((1+Ен) тел -1),
Кр = 0,15/((1+0,15)3– 1) = 0,29
К- единовременное капиталовложение
К = 97876,64 тенге (программные итехнические затраты, фонд заработной платы, прочие
расходы, материальные затраты,затраты на энергоносители и прочие расходы)
Тогда изменение размера затратсоставит:
/>З = 57132,29тенге.
Точная эффективность планируется вразмере
Эг = 130445,87 тенге.
Теперь можно определить срококупаемости Ток создания новой системы из выражения:
Ток = К/Эг = 0,75
Данный срок окупаемости учитывает толькоматериальные преимущества создания новой системы.
В целом система считается рентабельной если ее срок окупаемости меньше года.
№
П/П Показатели
Единица
измерения Количество 1 Общая трудоемкость работ в том числе Чел/час 282,68 1.1 Техническое задание Чел/час 39,27 1.2 Техно-рабочий проект Чел/час 122,73 1.3 Внедрение Чел/час 92,05 2 Срок разработки проекта по плану Дни 35,00 3 Численность персонала Чел. 1,00 4 Себестоимость продукции Тенге 85370,80 5 Прибыль предприятия Тенге 17074,16 6 Отпускная цена продукции Тенге 116787,25 7 Среднемесячная заработная плата Тенге 31718,18 8 Производительность труда % 100,96 9 Срок окупаемости затрат год 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. Деви Хакер Delphi5 Руководство разработчика. (электронный вариант в формате pdf) 16. Delphi 6Учебный курс (электронный вариант в формате CHM)
10. Иллюстрированныйсамоучитель по Delphi 6 (электронный вариант в формате HTML) 18. Delphi 6 итехнология COM Москва 2002
11. БорисовЕ.Ф..“Основыэкономической теории”,
12. СергеевИ.В.“Экономика предприятия”
13. Райзберг Б.А.,Лозовский Л.Ш., Стародубцев Е.Б. “Современный экономический словарь”
14. Скала В.И.“Охрана труда и техника безопасности”, – Алматы: «LEM», 2002. –276с
15. “Охрана труда ”-М.;1989Приложениеа. основные модули приложенияА.1Модуль формыокна «О программе»
unitabout;
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}
procedureTFAbout.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
end.А.2Модуль формы окна «Зарегистрировать автомобиль»
unitadd;
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
usesdm;
{$R*.dfm}
functiongen_id(table:TTable; var name:string):integer;
varn:integer;
begin
table.First;
n:=table.FieldByName(name).asinteger;
whilenot table.Eof do begin
if table.FieldByName(name).Value>n then
n:=table.FieldByName(name).Value;
table.Next;
end;
gen_id:=n+1;
end;
procedureTFadd.LMDSpeedButton4Click(Sender: TObject);
begin
OpenPictureDialog1.Execute;Продолжение приложения А
pic1:=OpenPictureDialog1.FileName;
ifpic1'' then Image4.Picture.LoadFromFile(pic1)
else begin
MessageBox(Handle,'Фотографиякузованевыбрана!','',MB_OK);
exit;
end;
end;
procedureTFadd.LMDSpeedButton5Click(Sender: TObject);
begin
OpenPictureDialog1.Execute;
pic2:=OpenPictureDialog1.FileName;
ifpic2'' then Image5.Picture.LoadFromFile(pic2)
else begin
MessageBox(Handle,'Фотографиясалонаневыбрана!','',MB_OK);
exit;
end;
end;
procedureTFadd.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;
procedureTFadd.FormCreate(Sender: TObject);
begin
// dm1.vlad.Close;
//dm1.vlad.Open;
Memo1.Clear;
Memo2.Clear;
end;
procedureTFadd.LMDSpeedButton3Click(Sender: TObject);
begin
close;
end;Продолжение приложения А
procedureTFadd.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;
procedureTFadd.LMDSpeedButton1Click(Sender: TObject);
vark1,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
elsebegin
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 thendm1.komplect.FieldByName('zapaska').Value:='true'
else dm1.komplect.FieldByName('zapaska').Value:='false';
if CheckBox2.Checked=true thendm1.komplect.FieldByName('instrument').Value:='true'
else dm1.komplect.FieldByName('instrument').Value:='false';Продолжение приложения А
if CheckBox3.Checked=true then dm1.komplect.FieldByName('music').Value:='true'
elsedm1.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;
procedureTFadd.OpenPictureDialog1CanClose(Sender: TObject;
var CanClose: Boolean);
begin
MessageBox(Handle,'Выневыбралимашину!','Внимание',MB_OK);
end;
procedureTFadd.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'..'9',#8: key:=key
else key:=#0;
end;
end;
procedureTFadd.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'..'9',#8: key:=key
else key:=#0;
end;
end;
procedureTFadd.Edit13KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'..'9',#8: key:=key
else key:=#0;
end;
end;
procedureTFadd.Edit14KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'..'9',#8: key:=key
else key:=#0;
end;
end;
procedureTFadd.DBLookupComboBox2Click(Sender: TObject);
begin
// Edit8.Text:=DBLookupComboBox2.KeyValue;
end;Продолжение приложения А
end.А.3Модуль формы«Удалить автомобиль»
unitdel;
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
usesdm;
{$R*.dfm}Продолжение приложения А
procedureTFdel.LMDSpeedButton1Click(Sender: TObject);
begin
ifedit1.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
elseMessageBox(Handle,'Нет автомобиля такой модели...','',MB_OK);
end
elseMessageBox(Handle,'Введите значениедляпоиска!','',MB_OK);
end;
procedureTFdel.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;
procedureTFdel.LMDSpeedButton4Click(Sender: TObject);
begin
close;
end;
procedureTFdel.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';
excepton 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 Модуль данных
unitdm;
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
usesmain;
{$R*.dfm}
procedureTdm1.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;
procedureTdm1.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;
procedureTdm1.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;
procedureTdm1.markaAfterInsert(DataSet: TDataSet);
begin
Marka.FieldByName('id_marka').asinteger:=id;
end;
end.А.5 Модуль формы «Редактирование данных»
unitedit;
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
usesdm, DB;
{$R*.dfm}Продолжение приложения А
procedureTFedit.LMDSpeedButton12Click(Sender: TObject);
begin
close;
end;
procedureTFedit.LMDSpeedButton10Click(Sender: TObject);
varst1,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;
procedureTFedit.LMDSpeedButton8Click(Sender: TObject);
begin
OpenPictureDialog1.Execute;
pic1:=OpenPictureDialog1.FileName;
ifpic1'' then Image4.Picture.LoadFromFile(pic1)
else begin
MessageBox(Handle,'Фотографиякузованевыбрана!','',MB_OK);
exit;
end;
end;
procedureTFedit.LMDSpeedButton9Click(Sender: TObject);
begin
OpenPictureDialog2.Execute;
pic2:=OpenPictureDialog2.FileName;
ifpic2'' then Image5.Picture.LoadFromFile(pic2)
else begin
MessageBox(Handle,'Фотографиясалонаневыбрана!','',MB_OK);
exit;
end;
end;
procedureTFedit.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)
elseMessageBox(Handle,'Фотографии кузоваНЕТ!','',MB_OK);
if(dm1.avto.fieldbyname('FOTO_2').Value'') then
Image5.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'FOTO\'+dm1.avto.fieldbyname('FOTO_2').AsString)
elseMessageBox(Handle,'Фотографии салонаНЕТ!','',MB_OK);
end;
procedureTFedit.DBEdit6KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'..'9',#8: key:=key
elsekey:=#0;
end;
end;
procedureTFedit.DBEdit1KeyPress(Sender: TObject; var Key: Char);
beginПродолжение приложения А
case keyof
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8:key:=key
else key:=#0;
end;
end;
procedureTFedit.DBEdit3KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8:key:=key
elsekey:=#0;
end;
end;
end.А.6Модульзаставки
unitlogo;
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}
procedureTFlogo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ifi=100 then
Action:=caFree
else
Action := caNone;
end;
procedureTFlogo.Timer1Timer(Sender: TObject);
begin
i:=i+1;Продолжение приложения А
ProgressBar1.Position:=i;
if i=100 then begin
Timer1.Enabled:=false;
close;
end;
end;
procedureTFlogo.FormActivate(Sender: TObject);
begin
i:=0;
end;
end.А.7 Модуль главной формы
unitmain;
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
useslogo, dm, vladel, sotr, add, edit, del, query, search, marka, about;
{$R*.dfm}
functiongen_id(table:TTable; var name:string):integer;
varn:integer;
begin
table.First;
n:=table.FieldByName(name).asinteger;
whilenot table.Eof do begin
if table.FieldByName(name).Value>n then
n:=table.FieldByName(name).Value;
table.Next;
end;
gen_id:=n+1;
end;
procedureTFmain.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;
procedureTFmain.N5Click(Sender: TObject);
begin
close;
end;
procedureTFmain.N14Click(Sender: TObject);
beginПродолжение приложения А
ColorDialog1.Execute;
DBGrid1.Font.Color:=ColorDialog1.color;
end;
procedureTFmain.N81Click(Sender: TObject);
begin
DBGrid1.Font.Size:=10;
end;
procedureTFmain.N15Click(Sender: TObject);
begin
DBGrid1.Font.Size:=12;
end;
procedureTFmain.N82Click(Sender: TObject);
begin
DBGrid1.Font.Size:=8;
end;
procedureTFmain.N8Click(Sender: TObject);
begin
fvlad.showmodal;
end;
procedureTFmain.N9Click(Sender: TObject);
begin
fsotr.showmodal;
end;
procedureTFmain.N11Click(Sender: TObject);
begin
fadd.showmodal;
end;
procedureTFmain.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;
procedureTFmain.N12Click(Sender: TObject);
begin
Fedit.showmodal;
end;
procedureTFmain.LMDSpeedButton1Click(Sender: TObject);
begin
ifedit1.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
elseMessageBox(Handle,'Нет автомобиля такой модели...','',MB_OK);
if RadioGroup1.ItemIndex=2 thenПродолжение приложения А
if dm1.avto.Locate('gos_nom',edit1.Text,[loCaseInsensitive]) then
elseMessageBox(Handle,'Нет автомобиля c таким номером...','',MB_OK);
end
elseMessageBox(Handle,'Введите значениедляпоиска!','',MB_OK);
end;
procedureTFmain.LMDSpeedButton3Click(Sender: TObject);
begin
fsotr.showmodal;
end;
procedureTFmain.LMDSpeedButton4Click(Sender: TObject);
begin
fvlad.showmodal;
end;
procedureTFmain.LMDSpeedButton5Click(Sender: TObject);
begin
fadd.showmodal;
end;
procedureTFmain.LMDSpeedButton6Click(Sender: TObject);
begin
Fedit.showmodal;
end;
procedureTFmain.LMDSpeedButton9Click(Sender: TObject);
begin
//close;
Panel9.Visible:= not Panel9.Visible;
end;
procedureTFmain.Timer1Timer(Sender: TObject);
begin
Label6.Caption:=TimeToStr(Time);
end;
procedureTFmain.LMDSpeedButton10Click(Sender: TObject);
begin
fquery.showmodal;
end;
procedureTFmain.N7Click(Sender: TObject);
begin
fdel.showmodal;
end;
procedureTFmain.N19Click(Sender: TObject);
begin
fquery.showmodal;
end;
procedureTFmain.LMDSpeedButton7Click(Sender: TObject);
varv: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;
procedureTFmain.N10Click(Sender: TObject);
begin
LMDSpeedButton7Click(Sender);
end;
procedureTFmain.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;
procedureTFmain.FormCreate(Sender: TObject);
begin
path:=Application.ExeName;
end;Продолжение приложения А
procedureTFmain.DBGrid1TitleClick(Column: TColumn);
begin
ifColumn.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;
procedureTFmain.N22Click(Sender: TObject);
begin
FSearch.showmodal;
end;
procedureTFmain.N23Click(Sender: TObject);
begin
FMarka.Showmodal;
end;
procedureTFmain.N17Click(Sender: TObject);
begin
Fabout.ShowModal;
end;
end.А.8Модуль формы поиска
unitsearch;
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
usesdm, edit;
{$R*.dfm}Продолжение приложения А
procedureTFSearch.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedureTFSearch.CheckBox9Click(Sender: TObject);
begin
Label8.Enabled:=not Label8.Enabled;
DBLookupComboBox1.Enabled:=not DBLookupComboBox1.Enabled;
end;
procedureTFSearch.CheckBox10Click(Sender: TObject);
begin
Label12.Enabled:=not Label12.Enabled;
ComboBox1.Enabled:=not ComboBox1.Enabled;
end;
procedureTFSearch.CheckBox11Click(Sender: TObject);
begin
Label14.Enabled:=not Label14.Enabled;
Edit1.Enabled:=not Edit1.Enabled;
end;
procedureTFSearch.CheckBox12Click(Sender: TObject);
begin
Label13.Enabled:=not Label13.Enabled;
Edit2.Enabled:=not Edit2.Enabled;
end;
procedureTFSearch.CheckBox4Click(Sender: TObject);
begin
Label1.Enabled:=not Label1.Enabled;
CheckBox17.Enabled:=not CheckBox17.Enabled;
end;
procedureTFSearch.CheckBox5Click(Sender: TObject);
begin
Label2.Enabled:=not Label2.Enabled;
CheckBox16.Enabled:=not CheckBox16.Enabled;
end;
procedureTFSearch.CheckBox6Click(Sender: TObject);
begin
Label3.Enabled:=not Label3.Enabled;
CheckBox15.Enabled:=not CheckBox15.Enabled;
end;
procedureTFSearch.CheckBox7Click(Sender: TObject);
begin
Label4.Enabled:=not Label4.Enabled;
CheckBox14.Enabled:=not CheckBox14.Enabled;
end;
procedureTFSearch.CheckBox8Click(Sender: TObject);
begin
Label5.Enabled:=not Label5.Enabled;
CheckBox13.Enabled:=not CheckBox13.Enabled;
end;Продолжение приложения А
procedureTFSearch.CheckBox1Click(Sender: TObject);
begin
Label15.Enabled:=not Label15.Enabled;
ComboBox2.Enabled:=not ComboBox2.Enabled;
end;
procedureTFSearch.CheckBox2Click(Sender: TObject);
begin
Label16.Enabled:=not Label16.Enabled;
ComboBox3.Enabled:=not ComboBox3.Enabled;
end;
procedureTFSearch.CheckBox3Click(Sender: TObject);
begin
Label17.Enabled:=not Label17.Enabled;
ComboBox4.Enabled:=not ComboBox4.Enabled;
end;
functionBoolToStr(value: boolean):string;
begin
if value then result:='true' else result:='false';
end;
procedureTFSearch.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 thenQuery1.SQL.Add('a.tip_kuz="'+ComboBox1.Text+'" and ');
if checkBox11.Checked then Query1.SQL.Add('a.v
if checkBox12.Checked then Query1.SQL.Add('a.cena
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;
procedureTFSearch.DBGrid1CellClick(Column: TColumn);
begin
if Query1.Active then begin
ifdm1.avto.Locate('kod_avto',Query1.FieldByName('kod_avto').AsInteger,[loCaseInsensitive])
then fedit.showmodal;
end;
end;
end.А.9Модуль формы менеджеров
unitsotr;
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
usesdm;
{$R*.dfm}
functiongen_id(table:TTable; var name:string):integer;
varn:integer;
begin
table.First;
n:=table.FieldByName(name).asinteger;
whilenot table.Eof do begin
if table.FieldByName(name).Value>n then
n:=table.FieldByName(name).Value;
table.Next;
end;
gen_id:=n+1;
end;
procedureTFsotr.LMDSpeedButton1Click(Sender: TObject);
begin
ifedit1.Text'' then begin
if RadioGroup1.ItemIndex=0 then
if dm1.sot.Locate('FAM',edit1.Text,[loCaseInsensitive]) then
elseMessageBox(Handle,'Нет записи с такой фамилией...','',MB_OK);
if RadioGroup1.ItemIndex=1 then
if dm1.sot.Locate('NAME',edit1.Text,[loCaseInsensitive]) thenПродолжение приложения А
else MessageBox(Handle,'Нет записи с таким именем...','',MB_OK);
end
elseMessageBox(Handle,'Введите значениедляпоиска!','',MB_OK);
end;
procedureTFsotr.FormCreate(Sender: TObject);
begin
dm1.sot.IndexName:='FAM';
RadioGroup1.ItemIndex:=-1;
end;
procedureTFsotr.LMDSpeedButton4Click(Sender: TObject);
begin
ifmessagedlg('Удалить?!',mtconfirmation,[mbYes, mbNo],0)=mrYes then begin
ifdm1.sot.State=dsbrowse then dm1.sot.delete;
end;
end;
procedureTFsotr.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;
procedureTFsotr.LMDSpeedButton2Click(Sender: TObject);
begin
pnew.Visible:=true;
end;
procedureTFsotr.LMDSpeedButton7Click(Sender: TObject);
begin
pedit.Visible:=false;
Edit5.Text:='';
Edit6.Text:='';
Edit7.Text:='';
dm1.sot.Cancel;
end;
procedureTFsotr.LMDSpeedButton9Click(Sender: TObject);
begin
pnew.Visible:=false;
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
dm1.sot.Cancel;
end;
procedureTFsotr.FormActivate(Sender: TObject);
begin
pedit.Visible:=true;
pnew.Visible:=true;
pedit.Visible:=false;
pnew.Visible:=false;
end;Продолжение приложения А
procedureTFsotr.LMDSpeedButton8Click(Sender: TObject);
varv:string;
k:integer;
begin
if(Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') then begin
MessageBox(Handle,'Возможнонекоторые поля не заполнены!','Внимание',MB_OK);
exit;
end
elsebegin
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;
procedureTFsotr.LMDSpeedButton6Click(Sender: TObject);
begin
if(Edit5.Text='') or (Edit6.Text='') or (Edit7.Text='') then begin
MessageBox(Handle,'Возможнонекоторые поля не заполнены!','Внимание',MB_OK);
exit;
end
elsebegin
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;
procedureTFsotr.LMDSpeedButton3Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
close;
end;
procedureTFsotr.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case key ofПродолжение приложения А
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8:key:=key
else key:=#0;
end;
end;
procedureTFsotr.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8:key:=key
elsekey:=#0;
end;
end;
procedureTFsotr.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8:key:=key
else key:=#0;
end;
end;
procedureTFsotr.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8:key:=key
else key:=#0;
end;
end;
procedureTFsotr.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8:key:=key
else key:=#0;
end;
end;
procedureTFsotr.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8:key:=key
else key:=#0;
end;
end;
end.А.10 Модульформы о владельцах
unitvladel;
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
usesdm;Продолжение приложения А
{$R*.dfm}
procedureTFvlad.FormCreate(Sender: TObject);
begin
dm1.vlad.IndexName:='FAM';
RadioGroup1.ItemIndex:=-1;
RadioGroup2.ItemIndex:=-1;
end;
procedureTFvlad.LMDSpeedButton1Click(Sender: TObject);
begin
ifedit1.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
elseMessageBox(Handle,'Введите значение для поиска!','',MB_OK);
end;
procedureTFvlad.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;
procedureTFvlad.FormActivate(Sender: TObject);
begin
pedit.Visible:=true;
pedit.Visible:=false;
end;
procedureTFvlad.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
elsebegin
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;
procedureTFvlad.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;
procedureTFvlad.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;
procedureTFvlad.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key
else key:=#0;
end;
end;
procedureTFvlad.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key
else key:=#0;
end;
end;
procedureTFvlad.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'A'..'Z','a'..'z','а'..'я','А'..'Я',#8: key:=key
else key:=#0;
end;
end;Продолжение приложения А
procedureTFvlad.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'..'9',#8: key:=key
else key:=#0;
end;
end;
procedureTFvlad.Edit8KeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'..'9',#8: key:=key
else key:=#0;
end;
end;
procedureTFvlad.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Edit1.Text:='';
RadioGroup1.ItemIndex:=-1;
RadioGroup2.ItemIndex:=-1;
close;
end;
end.