Проектирование базы данных ‘Аэропорт’

Курсовая работа

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

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

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

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

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

16 стр., 7915 слов

Журналистский образ как средство организации журналистского произведения

... (практическая) – анализ образа журналиста Нины Гечевари, основанный на теоретических положениях, описанных в первой главе. 1. Журналистский образ как средство организации журналистского произведения 1.1 Гносеологические ... изменения в журналистике, что отразилось на всей системе средств массовой информации и неречевой организации журналистского текста в частности. Формирование нового типа современного ...

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

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

Более подробно исследовать объект Аэропорт.

Исследовать его работу и организацию рейсов.

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

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

Структура проверки состоит из большого числа пунктов. Очень удобно все пункты структурировать в виде таблицы. Информация в БД, тоже представляется в виде таблицы. Что позволит организовать проверку состояния самолетов, медицинский осмотр сотрудников, по результатам которого будет определён их допуск к полёту, составлять графики полётов.

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

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

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

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

  • Объект «РЕЙС». Для того, что бы организовать рейс необходимо знать какой груз будем перевозить. Необходимо выделить для него самолет и экипаж состоящий из сотрудников аэропорта. После чего нужно внести его в график полетов.
  • Объект «ГРАФИК ПОЛЕТОВ». В графике полетов записана очередность вылетов и загруженность взлетно-посадочной полосы(ВПП).

  • Объект «СОТРУДНИКИ». В любой компании присутствует штат сотрудников, их персональные данные удобно отобразить в виде таблицы.
  • Объект «САМОЛЕТ». Основные характеристики самолётов будут представлены в отдельной таблице.
  • Объект «ЭКИПАЖИ».

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

  • Объект «МЕДИЦИНСКИЙ ОСМОТР». Прежде чем отправится в полет каждый сотрудник должен пройти медицинский осмотр. Что бы удостоверится, что во время полета сотруднику не станет плохо. Результаты осмотра должны быть зафиксированы в базе.
  • Объект «РЕМОНТ САМОЛЕТОВ».

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

13 стр., 6298 слов

Моей курсовой «Основные структуры данных»

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

— Объект «СОСТОЯНИЕ САМОЛЕТОВ». Самолет техника очень сложная, и требует тщательного осмотра перед каждый полетом. От технического состояния самолетов зависит безопасность грузоперевозок. Проверка включает в себя большое количество пунктов, прежде чем отправить самолет в полет. Данная таблица позволит отслеживать состояние каждого самолета.

  • Объект «ЗАКАЗЫ». Проектируемая БД предназначена для автоматизации деятельности авиакомпании, занимающейся грузоперевозками внутри страны. Актуальным является хранение сведений о заказах и их состоянии.

Логическое проектирование представляет собой необходимый этап при создании БД. Основной задачей логического проектирования является разработка логической схемы, ориентированной на выбранную систему управления базами данных (СУБД).

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

Как видим из рисунка 1, база состоит из 9 таблиц. Все данные стекаются в одну таблицу РЕЙСЫ, она связана с 4 таблицами: ЭКИПАЖИ, САМОЛЕТЫ, ЗАКАЗЫ и ГРАФИК ПОЛЕТОВ. Они в свою очередь связаны с другими.

Проектирование базы данных 'Аэропорт' 1

Рисунок 1 — Диаграмма данных

Таблица ЭКИПАЖИ связана с таблицей СОТРУДНИКИ, которая связана с таблицей МЕДИЦИНСКИЙ ОСМОТР. Она отвечает за состояние здоровья сотрудников. Благодаря отмеченной связи происходит формирование экипажа с учётом пригодности по состоянию здоровья сотрудников к полёту.

Таблица САМОЛЕТЫ связана с таблицами СОСТОЯНИЕ САМОЛЕТОВ, отвечает за проверку самолетов. И с таблицей РЕМОНТ САМОЛЕТОВ хранит историю ремонтов техники. В результате будет гарантирован выбор самолета пригодного к полёту по техническому состоянию.

Таблица ЗАКАЗЫ связана с таблицей РЕЙСЫ. В ней записаны заказы, которые были выполнены и новые заказы, которые предстоит выполнить.

Таблица ГРАФИК ПОЛЕТОВ связана с таблицей РЕЙСЫ. Отображает последовательность полетов и ВПП на которой взлетает самолет. Позволяет контролировать загруженность ВПП.

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

Процесс нормализации заключается в приведении таблиц в так называемые нормальные формы. Существует несколько видов нормальных форм: первая нормальная форма (1НФ), вторая нормальная форма (2НФ), третья нормальная форма (3НФ).

Этот процесс включает:

  • устранение повторяющихся групп (приведение к 1НФ);
  • удаление частично зависимых атрибутов (приведение к 2НФ);
  • удаление транзитивно зависимых атрибутов (приведение к 3НФ).

    8 стр., 3828 слов

    Курсовая работа реляционные базы данных и субд

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

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

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

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

Таким образом, получаем базу данных, приведенную к 3НФ и содержащую упорядоченную информацию, детально отображающую рассматриваемую предметную область. Теперь, когда мы провели нормализацию таблиц с целью устранения избыточного дублирования данных и группирования информации в логически связанных единицах, сделаем ряд замечаний по вопросам проектирования баз данных. Необходимо четко понять, что разбиение информации на более мелкие единицы с одной стороны, способствует повышению надежности и непротиворечивости базы данных, а с другой стороны, снижает ее производительность, так как требуются дополнительные затраты процессорного времени (серверного или машины пользователя) на обратное “соединение” таблиц при представлении информации на экране. Иногда для достижения требуемой производительности нужно сделать отход от канонической нормализации, при этом ясно осознавая, что необходимо обеспечить меры по предотвращению противоречивости в данных. Поэтому всякое решение о необходимости того или иного действия по нормализации можно принимать, только тщательно проанализировав предметную область и класс поставленной задачи.

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

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

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

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

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

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

