Разработка программного обеспечения "Автоматизация учета компьютерной техники"

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

ДИПЛОМНЫЙ ПРОЕКТ НА ТЕМУ:

Разработка программного обеспечения «Автоматизация учета компьютерной техники»

Содержание

Введение

1. Постановка задачи

2. Формализация

3. Описание среды программирования

3.1 Требования к техническому обеспечению

3.2 Требования к программному обеспечению

4. Методика разработки проекта

4.1 Алгоритмизация задачи

4.1.1 Описание алгоритма

4.1.2 Структурная схема

4.2 Программирование

4.3 Аномалии и защитное программирование

4.4 Тестирование и отладка

5. Анализ результатов решения

6. Инструкция пользователю

Экономическая часть

Заключение

Литература

Приложение

Введение

Научно-производственное объединение «Тайфун» — государственное учреждение, одно из ведущих научно-исследовательских учреждений Федеральной службы России по гидрометеорологии и мониторингу окружающей среды (Росгидромета).

НПО «Тайфун», созданное 1 января 1986 года, является правопреемником следующих государственных учреждений: Института экспериментальной метеорологии, Центрального конструкторского бюро гидрометеорологического приборостроения и Регионального центра «Мониторинг Арктики» Росгидромета.

Неотъемлемым условием успешного долгосрочного функционирования предприятия является высокая степень интеграции технологий управления и автоматизация работы отделов. Для упрощения работы и повышения работоспособности сотрудников информационно вычислительного центра необходимо разработать программный продукт «Автоматизация учета компьютерной техники».

Использование данной программы значительно сократит время работы сотрудника отдела, затрачиваемого на поиск необходимой информации по поставкам комплектующих, наличии на складе, сотрудникам, которым необходимо установить ПК.

1. Постановка задачи

Цель дипломного проекта состоит в том, чтобы разработать программное обеспечение автоматизированного учета компьютерной техники на предприятии ГУ НПО Тайфун. Программное обеспечение должно соответствовать следующим требованиям:

Удобство учета комплектующих на складе;

Просмотр списка сотрудников, которым необходимо установить на рабочее место ПК;

Редактирование данных, используемых в приложении;

Просмотр отчетов и их вывод на печать;

Программа должна быть доступной в использовании.

2. Формализация

Для построения необходимо провести формализацию задачи, являющуюся необходимым этапом разработки задачи и заключающуюся в построении структуры таблиц для хранения информации, схемы их взаимосвязей и описания алгоритмов обработки.

Взаимосвязь показана в схеме данных:

Как правило, разработка проекта реализации задачи выполняется в несколько этапов и начинается с анализа той информации, которая является выходной (формы и отчеты для Access). Только после выяснения структуры и состава этой информации, формулировки запросов для получения отчетов можно сделать вывод о структуре и составе таблиц данных. Необходимым этапом формализации задачи является нормализация базы данных, которая, по сути, представляет собой процесс оптимизации хранения и использования информации в таблицах.

Наиболее часто используется приведение к третьей нормальной форме (3NF). В результате устраняется избыточность данных и упрощается процесс изменения структуры БД.

Сначала производится приведение к первой нормальной форме (1NF) — каждой таблице назначается первичный ключ, обеспечивающий уникальность каждой записи. Здесь же удаляются все повторяющиеся группы (точнее создается новая таблица для повторяющихся групп).

В процессе приведения ко второй нормальной форме производится устранение избыточности данных — любое поле в таблице, которое является избыточным или всегда остается неизменным, основанным на значении другого поля, необходимо перенести в другую таблицу.

И, наконец, в 3NF все поля каждой таблицы непосредственно связаны с полем первичного ключа и не зависят от других полей. На практике это делается следующим образом — любое поле не связанное с полем первичного ключа, необходимо перенести в отдельную таблицу.

При разработке структуры данных рассматриваемой задачи изначально подразумевалось следование 3NF. В Access существует мастер анализа таблиц, позволяющий еще более упростить этот процесс.

На следующем этапе уточняется структура полей в таблицах, и определяются правила ввода.

Затем происходит возврат к проектированию запросов для форм и отчетов, проектируются собственно входные и выходные формы и отчеты.

На заключительном этапе создается меню и различные интерфейсные промежуточные формы. Затем, в процессе отладки и доработки, возможен возврат на любой этап процесса разработки.

В следующих разделах пояснительной записки все объекты задачи рассматриваются более подробно.

3. Описание среды программирования

Программный продукт «Автоматизация учета компьютерной техники» разработан на Borland Delphi 7.0 с использованием СУБД Microsoft Access 2003.

Access 2003 входит в состав Microsoft Office XP, и как другие компоненты работает в среде Windows МЕ, Windows XP, Windows 2000, Windows NT.

Система управления базами данных Microsoft Access является одним из самых популярных приложений в семействе настольных СУБД. Все версии Access имеют в своем арсенале средства, значительно упрощающие ввод и обработку данных, поиск данных и предоставление информации в виде таблиц, графиков и отчетов, в ней предусмотрены все необходимые средства для определения и обработки данных, а также для управления ими при работе с большими объемами информации.

Несмотря на то, что Access является мощной и сложной системой, его использование не сложно для непрофессиональных пользователей.

Access — это не только мощная, гибкая и простая в использовании СУБД, но и система для разработки работающих с базами данных приложений. С помощью Access вы можете создать приложение, работающее в среде WINDOWS и полностью соответствующее вашим потребностям по управлению данными.

Access -- это, прежде всего, система управления базами данных (СУБД), она предназначена для хранения и поиска данных, представления информации в удобном виде и автоматизации часто повторяющихся операций (таких, как ведение счетов, учет, планирование и т. п.). При всем этом Access обеспечивает доступ ко всем типам данных и позволяет использовать одновременно несколько таблиц базы данных. Таблицу Access можно связать с данными, хранящимися на большой ЭВМ или на сервере.

