Автоматизация вещевого учета на военном складе

 













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

Автоматизация вещевого учета на военном складе




Содержание


Введение. Специальная часть

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

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

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

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

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

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

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

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

.2 Программирование

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

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

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

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

Заключение

Литература

Приложение

программный приложение автоматизация учет

Введение


Военный вещевой склад занимается хранением и выдачей вещевого имущества личному составу военнослужащих.

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

Автоматизированный учет поступающего довольствия упростит и систематизирует выдачу и обеспечение военнослужащих РФ материальным имуществом.


I. Специальная часть


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


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

автоматизировать процесс учёта;

вести контроль/отчетность по выдачам;

производить поиск имущества/наименований на складе;

формировать и выводить на печать отчеты;

Так же приложение должно содержать;

* вкладки с учетными формами и отчетами - с помощью, которых можно быстро найти нужную информацию и произвести необходимые операции для ведения учета;

* должна содержать справку о программе, - которая состоит из описания программного приложения.

Приложение должно быть максимально простым в использовании для пользователя.



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


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

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



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

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

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

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

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

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


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


Для написания приложения была выбрана среда визуального программирования Borland Delphi 7.

Синтаксис Borland Delphi 7 основан на языке программирования Object Pascal. Borland Delphi 7 полностью поддерживает ООП (объектно-ориентированное программирование), что значительно расширяет возможности среды.

Еще одним немаловажным достоинством выбранной среды Borland Delphi 7 является то, что Borland Delphi 7 во всем мире считается одним из самых простых сред программирования, и в отличие от всех широко распространенных сред программирования, является строго типизированным, что позволяет свести количество ошибок практически к нулю (за исключением логических ошибок алгоритма). Delphi 7 предоставляет широкий спектр средств по управлению базами данных, имеющих даже различные технологии структуры и поддержки.

Для разработки базы данных в данной программе выбор пал на технологию ADO, корпорации Microsoft, за свои широкие возможности и простоту использования.


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


Минимальные требования:

процессор Pentium 2;

операционная система Windows 2000;

ОЗУ 64 Мб;

свободное место на жестком диске 50 Мб для приложения.

Рекомендуемые требования:

любой процессор Intel/AMD;

операционная система Windows XP;

ОЗУ 128 Мб;

свободное место на жестком диске 50 Мб.

Для ввода данных необходимо наличие:

клавиатуры;

компьютерной мыши.


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


Microsoft Windows 98/2000/XP.Office 97/2000.


4. Методика разработки приложения


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


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

БД «Автоматизация вещевого учета на Военном складе » создавалась с нуля на Access 2003.


Таблица №1: Вещевое имущество.

Имя поляТип данныхФормат поля/Размер поляОбязательное поле1234Код Вещевого имуществаСчетчикДлинное целоеДаНаименованиеТекстовый50ДаРазмерЧисловой50Нет

Таблица №2: Выдача.

Имя поляТип данныхФормат поля/Размер поляОбязательное поле1234Код вещевого имуществаЧисловойДлинное целоеДаВыданоТекстовый40ДаДатаДата/времяДаРазмерЧисловойДлинное целоеДаСотрудникТекстовый40ДаНомер накладнойЧисловойДлинное целоеДа

Таблица №3: Поступление.

Имя поляТип данныхФормат поля/Размер поляОбязательное поле1234Код вещевое имуществоЧисловойДлинное целоеДаНомер накладнойЧисловойДлинное целоеДаПришлоТекстовый40ДаДатаДата/времяДаРазмерЧисловойДлинное целоеДа

Таблица №4: Склад

Имя поляТип данныхФормат поля/Размер поляОбязательное поле1234Код вещевого имуществаСчётчикДлинное целоеДаКоличествоЧисловойДлинное целоеДа

Таблица №5: Пользователи

Имя поляТип данныхФормат поля/Размер поляОбязательное поле1234Ключ (Ключевое поле)СчётчикДлинное целоеДаЛогинТекстовый40ДаПарольТекстовый30ДаДоступЛогическийДа/НетДа

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

Форма «Поступление Довольствия».

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

Форма содержит в себе следующую информацию:

Код вещевого имущества;

Поступило (Наименование предмета);

Количество;

Дата поступления;

Размер;

Номер накладной;

Форма «Выдача довольствия»

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

Форма содержит в себе следующую информацию:

Код имущества;

Выдано (наименование предмета);

Количество;

Размер;

Дата выдачи;

Номер накладной;

Получатель;

Форма «Состояние склада».

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

Форма содержит в себе следующую информацию:

Наименование предмета;

Количество;

Форма «Новый предмет».

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

Форма содержит в себе следующую информацию:

Код вещевого имущества;