MySQLWorkbench — инструмент для визуального проектирования баз данных, интегрирующий проектирование, моделирование, создание и эксплуатацию БД в единое окружение для системы баз данных MySQL. MySQLWorkbench предоставляет комплекс инструментов для настройки сервера, администрирования пользователей и многое другое. Программа доступна для работы с операционных системах: Windows, Linux и MacOS.позволяет администратору или проектировщику баз данных визуально моделировать, создавать и управлять базами данных. Программное обеспечение обладает всем необходимым для создания комплексной ER-моделей, прямой и обратной разработки, а также позволяет легко произвести сложные изменения в базе данных или исправления в документации, которые обычно занимают много времени и усилий.

MySQLWorkbench упрощает разработку и поддержку баз данных, автоматизирует выполнение наиболее долгих и сложных задач и улучшает взаимодействие между разработчиками и администраторами баз данных. Программа позволяет проектировщикам данных наглядно предоставить требования и, связавшись с коллегами, быстро решить проблему до того как будет потрачено большое количество рабочих ресурсов и времени. С помощью MySQLWorkbench можно легко создавать надёжные, хорошо структурированные базы данных и в то же время достаточно гибкие, для того чтобы изменяться и улучшаться, отвечая новым требованиям бизнес задач. Утилиты для проверки моделей данных и структур таблиц обеспечивают высокую надёжность при разработке. Это избавляет разработчика от ошибок по время моделирования новой ER-диаграммы или создания физической MySQL базы данных.

Главные преимущества программы:

  • Позволяет наглядно представить модель базы данных в графическом виде;
  • Наглядный и функциональный механизм установки связей между таблицами, в том числе «многие ко многим» с созданием таблицы связей;
  • ReverseEngineering — восстановление структуры таблиц из уже существующей на сервере БД;
  • Удобный редактор SQL запросов, позволяющий сразу же отправлять их серверу и получать ответ в виде таблицы;
  • Возможность редактирования данных в таблице в визуальном режиме.

Проектирование базы данных 'Аэропорт' 2

Рисунок 2 — MySQL Workbench 6.1

BorlandDelphi 7 — это интегрированная среда разработки программного обеспечения для операционной системы Microsoft Windows на языке Delphi.

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

Мощность и гибкость Delphi при работе с базами данных основана на низкоуровневом ядре — процессоре баз данных Borland Database Engine (BDE).

Его интерфейс с прикладными программами называется Integrated Database Application Programming Interface (IDAPI).

В принципе. BDE позволяет осуществлять доступ к данным как с использованием традиционного record-ориентированного (навигационного) подхода, так и с использованием set-ориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию Open DataBase Connectivity (ODBC) фирмы Microsoft.

Все инструментальные средства баз данных Borland — Paradox, dBase, Database Desktop — используют BDE. Все особенности, имеющиеся в Paradox или dBase, «наследуются» BDE, и поэтому этими же особенностями обладает и Delphi.

Проектирование базы данных 'Аэропорт' 3

Рисунок 3 — Компоненты вкладки ADO

Connector/ODBC 5.3

Это стандартный драйвер, который обеспечивает доступ к базе данных MySQL через Open Database Connectivity (ODBC) API. Включает в себя функциональность Unicode и ANSI драйверов ранее разделенных на Connector/ODBC 5.3 и Connector/ODBC 3.51.

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

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

Для применения технологии ADO в Delphi 7 предназначены семь компонентов, расположенных на закладке ADO палитры компонентов.

Таблица 1.

Название

Описание

ADOConnection

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

ADOCommand

Предназначен для выполнения SQL-команды без возврата результирующего набора данных

ADODataset

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

ADOTable

  • Используется для доступа к таблице с помощью механизма ADO

ADOQuery

Аналог Query. Позволяет формировать запросы к БД, которые возвращают данные из базы (например, командой SELECT) или не формируют результирующего набора данных (например, INSERT)

ADOStoredProc

Предназначен для вызова процедуры, хранимой на сервере базы данных. Является потомком TDataSet, в отличие от BDE и InterBase позволяет возвращать набор данных, поэтому может выступать источником данных в компонентах типа DataSource

RDSConnection

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

Разрабатываемая БД «Аэропорт» содержит конфиденциальную информацию о деятельности авиакомпании. Для обеспечения её сохранности, БД снабжена средствами идентификации пользователей, для каждого из которых сгенерированы логины и пароли. Пароли ежемесячно необходимо обновлять (рисунок 4).

Проектирование базы данных 'Аэропорт' 4

Рисунок 4 — Окно доступа к базе

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

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

Проектирование базы данных 'Аэропорт' 5

Рисунок 5 — Информационное окно поверх главного окна программы

Нажав кнопку ОК станет доступным главное окно базы. На нем расположены таблицы РЕЙСЫ и ГРАФИК ПОЛЕТОВ. Кнопки сотрудники, заказы, экипажи, самолеты и мед. осмотр расположенные слева. Они обеспечивают доступ пользователей с основным таблицам БД (рисунок 6).

Проектирование базы данных 'Аэропорт' 6

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

Выполним переход к таблице «СОТРУДНИКИ», активировав соответствующую кнопку (рисунок 7).

Проектирование базы данных 'Аэропорт' 7

Рисунок 7