MS Access предоставляет вам максимальную свободу в задании типа ваших данных: текст, числовые данные, даты, время, денежные значения, рисунки, звук, документы, электронные таблицы. Вы можете задать также форматы хранения (длина строки, точность представления чисел и даты времени) и предоставления этих данных при выводе на экран или печать.

Основными понятиями или объектами системы Access являются: таблицы, запросы, формуляры, отчеты, макросы и модули.

Borland Delphi 7.0 — это универсальный язык программирования, как для начинающих, так и для опытных пользователей.

Borland Delphi 7.0 предлагает большой набор специальных средств, помогающих быстрее создать как само приложение, так и его элементы: формы, диалоговые окна, отчеты, базы данных и многое другое, то есть практически все, что связано с разрабатываемым приложением и средой, в которой оно будет работать. Вы можете создавать мощные автономные приложения, игры и утилиты, затратив на это меньше времени, чем для любого другого языка программирования.

Поскольку эта среда выполняется на компьютере вместе с операционной средой Windows, то и создавать вы будете программы, называемые Windows-приложения или просто: приложения.

3.1 Требования к техническому обеспечению

Для работы программы персональный компьютер пользователя должен отвечать требованиям необходимые для работы установленные в пункте 3.2.

3.2 Требования к программному обеспечению

Для работы программы необходимо, чтобы на компьютере были установлены:

Операционная система из серии WINDOWS 9x WINDOWS 2000, XP;

Microsoft Office XP с установленным компонентом Microsoft Excel.

4. Методика разработки программы

4.1 Алгоритмизация задачи

4.1.1 Описание алгоритма

БД «Автоматизация учёта компьютерной техники» создавалась с самого начала на Access 2003.

Алгоритмизация решения задачи дипломного проекта разбита на несколько этапов. Каждый этап представляет собой постановку и решение отдельных задач.

В ходе разработки программного продукта были созданы следующие таблицы:

Таблица № 1 «Комплектующие»

Имя поля

Тип данных

Код_Комплектующего

Счетчик

Комплектующие

Текстовый

Тип_Комплектующего

Текстовый

Количество

Числовой

Код_Поставщика

Числовой

Таблица № 2 «Поставщики»

Имя поля

Тип данных

Код_Поставщика

Счетчик

Название_организации

Текстовый

ФИО_поставщика

Текстовый

Телефон

Числовой

Адрес

Текстовый

Факс

Числовой

Р/С

Числовой

Таблица № 3 «Распределение»

Имя поля

Тип данных

Код_Распределения

Счетчик

Код_Комплектующего

Числовой

ФИО_Сотрудника

Текстовый

Количество

Числовой

Таблица № 4 «Списание»

Имя поля

Тип данных

Код_Списания

Счетчик

Код_Комплектующего

Числовой

Количество

Числовой

Причина

Текстовый

Программа имеет следующие формы:

Форма, которая является главной данного проекта. При помощи вкладок и меню, расположенных на этой форме можно открыть интересующую вас информацию.

Комплектующие — при открытии этой вкладки программа выводит на экран список комплектующих, которые находятся на складе.

Поставка — на этой вкладке содержится информация о поставках комплектующих.

Распределение — эта вкладка содержит список сотрудников, которым требуется установить компьютеры.

Списание — на этой вкладке содержится информация о списанных комплектующих.

Формы «Распределение» — с помощью этой формы можно вести учет по распределению компьютеров, список которых расположен на Комплектующие.

Также программа содержит отчеты:

Отчет «Комплектующие»

С помощью этого отчета можно просмотреть и распечатать весь список комплектующих на складе.

Отчет «Поставка»

С помощью этого отчета можно просмотреть и распечатать весь список поставок.

Отчет «Распределение»

С помощью этого отчета можно просмотреть и распечатать весь список распределённых комплектующих.

Отчет «Списание»

С помощью этого отчета можно просмотреть и распечатать весь список списанных комплектующих.

4.2 Программирование

В соответствии со структурной схемой, приведенной выше в пункте 4.1.2. «Структурная схема», в представленной программе разработаны программные модули на Borland Delphi 7.0. Тексты программных модулей приведены в пункте V. «Приложение».

4.3 Аномалии и защитное программирование

Описание аномалии

Реакции на аномалию

Способ защиты

1. Ввод в поле значений, не удовлетворяющих полю

Блокирование неверного заполнения поля

Защищено разработчиком

2. При незаполненных данных

Вывод сообщения об ошибке

Защищено разработчиком

3. При попытке непредусмотренного программой изменения данных

Блокирование некоторых элементов формы

Защищено разработчиком

4.4 Тестирование и отладка

Тестирование — процесс многократного выполнения программы с целью выявления ошибок. Отладка — исправление ошибок, найденных с помощью тестирования. При тестировании должны использоваться следующие принципы:

необходимой частью каждого теста должно являться описание ожидаемых результатов работы программы, чтобы можно было быстро выяснить наличие или отсутствие ошибки в ней;

следует по возможности избегать тестирования программы ее автором, т.к. кроме уже указанной объективной сложности тестирования для программистов здесь присутствует и тот фактор, что обнаружение недостатков в своей деятельности противоречит человеческой психологии (однако отладка программы эффективнее всего выполняется именно автором программы);

по тем же соображениям организация — разработчик программного обеспечения не должен «единолично» его тестировать (должны существовать организации, специализирующиеся на тестировании программных средств);

должны являться правилом доскональное изучение результатов каждого теста, чтобы не пропустить малозаметную на поверхностный взгляд ошибку в программе;

необходимо тщательно подбирать тест не только для правильных (предусмотренных) входных данных, но и для неправильных (непредусмотренных);

при анализе результатов каждого теста необходимо проверить, не делает ли программа того, что она не должна делать;

следует сохранять использованные тесты (для повышения эффективности повторного тестирования программы после ее модификации или установки у заказчика);

