Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование реализации операций бизнес-процесса «Разработка стратегии охраны окружающей среды».

Содержание:

ВВЕДЕНИЕ

Актуальность исследования.

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

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

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

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

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

Для достижения данной цели необходимо решение следующих задач:

  • Описать документооборот на предприятию;
  • Описать бизнес-процессы;
  • Обосновать проектные решения по информационному обеспечению;
  • Обосновать проектные решения по программному обеспечению;
  • Описать информационную модель программы;
  • Описать программное обеспечение;
  • А так же описать пример реализации программы.

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

Работа состоит из введения, двух глав («Аналитическая часть», «Проектная часть»), заключения и списка использованной литературы.

ГЛАВА 1. АНАЛИТИЧЕСКАЯ ЧАСТЬ

1.1. Характеристика комплекса задач

1.1.1. Выбор комплекса задач автоматизации

Автоматизировать можно любую сферу деятельности. Главное в процессе автоматизации определиться что надо автоматизировать. То есть надо сформулировать точно задание для автоматизации. Так как правильность формулировки задания – это ключ к быстрому решению задачи.

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

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

1.1.2. Характеристика и существующих бизнес –процессов

Каждое предприятия ежедневно выбрасывают вредные вещества к окружающую среду. Но ежемесячно они предоставляют отчет в соответствующие государственные службы.

С данной информацией работает работник экологической службы. Он ежемесячно собирает информацию с каждого предприятия и работает с полученными данными.

Бизнес-процесс в данном случае который имеет место в данной области показан на рисунке 1:

Рисунок 1 – Бизнес-процессы

1.1.3. Характеристика документооборота, возникающего при решении задачи

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

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

Рисунок 2 – Схема документооборота

Проанализируем рисунок 2 более детально. Замечаем что, имеет место обработки информации в автоматизированном режиме. Но, следует отметить, что работники сталкиваются с некоторыми недочетами в таком режиме работы. Это происходи потому, что кроме заполнения электронных таблиц, работники параллельно ведут обработки информации в ручном режиме. А это приводит к тому, что есть следующие недостатки:

  • Хранение большого объема информации;
  • Работа с большим объемом данных;
  • Большая вредоносность ошибки;
  • Проблемы с исправлением, в случае ошибки;

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

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

1.2. Обоснование проектных решений

1.2.1. Обоснование проектных решений по информационному обеспечению

Для разработки базы данных была выбрана реляционная модель баз данных.

Обоснуем данный выбор и учтем тот факт, что есть другие модели баз данных – сетевая и иерархическая модель.

Итак, иерархическая модель баз данных. Это самая первая модель баз данных. Данные в ней хранятся в древовидном виде с дугами-связями и узлами-элементами данных. Иерархическая структура предполагала неравноправие между данными - одни жестко подчинены другим. Подобные структуры, безусловно, четко удовлетворяют требованиям многих, но далеко не всех реальных задач[1].

Данная модель имеет недостатки, среди которых можно выделить следующие:

  • Ограничения в организации отношении между сущностями. Иерархическая модель позволяет организовать последовательную связь "один ко многим" между данными, но не в состоянии реализовать отношения "многие ко многим".
  • Структурная зависимость. Иерархическая структура предполагала, что физически данные также станут храниться в виде дерева. Серьезное изменение структуры (например, переподчинение узлов) могло привести к тому, что прикладные приложения теряли возможность навигации по данным.
  • Сложность разработки прикладного программного обеспечения (ППО). Разработчик программ должен знать особенности физического хранения данных, иначе он мог просто заблудиться в запутанной системе указателей.

Ко всему прочему иерархическая модель не была стандартизирована. Как следствие всегда существовала проблема переносимости данных между приложениями различных разработчиков[2].

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

Сетевая модель данных определяется в тех же терминах, что и иерархическая. Она состоит из множества записей, которые могут быть владельцами или членами групповых отношений. Связь между записью-владельцем и записью-членом также имеет вид 1:N.

Основное различие этих моделей состоит в том, что в сетевой модели запись может быть членом более чем одного группового отношения. Согласно этой модели каждое групповое отношение именуется и проводится различие между его типом и экземпляром. Тип группового отношения задается его именем и определяет свойства общие для всех экземпляров данного типа. Экземпляр группового отношения представляется записью-владельцем и множеством (возможно пустым) подчиненных записей. При этом имеется следующее ограничение: экземпляр записи не может быть членом двух экземпляров групповых отношений одного типа[3].

К сожалению, сетевая модель также не свободна от недостатков:

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

сложность разработки прикладного программного обеспечения[4].

СУБД используют несколько моделей данных: иерархическую и сетевую (с 60-х годов) и реляционную (с 70-х). Основное различие данных моделей в представлении взаимосвязей между объектами.

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

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

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

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

В манипуляционной части модели базы данных утверждаются два механизма манипулирования базами данных – реляционное исчисление и реляционная алгебра.

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

БД состоит из таблиц, где хранятся все данных. Следует отметить, что каждая таблица обладает уникальны кодов.