Данные о сотрудниках представлены в следующей структуре: идентифицирующая информация (№, Ф.И.О), основные сведения, панель навигации, инструменты отбора данных, управляющие кнопки. Описанная структура характерна и для таблицы «Заказы» представлена на рисунке 8.

Проектирование базы данных 'Аэропорт' 8

Рисунок 8

Форма «Экипажи» предназначена для определения состава экипажа текущего рейса. Формирование экипажа всегда начинается с определения первого пилота. Для удобства отбора членов экипажа форма снабжена инструментами поиска. Например, при выборе должности автоматически будут найдены сотрудники, её замещающие (рисунок 9).

Проектирование базы данных 'Аэропорт' 9

Рисунок 9

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

На форме «Самолеты» представлены данные из нескольких таблиц БД, с её помощью можно получить сведения о самолётах и их пригодности к полётам (рисунок 10).

Первая таблица «Самолеты», в ней перечислены самолеты которыми располагает компания, и их характеристики. В блоке «Данные о самолете» находится две таблицы. Левая таблица показывает состояние самолета, в правой таблице хранятся данные о ремонте всех самолетов. Что бы получить сведения о выбранном самолете, нужно нажать кнопку ПОЛУЧИТЬ ДАННЫЕ О САМОЛЕТЕ. В результате будут получены сведения о его ремонте. В левой таблице будет выведено, в каком состоянии самолет, прошел ли он проверку или нет и дата последней проверки. Статус готовности выставляет не программа, а сам пользователь. Полностью довериться программе нельзя, самолет техника очень сложная, поэтому прибегают к помощи специалиста. В дальнейшем можно развить описываемое программное обеспечение до уровня экспертной системы, которая обеспечит автоматизацию принятия решения о статусе самолётов.

Проектирование базы данных 'Аэропорт' 10

Рисунок 10

Форма «МЕД, ОСМОТР» предоставляет доступ к таблицам Сотрудник, Экипажи и таблица Медицинский осмотр (рисунок 11).

Из таблицы Сотрудники доктор выбирает сотрудника, который будет проходить проверку на пригодность к полёту, и при нажатии кнопки «Мед. Осмотр» заносит данные о его состоянии здоровья в таблицу «Медицинский осмотр». Начальные данные, такие как номер сотрудника, номер экипажа, Ф.И.О. и должность, автоматически заносятся в таблицу. Остальные данные доктор вводит сам. В итоге после проверки он должен поставить разрешение на полет, готов или не готов. Оно ставится по усмотрению доктора, так как статус не может ставить программа автоматически. У каждого человека разные медицинские показатели, при которых он может комфортно выполнять свою работу.

Проектирование базы данных 'Аэропорт' 11

Рисунок 11

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

Проектирование базы данных 'Аэропорт' 12

Рисунок 12 — Элементы поиска в базе данных

Поиск производится по выбранному полю и условию отбора.

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

Проектирование базы данных 'Аэропорт' 13

Рисунок 13 — Элементы поиска в окне «Экипажи»

Проектирование базы данных 'Аэропорт' 14

рис.14 Поисковая панель

Поиск с помощью поисковой панели происходит по полям таблицы.

В БД «Аэропорт» представлены эффективные механизмы для определения состава экипажа.

В любом экипаже присутствует как минимум два пилота, борт инженер и штурман. Для составления экипажей на окне «Экипажи» расположены 4 кнопки, название которых соответствует должностям (рисунок 15).

Проектирование базы данных 'Аэропорт' 15

Рисунок 15

Составление экипажа всегда начинается с первого пилота, он же командир экипажа. Им может быть только сотрудник с должностью «Лет.Состав(Первый пилот)». Если по ошибке, оператор выберет первым пилотом сотрудника, который не занимает указанную должность, то программа выводит сообщение об ошибке (рисунок 16).

Проектирование базы данных 'Аэропорт' 16

Рисунок 16

После того как был выбран первый пилот в таблице появится новый неполный экипаж (рисунок 17).

Проектирование базы данных 'Аэропорт' 17

Рисунок 17

Далее выбираем второго пилота, при этом необходимо следить, что в таблице «Экипажи» формируемый экипаж выбран текущим. При включении в экипаж сотрудника неверной должности будет выведено предупреждение (Рисунок 18).

Проектирование базы данных 'Аэропорт' 18

Рисунок 18

По такой же схеме выбираем борт инженера и штурмана. Если оператор выбирает сотрудников не подходящих должностей, так же будет появляться предупреждение.

Самое главное правильно составить рейс, выбрать экипаж, подобрать самолет подходящей грузоподъемности, указать время взлета и выбрать ВПП. Что бы более удобно было заполнять данные о рейсе, рассмотрим все действия оператора пошагово. Заполнение происходит в специальной форме. Для перехода к ней активируем в главном окне кнопку СОЗДАТЬ РЕЙС. Откроется окно «Обработка заказа». Сначала оператор должен выбрать заказ из таблицы «Заказы». В списке будут перечислены все заказы, не зависимо от их статуса. Для выбора невыполненных заказов нажмем кнопку Обновить. После в списке отмечается заказ и нажимается кнопка Выбрать (рисунок 19).

Проектирование базы данных 'Аэропорт' 19

Рисунок 19 — Выбор заказа

Заказ записывается в таблицу «Рейсы». Следующим шагом будет выбор Экипажа из соответствующей таблицы. После активации кнопки «обновить» будет представлен список экипажей, не занятых в полёте. Если доступных экипажей нет, то появится соответствующее сообщение (рисунок 20).

Проектирование базы данных 'Аэропорт' 20

Рисунок 20