тестирование не должно планироваться исходя из предположения, что в программе не будут обнаружены ошибки (в частности, следует выделять для тестирования достаточные временные и материальные ресурсы),

следует учитывать так называемый «принцип скопления ошибок»: вероятность наличия не обнаруженных ошибок в некоторой части программы прямо пропорциональна числу ошибок, уже обнаруженных в этой части;

следует всегда помнить, что тестирование — творческий процесс, а не относиться к нему как к рутинному занятию.

Тестирование данного ПП производилось с помощью детерминированного метода тестирования. Этот метод включает в себя структурное тестирование (тестирование ПП как «белого ящика», т. е. предполагает детальное изучение логики программы и подбор входных данных, которые обеспечат выполнение максимально возможного количества маршрутов, логических ветвлений, циклов), функциональное тестирование (тестирование ПП как «черного ящика», т. е. тестирование по «входу — выходу»), не вникая в логику программы.

5. Анализ результатов решения

В соответствии с пунктом 4.4 тестирование и отладка производились непосредственно во время разработки проекта. После завершения работы над программой было еще раз произведено полное тестирование.

Все найденные ошибки были успешно устранены.

Получившийся в результате программный продукт удовлетворяет всем предъявленным требованиям, полностью работоспособен, не требует принципиальных доработок, и готов к эксплуатации.

Достоинства программы заключаются в удобстве заполнения и корректировки БД, грамотной справке пользователю, что значительно облегчает работу в программе. Также существует качественный поиск данных по различным критериям.

6. Инструкция пользователю

Общие сведения о программе «Автоматизация учета компьютерной техники»

Данный программный продукт разработан для более эффективной и быстрой работы сотрудников информационно вычислительного центра при хранении информации по комплектующим и компьютерам. Программа позволяет:

Выводить на экран необходимый список комплектующих, хранящихся на складе;

Выводить на экран список сотрудников, которым необходимо установить ПК на рабочее место;

Осуществлять добавление, изменение и удаление различных данных;

Просматривать необходимые отчеты с возможностью изменения, сохранения в файл и вывода содержимого на печать;

Достоинства программы «Автоматизация учета компьютерной техники»:

Удобство и простота в эксплуатации (минимальные навыки работы пользователя на ПК); небольшой объём занимаемой памяти на HDD.

Запуск программы

Запуск программы осуществляется двойным нажатием левой клавиши мыши на ярлыке программы. После запуска программного продукта на экране появится главная форма «ГУ_НПО_Тайфун», которая выглядит следующим образом:

На главной форме находятся три вкладки и шесть пунктов меню. При выборе вкладки «Комплектующие» можно посмотреть список комплектующих по выбранному типу устройства. При переходе на вкладку «Распределение» откроется список сотрудников, которым необходимо установить на рабочее место компьютер. На третьей вкладке «Поставка» находятся таблицы с информацией о поставках комплектующих. На третьей вкладке «Поставщики» находятся таблицы с информацией поставщиках

автоматизированный учет компьютерная техника

Вкладка «Поставка»

Вкладка «Распределение»

Вкладка «Списание»

Вкладка «Поставщики»

Форма «Распределение»

Форма «Списание»

Отчет «Комплектующие»

Экономическая часть

Данное приложение предназначено для автоматизированного учета компьютерной техники на предприятии. Приложение позволяет получить быстрый доступ к данным, пополнять данные, а также получить полную отчетность. За счет чего значительно сокращается время, так как до внедрения данного приложения автоматизация велась неэффективно, и на поиски информации тратилось большое количество времени.

Экономический эффект — это экономия времени сотрудника предприятия, которая может быть достигнута за счет:

Сокращение времени на формирование нужных документов;

Снижения временных затрат на обработку данных;

Снижение временных затрат на поиск необходимой информации.

Расчет затрат на разработку.

Распределение трудоемкости по стадиям разработки

Этап разработки

Содержание работ

Трудоёмкость (ч)

Постановка

задачи

Пред проектное обследование.

Разработка, согласование и утверждение технико-экономического обоснования.

14

Технический

проект

Уточнение структуры и формы представления входных и выходных данных. Разработка алгоритма решения задачи. Разработка структуры программы.

Разработка плана мероприятий по разработке и внедрению ПП. Согласование и утверждение технического проекта.

45

Рабочий проект

Описание программы на языке программирования

Разработка, согласование и утверждение порядка и методики испытаний, корректировка программы.

92

Документация и внедрение.

Разработка программной документации.

21

ИТОГО:

172 часа

Подсчет затрат, которое понесло предприятие

1. Коэффициент сложности задачи с характеризует относительную сложность программы по отношению к так называемой типовой задаче, реализующей стандартные методы решения, сложность которой принята равной единице (величина с лежит в пределах от 0,5 до 1,5). Для программного продукта, включающего в себя алгоритмы поиска информации сложность задачи берем 0,8 так как данный программный продукт не требует знания сложных языков программирования.

с= 0,8- коэффициент сложности программы.

2. Коэффициент коррекции программы P — увеличение объема работ за счет внесения изменений в алгоритм или программу по результатам уточнения постановок (P меняется от 0,1 до 0,5).

Заказчик четко описал конечный результат, который должна выдавать программа. Оптимальным будет, взять число, которое лежит между минимальным и максимальным коэффициентом корректности, Р = 0,4

3. Коэффициент B увеличения затрат труда, вследствие недостаточного описания задачи, в зависимости от сложности задачи принимается от 1,0 до 1,5. коэффициент увеличения затрат труда не был высоким. B = 1,2

4. Коэффициент квалификации разработчика K определяется в зависимости от стажа работы и составляет:

для работающих до 2 лет — 0,8;

от 3 до 5 лет — 1,0;

от 5 до 8 лет — 1,2;

свыше 8 лет — 1,5.

K (коэффициент квалификации разработчика) = 0,8.