Наименование предмета;

Размер;

Приложение имеет следующие отчеты:

Отчет «Отчет о поступлениях»

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

Отчет содержит следующую информацию:

Наименование предмета;

Пришло (количество);

Дата поступления;

Размер;

Номер накладной;

Отчет «Отчет о выдачах»

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

Отчет содержит следующую информацию:

Наименование предмета;

Выдано (количество);

Дата Выдачи;

Размер;

Номер накладной;

Получатель;


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

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


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


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


В ходе выполнения приложения возможно появление на экране сообщений:

. Сообщение «проверьте правильность заполнения полей.

Ошибка возникает при не полном заполнении полей формы.

При этом оператор должен:

.1. Проверить правильность заполнения полей.

.2. Возможно, причиной ошибки послужила отсутствие записи в каком либо поле.


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


Отладка - исправление ошибок, найденных с помощью тестирования.

Для написания приложения на Borland Delphi я пользовалась движком отладки Borland Debugger Engine. Он имеет некоторые средства отладки такие как:

Контрольная точка остановки приложения (Toggle Breakpoint). Приложение выполняется в нормальном режиме и прерывает свое выполнение на точках остановки приложения.

Запуск приложения до команды, выделенной курсором (Run to Cursor). Приложение выполняется до команды, выделенной курсором в исходном коде. Дальнейшее выполнение приложения осуществляется командами Step Over и Trace Into.

Переход выполнения приложения по адресу (Go to Address). Приложение выполняется до команды по заданному адресу. Далее можно выполнять программу по одной команде на низком уровне.

Окно слежения за переменными, записями и массивами (Inspect window).

Окно слежения за изменениями значений переменных (Evaluate/Modify window).

Окно слежения за выполнением на низком уровне (CPU window).

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

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

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

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

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

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

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

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

Хотя приложение прошло тестирование успешно, в ней, тем не менее, могут содержаться ошибки, т.к.

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

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


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


Результатом решения поставленной задачи являются отчеты и формы. Формы представляют собой ведение статистики на производстве, отчеты являются дополнительной статистической информацией. В соответствии с пунктом 4.4 тестирование и отладка производились непосредственно во время разработки проекта. После завершения работы над приложением было еще раз произведено полное тестирование.

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

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


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


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

Запуск приложения может осуществляется различными способами:

из главного меню Windows

иконкой на рабочем столе

- запуск приложения Automation_of_stock_taking.exe

Главная форма содержит следующие вкладки:

Операции по складу;

Отчеты;

Помощь;

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

Выдача- формировать накладную по выдаваемому довольствию со склада.

Состояние склада- позволяет просматривать предметы, находящиеся на складе и выводить на печать.

Новый предмет- позволяет добавлять предмет на склад если такой отсутствует.

Отчеты - показывает отчет по поступлениям (выдачам) за заданный период

Часть «Поступление довольствия» содержит перечень предметов и возможность формирования новых накладных.

На форме имеются:

Таблица поступлений

Диалоговые окна и кнопки для формирования накладных

Для формирования накладной поступления следует выбрать предмет из выпадающего списка, ввести номер накладной, размер , выбрать дату, количество, и нажать кнопку «Ок»

Часть «Выдача довольствия» содержит перечень предметов и возможность формирования новой накладной для выдачи довольствия со склада.

На форме имеются:

Таблица выдачи

Диалоговые окна и кнопки для формирования накладной.

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

Часть «Состояние склада» содержит сведения о количестве предметов хранящихся на складе.

На форме имеются:

Перечень предметов

Количество предметов

Поле для поиска предмета с кнопкой

Кнопка для формирования отчета о состоянии склада

Кнопка для выхода

В текстовом поле следует ввести наименование предмета который необходимо найти, затем при нажатии на кнопку «Найти» будет выделена строка в которой находится искомый предмет и вылетит сообщение с номером строки в которой был найден предмет.

При нажатии на кнопку «Сформировать отчет»данные из таблицы на форме будут перемещены в таблицу Excel что дает возможность печати данных для отчетной информации.

При нажатии на кнопку «Выход» данная форма будет закрыта.

Часть «Новый предмет» служит для добавления нового предмета на склад.

На форме имеются:

Таблица с наименованием предметов

Поле для записи нового предмета

Поле для введения размера

Часть «Отчеты» служит для вывода отчетов о поступлениях (выдачах) предметов довольствия со склада за заданный промежуток времени.


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


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

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

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

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

Расчёт затрат на разработку и внедрение проекта.

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


Табл.1