В создаваемой программе должно быть выполнено ведение следующих классификаторов и справочников (с указанием их атрибутов):

  • Сброс отравляющих веществ:
    • Код предприятия,
    • дата сброса,
    • концентрация,
    • размер сброса,
    • код единицы измерения,
    • сумма ущерба,
  • предприятия:
    • код,
    • Наименование,
    • адрес,
    • телефон,
    • код города,
  • единицы измерения:
    • код,
    • наименование,
  • города:
    • код,
    • наименование, область.

1.2.2. Обоснование проектных решений по программному обеспечению

Для создания базы данных была СУБД Paradox .

СУБД Paradox - одна из самых старых локальных баз данных.

Система Paradox работает с таблицами по тому же принципу, что и dBase. То есть каждая таблица БД хранится в отдельном файле, MEMO- и BLOB-поля так же находятся отдельном файле, аналогичным образом организовано хранение индексов.

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

Если рассмотреть более первые версии системы, то можно сказать, что программистам баз данных предоставлялись существенно более расширенные возможности, такие как применение деловой графики в DOS-приложениях, обновление данных в приложениях при многопользовательской работе, визуальные средства построения запросов, на основе интерфейса QBE — Query by Example, средства статистического анализа данных, а также средства визуального построения интерфейсов пользовательских приложений с автоматической генерацией кода на языке программирования PAL.

Кроме того, СУБД Paradox, позволяет манипулировать данными других форматов, в том числе dBase и данными, которые хранятся в серверных СУБД. Это возможно за счет применение библиотеки Borland Database Engine и драйверов SQL Links. Это позволило использовать Paradox в качестве универсального средства управления различными базами данных[6].

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

Система Paradox обладает практически такой-же или даже превосходящую производительность чем DBase/FoxPro, однако имеет значительно более слабую собственную среду программирования.

Язык прикладного программирования СУБД Paradox не очень сложный, поэтому его легко учить. Для создания простых прикладных программ система Paradox может запомнить последовательно вводимые команды и затем преобразовать их в файл сценария для последующего воспроизведения команд. Специалисты в области программирования с помощью данной системы могут разрабатывать очень сложные прикладные программы. В Paradox for Windows существует объектно-ориентированная версия PAL, называемая Object PAL.

СУБД Paradox может использовать расширенную и дополнительную память, позволяет создавать базы данных объемом до двух миллиардов записей с числом полей на одну запись до 255[7].

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

Для реализации данной задачи была выбрана среда программирования Delphi версии 5.0.

Среда разработки Delphi представляет собой среду быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi это строго типизированный объектно-ориентированный язык, в основе которого взят язык Object Pascal.

Таким образом, можно сказать, что Delphi – это:

– высокопроизводительный компилятор в машинный код;

– объектно-ориентированная модель компонент;

– визуальное создание приложений из программных прототипов;

– масштабируемые средства для построения баз данных[8].

При выборе среды разработки были учтены преимущества Delphi, а именно:

  • Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.
  • Быстрая скорость разработки приложений, за счет максимальной производительности кода.
  • Улучшенная отладка созданных программ. Интегрированный отладчик Delphi имеет много полезных свойств.
  • Визуальное построение приложений позволяет быстро и качественно создать интерфейс программы.
  • В стандартную поставку Delphi входят основные объекты из 270 базовых классов. То есть можно разрабатывать как программы, так и программы с использованием баз данных, а так же можно использовать для разработки игр[9].
  • Простые и функциональные способы построения баз данных (БД).
  • Разработчик программ может самостоятельно строить объекты для Delphi. Это очень полезно для составления уникальных приложений[10].

Среди недостатков можно выделать следующие:

  • Delphi позволяет приложение разбить на отдельно компилируемые независимые пакеты BPL.
  • Многопоточность в Delphi есть, можно сказать, что это самый простой, но не самый удобный и правильный способ реализации многопоточности процессов приложения.
  • Хоть Object Pascal и можно считать модульным языком, однако модульность эта довольно относительная - можно сказать она больше работает в пределах одного приложения.
  • В Delphi реализована поддержка интерфейсов, что значительно облегчает работу программистов и делает разработку компонент и приложений более удобным и приятным.

В результате можно сделать вывод, что язык Delphi – это очень доступный для понимания, но в то же время и очень мощный язык программирования.

ГЛАВА 2. ПРОЕКТНАЯ ЧАСТЬ

2.1. Информационное обеспечение задачи

2.1.1. Информационная модель и её описание

Информационная модель представлена на рисунке ниже.

Рисунок 3. Информационная система программы

Заполнение справочников sov, pred, ediz, gorod выполняется при запуске программы, и каждый месяц (квартал), когда работник экологической службы получает данные от каждого предприятия. и только потом на основании полученных данных составляются отчеты.

Отчет создается на основание всех справочников.

2.1.2. Характеристика нормативно-справочной, входной и оперативной информации

Входная информация – это те данные, которые вводит оператор (данном случае работник экологической службы). То есть входной являются данные, которые хранятся в следующих справочниках - sov.db, pred.db, ediz.db, gorod.db.

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

Окно главной формы, условно разделено на четыре части, а именно:

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

Все выше описанные «области» главного окна программы показаны на рисунке 4.