В этом случае создание рейса остановится. Его можно будет выполнить, когда появятся свободные экипажи. При наличии свободных экипажей выбираем нужный нажатием кнопки Выбрать. Но прежде чем нажать кнопку Выбора, нужно удостовериться, что в таблице «Рейсы» выбран заказ который мы готовим к выполнению. Для удобства внизу таблицы «Рейсы» есть строка состояния. Она указывает, какой заказ выбран (рис.21).

Проектирование базы данных 'Аэропорт' 21

рис. 21Строка состояния

Только после проверки строки состояния оператор может нажать кнопку Выбрать (рисунок 22).

Проектирование базы данных 'Аэропорт' 22

Рисунок 22 — Выбор экипажа

После нажатия кнопки Выбрать происходит переход в следующую вкладку, в которой происходит выбор самолета (рисунок 23).

Проектирование базы данных 'Аэропорт' 23

Рисунок 23

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

Следующим шагом и последним будет внесение рейса в график взлетов(рисунок 24).

Проектирование базы данных 'Аэропорт' 24

Рисунок 24 — Вкладка выбор ВПП

Время, дату вылета, и ВПП оператор назначает сам. Для удобства на вкладке есть календарь и часы. После ввода данных нажимаем кнопку ВНЕСТИ В ГРАФИК. Будет выведено сообщение о том, что рейс внесен в ГРАФИК ВЫЛЕТОВ(рисунок 25).

Проектирование базы данных 'Аэропорт' 25

Рисунок 25

Произойдёт переход в главное окно базы данных. В блоке «Рейсы» следует установить статус рейса: взлетел, выполнен.

Статусы рейса, заказа, экипажа и самолета автоматически изменяются с «Готов», на статус «В полете». После того как заказ будет выполнен, оператор выбирает рейс и нажимает кнопку ВЫПОЛНЕН. Заказ и рейс принимают статус «Выполнен», а самолет и экипаж статус «Не готов». Экипаж и самолет после выполнения заказа нуждаются в проверке.

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

Проектирование базы данных 'Аэропорт' 26

Рисунок 26

Проектирование базы данных 'Аэропорт' 27

Рисунок 27

Проектирование базы данных 'Аэропорт' 28

Рисунок 28

Заключение

В данной курсовой работе разработана БД «Аэропорт».

В процессе выполнения работы были выполнены такие пункты:

— анализ предметной области;

— построение концептуальной модели предметной области;

— построение логической модели базы данных;

— организация базы данных;

— разработка прикладной программы;

— наполнение и сопровождение базы данных;

— подготовка программной документации.

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

Данная БД разрабатывалась для сотрудников аэропорта. Доступ клиентам и посторонним пользователям закрыт. Так как в ней хранится конфиденциальная информация.

На основе достигнутых результатов можно сформулировать рекомендации по улучшению программы:

— БД можно расширить до уровня экспертной системы.

— Использование web-технологий для доступа к данным через Интернет.

1. Рыжикова Е.Г., Методические указания к самостоятельным работам для студентов II курса, обучающихся по направлению подготовки бакалавров 230400 Информационные системы и технологии профиль подготовки./ Информационные системы и технологии / Е.Г. Рыжикова — Брянск.: Издательство БГИТА, 2013. — 18с.

. Рудикова Л.В., Базы данных. Разработка приложений для студента / Л.В. Рудикова — СПб.: БХВ-Петербург, 2006. — 496 с.

. Форум программистов и сисадминов Cyberforum.ru [Электронный ресурс]

4. Sysman.ru [Электронный ресурс] — Форум. Сайт программистов

5. Delphi Expert [Электронный ресурс]

. Фёдоров А.Г. Создание Windows-приложений в среде Delphi. — М.: ТОО «Компьютер Пресс», 1995. — 287с.

. Хоменко А.Д. Основы современных компьютерных технологий. — М.: ТОО «Компьютер Пресс», 2000г. — 467с.