Оклад работника равен 6000 рублей (З/П). Зная все необходимые для подсчетов коэффициенты оклад программиста на предприятии, рассчитаем з/п разработчика программного продукта:

З/Посн = оклад * c * (p+1) * b * k

З/Посн = (6000 руб. * 0,8 * (1 + 0,4) * 1.2 * 0. 8) = 6451 руб. /мес.

Поскольку дополнительная заработная плата в виде премии работнику за это время не выплачивалась, то суммарные затраты предприятия на заработную плату составят:

З/Псум = З/Посн + З/Пдоп = 6451+ 0 = 6451

Страховые отчисления (СО) берутся в размере 26% от основной и дополнительной заработной платы:

Со = З/Псум * 26%,

(СО) =6451 *26%= 1677рублей

Суммарные затраты предприятия на заработную плату за время написания программного продукта, с учетом страховых отчислений составит:

З/Побщ = (6451+ 1677) / (8*22)*172 = 7943 рублей.

Содержание и эксплуатация вычислительного комплекса:

Свт =См-ч * Число часов отладки,

где См-ч — стоимость машино-часа.

Число часов отладки составляет: 45+92+21 = 158 часа.

Стоимость машинного часа рассчитывается, как:

См-ч =Ст-ть электроэн (в год) + амортизация оборуд (в год) +затраты на ремонт Фвт

Фвт — действительный фонд времени работы вычислительного комплекса.

1. Стоимость 1 КВт/ч электроэнергии составляет 4,5 руб. Один компьютер потребляет в среднем 400 Вт в час.

Годовые отчисления за электроэнергию, потребляемую одной ЭВМ составляет:

8 ч. * 22 дня * 12 мес. * 0,4 КВт/ч. * 4,5 руб. *КВт/ч. = 4435,2 руб.

2. Амортизация зависит от срока эксплуатации компьютера, а т.к. срок эксплуатации компьютера 4 года и он истёк, то амортизация не начисляется и не учитывается в дальнейших подсчетах.

3. Затраты на ремонт ЭВМ составляют 5% от стоимости ПК:

Стоимость ПК = 20 000 руб.

Стоимость ремонта ЭВМ = 20 000 * 5% = 1000 рублей в год

4. Действительный фонд времени работы вычислительного комплекса рассчитываем так:

Фвт = Фном — Фпроф,

где Фном — номинальный фонд времени работы вычислительного комплекса,

Фпроф — годовые затраты времени на профилактические работы (принимаются 5% от Фном).

ПК работает в среднем 2112 часов в год (Фном). Время ремонта ЭВМ в среднем занимает 5% времени работы ПК (Фпроф). Следовательно:

Фвт = 2112 -(2112*5%) = 2006

Стоимость машинного часа составляет:

см-ч = 4435,2 +1000 = 2,7 руб.

2006

Содержание и эксплуатация вычислительного комплекса составляет:

158 ч. *2,7 руб. = 426,6 руб.- при написании программы.

Новый компьютер не требуется. Срок эксплуатации компьютера 5 лет, и он оснащен операционной Windows ХР, которой достаточно для полноценной работы данного программного продукта.

Смета затрат на реализацию программного продукта

Наименование статьи расходов

Затраты, руб.

1

Основная заработная плата

6451

2

Страховые отчисления.

1677

3

Содержание и эксплуатация вычислительного комплекса.

426,60

ИТОГО:

8555рублей

2. Экономический эффект от реализации и внедрения программного продукта.

Экономический эффект предназначен для снижения времени, затрачиваемого сотрудниками отдела на поиск информации в базе данных

Для ведения расчетов введем следующие обозначения:

Т1 — время, затрачиваемое сотрудником отдела на ввод данных до внедрения программного продукта.

Т2 — время, затрачиваемое сотрудником на ввод данных после внедрения программного продукта.

До внедрения программы большая часть документации заполнялась вручную. Сотрудник в среднем тратил на 1 операцию около 15 минут.

Т1 = 15 мин. = 0,25 часа.

После внедрения программы время сократилось и составило 5 мин. :

Т2 = 5 мин. = 0,12 часа.

Нас интересует, сколько времени выигрывает предприятие, используя данное приложение. Это легко сделать, рассчитав

Т = Т1- Т2 = 0,25 — 0,12 = 0,13 часа

Теперь рассчитаем стоимость работы специалиста.

В месяц сотрудник работает (8 часов * 22 рабочих дня) = 176 часов.

Стоимость оклада этого специалиста составляет 6000 рублей.

Стоимость 1 часа (P), рассчитывается следующим образом: P = 6000/176 = 34,09 рубля.

Также, учтем страховые отчисления, которые берем в размере 26% = 0, 26

Со = (6000*0,26) / 176 = 8,8

Р сумма = Р + Со = 34,09 + 8,8 = 43 руб. за час работы. Эту сумму сотрудник зарабатывает за 1 час работы.

4. Расчет срока окупаемости.

Перемножим выигранное время, количество операций, количество рабочих дней в месяце и на количество рабочих месяцев

Т год = (0,13 * 20) * 22 * 12 = 686,4 часов.

Рассчитаем, сколько составит годовая экономия при внедрении программного продукта:

Годовая экономия средств =

Т год * Р сумма = 686,4 часов * 43 руб. = 29 515,2

Экономический эффект = из найденной суммы вычтем затраты:

29 515 — 8555= 20 960 руб. /год

Теперь посчитаем, через какой промежуток времени окупится приложение:

Срок окупаемости = Затраты / годовая экономия

Т = 8555/20 960= 0,4 года

Наш программный продукт окупится за 4,8 месяца. Это нормальной срок окупаемости для автоматизации рабочего процесса.

Сотрудник тративший на ввод, поиск и печать информации 15 минут, после внедрения будет тратить 5 минут. Программный продукт окупится через семь месяцев.

В результате разработку и внедрение данного программного продукта следует считать целесообразным и обоснованным с экономической точки зрения.

Заключение

