Автоматизация ведения учета образующихся отходов на предприятии

Разработка программного обеспечения "Сетевой программный комплекс "Автоматизация ведения учетов образования и движения отходов, образующихся на предприятии" с использованием системы программирования 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.