Рисунок 4. Главная форма, «места» где вводится входная информация

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

В ниже представленной Таблице представлены все справочники программы.

Таблица 1– Список справочников в БД

Название справочника

Ответственный за ведение справочника

Средний объем справочника в записях

Средняя частота актуализации

(раз в год)

sov.db

Работник экологической службы

1000

100

pred.db

Работник экологической службы

100

10

ediz.db

Работник экологической службы

50

50

gorod.db

Работник экологической службы

100

10

2.1.3. Характеристика результатной информации

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

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

Рисунок 5. Кнопки отвечающие за отчеты

Следовательно, что бы получить отчет, надо нажать одну из выше перечисленных кнопок. В результате сформируется отчет. Например, если нажать кнопку «Перечень списка предприятий» получится следующий отчет (См. Рисунок 6).

Рисунок 6. Отчет по предприятиям

2.2. Программное обеспечение задачи

2.2.1. Общие положения (дерево функций и сценарий диалога)

Программа разрабатывается для работника экологической службы.

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

Дерево функций работника экологической службы показано на рисунке 7.

Рисунок 7. Дерево функции работника экологической службы.

На рисунке 8 представлен сценарий диалога со справочниками БД.

Рисунок 8. Сценарий диалога со справочниками БД

2.2.2. Характеристика базы данных

Так как цель работы – создание программы по теме: «Учет сброса отравляющих веществ в окружающую среду». То данное приложение состоит из основной таблицы и нескольких вспомогательных таблиц.

Основная таблица «Сброс отравляющих веществ» - pred.db. Сотоит из следующих полей:

  • Код предприятия,
  • дата сброса,
  • концентрация,
  • размер сброса,
  • код единицы измерения,
  • сумма ущерба.

Справочники (вспомогательные): предприятия (код, наименование, адрес, телефон, код города), единицы изерения (код, наименование), города (код, наименование, область).

Структура sov.db показана ниже:

Рисунок 9. Таблица sov.db

Где, «+» - поле автоинкрементного типа, при добавлении новой записи автоматически присваивается значение на единицу большее предыдущего

«А» - поле символьного типа, Size – размер поля (кол-во символов)

«D» - поле типа «Дата/Время»

Структура pred.db (предприятия) показано ниже:

Рисунок 10. Таблица pred.db

Структура ediz.db (единицы измерения) показана ниже:

Таблица 11. Таблица ediz.db

Структура gorod.db (города) показана ниже:

Рисунок 12. Таблица gorod.db

Далее в программе Delphi версии 5.0 была спроектирована форма, с элементами управления и написаны обработчики для каждого элемента.

2.2.3. Структурная схема пакета (дерево вызова программных модулей)

Разработанная программа состоит из трех составных частей - главной формы, формы для редактирования справочника «Города», и часть которая отвечает за вывод результатов – отчетов.

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

Структурная схема пакета показана на рисунке 13.

Рисунок 13. Структурная схема пакета

Выше представленный рисунок показывает, что программа состоит из трех частей:

  • Первая часть – это главная форма;
  • Вторая часть – это часть, которая отвечает за редактирование справочника «Города»;
  • Третья часть – это часть, которая отвечает за вывод результатов на печать или документы можно сохранить, то есть это отчеты.

2.2.4. Описание программных модулей

Программа «Учета выброса вредных веществ» состоит из пяти программных модулей:

Unit 1 – модуль обслуживает первую главную форму (Form1),

Unit 3 – третья вспомогательная форма (Form3), используется для редактирования справочника «Города»,

Unit4,Unit5,Unit6 – описание форм предназначенных для вывода на печать данных из таблиц (для этой цели была использована компонента QuickReport).

2.3. Контрольный пример реализации проекта и его описание

Главное окно программы показано на рисунке 14:

Рисунок 14. Главное окно программы

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

Компоненты «Сброс отравляющих веществ», которая объединяет несколько полей ввода и кнопки. Эти компоненты отвечают за заполнение, редактирование данных в справочник sov.db. То есть, после нажатия на кнопку «Добавить информацию» будет выполнена запись информации в таблицу, то есть добавится новая запись с данными в таблицу БД. При заполнение таблицы поле «N» заполняется автоматически. Кнопка «Удалить данные» выполняется указанное действие, то есть выполняется удаления выделенной указателем записи.

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

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

Компоненты «Предприятия» используется для добавления данных в pred.db. Компонент DBGrid3 – используется для визуального отображения данные из этой базы данных. Кнопка «Поиск» - осуществляет процесс поиска по следующим полям: «Наименование», «Адрес», «Код предприятия».

Кнопка «Редактировать» из данной группы компонентов, позволяет выполнить корректировку, в случае обнаружения ошибки. После внесения корректировки следует нажать «Добавить/Изменить».

При двойном щелчке на любой записи (то есть двойной щелчок по строчке в DBGrid3) в поле редактирования «Код предприятия» группы «Сброс отравляющих веществ» будет занесена информация из этой таблицы (поле «Код предприятия») – это облегчает занесение данных в таблицу.