Этап разработкиСодержание работТрудоемкость, ч.Постановка задачиРазработка проекта, сбор необходимой информации, согласование проекта12Технический проектКорректировка проекта. Разработка приложения, пояснительной записки. Согласование и утверждение проекта.45Рабочий проектОписание приложения на языке программирования с комментариями, корректировка и тестирование приложения85Документация и поддержка проектаРазработка и сдача документации, сопутствующей проекту30 ИТОГО172

Коэффициент сложности задачи c характеризует относительную сложность приложения по отношению к данной задаче, реализующей стандартные методы решения, сложность которой принята равной 1единице (величина с лежит в пределах от 0,5 до 1,5). Так как этот программный продукт не сложен в написании , включает в себя алгоритмы ввода данных, написан на языке Borland Delphi 7, с использованием СУБД Microsoft Access 2000, сложность задачи устанавливаем 0,8.= 0,8 - коэффициент сложности приложения

Коэффициент коррекции приложения p - увеличение объема работ за счет внесения изменений в алгоритм или программу по результатам уточнения постановок (величина p лежит в пределах от 0 до 0,5). С учетом того, что была поставлена четко задача, доработки все же были. Поэтому возьмем коэффициент = 0,2= 0,2 - коэффициент коррекции приложения в ходе разработки.

Коэффициент увеличения затрат труда, вследствие недостаточного описания задачи, в зависимости от сложности задачи принимается (от 1 до 1,5), данная задача, практически не потребовала уточнения и больших доработок, примем b = 1,2. = 1,2 - коэффициент увеличения затрат труда, вследствие недостаточного описания задачи.

Коэффициент квалификации разработчика k определяется в зависимости от стажа работы и составляет для работающих:

до 2х лет - 0,8;

от 3х до 5 лет - 1,0;

от 5 до 8 - 1,2;

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

Разработчик данного программного продукта которому было поручено это задание, имел опыт работы по специальности 1 год и поэтому не считается квалифицированным специалистом, примем k = 0,8.= 0,8 - коэффициент квалификации разработчика.

Теперь посчитаем заработную плату основную. Оклад работника 3600 руб. Значит:

ЗПосн = ЗП * с * (1 + p) * b * k = 3600 * 0,8 * (1 + 0,2) * 1,2 * 0,8 = 3317 руб. в месяц.


Дополнительная заработная плата (ЗПдоп), в виде премии, в момент реализации проекта не выплачивалась. Суммарные затраты на производственном предприятии остаются такими же как и основная.

часа - потрачено на разработку и внедрение программного продукта разработчиком.

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


СО = ЗПосн * 26% = 3317 * 26% =862 руб.


*22=176 количество рабочих часов в месяц.

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


ЗПобщая = ЗПсум + СО = (3317+ 862)*172/176= 4048 руб.


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

Число часов отладки приложения составляет: 45 + 85 + 30 = 160

Стоимость 1 машинного часа рассчитывается следующим образом:

Стоимость электроэнергии + Амортизация оборудования + Затраты на ремонт / Фвт,

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

Стоимость 1 КВТ/час электроэнергии составляет: 3 руб.

Один компьютер потребляет 30 ВТ в час.

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

ч. * 22 дня * 12 мес. * 0,3 КВТ/час * 3 руб. / КВТ/ч. = 1900,8


Амортизация зависит от срока использования компьютера . Так как срок его эксплуатации 3 года, то амортизация ещё начисляется.

Амортизация = Стоимость ПК /Срок использования ПК.

Стоимость ПК равна 24000 руб. Количество лет полезного использования 4 года, значит: 24000 / 4 = 6000 руб. в год.

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


руб. * 5% = 1200 руб.


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


Фвт = Фном - Фпроф


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

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

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

Фвт=Фном -Фпроф= (8ч. * 22 дн. * 12 мес.) - (8ч.* 22 дн.* 12 мес.* 0,05)=2112-106=2006 ч.

Стоимость 1 машинного часа работы = 1200+ 6000 + 1900 / 2006 = 4,5 р.

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

,5 р. * 160ч. = 720р. при написании приложения.

Новый ПК для приложения «Автоматизация вещевого учета на Военном складе» .Срок эксплуатации ПК находящегося в отделе 3 года, и он оснащен современной операционной Windows XP и программным продуктом Office 2003,которой достаточно для полноценной работы данного программного продукта.

Смета затрат на разработку приложения:


Табл.2

№Наименование статьи расходовЗатраты, руб.1Суммарная заработная плата исполнителя 33172Страховые отчисления8623Содержание и эксплуатация вычислительного комплекса720ИТОГО:4899

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

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

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

До внедрения программного продукта сотрудник в среднем выполнял 8 операций по поиску и выводу в печати товара на складе. Ранее на поиск товара уходило 15 мин., а так же на поиск данных по выполнению операций уходило, около 13 мин. Следовательно:


Т1 = 15 + 13 = 28 мин.


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

Т2= 10+5=18 мин

?Т = Т1 - Т2 = 28 -18 = 10 мин. 0,16 - экономия времени.


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

Основная заработная плата одного сотрудника на производственном предприятии 9000 руб. в месяц. В месяц сотрудник работает (8ч. * 22рабочих дня) 176

Стоимость 1 ч.(Р) работы:


Рч = 9000 / 176 = 51,1 руб.


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


% = 0,26

Рфо = (9000 * 0,26) / 176 = 13,2 руб.

Рсум = Рч + Рфо = 51,1 + 13,2 = 64,3 руб./ч


Рассчитаем годовой экономический эффект:

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


?Тгод = (0,16* 8) * 22 * 12 = 337,92 ч.


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


?Тгод * Рсум =

,92 * 64,3 = 21 728,2 руб/год

Вычтем затраты:


728,2 руб - 4899= 16 829,2 руб/ экономический эффект.


Теперь посчитаем, за какое количество времени окупится приложение: Затраты /годовая экономия:


/ 21728,2 = 0,2


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

В данном дипломном проекте была реализована задача автоматизации вещевого учёта на военном складе.

Разработанное программное обеспечение

Достоинства программного продукта:

*удобство и простота в эксплуатации ;

*небольшой объем занимаемой памяти;

Разработанное программное обеспечение, позволяет осуществлять:

автоматизированный учёт предметов довольствия

контроль за движением довольствия в определённый период времени

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

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


Литература


1.А.Я. Архангельский Программирование в Borland Delphi 7 -М.: Издательство «Бином», 2010.

. Понамарев В. Базы данных в Delphi 7 - СПб.: Питер, 2011.

. Жуков А. Изучаем Delphi. - СПб.: Питер, 2009.

. Петров В.Н. Информационные системы. Учебник - СПб.: Питер, 2002.


Приложение


Рисунок №1 Входная форма.


Рисунок №2 Главное окно приложения.


Рисунок 2-2Форма «Поступление довольствия».


Рисунок 2-3 Форма «Выдача довольствия»

Рисунок 2-4 Форма «Состояние склада».

Рисунок 2-5 Форма «Добавление предмета».


Рисунок 2-6 Форма «Отчеты».

Рисунок 2-7 «Отчет по поступлению».


Рисунок 2-8 «Отчет по выдачам».


Исходный код приложения.

Главная формаMain;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, DB, ADODB, Grids, DBGrids, jpeg, ExtCtrls, Menus,;= class(TForm): TDataSource;: TADOConnection;: TADOQuery;: TDBGrid;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TImage;: TMenuItem;: TXPManifest;GridSelectAll(Grid: TDBGrid);Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender: TObject);Button5Click(Sender: TObject);Button6Click(Sender: TObject);Button4Click(Sender: TObject);Button7Click(Sender: TObject);Button8Click(Sender: TObject);N4Click(Sender: TObject);N5Click(Sender: TObject);N7Click(Sender: TObject);N6Click(Sender: TObject);N2Click(Sender: TObject);N11Click(Sender: TObject);N10Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TMainF;:string;Come, Leave, Sklad, About, Otchet, New;

