Проектирование базы данных «Аэропорт»
Существует много веских причин перевода существующей информации на компьютерную основу. Сейчас стоимость хранения информации в файлах ЭВМ дешевле, чем на бумаге. Базы данных позволяют хранить, структурировать информацию и извлекать оптимальным для пользователя образом. Использование клиент/серверных технологий позволяют сберечь значительные средства, а главное и время для получения необходимой… Читать ещё >
Проектирование базы данных «Аэропорт» (реферат, курсовая, диплом, контрольная)
- Содержание
- Содержание
- 1. Этапы разработки базы данных «Аэропорт»
- 1.1 Описание предметной области «Аэропорт»
- 1.2 Концептуальная модель «Аэропорт»
- 1.3 Логическая модель «Аэропорт»
- 1.4 Нормализация Базы Данных
- 1.5 Физическая модель «Аэропорта»
- 2. Проектирование приложения «Аэропорт»
- 3. Разработка интерфейса программы «Аэропорт»
- 4. Функции базы данных «Аэропорт»
- Заключение
- Список литературы
- Приложение
- Введение
- Потоки информации, циркулирующие в мире, который нас окружает, огромны. Во времени они имеют тенденцию к увеличению. Поэтому в любой организации, как большой, так и маленькой, возникает проблема такой организации управления данными, которая обеспечила бы наиболее эффективную работу. Некоторые организации используют для этого шкафы с папками, но большинство предпочитают компьютеризированные способы — базы данных, позволяющие эффективно хранить, структурировать и систематизировать большие объемы данных. И уже сегодня без баз данных невозможно представить работу большинства финансовых, промышленных, торговых и прочих организаций.
- Существует много веских причин перевода существующей информации на компьютерную основу. Сейчас стоимость хранения информации в файлах ЭВМ дешевле, чем на бумаге. Базы данных позволяют хранить, структурировать информацию и извлекать оптимальным для пользователя образом. Использование клиент/серверных технологий позволяют сберечь значительные средства, а главное и время для получения необходимой информации, а также упрощают доступ и ведение, поскольку они основываются на комплексной обработке данных и централизации их хранения. Кроме того ЭВМ позволяет хранить любые форматы данных, текст, чертежи, данные в рукописной форме, фотографии, записи голоса и т. д.
- Для использования столь огромных объемов хранимой информации, помимо развития системных устройств, средств передачи данных, памяти, необходимы средства обеспечения диалога человек — ЭВМ, которые позволяют пользователю вводить запросы, читать файлы, модифицировать хранимые данные, добавлять новые данные или принимать решения на основании хранимых данных. Для обеспечения этих функций созданы специализированные средства — системы управления базами данных (СУБД).
- Современные СУБД — многопользовательские системы управления базой данных, которые специализируется на управлении массивом информации одним или множеством одновременно работающих пользователей. Современные СУБД обеспечивают — набор средств для поддержки таблиц и отношений между связанными таблицами — развитый пользовательский интерфейс, который позволяет вводить и модифицировать информацию, выполнять поиск и представлять информацию в графическом или текстовом режиме — средства программирования высокого уровня, с помощью которых можно создавать собственные приложения.
- Сейчас очень популярно перевозить грузы с помощью самолетов. Возникают актуальные задачи по ускорению работы компании. Уменьшить время организации рейса.
- Целью курсового проекта является разработка базы данных для компании занимающейся авиагрузоперевозками.
- Для достижения цели следует решить следующие задачи:
- Более подробно исследовать объект Аэропорт.
- Исследовать его работу и организацию рейсов.
- Структура работы аэропорта очень сложная. Огромное количество служб должны отчитаться, что их работа выполнена и передать ход следующей службе. Представить все в бумажном виде очень сложно. Поэтому удобней будет создать общее хранилище в котором будет скапливаться информация и обрабатываться службами аэропорта.
1. Этапы разработки базы данных «Аэропорт»
1.1 Описание предметной области «Аэропорт»
В наше время воздушный транспорт является наиболее быстрым средством перевозки грузов на большие расстояния. Самое главное при авиагрузоперевозках правильно организовать работу служб аэропорта, правильно составить график рейсов. Для каждого рейса нужно выделить самолет, экипаж, и внести в график взлетов на взлетно-посадочной полосе. Но перед тем как составить рейс нужно провести проверку экипажей и самолетов.
Структура проверки состоит из большого числа пунктов. Очень удобно все пункты структурировать в виде таблицы. Информация в БД, тоже представляется в виде таблицы. Что позволит организовать проверку состояния самолетов, медицинский осмотр сотрудников, по результатам которого будет определён их допуск к полёту, составлять графики полётов.
Качество и надёжность результатов вышеназванных проверок служит основой безопасности рейсов. Верно составленный график полётов позволяет эффективно использовать время занятости полосы и загруженность рейсов.
Актуальным является сохранять сведения о названных процедурах в специальных модулях программного обеспечения.
Данную базу можно применить в любой компании которая занимается авиагрузоперевозками. Главы компании всегда должны отслеживать работу компании и следить за своими сотрудниками. Для этого нужна общая база данных, включающая всю необходимую информацию. И программа которая будет понятна и автоматизирует работу с базой данных.
1.2 Концептуальная модель «Аэропорт»
В ходе анализа деятельности аэропорта занимающегося авиагрузоперевозками, были определены ключевые абстракции, необходимые для организации базы данных:
1. Объект «РЕЙС». Для того, что бы организовать рейс необходимо знать какой груз будем перевозить. Необходимо выделить для него самолет и экипаж состоящий из сотрудников аэропорта. После чего нужно внести его в график полетов.
2. Объект «ГРАФИК ПОЛЕТОВ». В графике полетов записана очередность вылетов и загруженность взлетно-посадочной полосы (ВПП).
3. Объект «СОТРУДНИКИ». В любой компании присутствует штат сотрудников, их персональные данные удобно отобразить в виде таблицы.
4. Объект «САМОЛЕТ». Основные характеристики самолётов будут представлены в отдельной таблице.
5. Объект «ЭКИПАЖИ». Любой экипаж состоит из двух пилотов, штурмана и борт инженера. При организации рейса следует определить состав экипажа с учётом занятости и состояния здоровья сотрудников.
6. Объект «МЕДИЦИНСКИЙ ОСМОТР». Прежде чем отправится в полет каждый сотрудник должен пройти медицинский осмотр. Что бы удостоверится, что во время полета сотруднику не станет плохо. Результаты осмотра должны быть зафиксированы в базе.
7. Объект «РЕМОНТ САМОЛЕТОВ». Любая техника имеет свойство ломаться. История ремонтов самолета очень важна. Всегда нужно знать, что ремонтировалось в последний ремонт. История ремонтов может помочь в определении причин неисправностей и аварий.
8. Объект «СОСТОЯНИЕ САМОЛЕТОВ». Самолет техника очень сложная, и требует тщательного осмотра перед каждый полетом. От технического состояния самолетов зависит безопасность грузоперевозок. Проверка включает в себя большое количество пунктов, прежде чем отправить самолет в полет. Данная таблица позволит отслеживать состояние каждого самолета.
9. Объект «ЗАКАЗЫ». Проектируемая БД предназначена для автоматизации деятельности авиакомпании, занимающейся грузоперевозками внутри страны. Актуальным является хранение сведений о заказах и их состоянии.
1.3 Логическая модель «Аэропорт»
Логическое проектирование представляет собой необходимый этап при создании БД. Основной задачей логического проектирования является разработка логической схемы, ориентированной на выбранную систему управления базами данных (СУБД). Этап логического проектирования в отличие от концептуального проектирования полностью ориентирован на инструментальные средства компьютера.
Как видим из рисунка 1, база состоит из 9 таблиц. Все данные стекаются в одну таблицу РЕЙСЫ, она связана с 4 таблицами: ЭКИПАЖИ, САМОЛЕТЫ, ЗАКАЗЫ и ГРАФИК ПОЛЕТОВ. Они в свою очередь связаны с другими.
Рисунок 1 — Диаграмма данных
Таблица ЭКИПАЖИ связана с таблицей СОТРУДНИКИ, которая связана с таблицей МЕДИЦИНСКИЙ ОСМОТР. Она отвечает за состояние здоровья сотрудников. Благодаря отмеченной связи происходит формирование экипажа с учётом пригодности по состоянию здоровья сотрудников к полёту.
Таблица САМОЛЕТЫ связана с таблицами СОСТОЯНИЕ САМОЛЕТОВ, отвечает за проверку самолетов. И с таблицей РЕМОНТ САМОЛЕТОВ хранит историю ремонтов техники. В результате будет гарантирован выбор самолета пригодного к полёту по техническому состоянию.
Таблица ЗАКАЗЫ связана с таблицей РЕЙСЫ. В ней записаны заказы, которые были выполнены и новые заказы, которые предстоит выполнить.
Таблица ГРАФИК ПОЛЕТОВ связана с таблицей РЕЙСЫ. Отображает последовательность полетов и ВПП на которой взлетает самолет. Позволяет контролировать загруженность ВПП.
1.4 Нормализация базы данных
Важность нормализации состоит в том, что она позволяет разбить большие отношения, как правило, содержащие большую избыточность информации, на более мелкие логические единицы, группирующие только данные, объединенные «по природе». Таким образом, идея нормализации заключается в следующем. Каждая таблица в реляционной базе данных удовлетворяет условию, в соответствии с которым в позиции на пересечении каждой строки и столбца таблицы всегда находится единственное значение, и никогда не может быть множества таких значений.
Процесс нормализации заключается в приведении таблиц в так называемые нормальные формы. Существует несколько видов нормальных форм: первая нормальная форма (1НФ), вторая нормальная форма (2НФ), третья нормальная форма (3НФ).
Этот процесс включает:
— устранение повторяющихся групп (приведение к 1НФ);
— удаление частично зависимых атрибутов (приведение к 2НФ);
— удаление транзитивно зависимых атрибутов (приведение к 3НФ).
Приведение к первой нормальной форме. Когда поле в данной записи содержит более одного значения для каждого вхождения первичного ключа, такие группы данных называются повторяющимися группами. 1НФ не допускает наличия таких многозначных полей.
Приведение ко второй нормальной форме. Следующий важный шаг в процессе нормализации состоит в удалении всех не ключевых атрибутов, которые зависят только от части первичного ключа. Такие атрибуты называются частично зависимыми. Не ключевые атрибуты заключают в себе информацию о данной сущности предметной области, но не идентифицируют ее уникальным образом.
Приведение к третьей нормальной форме. Третий этап процесса приведения таблиц к нормальной форме состоит в удалении всех не ключевых атрибутов, которые зависят от других не ключевых атрибутов. Каждый такой атрибут должен быть логически связан с атрибутом (атрибутами), являющимся первичным ключом.
Таким образом, получаем базу данных, приведенную к 3НФ и содержащую упорядоченную информацию, детально отображающую рассматриваемую предметную область. Теперь, когда мы провели нормализацию таблиц с целью устранения избыточного дублирования данных и группирования информации в логически связанных единицах, сделаем ряд замечаний по вопросам проектирования баз данных. Необходимо четко понять, что разбиение информации на более мелкие единицы с одной стороны, способствует повышению надежности и непротиворечивости базы данных, а с другой стороны, снижает ее производительность, так как требуются дополнительные затраты процессорного времени (серверного или машины пользователя) на обратное «соединение» таблиц при представлении информации на экране. Иногда для достижения требуемой производительности нужно сделать отход от канонической нормализации, при этом ясно осознавая, что необходимо обеспечить меры по предотвращению противоречивости в данных. Поэтому всякое решение о необходимости того или иного действия по нормализации можно принимать, только тщательно проанализировав предметную область и класс поставленной задачи.
1.5 Физическая модель «Аэропорта»
Физическая модель, определяющая размещение данных, методы доступа и технику индексирования, называется внутренней моделью системы.
Внешние модели никак не связаны с типом физической памяти, в которой будут храниться данные, и с методами доступа к этим данным. Это положение отражает первый уровень независимости данных. С другой стороны, если концептуальная модель способна учитывать расширение требований к системе в будущем, то вносимые в нее изменения не должны оказывать влияния на существующие внешние модели. Это — второй уровень независимости данных. Построение логической модели обусловлено требованиями используемой СУБД.
Выбор СУБД является одним из важнейших моментов в разработке проекта БД, так как он принципиальным образом влияет на весь процесс проектирования БД и реализации информационной системы. Теоретически при осуществлении этого выбора нужно принимать во внимание десятки факторов. На практике разработчики руководствуются лишь собственной интуицией и несколькими наиболее важными критериями, к которым, в частности, относятся:
· тип модели данных, которую поддерживает данная СУБД, адекватность модели данных структуре рассматриваемой ПО;
· характеристики производительности СУБД;
· запас функциональных возможностей для дальнейшего развития информационной системы;
· степень оснащенности СУБД инструментарием для персонала администрирования данными;
· удобство и надежность СУБД в эксплуатации;
· стоимость СУБД и дополнительного программного обеспечения.
Все актуальные требования предметной области и адекватные им «скрытые» требования на стадии проектирования должны найти свое отражение в концептуальной модели. Конечно, нельзя предусмотреть все возможные варианты использования и изменения базы данных. Но в большинстве предметных областей такие основные данные, как объекты и их взаимосвязи, относительно стабильны. Меняются только информационные требования, то есть способы использования данных для получения информации.
Степень независимости данных определяется тщательностью проектирования базы данных. Всесторонний анализ объектов предметной области и их взаимосвязей минимизирует влияние изменения требований к данным в одной программе на другие программы.
2. Проектирование приложения «Аэропорт»
2.1 MySQL Workbench 6.1 + MySQL Server 5.6.16.0
MySQLWorkbench — инструмент для визуального проектирования баз данных, интегрирующий проектирование, моделирование, создание и эксплуатацию БД в единое окружение для системы баз данных MySQL. MySQLWorkbench предоставляет комплекс инструментов для настройки сервера, администрирования пользователей и многое другое. Программа доступна для работы с операционных системах: Windows, Linux и MacOS.
MySQLWorkbench позволяет администратору или проектировщику баз данных визуально моделировать, создавать и управлять базами данных. Программное обеспечение обладает всем необходимым для создания комплексной ER-моделей, прямой и обратной разработки, а также позволяет легко произвести сложные изменения в базе данных или исправления в документации, которые обычно занимают много времени и усилий.
Программа позволяет визуально создавать, выполнять и оптимизировать SQL-запросы. SQL редактор поддерживает синтаксическую подсветку и историю выполненных SQL-запросов. Панель подключений к базам данных даёт возможность легко переключаться между разными базами данных, что позволяет работать с несколькими БД одновременно. Просмотрщик объектов обеспечивает быстрый доступ к таблицам баз данных и объектам этих таблиц.
MySQLWorkbench упрощает разработку и поддержку баз данных, автоматизирует выполнение наиболее долгих и сложных задач и улучшает взаимодействие между разработчиками и администраторами баз данных. Программа позволяет проектировщикам данных наглядно предоставить требования и, связавшись с коллегами, быстро решить проблему до того как будет потрачено большое количество рабочих ресурсов и времени. С помощью MySQLWorkbench можно легко создавать надёжные, хорошо структурированные базы данных и в то же время достаточно гибкие, для того чтобы изменяться и улучшаться, отвечая новым требованиям бизнес задач. Утилиты для проверки моделей данных и структур таблиц обеспечивают высокую надёжность при разработке. Это избавляет разработчика от ошибок по время моделирования новой ER-диаграммы или создания физической MySQL базы данных.
Главные преимущества программы:
— Позволяет наглядно представить модель базы данных в графическом виде;
— Наглядный и функциональный механизм установки связей между таблицами, в том числе «многие ко многим» с созданием таблицы связей;
— ReverseEngineering — восстановление структуры таблиц из уже существующей на сервере БД;
— Удобный редактор SQL запросов, позволяющий сразу же отправлять их серверу и получать ответ в виде таблицы;
— Возможность редактирования данных в таблице в визуальном режиме.
Рисунок 2 — MySQL Workbench 6.1
2.2 Borland Delphi 7
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 — Компоненты вкладки ADO
Connector/ODBC 5.3
Это стандартный драйвер, который обеспечивает доступ к базе данных MySQL через Open Database Connectivity (ODBC) API. Включает в себя функциональность Unicode и ANSI драйверов ранее разделенных на Connector/ODBC 5.3 и Connector/ODBC 3.51.
2.3 Технология ADO
Технология 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 | Управляет механизмом, который позволяет клиенту получать доступ к объектам, расположенным в другом адресном пространстве или на другом компьютере | |
3. Разработка интерфейса программы «Аэропорт»
Разрабатываемая БД «Аэропорт» содержит конфиденциальную информацию о деятельности авиакомпании. Для обеспечения её сохранности, БД снабжена средствами идентификации пользователей, для каждого из которых сгенерированы логины и пароли. Пароли ежемесячно необходимо обновлять (рисунок 4).
Рисунок 4 — Окно доступа к базе
При верном вводе логина и пароля база станет доступной для работы.
Вначале появится информационное сообщение о необходимости обновления данных. Следует проверить статусы заказов, состояние самолётов, загруженность ВПП, готовность экипажей к полётам, чтобы оценить возможности выполнения новых заказов (рисунок 5).
Рисунок 5 — Информационное окно поверх главного окна программы
Нажав кнопку ОК станет доступным главное окно базы. На нем расположены таблицы РЕЙСЫ и ГРАФИК ПОЛЕТОВ. Кнопки сотрудники, заказы, экипажи, самолеты и мед. осмотр расположенные слева. Они обеспечивают доступ пользователей с основным таблицам БД (рисунок 6).
Рисунок 6 — Главное окно программы
Выполним переход к таблице «СОТРУДНИКИ», активировав соответствующую кнопку (рисунок 7).
Рисунок 7
Данные о сотрудниках представлены в следующей структуре: идентифицирующая информация (№, Ф.И.О), основные сведения, панель навигации, инструменты отбора данных, управляющие кнопки. Описанная структура характерна и для таблицы «Заказы» представлена на рисунке 8.
Рисунок 8
Форма «Экипажи» предназначена для определения состава экипажа текущего рейса. Формирование экипажа всегда начинается с определения первого пилота. Для удобства отбора членов экипажа форма снабжена инструментами поиска. Например, при выборе должности автоматически будут найдены сотрудники, её замещающие (рисунок 9).
Рисунок 9
Экипаж состоит из четырех человек, двух пилотов, штурмана и борт инженера. Каждый экипаж имеет статус готовности. Он имеет три состояния: готов, не готов и в полете. Статус готов говорит о том, что экипаж прошел проверку и готов выполнять работу. Статус не готов, устанавливается после выполнения заказа. Сообщает, что данный сотрудники состоящие в данном экипаже нуждаются в проверке. Статус в полете, сообщает, что экипаж выполняет перевозку какого либо груза.
На форме «Самолеты» представлены данные из нескольких таблиц БД, с её помощью можно получить сведения о самолётах и их пригодности к полётам (рисунок 10). Первая таблица «Самолеты», в ней перечислены самолеты которыми располагает компания, и их характеристики. В блоке «Данные о самолете» находится две таблицы. Левая таблица показывает состояние самолета, в правой таблице хранятся данные о ремонте всех самолетов. Что бы получить сведения о выбранном самолете, нужно нажать кнопку ПОЛУЧИТЬ ДАННЫЕ О САМОЛЕТЕ. В результате будут получены сведения о его ремонте. В левой таблице будет выведено, в каком состоянии самолет, прошел ли он проверку или нет и дата последней проверки. Статус готовности выставляет не программа, а сам пользователь. Полностью довериться программе нельзя, самолет техника очень сложная, поэтому прибегают к помощи специалиста. В дальнейшем можно развить описываемое программное обеспечение до уровня экспертной системы, которая обеспечит автоматизацию принятия решения о статусе самолётов.
Рисунок 10
Форма «МЕД, ОСМОТР» предоставляет доступ к таблицам Сотрудник, Экипажи и таблица Медицинский осмотр (рисунок 11). Из таблицы Сотрудники доктор выбирает сотрудника, который будет проходить проверку на пригодность к полёту, и при нажатии кнопки «Мед. Осмотр» заносит данные о его состоянии здоровья в таблицу «Медицинский осмотр». Начальные данные, такие как номер сотрудника, номер экипажа, Ф.И.О. и должность, автоматически заносятся в таблицу. Остальные данные доктор вводит сам. В итоге после проверки он должен поставить разрешение на полет, готов или не готов. Оно ставится по усмотрению доктора, так как статус не может ставить программа автоматически. У каждого человека разные медицинские показатели, при которых он может комфортно выполнять свою работу.
Рисунок 11
4. Функции базы данных «Аэропорт»
4.1 Поиск данных
По мере работы компании число записей в базе возрастает, что порождает актуальные задачи обеспечения эффективного поиска. Для их решения БД снабжена специальными элементами (рисунок 12).
Рисунок 12 — Элементы поиска в базе данных
Поиск производится по выбранному полю и условию отбора.
Поиск в окне «Экипажи» организован с использованием ниспадающих списков для выбора полей и значений отбора. Например, если происходит поиск по полю «Должность», то пользователю не требуется вводить запрос. Будет достаточно из списка выбрать должность, по которой автоматически произойдет отбор данных из таблицы «Сотрудники» (рисунок 13).
Рисунок 13 — Элементы поиска в окне «Экипажи»
Так же поиск данных можно осуществлять через поисковую панель, которая расположена над каждой таблицей базе (рис.14).
рис. 14 Поисковая панель
Поиск с помощью поисковой панели происходит по полям таблицы.
4.2 Составление экипажей
В БД «Аэропорт» представлены эффективные механизмы для определения состава экипажа.
В любом экипаже присутствует как минимум два пилота, борт инженер и штурман. Для составления экипажей на окне «Экипажи» расположены 4 кнопки, название которых соответствует должностям (рисунок 15).
Рисунок 15
Составление экипажа всегда начинается с первого пилота, он же командир экипажа. Им может быть только сотрудник с должностью «Лет.Состав (Первый пилот)». Если по ошибке, оператор выберет первым пилотом сотрудника, который не занимает указанную должность, то программа выводит сообщение об ошибке (рисунок 16).
Рисунок 16
После того как был выбран первый пилот в таблице появится новый неполный экипаж (рисунок 17).
Рисунок 17
Далее выбираем второго пилота, при этом необходимо следить, что в таблице «Экипажи» формируемый экипаж выбран текущим. При включении в экипаж сотрудника неверной должности будет выведено предупреждение (Рисунок 18).
Рисунок 18
По такой же схеме выбираем борт инженера и штурмана. Если оператор выбирает сотрудников не подходящих должностей, так же будет появляться предупреждение.
4.3 Приготовление рейса
Самое главное правильно составить рейс, выбрать экипаж, подобрать самолет подходящей грузоподъемности, указать время взлета и выбрать ВПП. Что бы более удобно было заполнять данные о рейсе, рассмотрим все действия оператора пошагово. Заполнение происходит в специальной форме. Для перехода к ней активируем в главном окне кнопку СОЗДАТЬ РЕЙС. Откроется окно «Обработка заказа». Сначала оператор должен выбрать заказ из таблицы «Заказы». В списке будут перечислены все заказы, не зависимо от их статуса. Для выбора невыполненных заказов нажмем кнопку Обновить. После в списке отмечается заказ и нажимается кнопка Выбрать (рисунок 19).
Рисунок 19 — Выбор заказа
Заказ записывается в таблицу «Рейсы». Следующим шагом будет выбор Экипажа из соответствующей таблицы. После активации кнопки «обновить» будет представлен список экипажей, не занятых в полёте. Если доступных экипажей нет, то появится соответствующее сообщение (рисунок 20).
Рисунок 20
В этом случае создание рейса остановится. Его можно будет выполнить, когда появятся свободные экипажи. При наличии свободных экипажей выбираем нужный нажатием кнопки Выбрать. Но прежде чем нажать кнопку Выбора, нужно удостовериться, что в таблице «Рейсы» выбран заказ который мы готовим к выполнению. Для удобства внизу таблицы «Рейсы» есть строка состояния. Она указывает, какой заказ выбран (рис.21).
рис. 21Строка состояния
Только после проверки строки состояния оператор может нажать кнопку Выбрать (рисунок 22).
Рисунок 22 — Выбор экипажа
После нажатия кнопки Выбрать происходит переход в следующую вкладку, в которой происходит выбор самолета (рисунок 23).
Рисунок 23
В этой вкладке расположены уже три таблицы. Таблица «Заказ» несет информационный характер. В ней расположена полная информация о заказе. Ведь самое главное при выборе самолета, что бы в него вместился весь груз. Выбрав подходящий самолет нажимаем кнопку Выбрать.
Следующим шагом и последним будет внесение рейса в график взлетов (рисунок 24).
Рисунок 24 — Вкладка выбор ВПП
Время, дату вылета, и ВПП оператор назначает сам. Для удобства на вкладке есть календарь и часы. После ввода данных нажимаем кнопку ВНЕСТИ В ГРАФИК. Будет выведено сообщение о том, что рейс внесен в ГРАФИК ВЫЛЕТОВ (рисунок 25).
Рисунок 25
Произойдёт переход в главное окно базы данных. В блоке «Рейсы» следует установить статус рейса: взлетел, выполнен.
Статусы рейса, заказа, экипажа и самолета автоматически изменяются с «Готов», на статус «В полете». После того как заказ будет выполнен, оператор выбирает рейс и нажимает кнопку ВЫПОЛНЕН. Заказ и рейс принимают статус «Выполнен», а самолет и экипаж статус «Не готов». Экипаж и самолет после выполнения заказа нуждаются в проверке.
4.4 Отчеты
В любой компании без отчетности не обойтись. Но имея базу данных отчет делать гораздо проще и быстрее. По данным в базе «» можно сгенерировать отчеты: о заказах (рисунок 26), о состоянии самолетов (рисунок 27) и график полетов (рисунок 28).
Рисунок 26
Рисунок 27
Рисунок 28
Заключение
В данной курсовой работе разработана БД «Аэропорт» .
В процессе выполнения работы были выполнены такие пункты:
— анализ предметной области;
— построение концептуальной модели предметной области;
— построение логической модели базы данных;
— организация базы данных;
— разработка прикладной программы;
— наполнение и сопровождение базы данных;
— подготовка программной документации.
В процессе организации БД проведен до необходимого уровня абстракций анализ предметной области, построены концептуальная и реляционная модель БД, произведена нормализация реляционной БД.
Данная БД разрабатывалась для сотрудников аэропорта. Доступ клиентам и посторонним пользователям закрыт. Так как в ней хранится конфиденциальная информация.
На основе достигнутых результатов можно сформулировать рекомендации по улучшению программы:
— БД можно расширить до уровня экспертной системы.
— Использование web-технологий для доступа к данным через Интернет.
1. Рыжикова Е. Г., Методические указания к самостоятельным работам для студентов II курса, обучающихся по направлению подготовки бакалавров 230 400 Информационные системы и технологии профиль подготовки./ Информационные системы и технологии / Е. Г. Рыжикова — Брянск.: Издательство БГИТА, 2013. — 18с.
2. Рудикова Л. В., Базы данных. Разработка приложений для студента / Л. В. Рудикова — СПб.: БХВ-Петербург, 2006. — 496 с.
3. Форум программистов и сисадминов Cyberforum.ru [Электронный ресурс]
4. Sysman.ru [Электронный ресурс] - Форум. Сайт программистов
5. Delphi Expert [Электронный ресурс]
6. Фёдоров А. Г. Создание Windows-приложений в среде Delphi. — М.: ТОО «Компьютер Пресс», 1995. — 287с.
7. Хоменко А. Д. Основы современных компьютерных технологий. — М.: ТОО «Компьютер Пресс», 2000 г. — 467с.
идентификация интерфейс программа реляционный
Приложение
Листинг Unit1(процедуры)
procedure TForm1. Button2Click (Sender: TObject);
begin
if OpenPictureDialog1. Execute then
begin
DBImage1.Picture.LoadFromFile (OpenPictureDialog1.FileName);
Sotrudniki.Edit;
TBLOBField (Sotrudniki.FieldByName ('foto')).LoadFromFile (OpenPictureDialog1.FileName);
Sotrudniki.Post;
end;
end;
procedure TForm1. Button1Click (Sender: TObject);
var d1: TDateTime;
a, s: string;
begin
if (Combobox1.Text = 'Дата рождения') then
a:='Data_rojdeniya';
if (Combobox1.Text = 'Дата приема') then
a:='Data_priema';
if (Combobox1.Text = 'Дата увольнения') then
a:='Data_uvolneniya';
if (Combobox1.Text = 'Должность') then
a:='Doljnost';
if (Combobox1.Text = 'Паспортные данные') then
a:='Pasport_data';
if (Combobox1.Text = 'Номер сотрудника') then
a:='Nomer_sotrudnika';
if (Combobox1.Text = 'ФИО') then
a:='FIO';
if (Combobox1.Text='Дата рождения') or (Combobox1.Text='Дата приема') or (Combobox1.Text='Дата увольнения') then
d1:=StrToDate (Edit1.text);
s:=FormatDateTime ('yyyy-mm-dd', d1);
Poisk.close;
Poisk.sql.clear;
if (Combobox1.Text='Дата рождения') or (Combobox1.Text='Дата приема') or (Combobox1.Text='Дата увольнения') then
Poisk.SQL.Add ('select * from Sotrudniki where ' +a+'='+#39+s+#39' ')
else
Poisk.SQL.Add ('select * from Sotrudniki where ' +a+'='+#39+Edit1.text+#39' ');
Poisk.Open;
DSPoisk.dataset.close;
DSPoisk.dataset:=Poisk;
DBGridEh1.DataSource:=DSPoisk;
DBVertGridEh1.DataSource:=DSPoisk;
DSPoisk.DataSet.Active:=true;
end;
procedure TForm1. Button3Click (Sender: TObject);
var
Date:TDateTime;
s:string;
begin
Date:=now;
s:=FormatDateTime ('yyyy-mm-dd', Date);
Status_sotrudnikov.Close;
Status_sotrudnikov.SQL.Text:='update sotrudniki inner join med_osmotr on Med_Osmotr.FIO=Sotrudniki.FIO SET Sotrudniki. Razreshenie_na_polet = Med_Osmotr.Razrehenie_na_polet where '+#39+s+#39+' = Med_Osmotr.Data_proverki';
Status_sotrudnikov.ExecSQL;
DSSotrudniki.DataSet.Active:=false;
DBgridEh1.DataSource:=DSSotrudniki;
DBVertGridEh1.DataSource:=DSSotrudniki;
DbgridEh1.DataSource.DataSet.Active:=true;
end;
procedure TForm1. Button4Click (Sender: TObject);
begin
Form1.Close;
Form2.Show;
end;
procedure TForm1. wClick (Sender: TObject);
begin
RvSotrudniki.Engine:=RvSystem1;
with RvSystem1 do
begin
DoNativeOutput:= False;
RenderObject:=RvRenderPDF1;
OutputFileName:= 'Sotrudniki.pdf';
end;
RvSotrudniki.Execute;
end;
end.
Листинг Unit2(процедуры)
procedure TForm2. Button1Click (Sender: TObject);
begin
Form1.Show;
Form2.Hide;
end;
procedure TForm2. Button2Click (Sender: TObject);
begin
Form3.Show;
Form2.Hide;
end;
procedure TForm2. Button3Click (Sender: TObject);
begin
Form4.Show;
Form2.Hide;
end;
procedure TForm2. Button4Click (Sender: TObject);
begin
Form5.Show;
Form2.Hide;
end;
procedure TForm2. Button5Click (Sender: TObject);
begin
Sostoyanie_reisa.Close;
Sostoyanie_reisa.SQL.Text:= 'update reis set sostoyanie = ''В полете'' where Nomer_reisa = '+#39+DBEdit1.Text+#39+'';
Sostoyanie_reisa.ExecSQL;
Sostoyanie_eqipaja.Close;
Sostoyanie_eqipaja.SQL.Text:='update eqipaj set status = ''В полете'' where Nomer_eqipaja = '+#39+DBEdit2.Text+#39+'';
Sostoyanie_eqipaja.ExecSQL;
Sostoianie_zakaza.Close;
Sostoianie_zakaza.SQL.Text:='update zakaz set status = ''В полете''where Nomer_zakaza = '+#39+DBEdit3.Text+#39+'';
Sostoianie_zakaza.ExecSQL;
Sostoyanie_samoleta.Close;
Sostoyanie_samoleta.SQL.Text:='update samolet set status = ''В полете'' where Nomer_samoleta = '+#39+DBEdit4.Text+#39+'';
Sostoyanie_samoleta.ExecSQL;
DBGridEh1.DataSource.DataSet.Active:=false;
Form3.DSZakaz.DataSet.Active:=false;
Form4.DSEqpaj.DataSet.Active:=false;
Form5.DSSamolet.DataSet.Active:=false;
DBGridEh1.DataSource.DataSet.Active:=true;
Form3.DSZakaz.DataSet.Active:=true;
Form4.DSEqpaj.DataSet.Active:=true;
Form5.DSSamolet.DataSet.Active:=true;
end;
procedure TForm2. Button6Click (Sender: TObject);
begin
Form7.Show;
Form2.Hide;
end;
procedure TForm2. Button7Click (Sender: TObject);
begin
Sostoyanie_reisa.Close;
Sostoyanie_reisa.SQL.Text:= 'update reis set sostoyanie = ''Выполнен'' where Nomer_reisa = '+#39+DBEdit1.Text+#39+'';
Sostoyanie_reisa.ExecSQL;
Sostoyanie_eqipaja.Close;
Sostoyanie_eqipaja.SQL.Text:='update eqipaj set status = ''Готов'' where Nomer_eqipaja = '+#39+DBEdit2.Text+#39+'';
Sostoyanie_eqipaja.ExecSQL;
Sostoianie_zakaza.Close;
Sostoianie_zakaza.SQL.Text:='update zakaz set status = ''Выполнен''where Nomer_zakaza = '+#39+DBEdit3.Text+#39+'';
Sostoianie_zakaza.ExecSQL;
Sostoyanie_samoleta.Close;
Sostoyanie_samoleta.SQL.Text:='update samolet set status = ''Не готов'' where Nomer_samoleta = '+#39+DBEdit4.Text+#39+'';
Sostoyanie_samoleta.ExecSQL;
Na_proverku.Close;
Na_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+'';
Na_proverku.ExecSQL;
DBGridEh1.DataSource.DataSet.Active:=false;
Form3.DSZakaz.DataSet.Active:=false;
Form4.DSEqpaj.DataSet.Active:=false;
Form5.DSSamolet.DataSet.Active:=false;
Form5.DSSostSamoletov.DataSet.Active:=false;
DBGridEh1.DataSource.DataSet.Active:=true;
Form3.DSZakaz.DataSet.Active:=true;
Form4.DSEqpaj.DataSet.Active:=true;
Form5.DSSamolet.DataSet.Active:=true;
Form5.DSSostSamoletov.DataSet.Active:=true;
end;
procedure TForm2. Button8Click (Sender: TObject);
begin
Form9.Show;
Form9.TabSheet1.Show;
Form2.Hide;
end;
procedure TForm2. Button9Click (Sender: TObject);
begin
Form6.Close;
end;
procedure TForm2. Button10Click (Sender: TObject);
begin
DSReis.DataSet.Active:=false;
DSVPP.DataSet.Active:=false;
DSReis.DataSet.Active:=true;
DSVPP.DataSet.Active:=true;
end;
procedure TForm2. Button11Click (Sender: TObject);
begin
RvVPP.Engine:=RvSystem1;
with RvSystem1 do
begin
DoNativeOutput:= False;
RenderObject:=RvRenderPDF1;
OutputFileName:= 'Sotrudniki.pdf';
end;
RvVPP.Execute;
end;
end.
Листинг Unit3(процедуры)
procedure TForm3. Button2Click (Sender: TObject);
begin
DBgridEh1.DataSource:=DSZakaz;
DBVertGridEh1.DataSource:=DSZakaz;
DbgridEh1.DataSource.DataSet.Active:=true;
end;
procedure TForm3. Button1Click (Sender: TObject);
var
q:Integer;
a, s: string;
begin
if (Combobox1.Text = 'Масса груза') then
a :='Massa_gruza';
if (Combobox1.Text = 'Пункт назначения') then
a:='Punkt_naznacheniya';
if (Combobox1.Text = 'Пункт отправления') then
a:='Punkt_otpravleniya';
Poisk.close;
Poisk.sql.clear;
Poisk.SQL.Add ('select * from Zakaz where ' +a+'='+#39+Edit1.text+#39' ');
Poisk.Open;
DSPoisk.dataset.close;
DSPoisk.dataset:=Poisk;
DBGridEh1.DataSource:=DSPoisk;
DBVertGridEh1.DataSource:=DSPoisk;
DSPoisk.DataSet.Active:=true;
end;
procedure TForm3. ComboBox1Change (Sender: TObject);
begin
if (ComboBox1.Text = 'Масса груза') or (Combobox1.Text = 'Пункт назначения') or (Combobox1.Text = 'Пункт отправления') then
Edit1.Enabled:=true
else
Edit1.Enabled:=false;
end;
procedure TForm3. Button3Click (Sender: TObject);
begin
Form3.Close;
Form2.Show;
end;
procedure TForm3. Button4Click (Sender: TObject);
begin
RvProject1.Engine:=RvSystem1;
with RvSystem1 do
begin
DoNativeOutput:= False;
RenderObject:=RvRenderPDF1;
OutputFileName:= 'Sotrudniki.pdf';
end;
RvProject1.Execute;
end;
end.
Листинг Unit4(процедуры)
procedure TForm4. Button1Click (Sender: TObject);
var
R:Word;
begin
if (ComboBox2.Text <> 'Первый пилот') then
begin
R:=MessageDLG ('Данный сотрудник не может быть Первым пилотом!!!', mtError,[mbOk], 0);
end;
if (ComboBox2.Text = 'Первый пилот') then
begin
DSEqpaj.DataSet.Active:=false;
Perviy_pilot.close;
PerviY_pilot.SQL.Text:='insert into eqipaj (Perviy_pilot)value ('+#39+DBEdit1.Text+#39+')';
Perviy_pilot.ExecSQL;
DSEqpaj.DataSet.Active:=true;
end;
end;
procedure TForm4. Button2Click (Sender: TObject);
var
R:Word;
I:string;
begin
I:=DBEdit2.Text;
if (ComboBox2.Text <> 'Второй пилот') then
begin
R:=MessageDLG ('Данный сотрудник не может быть Вторым пилотом!!! Выбрать данного сотрудника ''Вторым пилотом''?', mtWarning,[mbYes, mbNo], 0);
if R=mrYes then
begin
DSEqpaj.DataSet.Active:=false;
Vtoroy_pilot.close;
Vtoroy_pilot.SQL.Text:='update eqipaj set Vtoroy_pilot = '+#39+DBEdit1.Text+#39+' where Nomer_eqipaja = '+#39+I+#39+'';
Vtoroy_pilot.ExecSQL;
DSEqpaj.DataSet.Active:=true;
end;
end
else
begin
DSEqpaj.DataSet.Active:=false;
Vtoroy_pilot.close;
Vtoroy_pilot.SQL.Text:='update eqipaj set Vtoroy_pilot = '+#39+DBEdit1.Text+#39+' where Nomer_eqipaja = '+#39+I+#39+'';
Vtoroy_pilot.ExecSQL;
DSEqpaj.DataSet.Active:=true;
end;
end;
procedure TForm4. Button3Click (Sender: TObject);
var
R:Word;
I:string;
begin
I:=DBEdit2.Text;
if (ComboBox2.Text <> 'Штурман') then
begin
R:=MessageDLG ('Данный сотрудник не может быть Штурманом!!! Выбрать данного сотрудника ''Штурманом''?', mtWarning,[mbYes, mbNo], 0);
if R=mrYes then
begin
DSEqpaj.DataSet.Active:=false;
Shturman.close;
Shturman.SQL.Text:='update eqipaj set Shturman = '+#39+DBEdit1.Text+#39+' where Nomer_eqipaja = '+#39+I+#39+'';
Shturman.ExecSQL;
DSEqpaj.DataSet.Active:=true;
end;
end
else
begin
DSEqpaj.DataSet.Active:=false;
Shturman.close;
Shturman.SQL.Text:='update eqipaj set Shturman = '+#39+DBEdit1.Text+#39+' where Nomer_eqipaja = '+#39+I+#39+'';
Shturman.ExecSQL;
DSEqpaj.DataSet.Active:=true;
end;
end;
procedure TForm4. Button4Click (Sender: TObject);
var
R:Word;
I:string;
begin
I:=DBEdit2.Text;
if (ComboBox2.Text <> 'Борт Инженер') then
begin
R:=MessageDLG ('Данный сотрудник не может быть Борт инженером!!! Выбрать данного сотрудника ''Борт Инженером''?', mtWarning,[mbYes, mbNo], 0);
if R=mrYes then
begin
DSEqpaj.DataSet.Active:=false;
Injener.close;
Injener.SQL.Text:='update eqipaj set Injener = '+#39+DBEdit1.Text+#39+'where Nomer_eqipaja = '+#39+I+#39+'';
Injener.ExecSQL;
DSEqpaj.DataSet.Active:=true;
end;
end
else
begin
DSEqpaj.DataSet.Active:=false;
Injener.close;
Injener.SQL.Text:='update eqipaj set Injener = '+#39+DBEdit1.Text+#39+'where Nomer_eqipaja = '+#39+I+#39+'';
Injener.ExecSQL;
DSEqpaj.DataSet.Active:=true;
end;
end;
procedure TForm4. ComboBox1Change (Sender: TObject);
var
R:Word;
I:string;
begin
if (ComboBox1.Text = 'ФИО') then
begin
Edit1.Enabled:=true;
ComboBox2.Enabled:=false;
end
else
begin
Edit1.Enabled:=false;
ComboBox2.Enabled:=true;
end;
end;
procedure TForm4. Button5Click (Sender: TObject);
var
a:string;
begin
if (ComboBox1.Text = 'ФИО') then
a:='FIO';
Search.close;
Search.SQL.Text:='select * from Sotrudniki where '+a+'='+#39+Edit1.text+#39' ';
Search.ExecSQL;
DSSearch.dataset.close;
DSSearch.dataset:=Search;
DBGridEh2.DataSource:=DSSearch;
DBVertGridEh1.DataSource:=DSSearch;
DSSearch.DataSet.Active:=true;
end;
procedure TForm4. Button6Click (Sender: TObject);
begin
DbgridEh2.DataSource.DataSet.Active:=false;
DBgridEh2.DataSource:=DSSotrudniki;
DBVertGridEh1.DataSource:=DSSotrudniki;
DbgridEh2.DataSource.DataSet.Active:=true;
end;
procedure TForm4. ComboBox2Change (Sender: TObject);
var
a:string;
begin
if (ComboBox2.Text = 'Первый пилот') then
begin
a:='Лет.Состав (Первый пилот)';
Search.close;
Search.SQL.Text:='select * from Sotrudniki where Doljnost ='+#39+a+#39' and Razreshenie_na_polet =''Готов''';
Search.ExecSQL;
end;
if (ComboBox2.Text = 'Второй пилот') then
begin
a:='Лет.Состав (Второй пилот)';
Search.close;
Search.SQL.Text:='select * from Sotrudniki where Doljnost ='+#39+a+#39' and Razreshenie_na_polet =''Готов''';
Search.ExecSQL;
end;
if (ComboBox2.Text = 'Штурман') then
begin
a:='Лет.Состав (Штурман)';
Search.close;
Search.SQL.Text:='select * from Sotrudniki where Doljnost ='+#39+a+#39' and Razreshenie_na_polet =''Готов''';
Search.ExecSQL;
end;
if (ComboBox2.Text = 'Борт Инженер') then
begin
a:='Лет.Состав (Инженер)';
Search.close;
Search.SQL.Text:='select * from Sotrudniki where Doljnost ='+#39+a+#39' and Razreshenie_na_polet =''Готов''';
end;
DSSearch.dataset.close;
DSSearch.dataset:=Search;
DBGridEh2.DataSource:=DSSearch;
DBVertGridEh1.DataSource:=DSSearch;
DSSearch.DataSet.Active:=true;
end;
procedure TForm4. Button7Click (Sender: TObject);
begin
Form4.Close;
Form2.Show;
end;
procedure TForm4. Button8Click (Sender: TObject);
begin
DSEqpaj.DataSet.Active:=false;
Status_Eqipajey.Close;
Status_Eqipajey.SQL.Text:='update eqipaj set status = ''Готов'' where Perviy_pilot <> ''null'' and Vtoroy_pilot <> ''null'' and Shturman <> ''null'' and Injener <> ''null''';
Status_Eqipajey.ExecSQL;
DSEqpaj.DataSet.Active:=true;
end;
end.
Листинг Unit5(процедуры)
procedure TForm5. Button4Click (Sender: TObject);
begin
if OpenPictureDialog1. Execute then
begin
DBImage1.Picture.LoadFromFile (OpenPictureDialog1.FileName);
Samolet.Edit;
TBLOBField (Samolet.FieldByName ('Foto')).LoadFromFile (OpenPictureDialog1.FileName);
Samolet.Post;
end;
end;
procedure TForm5. ComboBox1Change (Sender: TObject);
begin
if (ComboBox1.Text = 'Модель самолета') or (ComboBox1.Text = 'Грузоподъемность самолета') then
begin
Edit1.Enabled:=true;
ComboBox2.Enabled:=false;
end
else
begin
Edit1.Enabled:=false;
ComboBox2.Enabled:=true;
end;
end;
procedure TForm5. Button1Click (Sender: TObject);
var
a:string;
begin
if (ComboBox1.Text = 'Модель самолета') then
a:='Model_samoleta';
if (ComboBox1.Text = 'Грузоподъемность самолета') then
a:='Gruzopodemnost_tonn';
Search.close;
Search.SQL.Text:='select * from Sotrudniki where '+a+'='+#39+Edit1.text+#39' ';
Search.ExecSQL;
DSSearch.dataset.close;
DSSearch.dataset:=Search;
DBGridEh1.DataSource:=DSSearch;
DBVertGridEh1.DataSource:=DSSearch;
DSSearch.DataSet.Active:=true;
end;
procedure TForm5. Button2Click (Sender: TObject);
begin
DBgridEh1.DataSource:=DSSamolet;
DBVertGridEh1.DataSource:=DSSamolet;
DBEdit1.DataSource:=DSSamolet;
if (DBEdit2.Text='Отличное') or (DBEdit3.Text='Отличное') or (DBEdit4.Text='Отличное') or (DBEdit5.Text='Заполнено') or (DBEdit6.Text='Заполнено') or (DBEdit7.Text='Выполнено') then
begin
Sostoyanie.Close;
Sostoyanie.SQL.Text :='update Samolet set status =''Готов''where Nomer_samoleta = '+#39+DBEdit1.Text+#39+'';
Sostoyanie.ExecSQL;
end;
DSSamolet.DataSet.Active:=false;
DSSamolet.DataSet.Active:=true;
end;
procedure TForm5. ComboBox2Change (Sender: TObject);
var
a:string;
begin
if (ComboBox2.Text = 'Готов') then
begin
a:='Готов';
Search.close;
Search.SQL.Text:='select * from samolet where Status ='+#39+a+#39' ';
Search.ExecSQL;
end;
if (ComboBox2.Text = 'Не готов') then
begin
a:='Не готов';
Search.close;
Search.SQL.Text:='select * from samolet where Status ='+#39+a+#39' ';
Search.ExecSQL;
end;
if (ComboBox2.Text = 'В ремонте') then
begin
a:='В ремонте';
Search.close;
Search.SQL.Text:='select * from samolet where Status ='+#39+a+#39' ';
Search.ExecSQL;
end;
if (ComboBox2.Text = 'В полете') then
begin
a:='В полете';
Search.close;
Search.SQL.Text:='select * from samolet where Status ='+#39+a+#39' ';
Search.ExecSQL;
end;
DSSearch.dataset.close;
DSSearch.dataset:=Search;
DBGridEh1.DataSource:=DSSearch;
DBVertGridEh1.DataSource:=DSSearch;
DBEdit1.DataSource:=DSSearch;
DSSearch.DataSet.Active:=true;
end;
procedure TForm5. Button3Click (Sender: TObject);
begin
Svodka.Close;
Svodka.SQL.Text := 'select * from remont_samoletov where Nomer_samoleta = '+#39+DBEdit1.Text+#39+'';
Svodka.ExecSQL;
DSSvodka.Dataset.close;
DSSvodka.dataset:=Svodka;
DBGridEh2.DataSource:=DSSvodka;
DSSvodka.Dataset.Active := true;
Svedeniya.Close;
Svedeniya.SQL.Text := 'select * from sostoyanie_samoletov where Nomer_samoleta = '+#39+DBEdit1.Text+#39+'';
Svedeniya.ExecSQL;
DSSvodka2.DataSet.Close;
DSSvodka2.DataSet:=Svedeniya;
DBVertGridEh2.DataSource:=DSSvodka2;
DSSvodka2.DataSet.Active := true;
end;
procedure TForm5. Button5Click (Sender: TObject);
begin
DBGridEh2.DataSource:=DSRemontSamoletov;
DBVertGridEh2.DataSource:=DSSostSamoletov;
DSRemontSamoletov.DataSet.Active:=true;
DSSostSamoletov.DataSet.Active:=true;
end;
procedure TForm5. Button6Click (Sender: TObject);
begin
Form5.Close;
Form2.Show;
end;
procedure TForm5. Button7Click (Sender: TObject);
begin
RVSostoyanie_samoletov.Engine:=RvSystem1;
with RvSystem1 do
begin
DoNativeOutput:= False;
RenderObject:=RvRenderPDF1;
OutputFileName:= 'Sostoyanie samoletov. pdf';
end;
RVSostoyanie_samoletov.Execute;
end;
end.
Листинг Unit6(процедуры)
procedure TForm6. Button1Click (Sender: TObject);
var
R:Word;
begin
if (Edit1.Text = 'Логин') and (Edit2.Text = '1234') then
begin
Form2.Show;
Form1.Hide;
R:=MessageDLG ('Не забудьте обновить сводку о технике и о сотрудниках.', mtInformation,[mbOk], 0);
end
else
begin
R:=MessageDLG ('Введенные пароль или логин не верны.', mtError,[mbOk], 0);
end;
end;
procedure TForm6. Button2Click (Sender: TObject);
begin
close;
end;
end.
Листинг Unit 7(процедуры)
procedure TForm7. Button1Click (Sender: TObject);
begin
Form7.Close;
Form2.Show;
end;
procedure TForm7. Button2Click (Sender: TObject);
var
Time:TDateTime;
a:String;
begin
Time:=now;
a:=FormatDateTime ('yyyy-mm-dd', Time);
DannieEqipaja.Close;
DannieEqipaja.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+' ';
DannieEqipaja.ExecSQL;
DSDannieEqipaja.DataSet.Close;
DSDannieEqipaja.DataSet:=DannieEqipaja;
DBVertGridEh2.DataSource:=DSDannieEqipaja;
DSDannieEqipaja.DataSet.Active:=true;
DSEqipaj.DataSet.Active:=true;
DSMedOsmotr.DataSet.Active:=false;
Osmotr.Close;
Osmotr.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+')';
Osmotr.ExecSQL;
DSMedOsmotr.DataSet.Active:=true;
end;
end.
Листинг Unit9(процедуры)
procedure TForm9. Button3Click (Sender: TObject);
var
R:Word;
begin
Zakazy.Close;
Zakazy.SQL.Text:='select * from zakaz where status=''Не выполнен'' or Status = ''Задержан''';
Zakazy.ExecSQL;
DBGridEh1.DataSource:=DSZakazy;
DBEdit1.DataSource:=DSZakazy;
DBNavigator1.DataSource:=DSZakazy;
DBGridEh1.DataSource.DataSet.Active:=true;
if (DBEdit1.Text = '') then
begin
R:=MessageDLG ('Нет доступных заказов!!!', mtInformation,[mbOk], 0);
end;
end;
procedure TForm9. Button1Click (Sender: TObject);
begin
Form9.Close;
Form2.Show;
end;
procedure TForm9. Button5Click (Sender: TObject);
begin
Form9.Close;
Form2.Show;
end;
procedure TForm9. Button4Click (Sender: TObject);
begin
TabSheet2.Show;
end;
procedure TForm9. Button6Click (Sender: TObject);
begin
TabSheet3.Show;
end;
procedure TForm9. Button7Click (Sender: TObject);
begin
TabSheet1.Show;
end;
procedure TForm9. Button8Click (Sender: TObject);
var
R:Word;
begin
Poisk_Eqipaja.Close;
Poisk_Eqipaja.SQL.Text:='select * from eqipaj where Status=''Готов''';
Poisk_Eqipaja.ExecSQL;
DBGridEh3.DataSource:=DSPoisk_Eqipaja;
DBVertGridEh1.DataSource:=DSPoisk_Eqipaja;
DBEdit2.DataSource:=DSPoisk_Eqipaja;
DBNavigator3.DataSource:=DSPoisk_Eqipaja;
DSPoisk_Eqipaja.DataSet.Active:=true;
if (DBEdit2.Text = '') then
begin
R:=MessageDLG ('Нет достыпных экипажей!!!', mtInformation,[mbOk], 0);
end;
end;
procedure TForm9. Button2Click (Sender: TObject);
var
R:Word;
begin
if (DBEdit1.Text = '') then
begin
R:=MessageDLG ('Нет доступных заказов!!!', mtInformation,[mbOk], 0);
end
else
begin
Vybor_zakaza.Close;
Vybor_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+')';
Vybor_zakaza.ExecSQL;
DBGridEh2.DataSource.DataSet.Active:=false;
DBGridEh2.DataSource.DataSet.Active:=true;
TabSheet2.Show;
end;
end;
procedure TForm9. Button9Click (Sender: TObject);
var
R:Word;
begin
if (DBEdit2.Text = '') then
begin
R:=MessageDLG ('Нет достыпных экипажей!!!', mtError,[mbOk], 0);
end
else
begin
Vibor_eqypaja.Close;
Vibor_eqypaja.SQL.Text:='update reis set Nomer_eqipaja='+#39+DBEdit2.Text+#39+' where Nomer_reisa = '+#39+DBEdit7.Text+#39+'';
Vibor_eqypaja.ExecSQL;
Tekuhiy_zakaz.Close;
Tekuhiy_zakaz.SQL.Text:='select * from zakaz where Nomer_zakaza = '+#39+DBEdit10.Text+#39+'';