В данном дипломном проекте было разработано программное обеспечение «Автоматизация учета компьютерной техники».

Данное программное обеспечение позволяет автоматизировать ввод информации, осуществлять хранение данных, выводить на экран и печать сформированные отчеты.

Разработанная программа полностью соответствует п. 1 «Постановка задачи».

Была проведена экономическая оценка эффективности от внедрения программного обеспечения.

Литература

1. Microsoft Access. В. Фаронов

2. В. Фаронов — Программирование баз данных в Delphi7 2012г.

3. Боб Виллариал Программирование Access в примерах 2009 г.

4. С. Бобровский DELPHI 7 учебный курс 2008 г.

5. Проектирование и реализация баз данных Microsoft SQL Server 2010. Учебный курс MCA

6. Михаил Фленов- Библия DELPHI 2009 г.

Приложение

unit MainFRM;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, ComCtrls, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids,

XPMan, Spin, StdCtrls, Buttons;

type

TMain = class (TForm)

pgc1: TPageControl;

ts1: TTabSheet;

ts2: TTabSheet;

ts3: TTabSheet;

ts4: TTabSheet;

ts5: TTabSheet;

mm1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

xpmnfst1: TXPManifest;

dbgrd1: TDBGrid;

tbl1: TADOTable;

ds1: TDataSource;

con1: TADOConnection;

tbl2: TADOTable;

ds2: TDataSource;

tbl3: TADOTable;

ds3: TDataSource;

tbl4: TADOTable;

ds4: TDataSource;

btn1: TButton;

edt1: TEdit;

lbl1: TLabel;

lbl2: TLabel;

cbb1: TComboBox;

lbl3: TLabel;

se1: TSpinEdit;

lbl4: TLabel;

cbb2: TComboBox;

lbl5: TLabel;

se2: TSpinEdit;

lbl6: TLabel;

lbl7: TLabel;

cbb3: TComboBox;

btn2: TButton;

lbl8: TLabel;

cbb5: TComboBox;

se3: TSpinEdit;

lbl9: TLabel;

btn3: TButton;

lbl10: TLabel;

edt2: TEdit;

lbl11: TLabel;

edt3: TEdit;

lbl12: TLabel;

edt4: TEdit;

lbl13: TLabel;

edt5: TEdit;

lbl14: TLabel;

edt6: TEdit;

lbl15: TLabel;

edt7: TEdit;

lbl16: TLabel;

edt8: TEdit;

btn4: TButton;

edt9: TEdit;

DBNavigator1: TDBNavigator;

DBNavigator2: TDBNavigator;

DBNavigator3: TDBNavigator;

DBNavigator4: TDBNavigator;

Label1: TLabel;

DBLookupComboBox1: TDBLookupComboBox;

tbl1_: TAutoIncField;

tbl1DSDesigner: TWideStringField;

tbl12: TWideStringField;

tbl1DSDesigner2: TIntegerField;

tbl13: TIntegerField;

tbl4_: TAutoIncField;

tbl42: TWideStringField;

tbl43: TWideStringField;

tbl4DSDesigner: TWideStringField;

tbl4DSDesigner2: TWideStringField;

tbl4DSDesigner3: TWideStringField;

tbl4DSDesigner4: TIntegerField;

tbl2_: TAutoIncField;

tbl22: TIntegerField;

tbl23: TWideStringField;

tbl2DSDesigner: TIntegerField;

tbl3_: TAutoIncField;

tbl32: TIntegerField;

tbl3DSDesigner: TIntegerField;

tbl3DSDesigner2: TWideStringField;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

N3: TMenuItem;

N4: TMenuItem;

DBLookupComboBox2: TDBLookupComboBox;

Label2: TLabel;

tbl_v2: TADOTable;

tbl_v3: TADOTable;

procedure FormCreate (Sender: TObject);

procedure Pereschet ();

procedure pgc1Change (Sender: TObject);

procedure btn1Click (Sender: TObject);

procedure btn2Click (Sender: TObject);

procedure btn3Click (Sender: TObject);

procedure btn4Click (Sender: TObject);