{$R *.dfm}TMainF.GridSelectAll(Grid: TDBGrid);.SelectedRows.Clear;Grid.Datasource.DataSet do;;not EOF do.SelectedRows.CurrentRowSelected:=true;;;;;;;TMainF.Button1Click(Sender: TObject);.Show;;TMainF.Button2Click(Sender: TObject);.Show;;TMainF.Button3Click(Sender: TObject);.Show;;TMainF.Button5Click(Sender: TObject);.Terminate;;TMainF.Button6Click(Sender: TObject);.Show;;TMainF.Button4Click(Sender: TObject);.Show;;TMainF.Button7Click(Sender: TObject);.Show;;TMainF.Button8Click(Sender: TObject);('hh.ex);………….Справку;TMainF.N4Click(Sender: TObject);.Show;;TMainF.N5Click(Sender: TObject);.Show;;TMainF.N7Click(Sender: TObject);.Show;;TMainF.N6Click(Sender: TObject);.Show;;TMainF.N2Click(Sender: TObject);.Close;;TMainF.N11Click(Sender: TObject);.show;;TMainF.N10Click(Sender: TObject);.Show;;.


Форма «Поступление довольствия »Come;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, ExtCtrls, Grids, DBCtrls, Menus;= class(TForm): TComboBox;

// Razm:TComboBox1;: TLabel;: TDateTimePicker;: TLabel;: TUpDown;: TEdit;: TLabel;: TButton;: TStringGrid;: TEdit;: TLabel;: TLabel;: TComboBox;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TButton;FormCreate(Sender: TObject);FormShow(Sender: TObject);OKClick(Sender: TObject);N2Click(Sender: TObject);N3Click(Sender: TObject);Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TPostup;:integer;Main, ComObj;

{$R *.dfm}TPostup.FormCreate(Sender: TObject);

begin.Cells[0,0]:='Код вещевого имущества';.Cells[1,0]:='Поступило';.Cells[2,0]:='Количество';.Cells[3,0]:='Дата поступления';.Cells[4,0]:='Размер';.Cells[5,0]:='Номер накладной';;

procedure TPostup.FormShow(Sender: TObject);j:longint;.Text:='';.Text:='';.Text:='';.Date:=Date;.Items.Clear;.Items.Clear;.Text:='1';.RowCount:=2;j:=0 to 5 do.Cells[j,1]:='';.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='SELECT Наименование FROM Вещевое_имущество';.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;.GridSelectAll(MainF.DBGrid1);MainF.DBGrid1.SelectedRows.Count>0 thenj:=0 to MainF.DBGrid1.SelectedRows.Count-1 do.DBGrid1.DataSource.DataSet.GotoBookmark(pointer(MainF.DBGrid1.SelectedRows.Items[j]));.Items.Add(MainF.DBGrid1.Fields[0].AsString);;.ItemIndex:=-1;:=1;;TPostup.OKClick(Sender: TObject);s,id,k,k_s,d,r,n:string; j:integer;Goods.Text<>'' thenStrToInt(Kol.Text)>0 then:=Nomer.Text;:=Razm.Text;:=Goods.Text;:=DateToStr(Dat.Date);:=Kol.Text;Goods.ItemIndex=-1 then.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='INSERT INTO Вещевое_имущество (Наименование) VALUES ("'+s+'")';.ADOQuery1.SQL.Add(search);.ADOQuery1.ExecSQL;.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='SELECT Код_вещевого_имущества FROM Вещевое_имущество WHERE Наименование = "'+s+'"';.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;:=MainF.DBGrid1.Fields[0].AsString;.ADOQuery1.Close;.ADOQuery1.SQL.Clear;

search:='INSERT INTO Приход (Номер_накладной ,Код_вещевого_имущества, Пришло, Дата, Размер) VALUES ( "'+n+'", "'+id+'", "'+k+'", "'+d+'", "'+r+'")';

MainF.ADOQuery1.SQL.Add(search);.ADOQuery1.ExecSQL;.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='INSERT INTO Склад (Код_вещевого_имущества, Количество) VALUES ("'+id+'", "'+k+'")';.ADOQuery1.SQL.Add(search);.ADOQuery1.ExecSQL;.ADOQuery1.Close;.ADOQuery1.SQL.Clear;

search:='SELECT Код_вещевого_имущества FROM Вещевое_имущество WHERE Наименование = "'+s+'"';

MainF.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;:=MainF.DBGrid1.Fields[0].AsString;.ADOQuery1.Close;.ADOQuery1.SQL.Clear;

search:='INSERT INTO Приход (Номер_накладной, Код_вещевого_имущества, Пришло, Дата, Размер) VALUES ( "'+n+'", "'+id+'", "'+k+'", "'+d+'", "'+r+'")';

MainF.ADOQuery1.SQL.Add(search);.ADOQuery1.ExecSQL;.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='SELECT Количество FROM Склад WHERE Код_вещевого_имущества= '+id;.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;_s:=IntToStr(StrToInt(MainF.DBGrid1.Fields[0].AsString)+StrToInt(k));.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='UPDATE Склад SET Количество = "'+k_s+'" WHERE Код_вещевого_имущества = '+id;.ADOQuery1.SQL.Add(search);.ADOQuery1.ExecSQL;;.Cells[0,m]:=id;.Cells[1,m]:=s;.Cells[2,m]:=k;.Cells[3,m]:=d;.Cells[4,m]:=r;.Cells[5,m]:=n;:=m+1;.RowCount:=m;.Text:='';.Items.Clear;.Text:='1';.ADOQuery1.Close;.ADOQuery1.SQL.Clear;

search:='SELECT Наименование FROM Вещевое_имущество';

MainF.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;

////.Text:='';.Items.Clear;.Text:='1';.ADOQuery1.Close;.ADOQuery1.SQL.Clear;

search:='SELECT Наименование FROM Вещевое_имущество';

MainF.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;

////.GridSelectAll(MainF.DBGrid1);MainF.DBGrid1.SelectedRows.Count>0 thenj:=0 to MainF.DBGrid1.SelectedRows.Count-1 do.DBGrid1.DataSource.DataSet.GotoBookmark(pointer(MainF.DBGrid1.SelectedRows.Items[j]));.Items.Add(MainF.DBGrid1.Fields[0].AsString);

end;.ItemIndex:=-1;ShowMessage('Количество должно быть положительным!');ShowMessage('Проверьте заполнение всех полей!');

end;;TPostup.N2Click(Sender: TObject);.Show;.Close;;TPostup.N3Click(Sender: TObject);.Close;;TPostup.Button1Click(Sender: TObject);: Variant;, j: Integer;:= CreateOleObject('Excel.Application');.Visible:=true;.WorkBooks.open('H:Накладная.xls') ;

// book.WorkBooks.Add;.Worksheets[3].Delete;.Worksheets[2].Delete;.Worksheets[1].Name:='Поступление довольствия';.ActiveSheet.Range['C2'].Value := Nomer.Text;i := 1 to Tab.ColCount-1 doj := 0 to Tab.RowCount-1 do.Cells[j+5, i+1].value := Tab.Cells[i,j];

end;.


Форма «Выдача довольствия»

unit Leave;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, StdCtrls, ExtCtrls, Grids, Menus, DB, ADODB;= class(TForm): TLabel;: TComboBox;: TEdit;: TUpDown;: TLabel;: TLabel;: TButton;: TStringGrid;: TLabel;: TLabel;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TComboBox;: TLabel;: TComboBox;: TButton;: TADOTable;: TDataSource;: TEdit;: TDateTimePicker;__: TIntegerField;DSDesigner: TWideStringField;DSDesigner2: TDateTimeField;DSDesigner3: TIntegerField;DSDesigner4: TWideStringField;DSDesigner5: TWideStringField;FormCreate(Sender: TObject);FormShow(Sender: TObject);OKClick(Sender: TObject);N2Click(Sender: TObject);N3Click(Sender: TObject);Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TVydach;:integer;Main, ComObj, StrUtils;

{$R *.dfm}TVydach.FormCreate(Sender: TObject);.Cells[0,0]:='Код имущества';.Cells[1,0]:='Выдано';.Cells[2,0]:='Количество';.Cells[3,0]:='Размер';.Cells[4,0]:='Дата выдачи';.Cells[5,0]:='Номер накладной';.Cells[6,0]:='Получатель';;TVydach.FormShow(Sender: TObject);j:longint;.Text:='';.Date:=Date;.Items.Clear;.Text:='';.Text:='';.RowCount:=2;j:=0 to 6 do.Cells[j,1]:='';.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='SELECT Наименование FROM Вещевое_имущество';.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;.GridSelectAll(MainF.DBGrid1);MainF.DBGrid1.SelectedRows.Count>0 thenj:=0 to MainF.DBGrid1.SelectedRows.Count-1 do.DBGrid1.DataSource.DataSet.GotoBookmark(pointer(MainF.DBGrid1.SelectedRows.Items[j]));.Items.Add(MainF.DBGrid1.Fields[0].AsString);;.ItemIndex:=0;:=1;;TVydach.OKClick(Sender: TObject);s,id,k,k_s,d,c,rr,ss:string; j:integer;met1,met2;(StrToInt(Kol.Text)>0) and (StrToInt(Nomer.Text)>0) then:=Sotr.Text;:=Nomer.Text;:=Goods.Text;:=DateToStr(Dat.Date);:=Kol.Text;:=Razmer1.Text;.ADOQuery1.Close;.ADOQuery1.SQL.Clear;

search:='SELECT Код_вещевого_имущества FROM Вещевое_имущество WHERE Наименование = "'+s+'"';

MainF.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;:=MainF.DBGrid1.Fields[0].AsString;.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='SELECT Количество FROM Склад WHERE Код_вещевого_имущества = '+id;.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;StrToInt(k)>StrToInt(MainF.DBGrid1.Fields[0].AsString) then goto met1k_s:=IntToStr(StrToInt(MainF.DBGrid1.Fields[0].AsString)-StrToInt(k));.ADOQuery1.Close;.ADOQuery1.SQL.Clear;

search:='INSERT INTO Выдача (Код_вещевого_имущества, Выдано, Размер, Дата, Сотрудник) VALUES ("'+id+'", "'+k+'", "'+c+'", "'+d+'", "'+ss+'")';

MainF.ADOQuery1.SQL.Add(search);.ADOQuery1.ExecSQL;.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='UPDATE Склад SET Количество = "'+k_s+'" Where Код_вещевого_имущества = '+id;.ADOQuery1.SQL.Add(search);.ADOQuery1.ExecSQL;.Cells[0,x]:=id;.Cells[1,x]:=s;.Cells[2,x]:=k;.Cells[3,x]:=c;.Cells[4,x]:=d;.Cells[5,x]:=rr;.Cells[6,x]:=ss;:=x+1;.RowCount:=x;.Text:='';.Items.Clear;.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='SELECT Наименование FROM Вещевое_имущество';.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;.GridSelectAll(MainF.DBGrid1);MainF.DBGrid1.SelectedRows.Count>0 thenj:=0 to MainF.DBGrid1.SelectedRows.Count-1 do.DBGrid1.DataSource.DataSet.GotoBookmark(pointer(MainF.DBGrid1.SelectedRows.Items[j]));.Items.Add(MainF.DBGrid1.Fields[0].AsString);;.ItemIndex:=0;met2;

met1:('Количество выдаваемого имущества превышает количество имущества на складе! На складе всего '+MainF.DBGrid1.Fields[0].AsString+' ед!');

met2:ShowMessage('Количество должно быть положительным!');ShowMessage('Проверьте правильность заполнения!');

end;;TVydach.N2Click(Sender: TObject);.Close;.Show;;TVydach.N3Click(Sender: TObject);.Close;;TVydach.Button1Click(Sender: TObject);: Variant;, j: Integer;:= CreateOleObject('Excel.Application');.Visible:=true;.WorkBooks.open('H:Накладная.xls') ;

// book.WorkBooks.Add;.Worksheets[3].Delete;.Worksheets[2].Delete;.Worksheets[1].Name:='Выдача довольствия';.ActiveSheet.Range['C2'].Value := Nomer.Text;.ActiveSheet.Range['C4'].Value := Sotr.Text;i := 1 to Tab.ColCount-1 doj := 0 to Tab.RowCount-1 do.Cells[j+5, i+1].value := Tab.Cells[i,j];

end;.


Форма «Состояние склада»

unit Sklad;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls;= class(TForm): TStringGrid;: TLabel;: TEdit;: TButton;: TButton;: TButton;FormCreate(Sender: TObject);FormShow(Sender: TObject);Button3Click(Sender: TObject);Button2Click(Sender: TObject);Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TSkladF;Main, ComObj;

{$R *.dfm}TSkladF.FormCreate(Sender: TObject);

begin.Cells[0,0]:='Наименование предмета';

Tab.Cells[1,0]:='Количество';;TSkladF.FormShow(Sender: TObject);j,k:longint; sdf:string;.RowCount:=2;j:=0 to 1 do.Cells[j,1]:='';.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='SELECT * FROM Склад';.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;.GridSelectAll(MainF.DBGrid1);MainF.DBGrid1.SelectedRows.Count>0 then.RowCount:=MainF.DBGrid1.SelectedRows.Count+1;j:=0 to MainF.DBGrid1.SelectedRows.Count-1 do.DBGrid1.DataSource.DataSet.GotoBookmark(pointer(MainF.DBGrid1.SelectedRows.Items[j]));.Cells[0,j+1]:=MainF.DBGrid1.Fields[0].AsString;.Cells[1,j+1]:=MainF.DBGrid1.Fields[1].AsString;;j:=1 to Tab.RowCount-1 do.ADOQuery1.Close;.ADOQuery1.SQL.Clear;:='SELECT Наименование FROM Вещевое_имущество WHERE Код_вещевого_имущества = '+Tab.Cells[0,j];.ADOQuery1.SQL.Add(search);.ADOQuery1.Open;.Cells[0,j]:=MainF.DBGrid1.Fields[0].AsString;;;j:=1 to Tab.RowCount-2 dok:=j+1 to Tab.RowCount-1 doTab.Cells[0,j]>Tab.Cells[0,k] then:=Tab.Cells[0,j];.Cells[0,j]:=Tab.Cells[0,k];.Cells[0,k]:=sdf;:=Tab.Cells[1,j];.Cells[1,j]:=Tab.Cells[1,k];.Cells[1,k]:=sdf;;;TSkladF.Button3Click(Sender: TObject);.Close;;TSkladF.Button2Click(Sender: TObject);: Variant;, j: Integer;:= CreateOleObject('Excel.Application');.Visible:=true;.WorkBooks.Add;.Worksheets[3].Delete;.Worksheets[2].Delete;.Worksheets[1].Name:='Выдача довольствия';i := 0 to Tab.ColCount-1 doj := 0 to Tab.RowCount-1 do.Cells[j+1, i+1].value := Tab.Cells[i,j];;TSkladF.Button1Click(Sender: TObject);i : integer;i := 0 to Tab.RowCount -1 doTab.Cells[0,i] = Edit1.Text then.Row := i;('Найдена запись на ' + IntToStr(i) + ' строке.')(handle,PChar('Такого предмета нет'), PChar('Внимание'), 48)MessageBox(handle,PChar('Такого предмета нет'), PChar('Внимание'), 48);;;(handle,PChar('Такого предмета нет'), PChar('Внимание'), 48)

end;.

Форма «Новый предмет»

unit New;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Mask, DBCtrls, ExtCtrls, Grids, DBGrids, DB, ADODB,;= class(TForm): TDataSource;: TADOTable;: TDBGrid;: TDBNavigator;: TDBEdit;: TDBEdit;: TLabel;: TLabel;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;N2Click(Sender: TObject);FormCreate(Sender: TObject);

{ Private declarations }

{ Public declarations };: TNewT;Main;

{$R *.dfm}TNewT.N2Click(Sender: TObject);.show;.Close;;TNewT.FormCreate(Sender: TObject);

begin;.


Форма «Отчеты за период».

unit Otchet;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, Printers, Grids, DBGrids, DB, ADODB, Menus;= class(TForm): TRadioButton;: TRadioButton;: TButton;: TLabel;: TLabel;: TButton;: TPrinterSetupDialog;: TDataSource;: TADOTable;: TDBGrid;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TDateTimePicker;: TDateTimePicker;

//procedure probel(k:integer);OKClick(Sender: TObject);PrntClick(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);N2Click(Sender: TObject);N3Click(Sender: TObject);FormCreate(Sender: TObject);

{ Private declarations }

{ Public declarations };: TOtchetF;Main;

{$R *.dfm}TOtchetF.OKClick(Sender: TObject);Com.Checked then.Active := False;.TableName := 'Запрос на приход';.Filter := 'Дата >= ' + DateToStr(D1.Date)+ ' AND Дата <= ' + DateToStr(D2.Date);.Filtered := True;.Active := True;.Visible:=True;else begin.Active := False;.TableName := 'Запрос на расход';.Filter := 'Дата >= ' + DateToStr(D1.Date)+ ' AND Дата <= ' + DateToStr(D2.Date);.Filtered := True;.Active := True;.Visible:=True;;;;TOtchetF.PrntClick(Sender: TObject);Prntr:TPrinter;:=Printer;.ClientHeight:=685;.Visible:=false;

OtchetF.Show;('Для правильной печати нужно, чтобы "Настройка печати" не накладывалась на форму отчета при нажатии кнопки ОК.');

if PrinterSetupDialog1.Execute then.BeginDoc;.Canvas.CopyRect(Rect(100,150,Prntr.PageWidth-100,Prntr.PageHeight-150),OtchetF.Canvas,Rect(0,0,OtchetF.ClientWidth,OtchetF.ClientHeight));.EndDoc;.Visible:=true;.ClientHeight:=717;;;TOtchetF.FormClose(Sender: TObject; var Action: TCloseAction);.ClientHeight:=717;.Visible:=true;;TOtchetF.N2Click(Sender: TObject);.Close;.Show;;TOtchetF.N3Click(Sender: TObject);.Close;;TOtchetF.FormCreate(Sender: TObject);;.


Форма «Вход».Vxod;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, DB, ADODB;= class(TForm): TLabel;: TLabel;: TButton;: TButton;: TEdit;: TEdit;: TButton;: TADOQuery;: TADOConnection;Button3Click(Sender: TObject);Button2Click(Sender: TObject);Button1Click(Sender: TObject);FormCreate(Sender: TObject);FormShow(Sender: TObject);GClick(Sender: TObject);graf(k:longint);

{ Private declarations }

{ Public declarations };: TVxod;Main;

{$R *.dfm}TVxod.Button3Click(Sender: TObject);('Введите Ваши имя пользователя и пароль!',mtinformation,[mbOk],0);;TVxod.Button2Click(Sender: TObject);.Terminate;;TVxod.Button1Click(Sender: TObject);:string;:boolean;(LoginEdit.Text<>'') and (PasswordEdit.Text<>'') then //поля не пустые.Active:=false;.Parameters.ParamByName('log').Value:=LoginEdit.Text;.Active:=true;UserQuery.RecordCount<>0 thenUserQuery.FieldByName('Пароль').AsString=PasswordEdit.Text then begin:=LowerCase(LoginEdit.Text);UserQuery.FieldByName('Доступ').AsString='True' then Dostup:=true //and Form2.Show//есть доступ

//then Form2.Show;Dostup:=false;.Show //Close;Showmessage('Пароль неверный!');

end;ShowMessage('Введите имя пользователя и пароль!');//пустые поля

end;TVxod.FormCreate(Sender: TObject);;.


ДИПЛОМНЫЙ ПРОЕКТ НА ТЕМУ: Автоматизация вещевого учета на военном складе Содержание Вве

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