Компоненты «Единицы измерения» - выполняет операции аналогично группе компонентов «Сброс отравляющих веществ». При двойном щелчке на любой записи в поле редактирования «Код единицы измерения» группы «Сброс отравляющих веществ» будет занесена информация из этой таблицы.

В результате нажатия на кнопку «Города» появляется форма, которая показана на рисунке 15:

Рисунок 15. Форма для ввода данных в таблицу «Города»

Визуальный компонент DBGrid4 используется для того, что бы отобразить данные из таблицы gorod.db. Для добавления новой записи разработана кнопка «Добавить».

Кнопка «Поиск» - выполняет фильтрацию по полям «Наименование» и «Область», поиск по полю «Код города».

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

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

Следует отметить, что связать одновременно можно только две таблицы.

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

ЗАКЛЮЧЕНИЕ

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

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

Для решения данной цели было выполнено:

  • Описан документооборот, который имеет место.
  • Описаны бизнес-процессы, которые имеют место.
  • Описана входная и результирующая информация.
  • Выбрана СУБД, для создания базы данных и обоснован выбор среды разработки.
  • В процессе разработки была создана БД, которая состоит из 4 таблиц.
  • Так же было создана схема пакета и дерево функций для данной программы.

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

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

СПИСОК ЛИТЕРАТУРЫ

  1. Осипов Д. Л. Базы данных и Delphi. Теория и практика. — СПб.: БХВ-Петербург, 2011. - 752 с.
  2. Лекция 5: Модели организации баз данных [онлайн] - URL: http://www.intuit.ru/studies/courses/3439/681/lecture/14023 (дата обращения 11.10.2016)
  3. Реляционная база данных [онлайн] - URL: http://base.mybloge.net/relyacionnaya-baza-dannyx/ (дата обращения 01.11.2016)
  4. Введение в базы данных. Часть 2. Настольные СУБД // А.Федоров, Н. Елманова [онлайн] - URL: http://compress.ru/article.aspx?id=10282 (дата обращения 01.11.2016)).
  5. Субд paradox [онлайн]- URL: http://uchebnik.biz/book/88-kompyuternye-seti/365-subd-paradox.html (дата обращения 01.11.2016)
  6. Обзор языков программирования и средств разработки на их основе [онлайн] - URL: http://bukvi.ru/computer/obzor-yazykov-programmirovaniya-i-sredstv-razrabotki-na-ix-osnove.html (дата обращения 01.11.2016)
  7. Преимущества и особенности Delphi [онлайн] - URL: http://starik2222.narod.ru/trpp/lec/11.htm (дата обращения 01.11.2016)
  8. Преимущества Delphi и напутствие начинающему программисту [онлайн] - URL: http://pisali.ru/raferti/41237/ (дата обращения 01.11.2016)

ПРИЛОЖЕНИЕ 1

Листинг программы

unit Unit1;

interface

uses

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

Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBTables, StdCtrls, Mask,

ComCtrls, Menus,ShellAPI,DateUtils,IniFiles;

type

TForm1 = class(TForm)

Edit2: TEdit;

Edit3: TEdit;

Button3: TButton;

Button4: TButton;

Button5: TButton;

DataSource2: TDataSource;

Table2: TTable;

DBGrid2: TDBGrid;

MaskEdit3: TMaskEdit;

MaskEdit4: TMaskEdit;

DataSource3: TDataSource;

Table3: TTable;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

DBGrid3: TDBGrid;

MaskEdit1: TMaskEdit;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Edit4: TEdit;

Label6: TLabel;

Edit5: TEdit;

Label7: TLabel;

Label8: TLabel;

Button10: TButton;

Button11: TButton;

Label10: TLabel;

MaskEdit5: TMaskEdit;

Label13: TLabel;

Button1: TButton;

Edit8: TEdit;

Label14: TLabel;

Edit1: TEdit;

Edit12: TEdit;

Label17: TLabel;

Button6: TButton;

Button7: TButton;

Button8: TButton;

Button9: TButton;

Button12: TButton;

GroupBox3: TGroupBox;

Label11: TLabel;

Label16: TLabel;

Edit6: TEdit;

Button13: TButton;

Button14: TButton;

DBGrid1: TDBGrid;

MaskEdit2: TMaskEdit;

Button15: TButton;

DataSource1: TDataSource;

Table1: TTable;

Table4: TTable;

DataSource4: TDataSource;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

RadioButton5: TRadioButton;

GroupBox4: TGroupBox;

RadioButton6: TRadioButton;

RadioButton7: TRadioButton;

procedure Button4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button10Click(Sender: TObject);