procedure TForm2.Button1Click(Sender: TObject);.Show;.Hide;;TForm2.Button2Click(Sender: TObject);.Show;.Hide;;TForm2.Button3Click(Sender: TObject);.Show;.Hide;;TForm2.Button4Click(Sender: TObject);.Show;.Hide;;TForm2.Button5Click(Sender: TObject);_reisa.Close;_reisa.SQL.Text:= ‘update reis set sostoyanie = »В полете» where Nomer_reisa = ‘+#39+DBEdit1.Text+#39+»;_reisa.ExecSQL;_eqipaja.Close;_eqipaja.SQL.Text:=’update eqipaj set status = »В полете» where Nomer_eqipaja = ‘+#39+DBEdit2.Text+#39+»;_eqipaja.ExecSQL;_zakaza.Close;_zakaza.SQL.Text:=’update zakaz set status = »В полете»where Nomer_zakaza = ‘+#39+DBEdit3.Text+#39+»;_zakaza.ExecSQL;_samoleta.Close;_samoleta.SQL.Text:=’update samolet set status = »В полете» where Nomer_samoleta = ‘+#39+DBEdit4.Text+#39+»;_samoleta.ExecSQL;.DataSource.DataSet.Active:=false;.DSZakaz.DataSet.Active:=false;.DSEqpaj.DataSet.Active:=false;.DSSamolet.DataSet.Active:=false;.DataSource.DataSet.Active:=true;.DSZakaz.DataSet.Active:=true;.DSEqpaj.DataSet.Active:=true;.DSSamolet.DataSet.Active:=true;;TForm2.Button6Click(Sender: TObject);.Show;.Hide;;TForm2.Button7Click(Sender: TObject);_reisa.Close;_reisa.SQL.Text:= ‘update reis set sostoyanie = »Выполнен» where Nomer_reisa = ‘+#39+DBEdit1.Text+#39+»;_reisa.ExecSQL;_eqipaja.Close;_eqipaja.SQL.Text:=’update eqipaj set status = »Готов» where Nomer_eqipaja = ‘+#39+DBEdit2.Text+#39+»;_eqipaja.ExecSQL;_zakaza.Close;_zakaza.SQL.Text:=’update zakaz set status = »Выполнен»where Nomer_zakaza = ‘+#39+DBEdit3.Text+#39+»;_zakaza.ExecSQL;_samoleta.Close;_samoleta.SQL.Text:=’update samolet set status = »Не готов» where Nomer_samoleta = ‘+#39+DBEdit4.Text+#39+»;_samoleta.ExecSQL;_proverku.Close;_proverku.SQL.Text:=’update Sostoyanie_samoletov set sostoyanie_fuzelyaja = »Не проверен», Dvigateli = »Не проверен»,Bort_sistem = »Не проверены»,Proviziya_voda = »Пуст», Zapravka_toplivom = »Пуст», Pokritie_POJ = »Не выполнено» where Nomer_samoleta = ‘+#39+DBEdit4.Text+#39+»;_proverku.ExecSQL;.DataSource.DataSet.Active:=false;.DSZakaz.DataSet.Active:=false;.DSEqpaj.DataSet.Active:=false;.DSSamolet.DataSet.Active:=false;.DSSostSamoletov.DataSet.Active:=false;.DataSource.DataSet.Active:=true;.DSZakaz.DataSet.Active:=true;.DSEqpaj.DataSet.Active:=true;.DSSamolet.DataSet.Active:=true;.DSSostSamoletov.DataSet.Active:=true;;TForm2.Button8Click(Sender: TObject);.Show;.TabSheet1.Show;.Hide;;TForm2.Button9Click(Sender: TObject);.Close;;TForm2.Button10Click(Sender: TObject);.DataSet.Active:=false;.DataSet.Active:=false;.DataSet.Active:=true;.DataSet.Active:=true;;TForm2.Button11Click(Sender: TObject);.Engine:=RvSystem1;RvSystem1 do:= False;:=RvRenderPDF1;:= ‘Sotrudniki.pdf ‘;;.Execute;;.

