Автоматизация ведения учета образующихся отходов на предприятии
Разработка программного обеспечения "Сетевой программный комплекс "Автоматизация ведения учетов образования и движения отходов, образующихся на предприятии" с использованием системы программирования Delphi 5. Достоинства и недостатки данной программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 22.09.2012 |
Размер файла | 2,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ВВЕДЕНИЕ
Компьютеризация всех сфер общественной жизни человека - одно из самых впечатляющих событий последней четверти XX века. Компьютер стал неотъемлемой частью современной жизни. Современную жизнь не легко представить без передовых технологий. Компьютеризация на сегодняшний день заполонила все существующее делопроизводство, все научные, учебные, промышленные и бытовые сферы деятельности. В каждой второй семье сейчас есть компьютер, а в некоторых и не один, производители периферии устроили гонку технологий, за которой порой трудно успеть.
При работе в различных сферах деятельности общества компьютеры помогают автоматизировать и сделать более корректным пользование любого программного продукты. В развитых странах автоматизировано почти все и многие задачи, выполняемые раньше людьми, были оптимизированы и представлены в виде программ.
Разработка программы «Сетевой программный комплекс (СПК) Автоматизация ведения учетов отходов производства и потребления, образующихся на предприятии» значительно облегчает работу по ведению учета образующихся отходов на предприятии и, соответственно, сокращает затраченное время. Программа предусматривает регистрацию подразделения, что повышает надежность сохранности данных. Она позволяет быстро и легко составить накладную или журнал учета за год, а также произвести их печать.
Программа легка в работе, имеет понятный интерфейс, защиту некорректного ввода, следовательно, ей могут пользоваться даже неопытные пользователи.
1. ОБЩИЙ РАЗДЕЛ
1.1 Характеристика ПК
Для выполнения дипломного проекта выбран компьютер типа IBM PC.
Компьютеры данного типа обладают следующими достоинствами:
- высокая надежность;
- легкая модернизация;
- невысокая стоимость;
- простота ремонта;
- простота использования.
Компьютеры данного типа обладают следующими недостатками:
- недостаточная вычислительная мощность;
- дорогое обслуживание компьютеров, то есть требуются высококвалифицированные специалисты, дорогое программное обеспечение.
В базовую конфигурацию компьютера входят:
- системный блок компьютера, основная часть стационарного компьютера, в корпусе которого размещены: источник электропитания, материнская плата с центральным процессором и оперативной памятью, звуковая плата, видео карта, различные накопители (жесткий диск, дисководы, приводы CD-ROM) и дополнительные устройства. Системный блок обычно имеет несколько параллельных и последовательных портов ввода и вывода информации, такие как клавиатура, мышь, монитор, принтер;
- процессор - это самый главный компонент компьютера. Он выполняет поступающие на его вход команды и управляет машиной. У всех микропроцессоров характеристики: разрядность и тактовая частота. Также очень важны для пользователей производительность компьютера, то есть скорость работы, и объём памяти для хранения данных. Разрядность - это количество битов, которое микропроцессор воспринимает как единое целое (4, 8, 16, 32, 64 - целая степень числа 2). От разрядности зависят производительность и максимальный объём внутренней памяти, с которой может работать машина. Кроме того, в ПК имеется специальный генератор тактовых импульсов, которые служат метками времени для синхронизации работы устройств машины. Тактовая частота, измеряемая в мегагерцах (МГц), в значительной степени влияет на производительность компьютера;
- оперативная память - это совокупность специальных электронных ячеек, каждая из которых может хранить конкретную комбинацию нулей и единиц - один байт;
- кэш-память предназначена для обеспечения быстрого доступа часто используемым данным. Кэш-память располагается "между" микропроцессором и оперативной памятью, и при обращении микропроцессором к памяти сначала производится поиск нужных данных в кэш-памяти;
на материнской плате располагается микропроцессор, оперативная память, а также отдельные платы, вставляющиеся слоты. Контроллеры устройств подключаются непосредственно к системной магистрали передачи данных - южный мост;
винчестеры (накопители на жестких дисках) предназначены для постоянного хранения информации, используемой при работе с компьютером: программ операционной системы, часто используемых пакетов программ, трансляторов с языков программирования и так далее. Основными характеристиками жёсткого диска являются ёмкость диска и скорость работы диска;
монитор - предназначен для отображения текстовой и графической информации. Мониторы бывают цветными и монохромными;
клавиатура - предназначена для ввода информации в компьютер;
мышь - это устройство, облегчающее ввод информации в компьютер.
Характеристика выбранного ПК приведена в таблице 1.
Таблица 1 - Технические характеристики ПК
Наименование |
Характеристика |
|
Монитор |
LG FLATRON 720P |
|
Процессор |
Intel LGA775 Corel2Duo-E8400 |
|
Материнская плата |
ASUS P5K SE |
|
Видеокарта |
GeForce 9600GT 512Mb DDR3 |
|
Модуль памяти |
1024Mb PC2-6400 DDR2 DIMM Kington |
|
Клавиатура |
Genius K641 |
|
Мышь |
Microsoft |
|
HDD |
Maxtor 6Y080L0 |
|
Монитор |
LG FLATRON 720P |
|
Процессор |
Intel LGA775 Corel2Duo-E8400 |
|
Материнская плата |
ASUS P5K SE |
1.2 Характеристика ОС ПК
Для реализации данного дипломного проекта выбрана операционная система Windows XP.
Данная операционная система является объектно-ориентированной. Назначение операционной системы заключается в обеспечении удобства управления компьютером.
Достоинства Windows XP:
независимость программ от внешних устройств;
средства для построения пользовательского интерфейса;
доступность всей оперативной памяти;
связь и внедрение объектов;
использование масштабируемых шрифтов True Type;
единый пользовательский интерфейс;
многозадачность;
совместимость с DOS-приложениями;
удобство поддержки устройств и мультимедиа.
Windows - программа может обращаться к внешним устройствам только через Windows, что снимает с разработчиков все проблемы обеспечения совместимости с конкретными внешними устройствами.
Средства для построения пользовательского интерфейса Windows содержат все необходимые функции для построения пользовательского интерфейса программ: окон, меню, запросов и т.д.
Доступность всей оперативной памяти облегчает создание на ее базе больших программ.
Связь и внедрение объектов - новый способ обмена данными между приложениями, при котором вы имеется возможность комбинировать изображение, звук и текст.
В Windows действует принцип WYSIWYG (What you see is what yon get), который означает, что та информация, которую вы видите на экране, соответствует тому, что выдается принтером при распечатке.
Windows упрощает работу с внешними устройствами. Принципиальная новизна Windows XP состоит именно в том, что концепция объектно-ориентированного подхода реализована в ней наиболее полно. Объектно-ориентированный подход реализуется через модель рабочего стола. Пользователь работает с задачами и приложениями так же, как с документами на своем письменном столе.
Одно из главных отличий Windows ХР от других операционных систем состоит в том, что основной упор в ней делается на документ, а программа, задача, приложение или программный код вообще рассматриваются только как инструмент для работы с документом. Другая особенность Windows ХР заключается в том, что при включении машины сразу выполняется загрузка Windows ХР. Для пользователя это оборачивается некоторыми неудобствами. Он должен привыкнуть к тому, что прежде чем выключить машину, нужно корректно завершить работу с Windows, поскольку новая операционная система создаёт буфера в оперативной памяти, и их содержимое должно быть сброшено на диск.
Подход к аппаратному обеспечению также изменился. Теперь система использует стандарт Plug&Play, что облегчает и максимально автоматизирует процесс добавления новых периферийных устройств. Стандарт Plug&Play - это совместная разработка фирм Intel и Microsoft. Основная его идея заключается в том, что каждое устройство, соответствующее этому стандарту, сообщает о себе определённую информацию, благодаря которой операционная система выполняет автоматическую конфигурацию периферийных устройств и разрешает аппаратные конфликты.
Windows ХР является 32-разрядной операционной системой, которая работает только в защищенном режиме процессора. Ядро, включающее управление памятью и диспетчеризацию процессов, содержит только 32-разрядный код. Это уменьшает издержки и ускоряет работу. Windows ХР поддерживает приоритетную многозадачность (preemptive multitasidng).
Windows ХР автоматически освобождает всю память, отведённую приложению, после того, как оно заканчивает работу. BIOS - базовая система ввода-вывода. BIOS хранится в программно-запоминающем устройстве на системной плате компьютера. BIOS реализует следующие функции.
Производит автоматическую проверку аппаратных компонентов компьютера, при его включении. В случае обнаружения неисправностей выдаётся сообщение на экран монитора или выдаются звуковые сигналы, по количеству которых можно определить характер неисправности.
Производит поиск на загрузочном диске модуля Boot Record и загружает его в оперативную память.
Выполняет обслуживание системных прерываний. Системное прерывание вырабатывается внешними устройствами с целью выполнения различных операций. Суть прерываний заключается в том, что, получив, такой сигнал от внешнего устройства, микропроцессор на короткое время прерывает выполнение основной программы и начинает выполнять подпрограмму обслуживания внешнего устройства, посылающего сигнал прерывания. Каждое внешнее устройство имеет определённый код к сигналу прерывания. Эти коды сигналов прерываний хранятся в программно-запоминающемся устройстве BIOS.
1.3 Характеристика системы программирования
1.3.1 Описание системы программирования
Для разработки программного обеспечения на предприятии используется система программирования Delphi 5 Development Environment, в основе которой лежит язык программирования Object Pascal.
Delphi 5 имеет самый быстрый среди продуктов данного рода оптимизирующий компилятор, позволяющий создавать быстрые и относительно компактные программы.
Любая программа в Delphi состоит из файла проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с расширениями pas). Каждый из таких файлов описывает программную единицу Object Pascal.
Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Структура проекта выглядит так:
program Example;
uses
Forms, Unit1 in 'uExample.pas' {frm_Example};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(tfrm_Example, frm_Example);
Application.Run;
end.
В окне кода жирным шрифтом выделяются так называемые зарезервированные слова, а курсивом - комментарии. Зарезервированные слова играют важную роль в Object Pascal, придавая программе в целом свойство текста, написанного на почти естественном английском языке. Каждое зарезервированное слово несёт в себе условное сообщение для компилятора, который анализирует текст программы: слева направо и сверху вниз.
Комментарии, наоборот, ничего не значат для компилятора, и он их игнорирует. Комментарии важны для программиста, который с их помощью поясняет те или иные места программы. Наличие комментариев в тексте программы делает её понятнее и позволяет легко вспомнить особенности реализации программы, которую вы написали несколько лет назад. В Object Pascal комментарием считается любая последовательность символов, заключенная в фигурные скобки. В Object Pascal в качестве ограничителей комментария могут использоваться пары символов (*, *) и //.:
{Это комментарий}
(*Это тоже комментарий*)
//Все символы до конца этой строки составляют комментарий
Слово Program со следующим за ним именем программы и точкой с запятой образуют
заголовок программы. За заголовком следует раздел описаний, в котором программист описывает используемые в программе идентификаторы. Идентификаторы обозначают элементы программы, такие как типы, переменные, процедуры, функции. Здесь же с помощью предложения, которое начинается зарезервированным словом uses программист сообщает компилятору о тех фрагментах программы (модулях), которые необходимо рассматривать как неотъемлемые составные части программы и которые располагаются в других файлах.
Собственно тело программы начинается со слова begin и ограничивается терминатором end с точкой. Тело состоит из нескольких операторов языка Object Pascal. В каждом операторе реализуется некоторое действие - изменение значения переменной, анализ результата вычисления, обращение к подпрограмме и т. п.
1.3.1.1 Элементы программы
Элементы программы - это минимальные неделимые её части, ещё несущие в себе определенную значимость для компилятора. К элементам относятся:
- зарезервированные слова;
- идентификаторы;
- типы;
- константы;
- переменные;
- метки;
- подпрограммы;
- комментарии.
Зарезервированные слова это слова, указывающие компилятору на необходимость выполнения определённых действий. Зарезервированные слова не могут использоваться в программе ни для каких иных целей кроме тех, для которых они предназначены. Например, зарезервированное слово begin означает для компилятора начало составного оператора. Программист не может создать в программе переменную с именем begin, константу begin, метку begin или вообще какой бы то ни было другой элемент программы с именем begin.
Идентификаторы - это слова, которыми программист обозначает любой другой элемент программы, кроме зарезервированного слова, идентификатора или комментария.
Типы - это специальные конструкции языка, которые рассматриваются компилятором как образцы для создания других элементов программы, таких как переменные, константы и функции. Любой тип определяет две важные для компилятора вещи: объём памяти, выделяемый для размещения элемента, и набор допустимых действий, которые программист может совершать над элементами данного типа.
Константы определяют области памяти, которые не могут изменять своего значения в ходе работы программы. Как и любые другие элементы программы, константы могут иметь свои собственные имена. Объявлению имён констант должно предшествовать зарезервированное слово const. Например:
PI=3,14;
E=2,7.
Тип константы определяется способом её записи и легко распознается компилятором в тексте программы, поэтому программист может не использовать именованные константы, т. е. не объявлять их в программе.
Переменные связаны с изменяемыми областями памяти, т. е. с такими её участками, содержимое которых будет меняться в ходе работы программы. В отличие от констант переменные всегда объявляются в программе. Для этого после идентификатора переменной ставится двоеточие и имя типа, по образу которого должна строиться переменная. Разделу объявления переменной (переменных) должно предшествовать слово var. Например:
var
i: Integer;
Метки используются очень редко и только для того, чтобы программист смог указать компилятору, какой оператор программы должен выполнятся следующим. Метки, как и переменные, всегда объявляются в программе. Разделу объявлений меток предшествует зарезервированное слово label. Например:
label 1;
Begin
Goto 1;
// Программист требует передать управление
// оператору, помеченному меткой 1.
// Эти операторы будут пропущены
1:
// Оператору, идущему за этой меткой,
// будет передано управление
end;
Подпрограммы - это специальным образом оформленные фрагменты программы. Замечательной особенностью подпрограмм является их значительная независимость от остального текста программы. Подпрограммы являются средством структурирования программ, т. е. расчленения программ на ряд во многом независимых фрагментов. Структурирование неизбежно для крупных программных проектов, поэтому подпрограммы используются в Delphi 5 очень часто.
В Object Pascal есть два сорта подпрограмм: процедуры и функции. Функция отличается от процедуры только тем, что её идентификатор можно наряду с константами и переменными использовать в выражениях, т. к. функция имеет выходной результат определенного типа.
1.3.1.2 Основные операторы
В языке Delphi 5 используются следующие основные операторы:
1) Инструкция If:
Вариант 1: If-Then-Else.
If Условие Then
begin
{Инструкции, которые выполняются, если условие истинно}
end
Else
begin
{Инструкции, которые выполняются, если условие ложно}
end;
Вариант 2. If-Then.
If Условие Then
begin
{Инструкции, которые выполняются, если условие истинно}
end;
2) Инструкция Case:
Case Выражение Of
Список1_Констант:
begin
{инструкции}
end;
Список2_Констант:
begin
{инструкции}
end;
СписокN_Констант:
begin
{инструкции}
end;
end;
3) Инструкция For
Вариант 1 (с увеличением счётчика):
For Счётчик:=НачальноеЗначение To КонечноеЗначение Do
begin
{инструкции}
end;
Вариант 2 (с уменьшением счётчика):
For Счётчик:=НачальноеЗначение DownTo КонечноеЗначение Do
begin
{инструкции }
end;
4) Инструкция Repeat:
Repeat
{инструкции}
Until Условие;
Сначала выполняются инструкции цикла, которые расположены между Repeat и Until. Затем вычисляется значение выражения Условие, и если оно равно False, то инструкции цикла выполняются ещё раз. И так до тех пор, пока значение выражения Условие не станет равным True.
5) Инструкция While:
While Условие Do
begin
{инструкции}
end;
Сначала проверяется Условие, если оно истинно, то выполняются инструкции между begin и end. Затем снова проверяется Условие. Если оно выполняется, то инструкции цикла выполняются ещё раз. И так до тех пор, пока Условие не станет ложным.
6) Безусловный переход GoTo:
GoTo Метка;
Инструкция осуществляет переход к инструкции, перед которой стоит метка. Метка должна быть объявлена в разделе Label.
7) Объявление двумерного массива
ИмяМассива: Array [НижнийИндекс1..ВерхнийИндекс1, НижнийИндекс2..ВерхнийИндекс2] Of ТипЭлементов
1.3.1.3 Стандартные процедуры и функции
В таблице 2 приведены описания преобразований языка Delphi.
Таблица 2 - Преобразования типов
Функция |
Описание |
|
IntToStr (Выражение) |
Преобразование числового выражения целого типа в строку |
|
StrToInt (Строка:String) |
Преобразование строки, изображающей целое или вещественное число, в число |
Основные типы данных представлены в таблице 3.
Таблица 3 - Типы данных
Название |
Тип данных |
Длина |
Диапазон значений |
|
Integer |
целый |
4 |
-2 147 483 648...+2 147 483 647 |
|
Boolean |
логический |
1 |
False/True |
|
Char |
символьный |
1 |
Chr(0)..Chr(255) |
|
String |
символьный |
~231 |
Набор символов Char |
Константы определяют области памяти, которые не могут изменять своего значения в ходе работы программы.
Переменные связаны с изменяемыми областями памяти, т. е. с такими её участками, содержимое которых будет меняться в ходе работы программы. В отличие от констант переменные всегда объявляются в программе.
1.3.2 Характеристика SQL Server
1.3.2.1 Описание SQL Server
На предприятии используется система управления базами данных SQL Server 2000.
Microsoft SQL Server в качестве языка запросов использует версию SQL, получившую название Transact-SQL (сокращённо T-SQL). T-SQL позволяет использовать дополнительный синтаксис для хранимых процедур и обеспечивает поддержку транзакций (взаимодействие базы данных с управляющим приложением).
Microsoft SQL Server поддерживает Open Database Connectivity (ODBC) -- интерфейс взаимодействия приложений с СУБД.
1.3.2.2 Хранимые процедуры
Хранимые процедуры позволяют повысить производительность, расширяют возможности программирования и поддерживают функции безопасности данных.
Вместо хранения часто используемого запроса, клиенты могут ссылаться на соответствующую хранимую процедуру. При вызове хранимой процедуры её содержимое сразу же обрабатывается сервером.
Кроме собственно выполнения запроса, хранимые процедуры позволяют также производить вычисления и манипуляцию данными -- изменение, удаление, выполнять DDL-операторы и вызывать другие хранимые процедуры, выполнять сложную транзакционную логику. Один-единственный оператор позволяет вызвать сложный сценарий, который содержится в хранимой процедуре, что позволяет избежать пересылки через сеть сотен команд и, в особенности, необходимости передачи больших объёмов данных с клиента на сервер.
В СУБД при первом запуске хранимой процедуры она компилируется (выполняется синтаксический анализ и генерируется план доступа к данным). В дальнейшем её обработка осуществляется быстрее.
1.3.2.3 Операторы SQL
1.3.2.3.1 Выбор данных
Выбор данных представляет собой наиболее часто встречающуюся операцию, выполняемую с помощью SQL. Оператор SELECT -- один из самых важных операторов этого языка, применяемый для выбора данных. Синтаксис этого оператора имеет следующий вид:
SELECT column-list
FROM table-list
[WHERE where-clause]
[ORDER BY order-by-clause]
Операторы SELECT должны содержать слова SELECT и FROM; другие ключевые слова, такие как WHERE или ORDER BY, являются необязательными.
За ключевым словом SELECT следуют сведения о том, какие именно поля необходимо включить в результирующий набор данных. Звездочка (*) обозначает все поля таблицы, например:
SELECT *
Если выбор данных осуществляется из нескольких таблиц и при этом выбираются одноименные поля из разных таблиц, следует ссылаться на имена таблиц для полной идентификации полей, включаемых в результирующий набор данных.
1.3.2.3.2 Предложение FROM
Для указания имен таблиц, из которых выбираются записи, применяется ключевое слово FROM, например:
SELECT * FROM имя_таблицы
Этот запрос возвратит все поля из таблицы.
1.3.2.3.3 Предложение WHERE
Для фильтрации результатов, возвращаемых оператором SELECT, можно использовать предложение WHERE, синтаксис которого имеет вид:
WHERE expression1 [{AND | OR} expression2 […]]
2. ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ
2.1 Постановка задачи
2.1.1 Сущность задачи
2.1.1.1 Назначение задачи
Программный продукт предназначен для учета образования и движения отходов производства и потребления на предприятии. Данные используются для формирования бухгалтерских документов и отчетов для вышестоящих организаций.
2.1.1.2 Цель задачи
Внедрение СПК позволит автоматизировать рабочие места ответственных за экологическое состояние работников подразделений.
2.1.1.3 Периодичность решения задачи
По мере необходимости.
2.1.1.4 Описательная модель задачи
В качестве дипломного проекта предложено разработать сетевой программный комплекс (СПК) автоматизация ведения учетов отходов производства и потребления, образующихся на предприятии. Программный продукт предназначен для учета образования и движения отходов производства и потребления на предприятии. Данные используются для формирования бухгалтерских документов и отчетов для вышестоящих организаций.
Внедрение СПК позволит автоматизировать рабочие места ответственных за экологическое состояние работников подразделений по вводу данных, формированию накладных по отпуску материалов и получению электронной версии журнала образования и движения отходов.
В программе должны быть реализованы следующие функции:
- ведение справочника видов отходов;
- ведение справочника взаимодействующих организаций;
- ввод и корректировка данных по отходам и подразделениям;
- просмотр информации по видам отходов с подсуммированием количества;
- формирование накладных по отпуску материалов;
- формирование журнала учета образования и движения отходов.
Безопасность данных гарантируется за счет системы распределения прав доступа пользователей.
2.1.2 Описание входной информации
2.1.2.1 Входные документы
Входным документом для решения данной задачи является акт списания отходов производства и потребления предприятия.
2.1.2.2 Входные данные
Входные данные представлены в таблицах 4-9.
Таблица 4 - Входные данные таблицы OTH_Move
Наименование |
Идентификатор |
Тип данных |
Источник данных |
|
Номер записи |
Nzap |
int |
Счетчик |
|
Номер записи справочника |
Nzap_Spr |
int |
Таблица OTH_Spr |
|
Получено другим подразделением |
Poluch_dr_podr |
numeric |
Поле ввода |
|
Использовано предприятием |
Ispolz_predpr |
numeric |
Поле ввода |
|
Передано населению |
Peredano_nas |
numeric |
Поле ввода |
|
Номер записи организации |
Nzap_org |
int |
Таблица OTH_Spr_Org |
|
Дата составления |
D_form |
smalldatetime |
Поле ввода |
|
Номер накладной |
N_nakl |
varchar |
Поле ввода |
|
Сдано |
Sdano |
numeric |
Поле ввода |
|
Вывезено, сдано на захоронение |
Vyvez1 |
numeric |
Поле ввода |
|
Вывезено, сдано на захоронение |
Vyvez2 |
numeric |
Поле ввода |
|
Оплачено за переработку |
Oplach_pererab |
numeric |
Поле ввода |
|
Получено за переработку |
Poluch_pererab |
numeric |
Поле ввода |
|
Дата ввода |
D_vvoda |
smalldatetime |
Системная запись |
|
Пользователь |
Username |
varchar |
Системная запись |
Таблица 5 - Входные данные таблицы OTH_Source
Наименование |
Идентификатор |
Тип данных |
Источник данных |
|
Номер записи |
Nzap |
int |
Счетчик |
|
Количество |
Kol |
numeric |
Поле ввода |
|
Подразделение |
Podr |
varchar |
Определяется при регистрации |
|
Номер записи справочника |
Nzap_Spr |
int |
Таблица OTH_Spr |
|
Номер записи накладной |
N_zap_move |
int |
Таблица OTH_Move |
|
Признак формирования |
Pr_form |
bit |
Поле ввода |
|
Дата ввода |
D_vvoda |
smalldatetime |
Системная запись |
|
Пользователь |
Username |
varchar |
Системная запись |
Таблица 6 - Входные данные таблицы OTH_Spr
Наименование |
Идентификатор |
Тип данных |
Источник данных |
|
Номер записи |
Nzap |
int |
Счетчик |
|
Код отхода |
Kod |
varchar |
Поле ввода |
|
Наименование отхода |
Naim |
varchar |
Поле ввода |
|
Описание |
TP |
varchar |
Поле ввода |
|
Код единицы измерения |
Kod_ed |
smallint |
Таблица Spr_Ed_Izm |
|
Признак удаления |
Del_Pr |
smallint |
Поле ввода |
|
Дата ввода |
D_vvoda |
smalldatetime |
Системная запись |
|
Пользователь |
Username |
varchar |
Системная запись |
Таблица 7 - Входные данные таблицы OTH_Spr_Org
Наименование |
Идентификатор |
Тип данных |
Источник данных |
|
Номер записи |
Nzap |
int |
Счетчик |
|
Код организации |
Kod |
varchar |
Поле ввода |
|
Наименование |
Naim |
varchar |
Поле ввода |
|
Лицензия |
Licence |
varchar |
Поле ввода |
|
Дата выдачи лицензии |
D_Licence |
smalldatetime |
Поле ввода |
|
Признак удаления |
Del_Pr |
smallint |
Поле ввода |
|
Дата ввода |
D_vvoda |
smalldatetime |
Системная запись |
|
Пользователь |
Username |
varchar |
Системная запись |
Таблица 8 - Входные данные таблицы Password_OTH
Наименование |
Идентификатор |
Тип данных |
Источник данных |
|
Пароль |
password |
char |
Поле ввода |
|
Подразделение |
dep |
char |
Поле ввода |
Таблица 9 - Входные данные таблицы Spr_Ed_Izm
Наименование |
Идентификатор |
Тип данных |
Источник данных |
|
Код |
Kod |
int |
Счетчик |
|
Наименование |
Naim |
varchar |
Поле ввода |
|
Наименование полное |
nlong |
varchar |
Поле ввода |
2.1.3 Описание выходной информации
2.1.3.1. Выходные документы
Выходные документы - «Накладная на отпуск материалов на сторону» и «Журнал учета образования и движения отходов» представлены в Приложении 1 и Приложении 2 соответственно.
2.1.3.2 Описание выходных данных.
Выходные данные представлены в таблице 10.
Таблица 10 - Выходные данные
Наименование |
Идентификатор |
Тип данных |
Источник данных |
|
Получено другим подразделением |
Poluch_dr_podr |
numeric |
Таблица БД OTH_Move |
|
Использовано предприятием |
Ispolz_predpr |
numeric |
Таблица БД OTH_Move |
|
Передано населению |
Peredano_nas |
numeric |
Таблица БД OTH_Move |
|
Дата составления |
D_form |
smalldatetime |
Таблица БД OTH_Move |
|
Номер накладной |
N_nakl |
varchar |
Таблица БД OTH_Move |
|
Сдано |
Sdano |
numeric |
Таблица БД OTH_Move |
|
Вывезено, сдано на захоронение |
Vyvez1 |
numeric |
Таблица БД OTH_Move |
|
Вывезено, сдано на захоронение |
Vyvez2 |
numeric |
Таблица БД OTH_Move |
|
Оплачено за переработку |
Oplach_pererab |
numeric |
Таблица БД OTH_Move |
|
Получено за переработку |
Poluch_pererab |
numeric |
Таблица БД OTH_Move |
|
Количество |
Kol |
numeric |
Таблица БД OTH_Source |
|
Код отхода |
Kod |
varchar |
Таблица БД OTH_Spr |
|
Описание |
TP |
varchar |
Таблица БД OTH_Spr |
|
Наименование |
Naim |
varchar |
Таблица БД OTH_Spr_Org |
|
Лицензия |
Licence |
varchar |
Таблица БД OTH_Spr_Org |
|
Организация |
Edit1 |
string |
Поле ввода |
|
Структурное подразделение получателя |
Edit11 |
string |
Поле ввода |
|
Основание |
Edit2 |
string |
Поле ввода |
|
Кому |
Naim |
varchar |
Поле ввода |
|
Через кого |
Edit3 |
string |
Поле ввода |
|
Отпуск разрешил (должность) |
Edit4 |
string |
Поле ввода |
|
Отпуск разрешил (расшифровка подписи) |
Edit5 |
string |
Поле ввода |
|
Отпустил (должность) |
Edit6 |
string |
Поле ввода |
|
Отпустил (расшифровка подписи) |
Edit7 |
string |
Поле ввода |
|
Главный бухгалтер (расшифровка подписи) |
Edit8 |
string |
Поле ввода |
2.1.4 Математическая модель
Математическая модель задачи показана в формуле (1).
, (1)
где Sum -общее количество образовавшегося отхода одного вида;
Koli - количество единовременно образовавшегося отхода.
2.1.5 Логическая модель задачи
Логическая модель задачи представлена на рисунке 1.
Рис.1
2.1.6 Требования к программе
2.1.6.1 Функциональные требования
В программе должны быть реализованы следующие функции:
- ведение справочника видов отходов;
- ведение справочника взаимодействующих организаций;
- ввод и корректировка данных по отходам и подразделениям;
- просмотр информации по видам отходов с подсуммированием количества;
- формирование накладных по отпуску материалов;
- формирование журнала учета образования и движения отходов.
2.1.6.2 Требования к надежности
Безопасность данных гарантируется за счет системы распределения прав доступа пользователей.
Программа должна отвечать следующим требованиям надежности:
- вывод результатов только в том случае, если введены все данные;
- формирование отчетов только в том случае, если выполнены условия отбора данных.
2.1.6.3 Требования к интерфейсу программы
Для обеспечения максимального удобства и эффективности работы с данными необходимо предусмотреть наличие в приложении следующих элементов интерфейса.
Программа должна содержать:
- интуитивно понятный для пользователя интерфейс;
- наличие меню;
- наличие справочной информации.
2.2 Информационная модель программы решения задачи
2.2.1 Структура таблиц базы данных
Структура таблицы OTH_Move представлена в таблице 11.
Таблица 11 - Структура таблицы OTH_Move
Таблица |
Имя поля |
Тип данных |
Размерность |
|
OTH_Move |
Nzap |
int |
4 |
|
Nzap_Spr |
int |
4 |
||
Poluch_dr_podr |
numeric |
9 |
||
Ispolz_predpr |
numeric |
9 |
||
Peredano_nas |
numeric |
9 |
||
Nzap_org |
int |
4 |
||
D_form |
smalldatetime |
4 |
||
N_nakl |
varchar |
24 |
||
Sdano |
numeric |
9 |
||
OTH_Move |
Vyvez1 |
numeric |
9 |
|
Vyvez2 |
numeric |
9 |
||
Oplach_pererab |
numeric |
9 |
||
Poluch_pererab |
numeric |
9 |
||
D_vvoda |
smalldatetime |
4 |
||
Username |
varchar |
25 |
Структура таблицы OTH_Source представлена в таблице 12.
Таблица 12 - Структура таблицы OTH_Source
Таблица |
Имя поля |
Тип данных |
Размерность |
|
OTH_Source |
Nzap |
int |
4 |
|
Podr |
varchar |
24 |
||
Nzap_Spr |
int |
4 |
||
Kol |
numeric |
9 |
||
N_zap_move |
int |
4 |
||
Pr_form |
bit |
1 |
||
D_vvoda |
smalldatetime |
4 |
||
Username |
varchar |
25 |
Структура таблицы OTH_Spr представлена в таблице 13.
Таблица 13 - Структура таблицы OTH_Spr
Таблица |
Имя поля |
Тип данных |
Размерность |
|
OTH_Spr |
Nzap |
int |
4 |
|
Kod |
varchar |
24 |
||
Naim |
varchar |
200 |
||
TP |
varchar |
200 |
||
Kod_ed |
smallint |
2 |
||
Del_Pr |
smallint |
2 |
||
D_vvoda |
smalldatetime |
4 |
||
Username |
varchar |
25 |
Структура таблицы OTH_Spr_Org представлена в таблице 14.
Таблица 14 - Структура таблицы OTH_Spr_Org
Таблица |
Имя поля |
Тип данных |
Размерность |
|
OTH_Spr_Org |
Nzap |
int |
4 |
|
Kod |
varchar |
24 |
||
Naim |
varchar |
200 |
||
Licence |
varchar |
24 |
||
D_Licence |
smalldatetime |
4 |
||
Del_Pr |
smallint |
2 |
||
D_vvoda |
smalldatetime |
4 |
||
Username |
varchar |
25 |
Структура таблицы Password_OTH представлена в таблице 15.
Таблица 15 - Структура таблицы Password_OTH
Таблица |
Имя поля |
Тип данных |
Размерность |
|
Password_OTH |
password |
char |
3 |
|
dep |
char |
3 |
Структура таблицы Spr_Ed_Izm представлена в таблице 16.
Таблица 16 - Структура таблицы Spr_Ed_Izm
Таблица |
Имя поля |
Тип данных |
Размерность |
|
Spr_Ed_Izm |
Kod |
int |
4 |
|
Naim |
varchar |
15 |
||
nlong |
varchar |
50 |
2.2.2 Связи между таблицами базы данных и файлами
Связи между таблицами показаны на рисунке 2.
Рис.2 Связи между таблицами базы данных
2.3 Логическая модель программы
2.3.1 Структурная диаграмма
Структурная диаграмма представлена на рисунке 3.
Рис.3 Структурная диаграмма
2.3.2 Логическая структура программы
Логическая структура программы представлена на рисунке 4.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Рис.4 Логическая структура
2.3.3 Обобщенные алгоритмы модулей программы
Обобщенные алгоритмы модулей программы изображены на рисунках 5-13.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Рис.5 Модуль «Справочник отходов»
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Рис.6 Модуль «Справочник организаций»
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Рис.7 Модуль «Справочник единиц измерения»
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Рис.8 Модуль «Регистрация»
Рис.9 Модуль «Главное меню»
Рис.10 Модуль «Ввод образовавшегося отхода»
Рис.11 Модуль «Создание накладной»
Рис.12 Модуль «Накладная»
Рис.13 Модуль «Журнал учета образования и движения отходов»
2.4 Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Db, ADODB, ExtCtrls, DBTables, Mask, DBCtrls,
DBGridEh, GridsEh;//, GridsEh;
type
TForm1 = class(TForm)
Button1: TButton;
Bevel1: TBevel;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit5: TDBEdit;
DBComboBox2: TDBComboBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button4: TButton;
ComboBox1: TComboBox;
DBGridEh1: TDBGridEh;
Edit1: TEdit;
Label1: TLabel;
Label9: TLabel;
RadioGroup1: TRadioGroup;
Button2: TButton;
Button3: TButton;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBEdit2KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure Button3Click(Sender: TObject);
procedure Edit2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
DataModule2.Query1.Close;
DataModule2.Query1.SQL.Clear;
DataModule2.Query1.SQL.Add('Select * from OTH_Spr;');
DataModule2.Query1.Open;
DataModule2.Table2.Open;
DataModule2.Table2.First;
while NOT DataModule2.Table2.Eof do
begin
ComboBox1.Items.Add(DataModule2.Table2.Fields[1].Value);
DataModule2.Table2.Next;
end;
DataModule2.Table2.Close;
DBComboBox2.Items.Add('0');
DBComboBox2.Items.Add('1');
Button4.Visible:=false;
DataModule2.Table2.Open;
DataModule2.Table2.First;
while NOT DataModule2.Table2.Eof do
begin
if DataModule2.Table2.Fields[1].Value=ComboBox1.Text
then begin Edit2.Text:=DataModule2.Table2.Fields[0].Value;
break; end
else DataModule2.Table2.Next;
end;
DataModule2.Table2.Close;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
DataModule2.Database1.StartTransaction;
try
DataModule2.Query1.FieldByName('Kod_ed').AsInteger:=StrToInt(Edit2.Text);
DataModule2.Query1.Post;
RadioGroup1.Visible:=true;
Button1.Visible:=true;
Button4.Visible:=False;
Button3.Visible:=true;
DBGridEh1.Visible:=true;
Edit1.ReadOnly:=false;
Form1.Height:=495;
except
ShowMessage('Ошибка. Все несохраненные действия отменены');
DataModule2.Database1.Rollback;
//Button2.Click;
exit;
end;
DataModule2.Database1.Commit;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RadioGroup1.Visible:=false;
Form1.Height:=660;
DataModule2.Query1.Insert;
ComboBox1.ItemIndex:=0;
DBComboBox2.ItemIndex:=0;
Button4.Visible:=true;
Button3.Visible:=false;
Button1.Visible:=False;
DBGridEh1.Visible:=false;
Edit1.ReadOnly:=true;
ComboBox1Change(Sender);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
RadioGroup1.Visible:=true;
Edit1.ReadOnly:=false;
DataModule2.Query1.Cancel;
DBGridEh1.Visible:=true;
Button1.Visible:=true;
Button3.Visible:=true;
Button4.Visible:=false;
DBGridEh1.Visible:=true;
Form1.Height:=495;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
DataModule2.Table2.Open;
DataModule2.Table2.First;
while NOT DataModule2.Table2.Eof do
begin
if DataModule2.Table2.Fields[1].Value=ComboBox1.Text
then begin Edit2.Text:=DataModule2.Table2.Fields[0].Value;
break; end
else DataModule2.Table2.Next;
end;
DataModule2.Table2.Close;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var fil: string;
begin
fil:='%'+edit1.text+'%';
if edit1.Text>'' then
begin
DataModule2.Query1.Close;
DataModule2.Query1.SQL.Clear;
DataModule2.Query1.SQL.Add('SELECT * from OTH_Spr where Kod LIKE "'+fil+'"'+' OR Naim LIKE "'+fil+'"');
DataModule2.Query1.Open;
end
else
begin
DataModule2.Query1.Close;
DataModule2.Query1.SQL.Clear;
DataModule2.Query1.SQL.Add('SELECT * from OTH_Spr');
DataModule2.Query1.Open;
end;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
DataModule2.Query1.Filtered:=False;
if RadioGroup1.ItemIndex=1 then
begin
DataModule2.Query1.Filter:='Del_Pr=0';
DataModule2.Query1.Filtered:=True;
end;
if RadioGroup1.ItemIndex=2 then
begin
DataModule2.Query1.Filter:='Del_Pr=1';
DataModule2.Query1.Filtered:=True;
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
RadioGroup1.Visible:=true;
Form1.Height:=495;
Edit1.ReadOnly:=false;
DBGridEh1.Visible:=true;
Button3.Visible:=true;
Button1.Visible:=true;
Button4.Visible:=false;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataModule2.Query1.Cancel;
end;
procedure TForm1.DBEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if not ((key in['0'..'9'])or (key =#8)) then key:=#0;
end;
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
key:=#0;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
RadioGroup1.Visible:=false;
Form1.Height:=660;
Edit1.ReadOnly:=true;
DataModule2.Query1.Edit;
Button1.Visible:=false;
Button4.Visible:=true;
Button3.Visible:=false;
DBGridEh1.Visible:=false;
Edit2.Text:=DataModule2.Query1.FieldByName('Kod_ed').AsString;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
If Edit2.text='' then ComboBox1.Text:='' else
begin
DataModule2.Table2.Open;
DataModule2.Table2.First;
while NOT DataModule2.Table2.Eof do
begin
if Edit2.Text=DataModule2.Table2.Fields[0].Value
then begin ComboBox1.Text:=DataModule2.Table2.Fields[1].Value;
break;
end
else DataModule2.Table2.Next;
end;
DataModule2.Table2.Close;
end;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables;
type
TDataModule2 = class(TDataModule)
DataSource1: TDataSource;
Table2: TTable;
Table3: TTable;
Query1: TQuery;
DataSource2: TDataSource;
Query2: TQuery;
DataSource3: TDataSource;
Query3: TQuery;
Query4: TQuery;
Query5: TQuery;
DataSource5: TDataSource;
Query6: TQuery;
DataSource6: TDataSource;
Query7: TQuery;
DataSource7: TDataSource;
Query8: TQuery;
Query9: TQuery;
Query10: TQuery;
DataSource10: TDataSource;
Database1: TDatabase;
Query11: TQuery;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule2: TDataModule2;
implementation
{$R *.DFM}
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Mask, DBCtrls, DBCGrids, Buttons, DBGridEh,
ExtCtrls, GridsEh;//, GridsEh, ComCtrls;
type
TForm3 = class(TForm)
Label1: TLabel;
Button3: TButton;
Button4: TButton;
Button1: TButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label7: TLabel;
DBComboBox1: TDBComboBox;
Label8: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBGridEh1: TDBGridEh;
Label6: TLabel;
Edit1: TEdit;
RadioGroup1: TRadioGroup;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure DBEdit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm3.FormCreate(Sender: TObject);
begin
DBComboBox1.Items.Add('0');
DBComboBox1.Items.Add('1');
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add('Select * from OTH_Spr_Org;');
DataModule2.Query2.Open;
DBGridEh1.Visible:=true;
Button1.Visible:=true;
Button4.Visible:=false;
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
RadioGroup1.Visible:=false;
Form3.Height:=575;
DataModule2.Query2.Insert;
DBComboBox1.ItemIndex:=0;
DBGridEh1.Visible:=false;
Button2.Visible:=False;
Button1.Visible:=false;
Button4.Visible:=true;
Edit1.ReadOnly:=true;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
RadioGroup1.Visible:=true;
Form3.Height:=460;
DataModule2.Query2.Cancel;
DBGridEh1.Visible:=true;
Button1.Visible:=true;
Button2.Visible:=true;
Button4.Visible:=false;
Edit1.ReadOnly:=false;
end;
procedure TForm3.Button4Click(Sender: TObject);
begin
DataModule2.Database1.StartTransaction;
try
DataModule2.Query2.Post;
RadioGroup1.Visible:=true;
Form3.Height:=460;
DBGridEh1.Visible:=true;
Button1.Visible:=true;
Button2.Visible:=true;
Button4.Visible:=false;
Edit1.ReadOnly:=false;
except
ShowMessage('Ошибка. Все несохраненные действия отменены');
DataModule2.Database1.Rollback;
exit;
end;
DataModule2.Database1.Commit;
end;
procedure TForm3.Edit1Change(Sender: TObject);
var fil: string;
begin
fil:='%'+edit1.text+'%';
if edit1.Text>'' then
begin
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add('SELECT * from OTH_Spr_Org where Naim LIKE "'+fil+'"');
DataModule2.Query2.Open;
end
else
begin
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add('Select * from OTH_Spr_Org');
DataModule2.Query2.Open;
end;
end;
procedure TForm3.RadioGroup1Click(Sender: TObject);
begin
DataModule2.Query2.Filtered:=False;
if RadioGroup1.ItemIndex=1 then
begin
DataModule2.Query2.Filter:='Del_Pr=0';
DataModule2.Query2.Filtered:=True;
end;
if RadioGroup1.ItemIndex=2 then
begin
DataModule2.Query2.Filter:='Del_Pr=1';
DataModule2.Query2.Filtered:=True;
end;
end;
procedure TForm3.FormActivate(Sender: TObject);
begin
RadioGroup1.Visible:=true;
Form3.Height:=460;
Edit1.ReadOnly:=false;
DBGridEh1.Visible:=true;
Button1.Visible:=true;
Button2.Visible:=true;
Button4.Visible:=false;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
RadioGroup1.Visible:=false;
Form3.Height:=575;
DataModule2.Query2.Edit;
DBGridEh1.Visible:=false;
Button2.Visible:=false;
Button1.Visible:=false;
Button4.Visible:=true;
Edit1.ReadOnly:=true;
end;
procedure TForm3.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if not ((key in['0'..'9'])or (key =#8)) then key:=#0;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, SHELLAPI;
type
TForm4 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N11Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit1, Unit3, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10, Unit11;
{$R *.DFM}
procedure TForm4.N2Click(Sender: TObject);
begin
Form1.ShowModal;
end;
procedure TForm4.N3Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm4.N4Click(Sender: TObject);
begin
Form5.ShowModal;
end;
procedure TForm4.N7Click(Sender: TObject);
begin
Form7.Close;
end;
procedure TForm4.N9Click(Sender: TObject);
begin
Form6.ShowModal;
end;
procedure TForm4.N8Click(Sender: TObject);
begin
Form9.ShowModal;
end;
procedure TForm4.N6Click(Sender: TObject);
begin
Form10.ShowModal;
end;
procedure TForm4.N12Click(Sender: TObject);
begin
Form11.ShowModal;
end;
procedure TForm4.N11Click(Sender: TObject);
begin
ShellExecute(Application.Handle,'open', PChar('hh.exe'),PChar('C:\РАТЕП\help1.chm'), nil, SW_SHOW);
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Mask, DBCtrls;
type
TForm5 = class(TForm)
DBGrid1: TDBGrid;
Button2: TButton;
Button4: TButton;
Button1: TButton;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBEdit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm5.Button1Click(Sender: TObject);
begin
Form5.Height:=430;
DataModule2.Query3.Insert;
DBGrid1.Visible:=false;
Button1.Visible:=false;
Button4.Visible:=true;
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
Form5.Height:=345;
DataModule2.Query3.Cancel;
DBGrid1.Visible:=true;
Button1.Visible:=true;
Button4.Visible:=false;
end;
procedure TForm5.Button4Click(Sender: TObject);
begin
DataModule2.Database1.StartTransaction;
try
DataModule2.Query3.Post;
Form5.Height:=345;
except
ShowMessage('Ошибка. Все несохраненные действия отменены');
DataModule2.Database1.Rollback;
exit;
end;
DataModule2.Database1.Commit;
end;
procedure TForm5.FormCreate(Sender: TObject);
begin
DataModule2.Query3.Close;
DataModule2.Query3.SQL.Clear;
DataModule2.Query3.SQL.Add('Select * from Spr_Ed_Izm;');
DataModule2.Query3.Open;
DBGrid1.Visible:=true;
Button1.Visible:=true;
Button4.Visible:=false;
end;
procedure TForm5.FormActivate(Sender: TObject);
begin
Form5.Height:=345;
DBGrid1.Visible:=true;
Button1.Visible:=true;
Button4.Visible:=false;
end;
procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataModule2.Query3.Cancel;
end;
procedure TForm5.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if not ((key in['0'..'9'])or (key =#8)) then key:=#0;
end;
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, DBGridEh, Mask, DBCtrls, ExtCtrls, GridsEh;//,GridsEh;
type
TForm6 = class(TForm)
Label1: TLabel;
ComboBox1: TComboBox;
Label2: TLabel;
ComboBox2: TComboBox;
Label3: TLabel;
DBGridEh1: TDBGridEh;
Button5: TButton;
Label6: TLabel;
Edit4: TEdit;
Edit1: TEdit;
Label4: TLabel;
Button1: TButton;
Button2: TButton;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure OTHODY();
procedure ComboBox1Change(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Unit2, Unit1, Unit8;
{$R *.DFM}
procedure TForm6.FormCreate(Sender: TObject);
begin
//Подразделения
ComboBox1.Clear;
DataModule2.Query4.Close;
DataModule2.Query4.SQL.Clear;
DataModule2.Query4.SQL.Add('Select * from Password_OTH;');
DataModule2.Query4.Open;
DataModule2.Query4.First;
while NOT DataModule2.Query4.Eof do
begin
If DataModule2.Query4.Fields[1].AsString<>'0' then
ComboBox1.Items.Add(DataModule2.Query4.Fields[1].AsString);
DataModule2.Query4.Next;
end;
DataModule2.Query4.Close;
//Виды отходов
ComboBox2.Clear;
DataModule2.Query4.Close;
DataModule2.Query4.SQL.Clear;
DataModule2.Query4.SQL.Add('Select * from OTH_Spr;');
DataModule2.Query4.Open;
DataModule2.Query4.First;
while NOT DataModule2.Query4.Eof do
begin
ComboBox2.Items.Add(DataModule2.Query4.Fields[2].AsString);
DataModule2.Query4.Next;
end;
DataModule2.Query4.Close;
If (ComboBox2.Text>'') then
begin
Button5.Visible:=true;
Form6.Height:=530;
end
else begin
Button5.Visible:=false;
Form6.Height:=425;
end;
ComboBox2Change(Sender);
end;
procedure TForm6.ComboBox2Change(Sender: TObject);
var Summa_OTH: variant;
begin
if ComboBox1.Text<>'' then Button5.Visible:=false;
if ComboBox2.Text='' then Edit4.Text:='0';
DataModule2.Query4.Close;
DataModule2.Query4.SQL.Clear;
DataModule2.Query4.SQL.Add('Select * from OTH_Spr;');
DataModule2.Query4.Open;
DataModule2.Query4.First;
while NOT DataModule2.Query4.Eof do
begin
if DataModule2.Query4.Fields[2].AsString=ComboBox2.Text
then begin
Edit1.Text:=DataModule2.Query4.Fields[0].AsString;
break;
end
else DataModule2.Query4.Next;
end;
DataModule2.Query4.Close;
OTHODY;
IF ComboBox2.Text<>'' then
begin
Summa_OTH:=0;
DataModule2.Query5.First;
while NOT DataModule2.Query5.Eof do
begin
Summa_OTH:=Summa_OTH+ DataModule2.Query5.Fieldbyname('kol').AsVariant;
DataModule2.Query5.Next;
end;
Edit4.Text:=Summa_OTH;
end;
If (ComboBox2.Text>'') then
begin
Button5.Visible:=true;
Form6.Height:=530;
end
else begin
Button5.Visible:=false;
Form6.Height:=425;
end;
end;
Procedure TForm6.OTHODY();
begin
//Загрузка отходов по виду и подразделению
DataModule2.Query5.Filtered:=False;
DataModule2.Query5.Filter:='';
//первое введено, второе-нет
If (ComboBox1.Text>'') and (ComboBox2.Text='')
then DataModule2.Query5.Filter:='[Pr_Form]=0 and [Podr]='+ComboBox1.Text
else
//первое не введено, второе-введено
if (ComboBox1.Text='') and (ComboBox2.Text>'')
then DataModule2.Query5.Filter:='[Pr_Form]=0 and [Nzap_Spr]='+Edit1.Text
else
//если все введено
if (ComboBox1.Text>'') and (ComboBox2.Text>'')
then DataModule2.Query5.Filter:='[Pr_Form]=0 and [Podr]='+ComboBox1.Text+' and [Nzap_Spr]='+Edit1.Text;
{else begin DataModule2.Query5.Filtered:=false;
exit;
end; }
DataModule2.Query5.Filtered:=true;
end;
procedure TForm6.ComboBox1Change(Sender: TObject);
begin
OTHODY;
ComboBox2Change(Sender);
if ComboBox1.Text<>'' then Button5.Visible:=false;
end;
procedure TForm6.Button5Click(Sender: TObject);
begin
If (ComboBox2.Text>'') then
begin
DataModule2.Query7.Open;
DataModule2.Query7.Insert;
//Form8.DBEdit2.Text:=ComboBox1.Text;
Form8.Edit10.Text:=ComboBox2.Text;
Form8.DBEdit7.Text:=Edit4.Text;
Form8.Edit9.Text:=DataModule2.Query5.FieldByName('Naim_1').AsStrin;
Form8.ShowModal;
end
else ShowMessage('Сначала выберите вид отхода');
end;
procedure TForm6.FormActivate(Sender: TObject);
begin
ComboBox2.Text:='';
If (ComboBox2.Text>'') then Button5.Visible:=true
else Button5.Visible:=false;
ComboBox2Change(Sender);
end;
procedure TForm6.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not ((key in['0'..'9'])or (key =#8)or (key =#44)) then key:=#0;
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
if DataModule2.Query5.Fields[0].AsString>'' then
begin
if edit2.text>'' then
begin
DataModule2.Query9.Open;
DataModule2.Query9.Locate('Nzap',DataModule2.Query5.Fields[0].AsVariant,[]);
DataModule2.Query9.Edit;
DataModule2.Query9.FieldByName('Kol').AsVariant:= Edit2.Text;
DataModule2.Query9.Post;
DataModule2.Query9.Close;
DataModule2.Query5.Close; DataModule2.Query5.Open;
ShowMessage('Изменено количество!');
Edit2.Text:='';
ComboBox2Change(Sender );
end
else ShowMessage('Сначала введите количество');
end else ShowMessage('Вы не выбрали запись!');
end;
procedure TForm6.Button1Click(Sender: TObject);
begin
if DataModule2.Query5.Fields[0].AsString>'' then
begin
if MessageDlg('Подтвердите удаление записи', mtInformation, [mbYes,mbNo], 0)=mrYes
then
begin
DataModule2.Query9.Open;
DataModule2.Query9.Locate('Nzap',DataModule2.Query5.Fields[0].AsVariant,[]);
If DataModule2.Query9.FieldbyName('Pr_form').AsBoolean=true then
ShowMessage('Данный вид отхода находится в накладной. Удаление невозможно')
else DataModule2.Query9.Delete;
DataModule2.Query9.Close;
DataModule2.Query5.Close; DataModule2.Query5.Open;
Подобные документы
Проектирование программного продукта. Разработка базы данных средствами Microsoft Access. Разработка прикладных решений для информационной системы 1С: Предприятие 8.2. Изучение первичной, вторичной документации. Автоматизация учета и управление компанией.
курсовая работа [1,4 M], добавлен 14.12.2017Разработка программного обеспечения для автоматизации процесса учета поступления и формирования заказов. Построение реляционной базы данных средствами Microsoft Access. Методы повышения эффективности организации информационных потоков на предприятии.
дипломная работа [1,9 M], добавлен 02.12.2012Проектирование информационной системы для удобного ведения учета товара. Функциональная модель предметной области. Обоснование выбора языка программирования. Описание программы, руководство пользователя. Протокол тестирования программного продукта.
курсовая работа [537,6 K], добавлен 18.09.2014Принципы, цели и задачи автоматизации деятельности предприятия. Особенности процессов документооборота и их взаимосвязь на предприятии, занимающимся утилизацией опасных отходов. Разработка объектов конфигурации, их назначение в системе "1С:Предприятие".
дипломная работа [2,7 M], добавлен 11.10.2013Выбор системы программирования. Разработка программного обеспечения для ведения складского учета (инвентаризации) персональных компьютеров и комплектующих на предприятии. Обоснование даталогической модели данных. Рекомендации по применению программы.
курсовая работа [1,9 M], добавлен 14.01.2013Требования и порядок учета клиентов в современном бизнесе. Обзор современного рынка программных продуктов, предназначенных для автоматизации системы взаимоотношений с клиентами. Разработка и внедрение программного комплекса на предприятии ООО ТСС НН.
дипломная работа [2,9 M], добавлен 15.09.2012Автоматизация ведения учета товаров в программе "1С: Предприятие". Учет товаров для фирмы, занимающейся куплей-продажей продовольственных товаров. Ввод сведений об организации. Настройка параметров учета. Оформление поступления в организацию товаров.
дипломная работа [2,0 M], добавлен 02.07.2014Цель и основные составные части автоматизации. Характеристика ее объекта. Описание концептуальной модели предметной области. Обоснование выбора программного обеспечения. Разработка программы в среде Borland Delphi 7. Общий алгоритм работы приложения.
курсовая работа [368,6 K], добавлен 21.05.2015Описание складского учета ООО "Курочка рядом". Проведение инвентаризации на предприятии и возможности его автоматизации. Разработка программного обеспечения подсистемы складского учета. Описание задач разработанной подсистемы и средств ее взаимодействия.
дипломная работа [3,8 M], добавлен 12.04.2012Создание автоматизированной системы ведения оперативного учета на предприятии. Требования к составу и параметрам программно-технических средств. Выполнение программной части посредством интегрированной среды разработки MS Access с приложением Delphi.
дипломная работа [4,2 M], добавлен 21.10.2011