procedure Button11Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure DBGrid3DblClick(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure DBGrid2DblClick(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure Button13Click(Sender: TObject);

procedure Button15Click(Sender: TObject);

procedure Button14Click(Sender: TObject);

procedure DBGrid1DblClick(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

procedure RadioButton4Click(Sender: TObject);

procedure RadioButton5Click(Sender: TObject);

procedure RadioButton7Click(Sender: TObject);

procedure RadioButton6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

i,i2:integer;

implementation

uses Unit3, Unit4, Unit5, Unit6;

{$R *.dfm}

procedure form; //Установки для отображения таблиц

begin

Form1.DBGrid2.Columns.Items[1].Width:=150;

Form1.DBGrid2.Columns.Items[2].Width:=70;

Form1.DBGrid2.Columns.Items[3].Width:=150;

Form1.DBGrid2.Columns.Items[4].Width:=150;

Form1.DBGrid2.Columns.Items[5].Width:=150;

Form1.DBGrid2.Columns.Items[6].Width:=150;

Form1.DBGrid2.Columns[1].Title.Caption:='Код предприятия';

Form1.DBGrid2.Columns[2].Title.Caption:='Дата сброса';

Form1.DBGrid2.Columns[3].Title.Caption:='Концентрация';

Form1.DBGrid2.Columns[4].Title.Caption:='Размер сброса';

Form1.DBGrid2.Columns[5].Title.Caption:='Код ед. измерения';

Form1.DBGrid2.Columns[6].Title.Caption:='Сумма ущерба';

Form1.DBGrid3.Columns.Items[0].Width:=90;

Form1.DBGrid3.Columns.Items[1].Width:=170;

Form1.DBGrid3.Columns.Items[2].Width:=170;

Form1.DBGrid3.Columns.Items[3].Width:=90;

Form1.DBGrid3.Columns.Items[4].Width:=90;

Form1.DBGrid3.Columns[0].Title.Caption:='Код предприятия';

Form1.DBGrid3.Columns[1].Title.Caption:='Наименование';

Form1.DBGrid3.Columns[2].Title.Caption:='Адрес';

Form1.DBGrid3.Columns[3].Title.Caption:='Телефон';

Form1.DBGrid3.Columns[4].Title.Caption:='Код города';

Form1.DBGrid1.Columns.Items[0].Width:=90;

Form1.DBGrid1.Columns.Items[1].Width:=180;

Form1.DBGrid1.Columns[0].Title.Caption:='Код';

Form1.DBGrid1.Columns[1].Title.Caption:='Наименование';

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

RadioButton7.Checked:=true;

//Подключение таблиц и их активизация

Table3.DatabaseName:=ExtractFileDir(Application.ExeName)+'\DB\';

Table3.TableName:='pred.db';

Table2.DatabaseName:=ExtractFileDir(Application.ExeName)+'\DB\';

Table2.TableName:='sov.db';

Table1.DatabaseName:=ExtractFileDir(Application.ExeName)+'\DB\';

Table1.TableName:='ediz.db';

Table4.DatabaseName:=ExtractFileDir(Application.ExeName)+'\DB\';

Table4.TableName:='gorod.db';

Table4.Active:=true;

Table3.Active:=true;

Table1.Active:=true;

Table2.Active:=true;

form;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin //Дабавление данных о новом сбросе

if (trim(MaskEdit3.Text)<>'') and (trim(Edit2.Text)<>'') and (trim(MaskEdit1.Text)<>'. .') then

begin

Form1.Table2.Insert;

Form1.Table2.FieldByName('kod_ps').AsInteger:=strtoint(trim(MaskEdit3.Text));

try

Form1.Table2.FieldByName('data_s').AsString:=trim(MaskEdit1.Text);

except

Form1.Table2.Post;

Abort;

end;

Form1.Table2.FieldByName('kon').AsString:=trim(Edit2.Text);

Form1.Table2.FieldByName('raz').AsString:=trim(Edit3.Text);

Form1.Table2.FieldByName('kod_ed_izs').AsString:=trim(Edit8.Text);

Form1.Table2.FieldByName('summa').AsString:=trim(MaskEdit4.Text);

Form1.Table2.Post;

end

else MessageDlg('Заполните необходимые поля!',mtInformation,[mbOK],0);

end;

procedure TForm1.Button3Click(Sender: TObject);

begin //Поиск данных о сбросе по введенным параметрам

if trim(MaskEdit3.Text)<>'' then

begin

Form1.Table2.Locate('kod_ps',trim(MaskEdit3.Text),[]);

Abort;

end;

if (trim(Edit2.Text)<>'') then

begin

Form1.Table2.FilterOptions:=[foCaseInsensitive];

Form1.Table2.Filter:='kon = '''+trim(Edit2.Text)+'*''';

Form1.Table2.Filtered:=true;

end;

if trim(Edit2.Text)='' then Form1.Table2.Filtered:=false;

if (trim(Edit8.Text)<>'') then

begin

Form1.Table2.FilterOptions:=[foCaseInsensitive];

Form1.Table2.Filter:='kod_ed_izs ='''+trim(Edit8.Text)+'*''';

Form1.Table2.Filtered:=true;

end;

if (trim(Edit8.Text)='') and (trim(Edit2.Text)='') then Form1.Table2.Filtered:=false;

if trim(MaskEdit4.Text)<>'' then

begin

Form1.Table2.Locate('summa',trim(MaskEdit4.Text),[loPartialKey]);

Abort;

end;

if trim(MaskEdit1.Text)<>'. .' then

begin

{Form1.Table2.Locate('Data_s',trim(MaskEdit1.Text),[]);

Abort; }

Form1.Table2.FilterOptions:=[foCaseInsensitive];

Form1.Table2.Filter:='Data_s='''+trim(MaskEdit1.Text)+'''';

Form1.Table2.Filtered:=true;

end;

if trim(MaskEdit1.Text)='. .' then Form1.Table2.Filtered:=false;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin //Удаление записи о сбросе (Table2)

if (Table2.RecordCount>0) then

begin

if MessageDlg('Удалить запись о данном сбросе?',mtWarning,[mbYes,mbNo],0)= mrYes then

Table2.Delete

else Abort;

end;

end;

procedure TForm1.Button10Click(Sender: TObject);

//добавление данных в таблицу pred.db (сведения о предприятиях)

begin

if (trim(Edit4.Text)<>'') and (trim(MaskEdit5.Text)<>'') then

begin

if Form1.Table3.Locate('kod_p',trim(MaskEdit5.Text),[])=true then

begin

{MessageDlg('Запись с таким номером уже существует!',mtError,[mbOK],0);

Abort;}

if MessageDlg('Запись с таким номером уже существует! Изменить?',mtWarning,[mbYes,mbNo],0)= mrYes then

begin

Form1.Table3.Edit;

{Form1.Table3.FieldByName('kod_p').AsInteger:=strtoint(trim(MaskEdit5.Text)); }

Form1.Table3.FieldByName('naim_p').AsString:=trim(Edit4.Text);

Form1.Table3.FieldByName('Adres').AsString:=trim(Edit5.Text);

Form1.Table3.FieldByName('Tel').AsString:=trim(Edit1.Text);

Form1.Table3.FieldByName('kod_gp').AsString:=trim(Edit12.Text);

Form1.Table3.Post;

end;

Abort;

end;

Form1.Table3.Insert;

Form1.Table3.FieldByName('kod_p').AsInteger:=strtoint(trim(MaskEdit5.Text));

Form1.Table3.FieldByName('naim_p').AsString:=trim(Edit4.Text);

Form1.Table3.FieldByName('Adres').AsString:=trim(Edit5.Text);

Form1.Table3.FieldByName('Tel').AsString:=trim(Edit1.Text);

Form1.Table3.FieldByName('kod_gp').AsString:=trim(Edit12.Text);

Form1.Table3.Post;

end

else MessageDlg('Заполните необходимые поля!',mtInformation,[mbOK],0);

end;

procedure TForm1.Button11Click(Sender: TObject);

begin //удаление данных о предприятии

if (Table3.RecordCount>0) then

begin

if MessageDlg('Удалить запись о данном предприятии?',mtWarning,[mbYes,mbNo],0)= mrYes then

Table3.Delete

else Abort;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

//Поиск предприятия по введенным параметрам

if trim(MaskEdit5.Text)<>'' then

begin

Form1.Table3.Locate('kod_p',trim(MaskEdit5.Text),[loPartialKey]);

Abort;

end;

if (trim(Edit4.Text)<>'') then

begin

Form1.Table3.FilterOptions:=[foCaseInsensitive];

Form1.Table3.Filter:='naim_p= '''+trim(Edit4.Text)+'*''';

Form1.Table3.Filtered:=true;

end;

if trim(Edit4.Text)='' then Form1.Table3.Filtered:=false;

if trim(Edit5.Text)<>'' then

begin

Form1.Table3.FilterOptions:=[foCaseInsensitive];

Form1.Table3.Filter:='Adres = '''+trim(Edit5.Text)+'*''';

Form1.Table3.Filtered:=true;

end;

if (trim(Edit5.Text)='') and (trim(Edit4.Text)='') then Form1.Table3.Filtered:=false;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

Form3.Show;

end;

procedure TForm1.Button7Click(Sender: TObject);

//кнопка "Редактировать информацию"

begin

MaskEdit5.Text:=DBGrid3.Fields[0].AsString;

Edit4.Text:=DBGrid3.Fields[1].AsString;

Edit5.Text:=DBGrid3.Fields[2].AsString;

Edit1.Text:=DBGrid3.Fields[3].AsString;

Edit12.Text:=DBGrid3.Fields[4].AsString;

end;

procedure TForm1.DBGrid3DblClick(Sender: TObject);

begin

Form1.MaskEdit3.Text:=DBGrid3.Fields[0].AsString;

{ Form3.Edit1.Text:=DBGrid3.Fields[2].AsString;

Form3.Show; }

end;

procedure TForm1.DBGrid2DblClick(Sender: TObject);

begin

{Form3.Edit2.Text:=DBGrid2.Fields[1].AsString;

Form3.Edit4.Text:=DBGrid2.Fields[2{1}{].AsString;

Form3.Show; }

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

Form4.QuickRep1.DataSet:=Form1.Table2;

Form4.QRDBText1.DataSet:=Form1.Table2;

Form4.QRDBText1.DataField:='kod_ps';

Form4.QRDBText2.DataSet:=Form1.Table2;

Form4.QRDBText2.DataField:='data_s';

Form4.QRDBText3.DataSet:=Form1.Table2;

Form4.QRDBText3.DataField:='kon';

Form4.QRDBText4.DataSet:=Form1.Table2;

Form4.QRDBText4.DataField:='raz';

Form4.QRDBText5.DataSet:=Form1.Table2;

Form4.QRDBText5.DataField:='kod_ed_izs';

Form4.QRDBText6.DataSet:=Form1.Table2;

Form4.QRDBText6.DataField:='summa';

Form4.QuickRep1.Preview;

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

Form5.QuickRep1.DataSet:=Form1.Table3;

Form5.QRDBText1.DataSet:=Form1.Table3;

Form5.QRDBText1.DataField:='kod_p';

Form5.QRDBText2.DataSet:=Form1.Table3;

Form5.QRDBText2.DataField:='naim_p';

Form5.QRDBText3.DataSet:=Form1.Table3;

Form5.QRDBText3.DataField:='adres';

Form5.QRDBText4.DataSet:=Form1.Table3;

Form5.QRDBText4.DataField:='tel';

Form5.QRDBText5.DataSet:=Form1.Table3;

Form5.QRDBText5.DataField:='kod_gp';

Form5.QuickRep1.Preview;

end;

procedure TForm1.Button12Click(Sender: TObject);

begin

Form6.QuickRep1.DataSet:=Form1.Table4;

Form6.QRDBText1.DataSet:=Form1.Table4;

Form6.QRDBText1.DataField:='kod_g';

Form6.QRDBText2.DataSet:=Form1.Table4;

Form6.QRDBText2.DataField:='naim_g';

Form6.QRDBText3.DataSet:=Form1.Table4;

Form6.QRDBText3.DataField:='obl';

Form6.QuickRep1.Preview;

end;

procedure TForm1.Button13Click(Sender: TObject);

begin

if (trim(MaskEdit2.Text)<>'') and (trim(Edit6.Text)<>'') then

begin

if Form1.Table1.Locate('kod_ed_iz',trim(MaskEdit2.Text),[])=true then

begin

MessageDlg('Запись с таким номером уже существует!',mtError,[mbOK],0);

Abort;

end;

Form1.Table1.Insert;

Form1.Table1.FieldByName('kod_ed_iz').AsInteger:=strtoint(trim(MaskEdit2.Text));

Form1.Table1.FieldByName('naim_ed').AsString:=trim(Edit6.Text);

Form1.Table1.Post;

end

else MessageDlg('Заполните необходимые поля!',mtInformation,[mbOK],0);

end;

procedure TForm1.Button15Click(Sender: TObject);

begin

//Поиск единицы измерения по введенным параметрам

if trim(MaskEdit2.Text)<>'' then

begin

Form1.Table1.Locate('kod_ed_iz',trim(MaskEdit2.Text),[loPartialKey]);

Abort;

end;

if (trim(Edit6.Text)<>'') then

begin

Form1.Table1.FilterOptions:=[foCaseInsensitive];

Form1.Table1.Filter:='naim_ed= '''+trim(Edit6.Text)+'*''';

Form1.Table1.Filtered:=true;

end;

if trim(Edit6.Text)='' then Form1.Table1.Filtered:=false;

end;

procedure TForm1.Button14Click(Sender: TObject);

begin

//удаление данных о единице измерения

if (Table1.RecordCount>0) then

begin

if MessageDlg('Удалить запись о данной единице?',mtWarning,[mbYes,mbNo],0)= mrYes then

Table1.Delete

else Abort;

end;

end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);

begin

Form1.Edit8.Text:=DBGrid1.Fields[0].AsString;

end;

procedure ns;

begin

Form1.Table2.MasterFields:='';

Form1.Table2.IndexName:='';

Form1.Table2.MasterSource:=nil;

Form1.Table3.MasterFields:='';

Form1.Table3.IndexName:='';

Form1.Table3.MasterSource:=nil;

Form1.Table1.MasterFields:='';

Form1.Table1.IndexName:='';

Form1.Table1.MasterSource:=nil;

Form1.Table4.MasterFields:='';

Form1.Table4.IndexName:='';

Form1.Table4.MasterSource:=nil;

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

ns;

Table2.MasterSource:=DataSource3;

Table2.MasterFields:='kod_p';

Table2.IndexName:='ps';

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

ns;

Table3.MasterSource:=DataSource2;

Table3.MasterFields:='kod_ps';

Table3.IndexName:='sp';

end;

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

ns;

Table2.MasterSource:=DataSource1;

Table2.MasterFields:='kod_ed_iz';

Table2.IndexName:='es';

end;

procedure TForm1.RadioButton4Click(Sender: TObject);

begin

ns;

Table1.MasterSource:=DataSource2;

Table1.MasterFields:='kod_ed_izs';

Table1.IndexName:='se';

end;

procedure TForm1.RadioButton5Click(Sender: TObject);

begin

Form3.Show;

ns;

Table3.MasterSource:=DataSource4;

Table3.MasterFields:='kod_g';

Table3.IndexName:='gp';

end;

procedure TForm1.RadioButton6Click(Sender: TObject);

begin

Form3.Show;

ns;

Table4.MasterSource:=DataSource3;

Table4.MasterFields:='kod_gp';

Table4.IndexName:='pg';

end;

procedure TForm1.RadioButton7Click(Sender: TObject);

begin

ns;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, DB, DBTables, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls,DateUtils,

Mask;

type

TForm3 = class(TForm)

GroupBox4: TGroupBox;

Label9: TLabel;

Label12: TLabel;

Label19: TLabel;

Edit7: TEdit;

Edit10: TEdit;

Button16: TButton;

Button17: TButton;

DBGrid4: TDBGrid;

MaskEdit6: TMaskEdit;

Button18: TButton;

procedure FormCreate(Sender: TObject);

procedure Button16Click(Sender: TObject);

procedure Button18Click(Sender: TObject);

procedure Button17Click(Sender: TObject);

procedure DBGrid4DblClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);

begin

Form3.DBGrid4.Columns.Items[0].Width:=80;

Form3.DBGrid4.Columns.Items[1].Width:=170;

Form3.DBGrid4.Columns.Items[2].Width:=170;

Form3.DBGrid4.Columns[0].Title.Caption:='Код города';

Form3.DBGrid4.Columns[1].Title.Caption:='Наименование';

Form3.DBGrid4.Columns[2].Title.Caption:='Область';

end;

procedure TForm3.Button16Click(Sender: TObject);

begin

//Дабавление данных о новом городе

if (trim(MaskEdit6.Text)<>'') and (trim(Edit7.Text)<>'') and (trim(Edit10.Text)<>'. .') then

begin

if Form1.Table4.Locate('kod_g',trim(MaskEdit6.Text),[])=true then

begin

MessageDlg('Запись с таким номером уже существует!',mtError,[mbOK],0);

Abort;

end;

Form1.Table4.Insert;

Form1.Table4.FieldByName('kod_g').AsInteger:=strtoint(trim(MaskEdit6.Text));

Form1.Table4.FieldByName('naim_g').AsString:=trim(Edit7.Text);

Form1.Table4.FieldByName('obl').AsString:=trim(Edit10.Text);

Form1.Table4.Post;

end

else MessageDlg('Заполните необходимые поля!',mtInformation,[mbOK],0);

end;

procedure TForm3.Button18Click(Sender: TObject);

begin

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

if trim(MaskEdit6.Text)<>'' then

begin

Form1.Table4.Locate('kod_g',trim(MaskEdit6.Text),[loPartialKey]);

Abort;

end;

if (trim(Edit7.Text)<>'') then

begin

Form1.Table4.FilterOptions:=[foCaseInsensitive];

Form1.Table4.Filter:='naim_g= '''+trim(Edit7.Text)+'*''';

Form1.Table4.Filtered:=true;

end;

if trim(Edit7.Text)='' then Form1.Table4.Filtered:=false;

if (trim(Edit10.Text)<>'') then

begin

Form1.Table4.FilterOptions:=[foCaseInsensitive];

Form1.Table4.Filter:='obl= '''+trim(Edit10.Text)+'*''';

Form1.Table4.Filtered:=true;

end;

if trim(Edit10.Text)='' then Form1.Table4.Filtered:=false;

end;

procedure TForm3.Button17Click(Sender: TObject);

begin

//удаление данных о городе

if (Form1.Table4.RecordCount>0) then

begin

if MessageDlg('Удалить запись о данном предприятии?',mtWarning,[mbYes,mbNo],0)= mrYes then

Form1.Table4.Delete

else Abort;

end;

end;

procedure TForm3.DBGrid4DblClick(Sender: TObject);

begin

Form1.Edit12.Text:=DBGrid4.Fields[0].AsString;

end;

end.

  1. Лекция 5: Модели организации баз данных [онлайн] - URL: http://www.intuit.ru/studies/courses/3439/681/lecture/14023 (дата обращения 11.10.2016)

  2. Осипов Д. Л. Базы данных и Delphi. Теория и практика. — СПб.: БХВ-Петербург, 2011. – с. 20

  3. Лекция 5: Модели организации баз данных [онлайн] - URL: http://www.intuit.ru/studies/courses/3439/681/lecture/14023 (дата обращения 11.10.2016)

  4. Осипов Д. Л. Базы данных и Delphi. Теория и практика. — СПб.: БХВ-Петербург, 2011. – с. 21

  5. Реляционная база данных [онлайн] - URL: http://base.mybloge.net/relyacionnaya-baza-dannyx/ (дата обращения 01.11.2016)

  6. Введение в базы данных. Часть 2. Настольные СУБД // А.Федоров, Н. Елманова [онлайн] - URL: http://compress.ru/article.aspx?id=10282 (дата обращения 01.11.2016)).

  7. Субд paradox [онлайн]- URL: http://uchebnik.biz/book/88-kompyuternye-seti/365-subd-paradox.html (дата обращения 01.11.2016)

  8. Обзор языков программирования и средств разработки на их основе [онлайн] - URL: http://bukvi.ru/computer/obzor-yazykov-programmirovaniya-i-sredstv-razrabotki-na-ix-osnove.html (дата обращения 01.11.2016)

  9. Преимущества и особенности Delphi [онлайн] - URL: http://starik2222.narod.ru/trpp/lec/11.htm (дата обращения 01.11.2016)

  10. Преимущества Delphi и напутствие начинающему программисту [онлайн] - URL: http://pisali.ru/raferti/41237/ (дата обращения 01.11.2016)