procedure TForm3.Button2Click(Sender: TObject);.DataSource:=DSZakaz;.DataSource:=DSZakaz;.DataSource.DataSet.Active:=true;;TForm3.Button1Click(Sender: TObject);:Integer;,s:string;(Combobox1.Text = ‘Масса груза’) then:=’Massa_gruza’;(Combobox1.Text = ‘Пункт назначения’) then:=’Punkt_naznacheniya’;(Combobox1.Text = ‘Пункт отправления’) then:=’Punkt_otpravleniya’;.close;.sql.clear;.SQL.Add(‘select * from Zakaz where ‘ +a+’=’+#39+Edit1.text+#39’ ‘);.Open;.dataset.close;.dataset:=Poisk;.DataSource:=DSPoisk;.DataSource:=DSPoisk;.DataSet.Active:=true;;TForm3.ComboBox1Change(Sender: TObject);(ComboBox1.Text = ‘Масса груза’) or (Combobox1.Text = ‘Пункт назначения’) or (Combobox1.Text = ‘Пункт отправления’) then.Enabled:=true.Enabled:=false;;TForm3.Button3Click(Sender: TObject);.Close;.Show;;TForm3.Button4Click(Sender: TObject);.Engine:=RvSystem1;RvSystem1 do:= False;:=RvRenderPDF1;:= ‘Sotrudniki.pdf ‘;;.Execute;;.

procedure TForm4.Button1Click(Sender: TObject);:Word;(ComboBox2.Text <> ‘Первый пилот’) then

begin:=MessageDLG(‘Данный сотрудник не может быть Первым пилотом!!!’,mtError,[mbOk],0);

end;(ComboBox2.Text = ‘Первый пилот’) then.DataSet.Active:=false;_pilot.close;_pilot.SQL.Text:=’insert into eqipaj (Perviy_pilot)value (‘+#39+DBEdit1.Text+#39+’)’;_pilot.ExecSQL;.DataSet.Active:=true;;;TForm4.Button2Click(Sender: TObject);:Word;:string;:=DBEdit2.Text;(ComboBox2.Text <> ‘Второй пилот’) then

begin:=MessageDLG(‘Данный сотрудник не может быть Вторым пилотом!!! Выбрать данного сотрудника »Вторым пилотом»?’,mtWarning,[mbYes,mbNo],0);

if R=mrYes then.DataSet.Active:=false;_pilot.close;_pilot.SQL.Text:=’update eqipaj set Vtoroy_pilot = ‘+#39+DBEdit1.Text+#39+’ where Nomer_eqipaja = ‘+#39+I+#39+»;_pilot.ExecSQL;.DataSet.Active:=true;;.DataSet.Active:=false;_pilot.close;_pilot.SQL.Text:=’update eqipaj set Vtoroy_pilot = ‘+#39+DBEdit1.Text+#39+’ where Nomer_eqipaja = ‘+#39+I+#39+»;_pilot.ExecSQL;.DataSet.Active:=true;;;TForm4.Button3Click(Sender: TObject);:Word;:string;:=DBEdit2.Text;(ComboBox2.Text <> ‘Штурман’) then

begin:=MessageDLG(‘Данный сотрудник не может быть Штурманом!!! Выбрать данного сотрудника »Штурманом»?’,mtWarning,[mbYes,mbNo],0);

if R=mrYes then.DataSet.Active:=false;.close;.SQL.Text:=’update eqipaj set Shturman = ‘+#39+DBEdit1.Text+#39+’ where Nomer_eqipaja = ‘+#39+I+#39+»;.ExecSQL;.DataSet.Active:=true;;.DataSet.Active:=false;.close;.SQL.Text:=’update eqipaj set Shturman = ‘+#39+DBEdit1.Text+#39+’ where Nomer_eqipaja = ‘+#39+I+#39+»;.ExecSQL;.DataSet.Active:=true;;;TForm4.Button4Click(Sender: TObject);:Word;:string;:=DBEdit2.Text;(ComboBox2.Text <> ‘Борт Инженер’) then

begin:=MessageDLG(‘Данный сотрудник не может быть Борт инженером!!! Выбрать данного сотрудника »Борт Инженером»?’,mtWarning,[mbYes,mbNo],0);

if R=mrYes then.DataSet.Active:=false;.close;.SQL.Text:=’update eqipaj set Injener = ‘+#39+DBEdit1.Text+#39+’where Nomer_eqipaja = ‘+#39+I+#39+»;.ExecSQL;.DataSet.Active:=true;;.DataSet.Active:=false;.close;.SQL.Text:=’update eqipaj set Injener = ‘+#39+DBEdit1.Text+#39+’where Nomer_eqipaja = ‘+#39+I+#39+»;.ExecSQL;.DataSet.Active:=true;;;TForm4.ComboBox1Change(Sender: TObject);:Word;:string;(ComboBox1.Text = ‘ФИО’) then.Enabled:=true;.Enabled:=false;.Enabled:=false;.Enabled:=true;;;TForm4.Button5Click(Sender: TObject);:string;(ComboBox1.Text = ‘ФИО’) then:=’FIO’;.close;.SQL.Text:=’select * from Sotrudniki where ‘+a+’=’+#39+Edit1.text+#39’ ‘;.ExecSQL;.dataset.close;.dataset:=Search;.DataSource:=DSSearch;.DataSource:=DSSearch;.DataSet.Active:=true;;TForm4.Button6Click(Sender: TObject);.DataSource.DataSet.Active:=false;.DataSource:=DSSotrudniki;.DataSource:=DSSotrudniki;.DataSource.DataSet.Active:=true;;TForm4.ComboBox2Change(Sender: TObject);:string;(ComboBox2.Text = ‘Первый пилот’) then

begin:=’Лет.Состав(Первый пилот)’;

Search.close;.SQL.Text:=’select * from Sotrudniki where Doljnost =’+#39+a+#39′ and Razreshenie_na_polet =»Готов»’;.ExecSQL;;(ComboBox2.Text = ‘Второй пилот’) then

begin:=’Лет.Состав(Второй пилот)’;

Search.close;.SQL.Text:=’select * from Sotrudniki where Doljnost =’+#39+a+#39′ and Razreshenie_na_polet =»Готов»’;.ExecSQL;;(ComboBox2.Text = ‘Штурман’) then

begin:=’Лет.Состав(Штурман)’;

Search.close;.SQL.Text:=’select * from Sotrudniki where Doljnost =’+#39+a+#39′ and Razreshenie_na_polet =»Готов»’;.ExecSQL;;(ComboBox2.Text = ‘Борт Инженер’) then

begin:=’Лет.Состав(Инженер)’;

Search.close;.SQL.Text:=’select * from Sotrudniki where Doljnost =’+#39+a+#39′ and Razreshenie_na_polet =»Готов»’;;.dataset.close;.dataset:=Search;.DataSource:=DSSearch;.DataSource:=DSSearch;.DataSet.Active:=true;;TForm4.Button7Click(Sender: TObject);.Close;.Show;;TForm4.Button8Click(Sender: TObject);.DataSet.Active:=false;_Eqipajey.Close;_Eqipajey.SQL.Text:=’update eqipaj set status = »Готов» where Perviy_pilot <> »null» and Vtoroy_pilot <> »null» and Shturman <> »null» and Injener <> »null»’;_Eqipajey.ExecSQL;.DataSet.Active:=true;;.

procedure TForm5.Button4Click(Sender: TObject);OpenPictureDialog1.Execute then.Picture.LoadFromFile(OpenPictureDialog1.FileName);.Edit;(Samolet.FieldByName(‘Foto’)).LoadFromFile(OpenPictureDialog1.FileName);.Post;;;TForm5.ComboBox1Change(Sender: TObject);(ComboBox1.Text = ‘Модель самолета’) or (ComboBox1.Text = ‘Грузоподъемность самолета’) then.Enabled:=true;.Enabled:=false;.Enabled:=false;.Enabled:=true;;;TForm5.Button1Click(Sender: TObject);:string;(ComboBox1.Text = ‘Модель самолета’) then:=’Model_samoleta’;(ComboBox1.Text = ‘Грузоподъемность самолета’) then:=’Gruzopodemnost_tonn’;.close;.SQL.Text:=’select * from Sotrudniki where ‘+a+’=’+#39+Edit1.text+#39’ ‘;.ExecSQL;.dataset.close;.dataset:=Search;.DataSource:=DSSearch;.DataSource:=DSSearch;.DataSet.Active:=true;;TForm5.Button2Click(Sender: TObject);.DataSource:=DSSamolet;.DataSource:=DSSamolet;.DataSource:=DSSamolet;(DBEdit2.Text=’Отличное’) or (DBEdit3.Text=’Отличное’) or (DBEdit4.Text=’Отличное’) or (DBEdit5.Text=’Заполнено’) or (DBEdit6.Text=’Заполнено’) or (DBEdit7.Text=’Выполнено’) then.Close;.SQL.Text :=’update Samolet set status =»Готов»where Nomer_samoleta = ‘+#39+DBEdit1.Text+#39+»;.ExecSQL;;.DataSet.Active:=false;.DataSet.Active:=true;;TForm5.ComboBox2Change(Sender: TObject);:string;(ComboBox2.Text = ‘Готов’) then:=’Готов’;.close;.SQL.Text:=’select * from samolet where Status =’+#39+a+#39′ ‘;.ExecSQL;;(ComboBox2.Text = ‘Не готов’) then:=’Не готов’;.close;.SQL.Text:=’select * from samolet where Status =’+#39+a+#39′ ‘;.ExecSQL;;(ComboBox2.Text = ‘В ремонте’) then:=’В ремонте’;.close;.SQL.Text:=’select * from samolet where Status =’+#39+a+#39′ ‘;.ExecSQL;;(ComboBox2.Text = ‘В полете’) then:=’В полете’;.close;.SQL.Text:=’select * from samolet where Status =’+#39+a+#39′ ‘;.ExecSQL;;.dataset.close;.dataset:=Search;.DataSource:=DSSearch;.DataSource:=DSSearch;.DataSource:=DSSearch;.DataSet.Active:=true;;TForm5.Button3Click(Sender: TObject);.Close;.SQL.Text := ‘select * from remont_samoletov where Nomer_samoleta = ‘+#39+DBEdit1.Text+#39+»;.ExecSQL;.Dataset.close;.dataset:=Svodka;.DataSource:=DSSvodka;.Dataset.Active := true;.Close;.SQL.Text := ‘select * from sostoyanie_samoletov where Nomer_samoleta = ‘+#39+DBEdit1.Text+#39+»;.ExecSQL;.DataSet.Close;.DataSet:=Svedeniya;.DataSource:=DSSvodka2;.DataSet.Active := true;;TForm5.Button5Click(Sender: TObject);.DataSource:=DSRemontSamoletov;.DataSource:=DSSostSamoletov;.DataSet.Active:=true;.DataSet.Active:=true;;TForm5.Button6Click(Sender: TObject);.Close;.Show;;TForm5.Button7Click(Sender: TObject);_samoletov.Engine:=RvSystem1;RvSystem1 do:= False;:=RvRenderPDF1;:= ‘Sostoyanie samoletov.pdf ‘;;_samoletov.Execute;;.

procedure TForm6.Button1Click(Sender: TObject);:Word;(Edit1.Text = ‘Логин’) and (Edit2.Text = ‘1234’) then.Show;.Hide;

R:=MessageDLG(‘Не забудьте обновить сводку о технике и о сотрудниках.’,mtInformation,[mbOk],0);:=MessageDLG(‘Введенные пароль или логин не верны.’,mtError,[mbOk],0);

end;;TForm6.Button2Click(Sender: TObject);;;.

procedure TForm7.Button1Click(Sender: TObject);.Close;.Show;;TForm7.Button2Click(Sender: TObject);:TDateTime;:String;:=now;:=FormatDateTime(‘yyyy-mm-dd’,Time);.Close;.SQL.Text:=’select * from eqipaj where Perviy_pilot = ‘+#39+DBEdit1.Text+#39+’ or Vtoroy_pilot = ‘+#39+DBEdit1.Text+#39+’ or Shturman = ‘+#39+DBEdit1.Text+#39+’ or Injener = ‘+#39+DBEdit1.Text+#39+’ ‘;.ExecSQL;.DataSet.Close;.DataSet:=DannieEqipaja;.DataSource:=DSDannieEqipaja;.DataSet.Active:=true;.DataSet.Active:=true;.DataSet.Active:=false;.Close;.SQL.Text:=’insert into med_osmotr (Nomer_sotrudnika,Nomer_eqipaja,FIO,Doljnost,Data_proverki) value (‘+#39+DBEdit3.Text+#39+’,’+#39+DBEdit2.Text+#39+’,’+#39+DBEdit1.Text+#39+’,’+#39+DBEdit4.Text+#39+’,’+#39+a+#39+’)’;.ExecSQL;.DataSet.Active:=true;;.

procedure TForm9.Button3Click(Sender: TObject);:Word;.Close;.SQL.Text:=’select * from zakaz where status=»Не выполнен» or Status = »Задержан»’;.ExecSQL;.DataSource:=DSZakazy;.DataSource:=DSZakazy;.DataSource:=DSZakazy;.DataSource.DataSet.Active:=true;(DBEdit1.Text = ») then:=MessageDLG(‘Нет доступных заказов!!!’,mtInformation,[mbOk],0);;;TForm9.Button1Click(Sender: TObject);.Close;.Show;;TForm9.Button5Click(Sender: TObject);.Close;.Show;;TForm9.Button4Click(Sender: TObject);.Show;;TForm9.Button6Click(Sender: TObject);.Show;;TForm9.Button7Click(Sender: TObject);.Show;;TForm9.Button8Click(Sender: TObject);:Word;_Eqipaja.Close;_Eqipaja.SQL.Text:=’select * from eqipaj where Status=»Готов»’;_Eqipaja.ExecSQL;.DataSource:=DSPoisk_Eqipaja;.DataSource:=DSPoisk_Eqipaja;.DataSource:=DSPoisk_Eqipaja;.DataSource:=DSPoisk_Eqipaja;_Eqipaja.DataSet.Active:=true;(DBEdit2.Text = ») then:=MessageDLG(‘Нет достыпных экипажей!!!’,mtInformation,[mbOk],0);;;TForm9.Button2Click(Sender: TObject);:Word;(DBEdit1.Text = ») then:=MessageDLG(‘Нет доступных заказов!!!’,mtInformation,[mbOk],0);_zakaza.Close;_zakaza.SQL.Text:=’insert into reis (Nomer_zakaza,Punkt_otpravleniya,Punkt_naznacheniya) values (‘+#39+DBEdit1.Text+#39+’,’+#39+DBEdit4.Text+#39+’,’+#39+DBEdit6.Text+#39+’)’;_zakaza.ExecSQL;.DataSource.DataSet.Active:=false;.DataSource.DataSet.Active:=true;.Show;;;TForm9.Button9Click(Sender: TObject);:Word;(DBEdit2.Text = ») then:=MessageDLG(‘Нет достыпных экипажей!!!’,mtError,[mbOk],0);_eqypaja.Close;_eqypaja.SQL.Text:=’update reis set Nomer_eqipaja=’+#39+DBEdit2.Text+#39+’ where Nomer_reisa = ‘+#39+DBEdit7.Text+#39+»;_eqypaja.ExecSQL;_zakaz.Close;_zakaz.SQL.Text:=’select * from zakaz where Nomer_zakaza = ‘+#39+DBEdit10.Text+#39+»;_zakaz.ExecSQL;.DataSource:=DSTekuhiy_zakaz;.DataSource.DataSet.Active:=true;.DataSource.DataSet.Active:=false;.DataSource.DataSet.Active:=true;.Show;;;TForm9.Button10Click(Sender: TObject);:Word;_samoleta.Close;_samoleta.SQL.Text:=’select * from samolet where Status=»Готов»’;_samoleta.ExecSQL;.DataSource:=DSPoisk_samoleta;.DataSource:=DSPoisk_samoleta;.DataSource:=DSPoisk_samoleta;.DataSource:=DSPoisk_samoleta;_samoleta.DataSet.Active:=true;(DBEdit3.Text = ») then

R:=MessageDLG(‘Нет доступных средств перевозки груза!!!’,mtError,[mbOk],0);

end;;TForm9.Button12Click(Sender: TObject);.Show;;TForm9.Button13Click(Sender: TObject);.Show;.Text:=TimeToStr(Now);;TForm9.Button14Click(Sender: TObject);.Close;.Show;;TForm9.Button15Click(Sender: TObject);.Show;;TForm9.Button17Click(Sender: TObject);.Close;.Show;;TForm9.Button11Click(Sender: TObject);:Word;(DBEdit3.Text = ») then

begin:=MessageDLG(‘Нет доступных средств перевозки груза!!!’,mtError,[mbOk],0);

end.Text:=TimeToStr(Now);_samoleta.Close;_samoleta.SQL.Text:=’update reis set Nomer_samoleta=’+#39+DBEdit3.Text+#39+’where Nomer_reisa = ‘+#39+DBEdit8.Text+#39+»;_samoleta.ExecSQL;.DataSource.DataSet.Active:=false;.DataSource.DataSet.Active:=true;.Show;;;TForm9.Button18Click(Sender: TObject);:TDateTime;:String;:=now;:=FormatDateTime(‘yyyy-mm-dd’,Date);_vpp.Close;_vpp.SQL.Text:=’select * from vpp where Vremya =’+#39+s+#39+»;_vpp.ExecSQL;.DataSource:=DSPoisk_samoleta;.DataSource:=DSPoisk_samoleta;.DataSource:=DSPoisk_samoleta;.DataSource:=DSPoisk_samoleta;_samoleta.DataSet.Active:=true;;TForm9.Timer1Timer(Sender: TObject);.Caption:=TimeToStr(Now);.Caption:=TimeToStr(Now);.Label1.Caption:=TimeToStr(Now);.Text:=DateToStr(Now);;TForm9.Button19Click(Sender: TObject);:Word;(Edit3.Text = ‘ЧЧ.ММ.СС’) or (Edit3.Text =») then:=MessageDLG(‘Введите время вылета.’,mtInformation,[mbOk],0);;(Edit2.Text = ‘ДД.ММ.ГГГГ’) or (Edit2.Text =») then:=MessageDLG(‘Введите дату вылета.’,mtInformation,[mbOk],0);_v_grafik.Close;_v_grafik.SQL.Text:=’insert into vpp (Nomer_reisa,Vremya,Vremya_vzleta,Nomer_VPP) values (‘+#39+DBEdit5.Text+#39+’,’+#39+Edit2.Text+#39′,’+#39+Edit3.Text+#39+’,’+#39+Edit1.Text+#39+’)’;_v_grafik.ExecSQL;_vremya.Close;_vremya.SQL.Text:=’update reis set Nomer_VPP =’+#39+Edit1.Text+#39+’,Data_vileta = ‘+#39+Edit2.Text+#39+’,Vremya_vzleta = ‘+#39+Edit3.Text+#39+’ where Nomer_reisa = ‘+#39+DBEdit9.Text+#39+»;_vremya.ExecSQL;.DataSource.DataSet.Active:=false;.DataSource.DataSet.Active:=true;.DataSource.DataSet.Active:=false;.DataSource.DataSet.Active:=true;.DBGridEh1.DataSource.DataSet.Active:=false;.DBGridEh2.DataSource.DataSet.Active:=false;.DBGridEh1.DataSource.DataSet.Active:=true;.DBGridEh2.DataSource.DataSet.Active:=true;:=MessageDLG(‘Рейс удачно внесен в график взлетов.’,mtInformation,[mbOk],0);.Show;.Close;;

end;.