procedure edt5Change (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure ts4ContextPopup (Sender: TObject; MousePos: TPoint;

var Handled: Boolean);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Main: TMain;

implementation

uses ComObj, Unit1, Unit2;

{$R *. dfm}

procedure TMain. FormCreate (Sender: TObject);

begin

pgc1. TabIndex:= 0;

dbgrd1. DataSource:= ds1;

Pereschet ();

end;

procedure TMain. Pereschet ();

var i: Integer;

begin

cbb2. Clear;cbb3. Clear;cbb5. Clear;

for i: =1 to tbl1. RecordCount do

begin

tbl1. RecNo:= i;

cbb3. Items. Add (tbl1. FieldByName ('Комплектующие'). AsString);

cbb5. Items. Add (tbl1. FieldByName ('Комплектующие'). AsString);

end;

for i: =1 to tbl4. RecordCount do

begin

tbl4. RecNo:= i;

cbb2. Items. Add (tbl4. FieldByName ('Название_организации'). AsString);

end;

tbl1. RecNo:= 1;

tbl2. RecNo:= 1;

tbl4. RecNo:= 1;

end;

procedure TMain. pgc1Change (Sender: TObject);

begin

Pereschet ();

if (pgc1. TabIndex = 0) or (pgc1. TabIndex = 1) then

begin

dbgrd1. DataSource:= ds1;

end else

if pgc1. TabIndex = 2 then

begin

dbgrd1. DataSource:= ds2;

end else

if pgc1. TabIndex = 3 then

begin

dbgrd1. DataSource:= ds3;

end else

if pgc1. TabIndex = 4 then

begin

dbgrd1. DataSource:= ds4;

end;

end;

procedure TMain. btn1Click (Sender: TObject);

begin

tbl1. Insert;

tbl1. FieldByName ('Комплектующие'). AsString:= edt1. Text;

tbl1. FieldByName ('Тип_Комплектующего'). AsString:= cbb1. Text;

tbl1. FieldByName ('Колличество'). AsString:= se1. Text;

tbl4. Locate ('Название_организации', cbb2. Text, [loCaseInsensitive]);

tbl1. FieldByName ('Код_Поставщика'). AsInteger:= tbl4. FieldByName ('Код_Поставщика'). AsInteger;

tbl1. Post;

end;

procedure TMain. btn2Click (Sender: TObject);

begin

tbl1. Locate ('Комплектующие', cbb3. Text, [loCaseInsensitive]);

if se2. Value <= tbl1. FieldByName ('Колличество'). AsInteger then

begin

tbl2. Insert;

tbl2. FieldByName ('Код_Комплектующего'). AsInteger:= tbl1. FieldByName ('Код_Комплектующего'). AsInteger;

tbl2. FieldByName ('ФИО_Сотрудника'). AsString:= edt9. Text;

tbl2. FieldByName ('Колличество'). AsString:= se2. Text;

tbl2. Post;

tbl1. Edit;

tbl1. FieldByName ('Колличество'). AsInteger:= tbl1. FieldByName ('Колличество'). AsInteger — se2. Value;

tbl1. Post;

end else

begin

Application. MessageBox ('Недостаточно комплектующих!', 'Ошибка', MB_OK + MB_ICONSTOP);

end;

tbl_v2. Active:= False;

tbl_v2. Active:= True;

end;

procedure TMain. btn3Click (Sender: TObject);

begin

tbl1. Locate ('Комплектующие', cbb5. Text, [loCaseInsensitive]);

if se3. Value <= tbl1. FieldByName ('Колличество'). AsInteger then

begin

tbl3. Insert;

tbl1. Locate ('Комплектующие', cbb5. Text, [loCaseInsensitive]);

tbl3. FieldByName ('Код_комлектующего'). AsInteger:= tbl1. FieldByName ('Код_Комплектующего'). AsInteger;

tbl3. FieldByName ('Колличество'). AsString:= se3. Text;

tbl3. FieldByName ('Причина'). AsString:= edt2. Text;

tbl3. Post;

tbl1. Edit;

tbl1. FieldByName ('Колличество'). AsInteger:= tbl1. FieldByName ('Колличество'). AsInteger — se3. Value;

tbl1. Post;

end else

begin

Application. MessageBox ('Недостаточно комплектующих!', 'Ошибка', MB_OK + MB_ICONSTOP);

end;

tbl_v3. Active:= False;

tbl_v3. Active:= True;

end;

procedure TMain. btn4Click (Sender: TObject);

begin

tbl4. Insert;

tbl4. FieldByName ('Название_организации'). AsString:= edt3. Text;

tbl4. FieldByName ('ФИО_поставщика'). AsString:= edt4. Text;

tbl4. FieldByName ('Телефон'). AsString:= edt5. Text;

tbl4. FieldByName ('Адрес'). AsString:= edt6. Text;

tbl4. FieldByName ('Факс'). AsString:= edt7. Text;

tbl4. FieldByName ('Р/С'). AsString:= edt8. Text;

tbl4. Post;

end;

procedure TMain. edt5Change (Sender: TObject);

begin

edt7. Text:= edt5. Text;

end;

procedure TMain. Button1Click (Sender: TObject);

var app, book, sheet: Variant;

i: integer;

CurDir: string;

begin

app: =CreateOleObject ('Excel. Application');

book: =app. WorkBooks. Add;

app. Visible:= True;

book. Worksheets[3]. Delete;

book. Worksheets[2]. Delete;

book. Worksheets[1]. Name:='Комплектующие';

sheet: =book. Worksheets[1];

Main. tbl1. First;

sheet. Range['B1']:='Отчёт по объектам';

sheet. Range['B2']:='Комплектующие';

sheet. Range['C2']:='Тип Комплектующего';

sheet. Range['D2']:='Колличество';

//sheet. Range['e2']:='Перезаключение';

sheet. Range['A1:D1']. Select;

sheet. Range['b2:D2']. Borders[7]. LineStyle:=1;

sheet. Range['B2:D2']. Borders[7]. Weight:=-4138;

sheet. Range['B2:D2']. Borders[7]. ColorIndex:=-4105;

sheet. Range['B2:D2']. Borders[8]. LineStyle:=1;

sheet. Range['B2:D2']. Borders[8]. Weight:=-4138;

sheet. Range['B2:D2']. Borders[8]. ColorIndex:=-4105;

sheet. Range['B2:d2']. Borders[9]. LineStyle:=1;

sheet. Range['B2:d2']. Borders[9]. Weight:=-4138;

sheet. Range['B2:d2']. Borders[9]. ColorIndex:=-4105;

sheet. Range['B2:d2']. Borders[10]. LineStyle:=1;

sheet. Range['B2:d2']. Borders[10]. Weight:=-4138;

sheet. Range['B2:d2']. Borders[10]. ColorIndex:=-4105;

Sheet. Columns['B:B']. columnWidth:=20;

Sheet. Columns['C:C']. columnWidth:=20;

Sheet. Columns['D:D']. columnWidth:=20;

//Sheet. Columns['E:E']. columnWidth:=40;

//Sheet. Columns['F:F']. columnWidth:=15;

for i: =1 to Main. tbl1. RecordCount do

begin

sheet. Cells[i+2,2]. Borders[7]. LineStyle:=1;

sheet. Cells[i+2,2]. Borders[7]. Weight:=-4138;

sheet. Cells[i+2,2]. Borders[7]. ColorIndex:=-4105;

sheet. Cells[i+2,4]. Borders[10]. LineStyle:=1;

sheet. Cells[i+2,4]. Borders[10]. Weight:=-4138;

sheet. Cells[i+2,4]. Borders[10]. ColorIndex:=-4105;

sheet. Cells[i+2,2]:= Main. tbl1. FieldByName ('Комплектующие'). AsString;

sheet. Cells[i+2,3]:= Main. tbl1. FieldByName ('Тип_Комплектующего'). AsString;

sheet. Cells[i+2,4]:= Main. tbl1. FieldByName ('Колличество'). AsString;

// sheet. Cells[i+1,5]:= Obect. ADOTable1. FieldByName ('Перезаключение'). AsString;

// sheet. Cells[i+1,6]:=MainForm. WaresADOTable. FieldByName ('Цена'). AsCurrency;

Main. tbl1. Next;

end;

for i: =2 to 6 do

begin

//sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. LineStyle:=1;

//sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. Weight:=-4138;

// sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. ColorIndex:=-4105;

end;

CurDir: =GetCurrentDir;

app. DisplayAlerts:=false;

book. SaveAs (CurDir+'Комплектующие. xls');

app. Visible:=true;

end;

procedure TMain. Button2Click (Sender: TObject);

var app, book, sheet: Variant;

i: integer;

CurDir: string;

begin

app: =CreateOleObject ('Excel. Application');

book: =app. WorkBooks. Add;

app. Visible:= True;

book. Worksheets[3]. Delete;

book. Worksheets[2]. Delete;

book. Worksheets[1]. Name:='Поставка';

sheet: =book. Worksheets[1];

Main. tbl1. First;

sheet. Range['B1']:='Отчёт по объектам';

sheet. Range['B2']:='Комплектующие';

sheet. Range['C2']:='Тип Комплектующего';

sheet. Range['D2']:='Колличество';

//sheet. Range['e2']:='Перезаключение';

sheet. Range['A1:D1']. Select;

sheet. Range['b2:D2']. Borders[7]. LineStyle:=1;

sheet. Range['B2:D2']. Borders[7]. Weight:=-4138;

sheet. Range['B2:D2']. Borders[7]. ColorIndex:=-4105;

sheet. Range['B2:D2']. Borders[8]. LineStyle:=1;

sheet. Range['B2:D2']. Borders[8]. Weight:=-4138;

sheet. Range['B2:D2']. Borders[8]. ColorIndex:=-4105;

sheet. Range['B2:d2']. Borders[9]. LineStyle:=1;

sheet. Range['B2:d2']. Borders[9]. Weight:=-4138;

sheet. Range['B2:d2']. Borders[9]. ColorIndex:=-4105;

sheet. Range['B2:d2']. Borders[10]. LineStyle:=1;

sheet. Range['B2:d2']. Borders[10]. Weight:=-4138;

sheet. Range['B2:d2']. Borders[10]. ColorIndex:=-4105;

Sheet. Columns['B:B']. columnWidth:=20;

Sheet. Columns['C:C']. columnWidth:=20;

Sheet. Columns['D:D']. columnWidth:=20;

//Sheet. Columns['E:E']. columnWidth:=40;

//Sheet. Columns['F:F']. columnWidth:=15;

for i: =1 to Main. tbl1. RecordCount do

begin

sheet. Cells[i+2,2]. Borders[7]. LineStyle:=1;

sheet. Cells[i+2,2]. Borders[7]. Weight:=-4138;

sheet. Cells[i+2,2]. Borders[7]. ColorIndex:=-4105;

sheet. Cells[i+2,4]. Borders[10]. LineStyle:=1;

sheet. Cells[i+2,4]. Borders[10]. Weight:=-4138;

sheet. Cells[i+2,4]. Borders[10]. ColorIndex:=-4105;

sheet. Cells[i+2,2]:= Main. tbl1. FieldByName ('Комплектующие'). AsString;

sheet. Cells[i+2,3]:= Main. tbl1. FieldByName ('Тип_Комплектующего'). AsString;

sheet. Cells[i+2,4]:= Main. tbl1. FieldByName ('Колличество'). AsString;

// sheet. Cells[i+1,5]:= Obect. ADOTable1. FieldByName ('Перезаключение'). AsString;

// sheet. Cells[i+1,6]:=MainForm. WaresADOTable. FieldByName ('Цена'). AsCurrency;

Main. tbl1. Next;

end;

for i: =2 to 6 do

begin

//sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. LineStyle:=1;

//sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. Weight:=-4138;

// sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. ColorIndex:=-4105;

end;

CurDir: =GetCurrentDir;

app. DisplayAlerts:=false;

book. SaveAs (CurDir+'Поставка. xls');

app. Visible:=true;

end;

procedure TMain. Button3Click (Sender: TObject);

var app, book, sheet: Variant;

i: integer;

CurDir: string;

begin

app: =CreateOleObject ('Excel. Application');

book: =app. WorkBooks. Add;

app. Visible:= True;

book. Worksheets[3]. Delete;

book. Worksheets[2]. Delete;

book. Worksheets[1]. Name:='Распределение';

sheet: =book. Worksheets[1];

Main. tbl2. First;

sheet. Range['B1']:='Отчёт распределение';

sheet. Range['B2']:='Комплектующие';

sheet. Range['C2']:='ФИО Сотрудника';

sheet. Range['D2']:='Колличество';

//sheet. Range['e2']:='Перезаключение';

sheet. Range['A1:D1']. Select;

sheet. Range['b2:D2']. Borders[7]. LineStyle:=1;

sheet. Range['B2:D2']. Borders[7]. Weight:=-4138;

sheet. Range['B2:D2']. Borders[7]. ColorIndex:=-4105;

sheet. Range['B2:D2']. Borders[8]. LineStyle:=1;

sheet. Range['B2:D2']. Borders[8]. Weight:=-4138;

sheet. Range['B2:D2']. Borders[8]. ColorIndex:=-4105;

sheet. Range['B2:d2']. Borders[9]. LineStyle:=1;

sheet. Range['B2:d2']. Borders[9]. Weight:=-4138;

sheet. Range['B2:d2']. Borders[9]. ColorIndex:=-4105;

sheet. Range['B2:d2']. Borders[10]. LineStyle:=1;

sheet. Range['B2:d2']. Borders[10]. Weight:=-4138;

sheet. Range['B2:d2']. Borders[10]. ColorIndex:=-4105;

Sheet. Columns['B:B']. columnWidth:=20;

Sheet. Columns['C:C']. columnWidth:=20;

Sheet. Columns['D:D']. columnWidth:=20;

//Sheet. Columns['E:E']. columnWidth:=40;

//Sheet. Columns['F:F']. columnWidth:=15;

for i: =1 to Main. tbl2. RecordCount do

begin

sheet. Cells[i+2,2]. Borders[7]. LineStyle:=1;

sheet. Cells[i+2,2]. Borders[7]. Weight:=-4138;

sheet. Cells[i+2,2]. Borders[7]. ColorIndex:=-4105;

sheet. Cells[i+2,4]. Borders[10]. LineStyle:=1;

sheet. Cells[i+2,4]. Borders[10]. Weight:=-4138;

sheet. Cells[i+2,4]. Borders[10]. ColorIndex:=-4105;

sheet. Cells[i+2,2]:= Main. tbl2. FieldByName ('Код_Комплектующего'). AsString;

sheet. Cells[i+2,3]:= Main. tbl2. FieldByName ('ФИО_Сотрудника'). AsString;

sheet. Cells[i+2,4]:= Main. tbl2. FieldByName ('Колличество'). AsString;

// sheet. Cells[i+1,5]:= Obect. ADOTable1. FieldByName ('Перезаключение'). AsString;

// sheet. Cells[i+1,6]:=MainForm. WaresADOTable. FieldByName ('Цена'). AsCurrency;

Main. tbl2. Next;

end;

for i: =2 to 6 do

begin

//sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. LineStyle:=1;

//sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. Weight:=-4138;

// sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. ColorIndex:=-4105;

end;

CurDir: =GetCurrentDir;

app. DisplayAlerts:=false;

book. SaveAs (CurDir+'Распределение. xls');

app. Visible:=true;

end;

procedure TMain. Button4Click (Sender: TObject);

var app, book, sheet: Variant;

i: integer;

CurDir: string;

begin

app: =CreateOleObject ('Excel. Application');

book: =app. WorkBooks. Add;

app. Visible:= True;

book. Worksheets[3]. Delete;

book. Worksheets[2]. Delete;

book. Worksheets[1]. Name:='Списание';

sheet: =book. Worksheets[1];

Main. tbl3. First;

sheet. Range['B1']:='Отчёт распределение';

sheet. Range['B2']:='Комлектующеее';

sheet. Range['C2']:='Колличество';

sheet. Range['D2']:='Причина';

//sheet. Range['e2']:='Перезаключение';

sheet. Range['A1:D1']. Select;

sheet. Range['b2:D2']. Borders[7]. LineStyle:=1;

sheet. Range['B2:D2']. Borders[7]. Weight:=-4138;

sheet. Range['B2:D2']. Borders[7]. ColorIndex:=-4105;

sheet. Range['B2:D2']. Borders[8]. LineStyle:=1;

sheet. Range['B2:D2']. Borders[8]. Weight:=-4138;

sheet. Range['B2:D2']. Borders[8]. ColorIndex:=-4105;

sheet. Range['B2:d2']. Borders[9]. LineStyle:=1;

sheet. Range['B2:d2']. Borders[9]. Weight:=-4138;

sheet. Range['B2:d2']. Borders[9]. ColorIndex:=-4105;

sheet. Range['B2:d2']. Borders[10]. LineStyle:=1;

sheet. Range['B2:d2']. Borders[10]. Weight:=-4138;

sheet. Range['B2:d2']. Borders[10]. ColorIndex:=-4105;

Sheet. Columns['B:B']. columnWidth:=20;

Sheet. Columns['C:C']. columnWidth:=20;

Sheet. Columns['D:D']. columnWidth:=20;

//Sheet. Columns['E:E']. columnWidth:=40;

//Sheet. Columns['F:F']. columnWidth:=15;

for i: =1 to Main. tbl3. RecordCount do

begin

sheet. Cells[i+2,2]. Borders[7]. LineStyle:=1;

sheet. Cells[i+2,2]. Borders[7]. Weight:=-4138;

sheet. Cells[i+2,2]. Borders[7]. ColorIndex:=-4105;

sheet. Cells[i+2,4]. Borders[10]. LineStyle:=1;

sheet. Cells[i+2,4]. Borders[10]. Weight:=-4138;

sheet. Cells[i+2,4]. Borders[10]. ColorIndex:=-4105;

sheet. Cells[i+2,2]:= Main. tbl3. FieldByName ('Код_комлектующего'). AsString;

sheet. Cells[i+2,3]:= Main. tbl3. FieldByName ('Колличество'). AsString;

sheet. Cells[i+2,4]:= Main. tbl3. FieldByName ('Причина'). AsString;

// sheet. Cells[i+1,5]:= Obect. ADOTable1. FieldByName ('Перезаключение'). AsString;

// sheet. Cells[i+1,6]:=MainForm. WaresADOTable. FieldByName ('Цена'). AsCurrency;

Main. tbl2. Next;

end;

for i: =2 to 6 do

begin

//sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. LineStyle:=1;

//sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. Weight:=-4138;

// sheet. Cells[ Main. tbl1. RecordCount+1,i]. Borders[9]. ColorIndex:=-4105;

end;

CurDir: =GetCurrentDir;

app. DisplayAlerts:=false;

book. SaveAs (CurDir+'Списание. xls');

app. Visible:=true;

end;

procedure TMain. N3Click (Sender: TObject);

begin

Form1. show;

end;

procedure TMain. N4Click (Sender: TObject);

begin

Form2. show;

end;

procedure TMain. N2Click (Sender: TObject);

begin

Close;

end;

end.

ПоказатьСвернуть
Заполнить форму текущей работой