close

Вход

Забыли?

вход по аккаунту

?

ПЗ (2)

код для вставкиСкачать
Введение
Современная
жизнь
немыслима
без
эффективного
управления.
Важной
категорией являются системы обработки информации, от которых во многом зависит
эффективность работы любого предприятия ли учреждения. Такая система должна:
 обеспечивать получение общих и/или детализированных отчетов по итогам
работы;
 позволять легко определять тенденции изменения важнейших показателей;
 обеспечивать получение информации, критической по времени, без существенных
задержек;
 выполнять точный и полный анализ данных.
Современные системы управления базами данных (СУБД) в основном являются
приложениями Windows, так как данная среда позволяет более полно использовать
возможности персональной электронной вычислительной машины (ЭВМ), нежели среда
DOS. Снижение стоимости высокопроизводительных персональных компьютеров (ПК)
обусловил не только широкий переход к среде Windows, где разработчик программного
обеспечения может в меньше степени заботиться о распределении ресурсов, но также
сделал программное обеспечение ПК в целом и СУБД в частности менее критичными к
аппаратным ресурсам ЭВМ.
Среди наиболее ярких представителей систем управления базами данных можно
отметить: Lotus Approach, Microsoft Access, Borland dBase, Borland Paradox, Microsoft
Visual FoxPro, Microsoft Visual Basic, а также баз данных Microsoft SQL Server и Oracle,
используемые в приложениях, построенных по технологии «клиент-сервер». Фактически,
у любой современной СУБД существует аналог, выпускаемый другой компанией,
имеющий аналогичную область применения и возможности, любое приложение способно
работать со многими форматами представления данных, осуществлять экспорт и импорт
данных благодаря наличию большого числа конвертеров. Общепринятыми, также,
являются технологи, позволяющие использовать возможности других приложений,
например, текстовых процессоров, пакетов построения графиков и т.п., и встроенные
версии языков высокого уровня (чаще – диалекты SQL и/или VBA) и средства
визуального программирования интерфейсов разрабатываемых приложений. Поэтому уже
не имеет существенного значения на каком языке и на основе какого пакета написано
конкретное приложение, и какой формат данных в нем используется. Поэтому в одном
ряду с «классическими» СУБД все чаще упоминаются языки программирования Visual
4
Basic 4.0 и Visual C++, которые позволяют быстро создавать необходимые компоненты
приложений, критичные по скорости работы, которые трудно, а иногда невозможно
разработать средствами «классических» СУБД. Современный подход к управлению
базами данных подразумевает также широкое использование технологии «клиент-сервер».
Цель любой информационной системы — обработка данных об объектах
реального мира. В широком смысле слова база данных — это совокупность сведений о
конкретных объектах реального мира в какой-либо предметной области. Под предметной
областью принято понимать часть реального мира, подлежащего изучению для
организации управления и, в конечном счете, автоматизации, например предприятие, вуз
и т д.
Структурные элементы базы данных.
Понятие базы данных тесно связано с такими понятиями структурных элементов,
как поле, запись, файл (таблица).
Поле — элементарная единица логической организации данных, которая
соответствует неделимой единице информации — реквизиту. Для описания поля
используются следующие характеристики:
 имя, например. Фамилия, Имя, Отчество, Дата рождения;
 тип, например, символьный, числовой, календарный;
 длина, например, 15 байт, причем будет определяться максимально возможным
количеством символов;
 точность для числовых данных, например два десятичных знака для
отображения дробной части числа.
Запись — совокупность логически связанных полей. Экземпляр записи —
отдельная реализация записи, содержащая конкретные значения ее полей.
5
1 Постановка задачи
При
создании
данной
программы
была
поставлена
задача
создания
информационной системы для автоматизации работы аэропорта. Она должна быть проста
в использовании и понятна для обычного пользователя. В ней должен иметься удобный
способ ввода, а также отображения введенных данных. Введенные данные могут быть
изменены, если они устарели со временем или были введены неправильно изначально.
Также в программе должен осуществляться поиск по определенным критериям,
задаваемым пользователям данной программы, для более быстрого нахождения
информации.
Программа
должна осуществлять подбор нужного рейса по указанным
начальным и конечным пунктами, вести учет о состоянии самолетов аэропорта,
рассчитывать общую стоимость билета по определенному маршруту и коэффициенту
самолета, регистрировать
время заказа билета, а также хранить данные о всех
пассажирах, работниках, билетах и рейсах. Для того чтобы
упростить работу с
информацией, и упорядочить ее, должна быть предусмотрена сортировка по заданным
полям.
1.1
Входная информация
В данной программе входной информацией будет являться:
 введенная информация о самолетах аэропорта (номер самолета, модель
самолета, год выпуска, последний ремонт, количество мест, и текущее состояние);
 введенная информация о сотрудниках аэропорта (личный номер работника,
фамилия, имя, отчество, дата рождения, адрес места жительства, мобильный номер
телефона, и занимаемая должность);
 введенная информация о рейсах аэропорта (номер рейса, маршрут, дата вылета,
время вылета, время прибытия, количество мест, номер самолета и стоимость билета);
 введенная информация о билетах (фамилия, имя, отчество, паспортные данные,
номер рейса, дата продажи, номер билета и его стоимость, место);
 введенная информация о маршрутах (название маршрута, начальный пункт,
конечный пункт, номер маршрута и стоимость)
6
 введенная информация о пассажирах (фамилия, имя, отчество, паспортные
данные, номер рейса)
1.2 Выходная информация
В данной программе выходной информацией будет являться:
 отсортированные данные по любому из выбранных полей;
 вывод информации по конкретному запросу пользователя (поиск);
 вывод информации всех таблиц;
 справка о разработчике программы;
 руководство пользователя программы.
1.3 Инструменты разработки
База данных будет создана с использованием СУБД MySQL Workbench 5.02. В
базе данных будет создано 6 таблиц, в которых будет храниться информация о самолетах,
пассажирах, зарегистрированных билетах, рейсах, сотрудниках аэропорта, и маршрутах.
Приложение к базе данных будет разработано в среде Builder C++, которое позволит
отображать таблицы базы данных, осуществлять ввод и различные манипуляции с
информацией.
7
2 Логическая модель данных
2.1 Описание предметной области
При выборе предметной области важным фактором является наличие в данной
области всей необходимой информации для создания полноценной базы данных (БД).
Была выбрана предметная область, связанная с созданием БД «Аэропорта».
Задачей является ввод и обработка информации о рейсах, маршрутах, самолетах,
билетах,
сотрудниках
аэропорта,
а
также
всех
пассажиров.
оперативности ведения информации о рейсах, и подборе
Для
обеспечения
и регистрации билетов,
необходима автоматизированная система, основанная на современной базе данных.
Использование базы данных и автоматизированной системы для работы с базой данных
существенно сокращает работу сотрудников аэропорта по систематизации информации о
рейсах и билетах, и многие другие задачи.
В учете аэропорта есть информация, которая показывает пользователю наиболее
полную информацию обо всех рейсах, такую как номер рейса, номер самолета на
выбранном рейсе, маршрут, время и дата вылета
и другие не менее важные
характеристики.
При добавлении нового рейса в таблицу, должны быть заполнены все поля. При
заполнении поля «маршруты», нужно выбрать один и уже существующих маршрутов,
указать дату вылета, время вылета, и время прибытия, и выбрать свободный самолет из
списка
доступных.
После
выбора
самолета
количество
мест
будет
заполнено
автоматически, исходя из данных конкретно выбранного самолета из таблицы
«Самолеты». Стоимость так же рассчитывается автоматически, исходя из данных о
коэффициенте самолета из соответствующей таблицы, и стоимости маршрута.
У пользователя есть возможность отсортировать список любому из полей. Также
он может выполнить поиск по нужному полю и слову.
Программное средство разработано для функционирования под управлением
операционной системы Windows. Оно обладает интуитивно-понятным интерфейсом и
интерактивным руководством, помогающим пользователю разобраться с управлением в
процессе выполнения программы.
8
2.2 Описание отношений
Пользователь в данной программе может добавить сотрудника в таблицу
sotrudniki_aeroporta, ключевым полем которой будет являться личный номер сотрудника.
При добавление нового маршрута ключевым полем будет являться название этого
маршрута. При добавлении нового самолета ключевым полем будет являться серийный
номер самолета.
При регистрации нового рейса, будет использоваться личный номер самолета,
выбранный из списка возможных, по которому в дальнейшем будет определяться
количество мест, и высчитываться цена билета, а также будет использоваться ключевое
поле маршрута, по которому будут данные для последнего определения цены билета.
При регистрации нового билета, ключевым полем будет являться номер билета, а
также будут использованы ключевые поля таблиц «Samoleti» и «Reisi», для определения
количества оставшихся мест и указания рейса, на который регистрируется билет
соответственно.
Все
таблицы
связаны
между
собой,
кроме
таблицы
rabotniki_aeroflota.
(Приложение А)
9
3 Физическая модель данных
3.1 Выбор и обоснование выбора средств разработки
MySQL — самая популярная база данных среди веб-разработчиков. Большинство
сайтов работают именно на MySQL и macpages.ru не исключение. При разработке проекта
создание и работа с базой данных далеко не самая легкая задача, бесплатная утилита
MySQL Workbench позволит спроектировать, создать и протестировать базу данных.
Утилита может многое. Во-первых, она может выполнять роль менеджера
подключения к БД, выполнять скрипты SQL, импортировать и экспортировать данные
MySQL, управлять безопасностью базы данных.
Во-вторых, проектировать базу данных. Вы можете воспользоваться удобным
визуальным редактором. Это понравится в первую очередь новичкам, которые плохо
разбираются в SQL, чтобы писать собственные скрипты. Такие пользователи на пободие
Photoshop смогут нарисовать таблицы, поля и связать их, а утилита выдаст SQL для
создания таблиц на «боевой» базе или если вы настроили подключение, все сделает за вас.
Более опытные разработчики могут воспользоваться удобными формами для
создания БД и таблиц. Указываете имя таблицы, имя поля, из списка выбираете тип
данных, галочками отмечаете дополнительные пункты (AUTO_INCREMENT, ZEROFILL
и т.д.).
Настроек у программы немного, в основном они «косметические», т.е. касаются
интерфейса приложения. Например, настройка цветов и автоматического именования
моделей, таблиц, столбцов.
Большинство настроек производится при работе с конкретным проектом (базой
данных) и это логично.
MySQL Workbench показала себя функциональной и вполне удобной утилитой.
Учитывая ее бесплатность, можно смело рекомендовать веб-разработчикам на платформе
Mac.
10
3.2 Компоненты базы данных
Для данной программы было создано 6 таблиц:
 Bileti – содержит информацию о зарегистрированных билетах;
 Marshrut – содержит информацию о маршрутах;
 Passazhiri - содержит информацию о зарегистрированных пассажирах;
 rabotniki_aeroflota – содержит информацию обо всех сотрудниках аэропорта;
 reisi – содержит информацию о рейсах;
 samoleti – содержит информацию о всех самолетах аэрофлота.
В таблицах 3.1 – 3.6 представлена структура разработанных отношений.
Таблица 3.1 – bileti
Имя поля
imia
otchestvo
Passport_data
Data_rozhdenia
Nomer_bileta
Nomer_reisa
stoimost
mesto
Тип данных
VARCHAR(25)
VARCHAR(25)
VARCHAR(15)
DATE
INT(11)
INT(11)
INT(11)
INT(11)
Примечание
Not Null
Not Null
Not Null, Default = ‘0’
Not Null, Default = ‘0’
Primary Key, Not Null
Not Null
Not Null
Not Null
Таблица 2 – marshruti
Имя поля
nazvanie_marshruta
nachalnii_punkt
transit_cherez
konechnii_punkt
nomer_marshruta
stoimost
Тип данных
VARCHAR(20)
VARCHAR(20)
VARCHAR(20)
VARCHAR(20)
INT(11)
INT(11)
Примечание
Not Null
Not Null
Default = ‘0’
Not Null
Primary Key, Not Null
Not Null
Таблица 3 – passazhiri
Имя поля
familia
imia
otchestvo
pasport_data
nomer_bileta
Тип данных
VARCHAR(25)
VARCHAR(25)
VARCHAR(25)
VARCHAR(15)
INT(11)
Примечание
Not Null
Not Null
Not Null
Primary Key, Not Null
Foreign Key, Not Null
11
Таблица 4 – rabotniki_aeroflota
Имя поля
nomer_rabotnika
familia
imia
otchestvo
data_rozhd
address
mobile
dolzhnost
Тип данных
INT(11)
VARCHAR(20)
VARCHAR(20)
VARCHAR(20)
DATE
VARCHAR(40)
INT(15)
VARCHAR(25)
Примечание
Not Null, Primary Key, Auto Increment
Not Null
Not Null
Not Null
Not Null
Not Null
Not Null
Not Null
Тип данных
INT(11)
VARCHAR(20)
DATE
TIME
TIME
INT(15)
INT(15)
INT(15)
INT(15)
Примечание
Not Null, Primary Key, Auto Increment
Not Null
Not Null
Not Null
Not Null
Not Null
Foreign Key, Not Null
Not Null
Not Null
Таблица 5 – reisi
Имя поля
nomer_reisa
marshrut
data_vileta
vremia_vileta
vremia_prileta
kolichestvo_mest
nomer_samoleta
stoimost_bileta
nomer_samoleta
Таблица 6 – samoleti
Имя поля
nomer_samoleta
model_samoleta
god_vipuska
kolichestvo_mest
sostoianie
kof_samoleta
Тип данных
INT(11)
INT(11)
DATE
INT(11)
VARCHAR(15)
INT(11)
Примечание
Not Null, Primary Key, Auto Increment
Not Null
Not Null
Not Null
Not Null
Not Null
Для отображения данных таблиц используются SELECT запросы:
SELECT * FROM table_name;
SELECT column1, column2 FROM table_name;
Для добавления записи в таблицу используется INSERT запрос:
INSERT INTO table_name (column1, column2, column3) VALUES (‘data1’, ‘data2’,
‘data3’);
Для удаления записи из таблицы используется следующий запрос:
DELETE FROM table_name WHERE column1 = ‘data1’;
а для изменения запрос вида:
UPDATE table_name SET column1 = ‘data1’, column2 = ‘data2’ WHERE column3 =
‘data3’.
12
4 Описание программы
4.1 Выбор и обоснование выбора среды разработки
В качестве программной среды реализации была выбрана среда С++ Builder.
Данный выбор обусловлен следующими факторами, которые выдвигают C++ Builder на
авангардные
позиции
систем
быстрой разработки современного
объектно-ориентированного программирования для
математического
обеспечения
персональных
компьютеров:
 язык
С++ – один
из
самых
быстродействующих прикладных
алгоритмических языков;
 высокопроизводительный 32-разрядный оптимизирующий компилятор;
 наличие большого объема обучающего и справочного материала;
 возможность полного доступа к Windows API;
 широко развита система создания классов, объектов, библиотек;
 поддержка объектно-ориентированного программирования;
 широкая библиотека визуальных компонент;
 наличие интегрированной среды разработки;
 существование механизмов двунаправленной разработки;
 наличие визуального наследования форм;
 быстрый инкрементальный компоновщик приложений;
 удобная визуальная среда разработки.
Компилятор,
встроенный
в
C++Builder,
обеспечивает
высокую
производительность. Этот компилятор в настоящее время, по неофициальным данным,
является самым быстрым в мире. Он предлагает легкость разработки и быстрое время
проверки готового программного блока, характерного для языков четвертого поколения
(4GL), и в то же время обеспечивает качество кода, характерного для компилятора
3GL.
В процессе построения приложения разработчик выбирает из набора компонент
готовые компоненты подобно тому, как это делается при конструировании любых
форм, состоящих из типовых объектов. В этом смысле проектирование в C++Builder
мало чем отличается от проектирования в интерпретирующей среде, однако после
13
выполнения компиляции мы получаем машинный код, в то время
как
существуют
компиляторы (Visual Basic, например, или Power Builder), превращающие программу в
так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не
может не сказаться на фактическом быстродействии готового приложения.
При построении готовых форм из типовых объектов, которые вкладываются
друг в друга и образуют желаемую программно-архитектурную форму, разработчик
работает с моделью подобно конструктору-дизайнеру.
Программный
код
всегда
генерируется автоматически при выборе, настройке и удалении объектов.
Никаких
ограничений
по
типам
объектов,
которые могут создавать
разработчики, не существует. Действительно, все в C++Builder написано на нем же,
поэтому разработчики имеют доступ к тем же объектам и инструментам, которые
использовались для создания среды разработки. В результате нет никакой разницы
между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые
можно создать.
В стандартную поставку C++Builder входят основные
объекты,
которые
образуют удачно подобранную иерархию из 270 базовых классов. Среда C++Builder
включает в себя полный набор визуальных инструментов для скоростной разработки
приложений (RAD – rapid application development), поддерживающей разработку
пользовательского интерфейса и подключение к корпоративным базам данных. VCL –
библиотека визуальных компонент. Она включает
в
себя
стандартные
объекты
построения пользовательского интерфейса, объекты управления данными, графические
объекты, объекты мультимедиа,
диалоги
и
огромное
количество
свободно
распространяемых freeware-компонент, которыми можно надстраивать C++Builder.
В C++Builder осуществлена поддержка OLE-управляющих компонент, которые
могут добавляться
посредством
инсталляционной
опции
в
меню Component.
Например, с помощью этих функций очень легко можно написать код, который
откроет Word, Excel и другие компоненты, создаст документ и
впишет
в
него
информацию. Естественно, что в C++Builder хорошо проработана и событийная
модель. С каждым объектом может быть связан целый ряд событий, которые
программируются и задаются в специальном окне стандартного Инспектора объектов.
Событийная модель в Windows всегда была сложна для понимания и отладки. Но
именно разработка интерфейса в C++Builder является самой простой задачей для
программиста.
14
4.2
Описание интерфейса
Для создания интерфейса в Billder C++ обычно используются различные
визуальные компоненты.
Первая форма является основной. На ней расположены такие компоненты, как
PageControl, Button, Label, ComboBox, Edit, DBGrid и ComboEdit.
Каждый компонент служит для определенных целей, и является неотъемлемой
часть программы.
Таблицы служат для отображения и упорядочивания введенных данных.
Перемещение с одной таблицы на другую осуществляется при помощи компонента
PageControl (Рисунок 4.1).
Рисунок 4.1 Отображение таблиц
Вторая форма служит для регистрации билета и выглядит следующим образом
15
Рисунок 4.2 Регистрация нового билета
После заполнения всех полей и нажатия кнопки «Зарегистрировать» билет с
введенными данными отобразиться в таблице «Bileti» (Рисунок 4.2).
На третьей форме расположен билет, который можно распечатать (Рисунок 4.3)
Рисунок 4.3 Билет
16
Чтобы вызвать справку необходимо нажать кнопку «Справка» (Рисунок 4.4)
Рисунок 4.4 Справка
Для осуществления поиска, в верхнем правом углу главного окна программы
необходимо выбрать поле, по которому будет осуществляться поиск, ввести искомое
значение и нажать на кнопку «Поиск». Все найденные значения, если таковые есть, будут
отображены в текущей таблице. Для возврата в предыдущее состояние необходимо
нажать кнопку «назад».
Для сортировки записей таблицы по выбранному полю необходимо кликнуть на
название поля, и данные таблицы будут отсортированы в алфавитном порядке. При
повторном нажатии данные будут отсортированы в обратном порядке.
4.3 Программно-аппаратные ресурсы ПК
В качестве средств программной обработки данных следует использовать
персональную электронную вычислительную машину (ПЭВМ) с процессором типа Intel
Celeron (либо Intel Pentium) с тактовой частотой не менее 500 МГц.
В качестве запоминающего устройства, в котором реализуются преобразования данных и
программное управление процессами, должна использоваться оперативная память. Ее
объем должен позволять использовать базовую операционную систему, допускающую
реализацию прикладных программ, и составлять, как минимум, 64 Мбайт.
В качестве устройства для подготовки и ввода данных необходима клавиатура
(клавишное устройство). С ее помощью осуществляется ввод команд пользователя,
обеспечивающих доступ к ресурсам ПЭВМ; ввод и корректировка данных; ввод команд в
17
процессе диалога человека с ПЭВМ. Для облегчения общения с машиной рекомендуется
наличие манипулятора - мыши.
Для отображения информации, выводимой во время работы, необходим монитор с
разрешающей способностью не менее 1024x768 и поддержкой отображения 16,5 млн.
цветовых оттенков.
Для запуска основной части программы, это файл Project1.exe системные
требования не высоки:
 процессор I486;
 16 Мб оперативной памяти;
 1 Мб или меньше видео памяти;

объём дискового пространства не более 5 Мб;
 операционная система Windows 9x.
А для компиляции и отладки самого программного кода системные требования
возрастают, так как необходимо будет устанавливать программу C++ Builder, которой для
запуска требуется:
 процессор Pentium 166 и выше;
 32 Мб оперативной памяти и выше;
 4 Мб видео памяти;
 объём дискового пространства, в зависимости от установки от 300 и более.
18
5 Тестирование
Тестирование программ - этап разработки компьютерной программы, в процессе
которого проверяется работоспособность программы, не содержащей явных ошибок.
Все
виды
тестирования
программного
обеспечения,
в
зависимости
от
преследуемых целей, можно условно разделить на следующие группы:
- функциональные;
- нефункциональные;
- связанные с изменениями.
Функциональные виды тестирования.
Функциональные тесты базируются на функциях и особенностях, а также
взаимодействии с другими системами, и могут быть представлены на всех уровнях
тестирования: компонентном или модульном (Component/Unit testing), интеграционном
(Integration testing), системном (System testing) и приемочном (Acceptance testing).
Функциональные виды тестирования рассматривают внешнее поведение системы. Далее
перечислены одни из самых распространенных видов функциональных тестов:
- функциональное тестирование (Functional testing);
- тестирование безопасности (Security and Access Control Testing);
- тестирование взаимодействия (Interoperability Testing).
Нефункциональные виды тестирования.
Нефункциональное тестирование описывает тесты, необходимые для определения
характеристик программного обеспечения, которые могут быть измерены различными
величинами. В целом, это тестирование того, "Как" система работает. Далее перечислены
основные виды нефункциональных тестов:
а) все виды тестирования производительности:
1) нагрузочное тестирование (Performance and Load Testing);
2) стрессовое тестирование (Stress Testing);
3) тестирование стабильности или надежности;
4) объемное тестирование (Volume Testing).
б) тестирование установки (Installation testing);
в) тестирование удобства пользования (Usability Testing);
г) тестирование на отказ и восстановление (Failover and Recovery Testing);
д) конфигурационное тестирование (Configuration Testing);
е) связанные с изменениями виды тестирования.
19
6 Описание применения
6.1 Способ установки
Скопировать папку База данных «Аэрофлот» с программой на жесткий диск,
и запустить приложение Aeroflot.exe
6.2 Демонстрационный пример работы программы
Для запуска программы необходимо запустить файл Aeroflot.exe. После открытия
программы появится главное окно программы, на которой расположены вкладки с шестью
таблицами. Для перехода на другую таблицу необходимо нажать на вкладку с названием
таблицы (Рисунок 6.1).
Рисунок 6.1 Пример перехода между таблицами
20
Для того, чтобы добавить запись в одну из выбранных таблиц необходимо заполнить все
поля, находящиеся на вкладке с выбранной таблицей и нажать соответствующую клавишу
добавления (Рисунок 6.2).
Рисунок 6.2 Пример добавления новой записи
При добавлении нового рейса в таблицу, должны быть заполнены все поля.
При заполнении поля "маршруты", нужно выбрать один из уже существующих
маршрутов, указать дату вылета, время вылета, и время прибытия, и выбрать свободный
самолет из списка доступных. После выбора самолета количество мест будет заполнено
автоматически, исходя из данных конкретно выбранного самолета из таблицы
"Самолеты". Стоимость так же рассчитывается автоматически, исходя из данных о
коэффициенте самолета из соответствующей таблицы, и стоимости маршрута.
Для осуществления поиска, в верхнем правом угла главного окна программы
необходимо выбрать поле, по которому будет осуществляться поиск, ввести искомое
значение и нажать кнопку "Поиск" (Рисунок 6.3).
21
Рисунок 6.3 Поиск
Все найденные значения, если таковые есть, будут отображены в текущую таблицу.
Для возврата в предыдущее состояние необходимо нажать кнопку "назад".Для сортировки
таблиц по выбранному полю необходимо кликнуть на название поля, и данные таблицы
будут отсортированы в алфавитном порядке. При повторном нажатии данные будут
отсортированы в обратном порядке.
22
Заключение
Разработанная программа отлажена, протестирована и готова для демонстрации и
практического использования. Ошибки работы программы могут возникать только при
некорректном её использовании.
В ходе создания программного средства были проведены неоднократные тесты на
правильность работы всех функций. Тесты проводились как после добавления каждой
функции, так и по завершению создания программы.
Программа проста в использовании и понятна для обычного пользователя. В ней
имеется удобный способ ввода, а также отображения введенных данных. Введенные
данные могут быть изменены, если они устарели со временем или были введены
неправильно изначально. Также в программе осуществляться поиск по определенным
критериям, задаваемым пользователям данной программы, для более быстрого
нахождения информации.
Таким образом, на основании задачи, поставленной в данной работе, было
разработано приложение в среде Builder C++
и создана база данных с использованием
СУБД MySQL Workbench 5.02 для автоматизации работы аэрофлота.
23
Список использованных источников
1. Прохоренок Н.А.Программирование на С++ в Visual Studio 2010 Express / Н. А.
Прохоренок, А. Д. Хомоненко. – 2-е изд. – СПб. : БХВ-Санкт-Петербург, 2010. – 624 с.
2. Архангельский А.Я. Visual Studio C++. Справочное пособие. –М:ООО «Бином-Пресс»,
2011 –1024 с.:ил.
3. Баженова И.Ю. C++ Теория и практика – М.:КУДИЦ-ОБРАЗ, 2009. – 448 с.
4. Стивен Прата. Язык программирования C++ (C++11). Лекции и упражнения, 6-е
издание = C++ Primer Plus, 6th Edition (Developer's Library). — М.: «Вильямс», 2012. —
1248 с. — ISBN 978-5-8459-1778-2.
5. Б. Страуструп. Язык программирования C++ = The C++ Programming Language / Пер. с
англ. — 3-е изд. — СПб.; М.: Невский диалект — Бином, 1999. — 991 с. — 3000 экз. —
ISBN 5-7940-0031-7 (Невский диалект), ISBN 5-7989-0127-0 (Бином), ISBN 0-20188954-4 (англ.)
6. Могилев, А.В. Информатика: учебное пособие для студ. пед. вузов/ А.В. Могилев,
Н.И. Пак, Е.К. Хеннер; Под ред. Е.К. Хеннера; — 2-е изд., М.: Издательский центр
Академия, 2003. — 816 с.: ил. ISBN 5-7695-0330-0.
7. Острейковский, В.А. Информатика Изд. 2-е перераб. и доп. – М.:Горячая линия –
Телеком, 2001. – 232с.: ил. – 5000 экз. – ISBN 5-93517-046-9.
8. Павловская, Т.А. C++. Программирование на языке высокого уровня: Учебник для
вузов/ Т.А. Павловская; — СПб.: Питер, 2007. — 437 с.: ил.: ISBN 5-91180-174-4.
9. Герберт Шилдт. Полный справочник по C++, 4-е издание = C++: The Complete
Reference, 4th Edition. — М.: «Вильямс», 2011. — С. 800. — ISBN 978-5-8459-0489-8.
24
Приложение А
(обязательное)
Диаграмма сущность-связь
25
Приложение Б
(обязательное)
Диаграмма классов
TForm
TForm 1
TForm 4
Operations
FormCreate(..);
Button1Click();
Button2Click(...);
Button3Click(..);
Button4Click(..);
Button5Click(..);
Button6Click(..);
Button7Click(..);
Button8Click(..);
Button9Click(..);
DBGrid2DblClick(..);
DBGrid1DblClick(..);
DBGrid4DblClick(..);
DBGrid3DblClick(..);
N2Click(..);
ComboBox3Change(..);
ComboBox1Change(..);
nazvanie_labeleditov(..);
insert_rabotniki(..);
select_personal(..);
sortirovka(..);
nazvanie_labelov2(..);
combobox(..);
combobox_reisi_samolet(..);
zaschita(..);
Pometit_kak_ispravnii(..);
udalenie_bileti(..);
kolichestvo_mest_reisi(..);
update_samoleti(..);
izmenenie_reisi(..);
insert_bileti(..);
select_bileti(..);
Udalenie_reisi(..);
izmenenie_rabotniki(..);
Operations
TForm 2
FormCreate(..);
Operations
Button1Click(..);
FormCreate(..);
TForm 3
Operations
FormCreate(..);
26
Приложение В
(справочное)
Текст программы
//--------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int SORT = 1;
int cena_marshruta = 0,kof_samoleta = 0;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender)
{
select_marshrut();
PageControl1Change(Sender);
//ADODataSet1->Active = True;
combobox();
combobox_reisi();
nazvanie_labeleditov();
//select_rabotniki_aeroflota();
}
//---------------------------------------------------------------------------
__fastcall TForm1::nazvanie_labeleditov()
{
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
insert_rabotniki();
select_rabotniki_aeroflota();
zaschita();
}
//---------------------------------------------------------------------------
27
__fastcall TForm1::insert_rabotniki()
{
String zapros;
int i;
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
zapros
=
"INSERT
INTO
rabotniki_aeroflota
(familia,imia,otchestvo,data_rozhd,address,mobile,dolzhnost) VALUES ('"+
LabeledEdit1->Text+"','"+LabeledEdit2->Text+"','"+LabeledEdit3>Text+"','"+DateTimePicker2->Date.FormatString("yyyy.mm.dd")+"','"+
LabeledEdit4->Text+"','"+LabeledEdit6->Text+"','"+LabeledEdit7->Text+"')";
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
}
}
//--------------------------------------------------------------------------__fastcall TForm1::select_personal()
{
ADODataSet1->Active = False;
ADODataSet1->CommandType = cmdTable;
ADODataSet1->CommandText = PageControl1->ActivePage->Caption ;
ADODataSet1->Active = true;
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender)
{
udalenie_rabotniki();
select_rabotniki_aeroflota();
}
//---------------------------------------------------------------------------
__fastcall TForm1::udalenie_rabotniki()
{
String zapros;
zapros = "DELETE FROM rabotniki_aeroflota WHERE " + DBGrid1->Columns[0][0]>FieldName+" = "+ DBGrid1->Fields[0]->Text + ";" ;
//zapros = "DELETE FROM rabotniki_aeroflota WHERE nomer_rabotnika = " +
ADODataSet1->Fields->operator [](7)+ ";";// DBGrid1->Fields[7]->Text + ";" ;
ADODataSet1->CommandType=cmdText;
ADODataSet1->Active=false;
ADODataSet1->CommandText = zapros;
try
{
ADODataSet1->Active = True;
} catch(...){}
28
select_rabotniki_aeroflota();
}
//----------------------------------------------------------------------------__fastcall TForm1::sortirovka()
{
}
//----------------------------------------------------------------------------void __fastcall TForm1::DBGrid1TitleClick(TColumn *Column)
{
String u,zapros;
u = Column->FieldName;
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
if (SORT == 1)
{
zapros = "SELECT * FROM rabotniki_aeroflota ORDER BY " +u+ " DESC"+";";;
SORT--;
}
else
{
zapros = "SELECT * FROM rabotniki_aeroflota ORDER BY " +u+ " ASC"+";";;
SORT++;
}
ADODataSet1->CommandText = zapros;
ADODataSet1->Active=true;
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)
{
insert_rabotniki_aeroflota();
zaschita();
}
//---------------------------------------------------------------------------
__fastcall TForm1::nazvanie_labelov2()
{
}
//--------------------------------------------------------------------------__fastcall TForm1::select_reisi()
{
ADODataSet1->Active = False;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText
=
"SELECT
nomer_reisa,marshrut,data_vileta,vremia_vileta,vremia_prileta,kolichestvo_mest,samoleti_nome
r_samoleta,stoimost_bileta FROM reisi;" ;
ADODataSet1->Active = True;
//DBGrid2->Columns->operator [](0)->Title->Caption="fghjk" ;
}
//----------------------------------------------------------------------------29
__fastcall TForm1::combobox()
{
String j;
int p = DBGrid3->DataSource->DataSet->RecordCount;
for (int i = 0; i < p ; i++)
{
j += DBGrid3->Fields[0]->Text+"\n";
DBGrid3->DataSource->DataSet->Next();
}
ComboBox1->Items->Text = j;
}
//-----------------------------------------------------------------------------__fastcall TForm1::select_marshrut()
{
String zapros;
ADODataSet2->Active = false;
ADODataSet2->CommandType = cmdText;
ADODataSet2->CommandText = "SELECT *FROM marshrut";
ADODataSet2->Active = true;
ADODataSet2->First();
}
//-----------------------------------------------------------------------------void __fastcall TForm1::PageControl1Change(TObject *Sender)
{
if (PageControl1->ActivePage->Caption == "rabotniki_aeroflota")
{
select_rabotniki_aeroflota();
}
if (PageControl1->ActivePage->Caption == "reisi")
{
select_samoleti();
combobox_reisi_samolet();
select_reisi();
combobox_reisi();
}
if (PageControl1->ActivePage->Caption == "bileti")
{
select_bileti();
}
if (PageControl1->ActivePage->Caption == "samoleti")
{
select_samoleti();
combobox_reisi_samolet();
}
if (PageControl1->ActivePage->Caption == "passazhiri")
{
select_passazhiri();
}
if (PageControl1->ActivePage->Caption == "marshrut")
30
{
select_marshrut();
}
poisk_rabotniki_aeroflota();
Edit6->Text = "";
zaschita();
}
//---------------------------------------------------------------------------
__fastcall TForm1::select_rabotniki_aeroflota()
{
ADODataSet1->Active = False;
ADODataSet1->CommandType = cmdText;
ADODataSet1->CommandText = "SELECT *FROM rabotniki_aeroflota;";
//familia,imia,otchestvo,data_rozhd,address,mobile,dolzhnost,nomer_rabotnika
rabotniki_aeroflota; ";
ADODataSet1->Active = true;
}
//-----------------------------------------------------------------------------__fastcall TForm1::izmenenie_rabotniki_aeroflota()
{
LabeledEdit1->Text = DBGrid1->Fields[1]->Text;
LabeledEdit2->Text = DBGrid1->Fields[2]->Text;
LabeledEdit3->Text = DBGrid1->Fields[3]->Text;
DateTimePicker2->Date = DBGrid1->Fields[4]->Text;
LabeledEdit4->Text = DBGrid1->Fields[5]->Text;
LabeledEdit6->Text = DBGrid1->Fields[6]->Text;
LabeledEdit7->Text = DBGrid1->Fields[7]->Text;
for (int i = 0; i < DBGrid1->DataSource->DataSet->RecordCount ; i++)
{
for (int j = 0; j <DBGrid1->Columns->Count ; j++)
{
DBGrid1->Fields[j]->Text + ",";
}
}
}
FROM
//----------------------------------------------------------------------------__fastcall TForm1::insert_rabotniki_aeroflota()
{
String zapros;
zapros = "UPDATE rabotniki_aeroflota SET familia = '"+LabeledEdit1->Text+"',imia = '"+
LabeledEdit2->Text+"',otchestvo
='"
+LabeledEdit3->Text
+"',data_rozhd
=
'"+
DateTimePicker2->Date.FormatString("yyyy.mm.dd")+"',address = '"+LabeledEdit4->Text+
"',mobile = '"+LabeledEdit6->Text+"',dolzhnost ='" +LabeledEdit7->Text+"' WHERE "
+DBGrid1->Columns[0][0]->FieldName+ " = " + DBGrid1->Fields[0]->Text + ";";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
31
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
select_rabotniki_aeroflota();
}
}
//--------------------------------------------------------------------------------------------------------------------__fastcall TForm1::poisk_rabotniki_aeroflota()
{
TDBGrid *grid = new TDBGrid(*Form1);
if (PageControl1->ActivePage == TabSheet1)
{
grid = DBGrid1;
}
if (PageControl1->ActivePage == TabSheet2)
{
grid = DBGrid2;
}
if (PageControl1->ActivePage == TabSheet3)
{
grid = DBGrid4;
}
if (PageControl1->ActivePage == TabSheet5)
{
grid = DBGrid6;
}
if (PageControl1->ActivePage == TabSheet4)
{
grid = DBGrid5;
}
if (PageControl1->ActivePage == TabSheet6)
{
grid = DBGrid3;
}
String j;
int p = grid->Columns->Count;
for (int i = 0; i < p ; i++)
{
j += grid->Columns[0][i]->FieldName+"\n";
}
ComboBox8->Items->Text = j;
ComboBox8->ItemIndex = 0;
}
//-------------------------------------------------------------------------------------------------------------------------------32
void __fastcall TForm1::Button7Click(TObject *Sender)
{
/*
String zapros;
int i;
zapros = "SELECT *FROM rabotniki_aeroflota WHERE "+ComboBox2->Text + " = '" + Edit1>Text+ "';";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
}
*/
}
//---------------------------------------------------------------------------
__fastcall TForm1::insert_reisi()
{
String zapros;
int i;
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
zapros
=
"INSERT
INTO
reisi
(marshrut,data_vileta,vremia_vileta,vremia_prileta,kolichestvo_mest,samoleti_nomer_samoleta,
stoimost_bileta) VALUES ('"+
ComboBox1->Text+"','"+DateTimePicker3>Date.FormatString("yyyy.mm.dd")+"','"+MaskEdit1->Text+"','"+MaskEdit2->Text+"','"+
LabeledEdit5->Text+"','"+ComboBox3->Text+"','"+LabeledEdit20->Text+"');";
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
}
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
zapros = "UPDATE samoleti SET sostoianie = 'на рейсе'
"+ComboBox3->Text+";";
WHERE nomer_samoleta =
33
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
}
}
//---------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender)
{
insert_reisi();
select_reisi();
zaschita();
}
//---------------------------------------------------------------------------
__fastcall TForm1::combobox_reisi()
{
ADODataSet2->First();
String j;
int p = DBGrid3->DataSource->DataSet->RecordCount;
for (int i = 0; i < p ; i++)
{
j += DBGrid3->Fields[0]->Text+"\n";
DBGrid3->DataSource->DataSet->Next();
}
ComboBox1->Items->Text = j;
}
//--------------------------------------------------------------------------__fastcall TForm1::select_samoleti()
{
ADODataSet1->Active = False;
ADODataSet1->CommandType = cmdText;
ADODataSet1->CommandText = "SELECT *FROM samoleti;";
//familia,imia,otchestvo,data_rozhd,address,mobile,dolzhnost,nomer_rabotnika
rabotniki_aeroflota; ";
ADODataSet1->Active = true;
}
FROM
//--------------------------------------------------------------------------__fastcall TForm1::combobox_reisi_samolet()
{
String j;
int p = DBGrid4->DataSource->DataSet->RecordCount;
for (int i = 0; i < p ; i++)
{
if (DBGrid4->Fields[5]->Text == "не занят")
{
34
j += DBGrid4->Fields[0]->Text+"\n";
}
DBGrid4->DataSource->DataSet->Next();
}
ComboBox3->Items->Text = j;
}
//--------------------------------------------------------------------------__fastcall TForm1::Udalenie_reisi()
{
String zapros;
zapros = "UPDATE samoleti SET sostoianie = 'не занят' WHERE nomer_samoleta = "
+DBGrid2->Fields[6]->Text+";";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText=zapros;
ADODataSet1->CommandText = zapros;
try
{
ADODataSet1->Active = True;
} catch(...){}
select_reisi();
zapros = "DELETE FROM reisi WHERE " + DBGrid2->Columns[0][0]->FieldName+" = "+
DBGrid2->Fields[0]->Text + ";" ;
ADODataSet1->CommandType=cmdText;
ADODataSet1->Active=false;
ADODataSet1->CommandText = zapros;
try
{
ADODataSet1->Active = True;
} catch(...){}
select_reisi();
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button6Click(TObject *Sender)
{
Udalenie_reisi();
select_reisi();
zaschita();
}
//---------------------------------------------------------------------------
__fastcall TForm1::izmenenie_reisi()
{
if (DBGrid2->Fields[0]->Text != "")
{
LabeledEdit9->Text = DBGrid2->Fields[0]->Text;
ComboBox1->Text = DBGrid2->Fields[1]->Text;
DateTimePicker3->Date = DBGrid2->Fields[2]->Text;
35
MaskEdit1->Text = DBGrid2->Fields[3]->Text;
MaskEdit2->Text = DBGrid2->Fields[4]->Text;
LabeledEdit5->Text = DBGrid2->Fields[5]->Text;
ComboBox3->Text = DBGrid2->Fields[6]->Text;
LabeledEdit20->Text = DBGrid2->Fields[7]->Text;
}
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button5Click(TObject *Sender)
{
if (LabeledEdit5->Text != "")
{
update_reisi();
zaschita();
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::update_reisi()
{
String zapros;
zapros = "UPDATE reisi SET marshrut = '"+ComboBox1->Text+"',data_vileta = '"+
DateTimePicker3->Date.FormatString("yyyy.mm.dd")+"',vremia_vileta ='" +MaskEdit1->Text
+"',vremia_prileta = '"+ MaskEdit2->Text+"',kolichestvo_mest= '"+LabeledEdit5->Text+
"',samoleti_nomer_samoleta = '"+ComboBox3->Text + "',stoimost_bileta = '"+ LabeledEdit20>Text +"'"+ "WHERE nomer_reisa = '" + LabeledEdit9->Text+"';";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
select_reisi();
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::insert_bileti()
{
}
//--------------------------------------------------------------------------36
__fastcall TForm1::select_bileti()
{
ADODataSet1->Active = False;
ADODataSet1->CommandType = cmdText;
ADODataSet1->CommandText
=
"SELECT
familia,imia,otchestvo,pasport_data,reisi_nomer_reisa,data_prodazhi,nomer_bileta,stoimost,mest
o FROM bileti;";
//familia,imia,otchestvo,data_rozhd,address,mobile,dolzhnost,nomer_rabotnika
FROM
rabotniki_aeroflota; ";
ADODataSet1->Active = true;
}
//--------------------------------------------------------------------------__fastcall TForm1::update_bileti()
{
//TODO: Add your source code here
}
//--------------------------------------------------------------------------__fastcall TForm1::izmenenie_bileti()
{
//TODO: Add your source code here
}
__fastcall TForm1::insert_samoleti()
{
String zapros;
int i;
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
zapros
=
"INSERT
INTO
samoleti
(model_samoleta,god_vipuska,poslednii_remont,kolichestvo_mest,sostoianie,kof_samoleta)
VALUES ('"+
LabeledEdit10->Text+"','"+DateTimePicker5>Date.FormatString("yyyy.mm.dd")+"','"+DateTimePicker4>Date.FormatString("yyyy.mm.dd")+"','"+
LabeledEdit11->Text+"','"+LabeledEdit12->Text+"','"+LabeledEdit19->Text+"');";
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
select_samoleti();
}
}
void __fastcall TForm1::Button8Click(TObject *Sender)
37
{
insert_samoleti();
zaschita();
}
//---------------------------------------------------------------------------
__fastcall TForm1::izmenemie_samoleti()
{
LabeledEdit8->Text = DBGrid2->Fields[0]->Text;
LabeledEdit10->Text = DBGrid2->Fields[1]->Text;
DateTimePicker5->Date = DBGrid2->Fields[2]->Text;
DateTimePicker4->Date = DBGrid2->Fields[3]->Text;
LabeledEdit11->Text = DBGrid2->Fields[4]->Text;
LabeledEdit12->Text = DBGrid2->Fields[5]->Text;
LabeledEdit19->Text = DBGrid2->Fields[6]->Text;
}
void __fastcall TForm1::DBGrid4DblClick(TObject *Sender)
{
izmenemie_samoleti();
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button11Click(TObject *Sender)
{
update_samoleti();
zaschita();
}
//---------------------------------------------------------------------------
__fastcall TForm1::update_samoleti()
{
String zapros;
zapros = "UPDATE samoleti SET model_samoleta = '"+LabeledEdit10->Text+"',god_vipuska =
'"+
DateTimePicker5->Date.FormatString("yyyy.mm.dd")+"',poslednii_remont
='"
+DateTimePicker4->Date.FormatString("yyyy.mm.dd") +"',kolichestvo_mest = '"+
LabeledEdit11->Text+"',kof_samoleta
='"
+LabeledEdit19->Text+"',sostoianie=
'"+LabeledEdit12->Text+ "' WHERE nomer_samoleta = '" + LabeledEdit8->Text+"';";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
select_samoleti();
38
}
}
__fastcall TForm1::udalenie_samoleti()
{
String zapros;
zapros = "DELETE FROM samoleti WHERE " + DBGrid1->Columns[0][0]->FieldName+" =
"+ DBGrid1->Fields[0]->Text + ";" ;
//zapros = "DELETE FROM rabotniki_aeroflota WHERE nomer_rabotnika = " +
ADODataSet1->Fields->operator [](7)+ ";";// DBGrid1->Fields[7]->Text + ";" ;
ADODataSet1->CommandType=cmdText;
ADODataSet1->Active=false;
ADODataSet1->CommandText = zapros;
try
{
ADODataSet1->Active = True;
} catch(...){}
select_samoleti();
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button10Click(TObject *Sender)
{
udalenie_samoleti();
zaschita();
}
//---------------------------------------------------------------------------
__fastcall TForm1::insert_marshrut()
{
String zapros;
int i;
ADODataSet2->Active=false;
ADODataSet2->CommandType=cmdText;
zapros
=
"INSERT
INTO
marshrut
(nazvanie_marshruta,nachalnii_punkt,transit_cherez,konechnii_punkt,stoimost) VALUES ('"+
LabeledEdit14->Text+"-"+LabeledEdit16->Text+"','"+LabeledEdit14>Text+"','"+LabeledEdit15->Text+"','"+LabeledEdit16->Text+"','"+
LabeledEdit18->Text+"');";
ADODataSet2->CommandText=zapros;
try
{
ADODataSet2->Active=true;
}
catch(...)
{
select_marshrut();
}
}
void __fastcall TForm1::Button12Click(TObject *Sender)
{
39
insert_marshrut();
zaschita();
}
//---------------------------------------------------------------------------
__fastcall TForm1::delete_marshrut()
{
String zapros;
zapros = "DELETE FROM marshrut WHERE " + DBGrid3->Columns[0][4]->FieldName+" =
"+ DBGrid3->Fields[4]->Text + ";" ;
ADODataSet2->Active=false;
ADODataSet2->CommandType=cmdText;
ADODataSet2->CommandText = zapros;
try
{
ADODataSet2->Active = True;
} catch(...){}
select_marshrut();
}
void __fastcall TForm1::Button14Click(TObject *Sender)
{
delete_marshrut();
}
//---------------------------------------------------------------------------
__fastcall TForm1::update_marshrut()
{
String zapros;
zapros = "UPDATE marshrut SET nazvanie_marshruta = '"+LabeledEdit14->Text+""+LabeledEdit16->Text+"',nachalnii_punkt = '"+
LabeledEdit14->Text+"',transit_cherez
='"
+LabeledEdit15->Text
+"',stoimost
='"
+LabeledEdit18->Text +"',konechnii_punkt = '"+
LabeledEdit16->Text+"' WHERE nomer_marshruta = "+LabeledEdit17->Text+";";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
select_marshrut();
}
}
__fastcall TForm1::izmenenie_marshrut()
{
LabeledEdit13->Text = DBGrid3->Fields[0]->Text;
LabeledEdit14->Text = DBGrid3->Fields[1]->Text;
40
LabeledEdit15->Text = DBGrid3->Fields[2]->Text;
LabeledEdit16->Text = DBGrid3->Fields[3]->Text;
LabeledEdit17->Text = DBGrid3->Fields[4]->Text;
LabeledEdit18->Text = DBGrid3->Fields[5]->Text;
}
void __fastcall TForm1::DBGrid3DblClick(TObject *Sender)
{
izmenenie_marshrut();
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button13Click(TObject *Sender)
{
update_marshrut();
zaschita();
}
//---------------------------------------------------------------------------
__fastcall TForm1::select_passazhiri()
{
ADODataSet1->Active = False;
ADODataSet1->CommandType = cmdText;
ADODataSet1->CommandText
=
familia,imia,otchestvo,pasport_data,reisi_nomer_reisa FROM bileti;";
ADODataSet1->Active = true;
}
void __fastcall TForm1::Button15Click(TObject *Sender)
{
String k;
Form2->LabeledEdit6->Text = DBGrid2->Fields[0]->Text;
Form2->LabeledEdit5->Text = DBGrid2->Fields[7]->Text;
Form2->Show();
k = Form2->Caption;
k += DBGrid2->Fields[0]->Text;
Form2->Caption = k;// + "маршрут: "+
//Form1->Enabled = false;
zaschita();
}
//---------------------------------------------------------------------------
"SELECT
__fastcall TForm1::kolichestvo_mest_reisi()
{
String zapros,mest,k,zapros1;
k = ComboBox3->Text;
zapros = "SELECT kolichestvo_mest FROM samoleti WHERE nomer_samoleta = "+
ComboBox3->Text + ";";
zapros1 = "SELECT kof_samoleta FROM samoleti WHERE nomer_samoleta = "+ k + ";";
ADODataSet1->Active = False;
41
ADODataSet1->CommandType = cmdText;
ADODataSet1->CommandText = zapros;
ADODataSet1->Active = True;
mest = DBGrid2->Fields[0]->Text;
ADODataSet1->Active = False;
ADODataSet1->CommandText = zapros1;
ADODataSet1->Active = True;
kof_samoleta = StrToInt(DBGrid2->Fields[0]->Text);
LabeledEdit5->Text = mest;
ComboBox3->Text = k;
}
//----------------------------------------------------------------------------void __fastcall TForm1::ComboBox3Change(TObject *Sender)
{
kolichestvo_mest_reisi();
select_reisi();
LabeledEdit20->Text =kof_samoleta * cena_marshruta;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
String zapros;
zapros = "SELECT stoimost FROM marshrut WHERE nazvanie_marshruta = '"+ComboBox1>Text + "';";
ADODataSet2->Active = false;
ADODataSet2->CommandType = cmdText;
ADODataSet2->CommandText = zapros;
ADODataSet2->Active = True;
cena_marshruta = StrToInt(DBGrid3->Fields[0]->Text);
LabeledEdit20->Text =kof_samoleta * cena_marshruta;
}
//---------------------------------------------------------------------------
__fastcall TForm1::udalenie_bileti()
{
String zapros;
zapros = "UPDATE reisi SET kolichestvo_mest = kolichestvo_mest+1 WHERE nomer_reisa =
"+ DBGrid5->Fields[4]->Text + ";" ;
ADODataSet1->CommandType=cmdText;
ADODataSet1->Active=false;
ADODataSet1->CommandText = zapros;
try
{
ADODataSet1->Active = True;
} catch(...){}
select_bileti();
zapros = "DELETE FROM bileti WHERE nomer_bileta = "+ DBGrid5->Fields[6]->Text + ";" ;
42
ADODataSet1->CommandType=cmdText;
ADODataSet1->Active=false;
ADODataSet1->CommandText = zapros;
try
{
ADODataSet1->Active = True;
} catch(...){}
select_bileti();
}
void __fastcall TForm1::Button16Click(TObject *Sender)
{
udalenie_bileti();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button20Click(TObject *Sender)
{
String zapros;
int i;
zapros
=
"SELECT
*FROM
"+PageControl1->ActivePage->Caption+"
"+ComboBox8->Text + " = '" + Edit6->Text+ "';";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
WHERE
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::Pometit_kak_neispravnii()
{
String zapros;
zapros = "UPDATE samoleti SET sostoianie = 'неисправен' WHERE nomer_samoleta = '" +
DBGrid4->Fields[0]->Text +"';";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText=zapros;
try
{
43
ADODataSet1->Active=true;
}
catch(...)
{
select_samoleti();
}
}
void __fastcall TForm1::Button9Click(TObject *Sender)
{
Pometit_kak_neispravnii();
}
//---------------------------------------------------------------------------
__fastcall TForm1::Pometit_kak_ispravnii()
{
TDateTime data;
data = Date();
String zapros;
if (DBGrid4->Fields[5]->Text == "неисправен")
{
zapros = "UPDATE samoleti SET sostoianie = 'не занят', poslednii_remont = '"+
data.FormatString("yyyy.mm.dd") +"' WHERE nomer_samoleta = '" + DBGrid4->Fields[0]>Text +"';";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
select_samoleti();
}
}
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button17Click(TObject *Sender)
{
Pometit_kak_ispravnii();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button18Click(TObject *Sender)
{
String k;
k = "Авиакомпания ******** билет номер: " + DBGrid5->Fields[6]->Text;
44
Form3->QRLabel14->Caption = DBGrid5->Fields[4]->Text;
Form3->QRLabel12->Caption = DBGrid5->Fields[3]->Text;
Form3->QRLabel15->Caption = DBGrid5->Fields[5]->Text;
Form3->QRLabel16->Caption = DBGrid5->Fields[7]->Text;
Form3->QRLabel11->Caption = DBGrid5->Fields[8]->Text;
Form3->QRLabel17->Caption = k;
Form3->Caption = "Билет номер:" + DBGrid5->Fields[6]->Text;
String zapros;
int i;
zapros = "SELECT *FROM reisi WHERE nomer_reisa = '" + DBGrid5->Fields[4]->Text+ "';";
ADODataSet1->Active=false;
ADODataSet1->CommandType=cmdText;
ADODataSet1->CommandText=zapros;
try
{
ADODataSet1->Active=true;
}
catch(...)
{
}
Form3->QRLabel9->Caption = DBGrid5->Fields[1]->Text;
Form3->QRLabel10->Caption = DBGrid5->Fields[2]->Text;
Form3->QRLabel13->Caption = DBGrid5->Fields[3]->Text;
select_bileti();
Form3->Show();
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button19Click(TObject *Sender)
{
Form3->QuickRep1->Print();
}
//--------------------------------------------------------------------------void __fastcall TForm1::DBGrid1DblClick(TObject *Sender)
{
izmenenie_rabotniki_aeroflota();
}
//--------------------------------------------------------------------------void __fastcall TForm1::DBGrid2DblClick(TObject *Sender)
{
izmenenie_reisi();
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button21Click(TObject *Sender)
{
PageControl1Change(Sender);
}
//--------------------------------------------------------------------------45
__fastcall TForm1::zaschita()
{
for(int i = 0; i < ComponentCount; i++)
{
TEdit* edit;
edit = dynamic_cast<TEdit*>(Components[i]);
if(edit)
edit->Text = "";
}
for(int i = 0; i < ComponentCount; i++)
{
TLabeledEdit* edit;
edit = dynamic_cast<TLabeledEdit*>(Components[i]);
if(edit)
edit->Text = "";
}
for(int i = 0; i < ComponentCount; i++)
{
TMaskEdit* edit;
edit = dynamic_cast<TMaskEdit*>(Components[i]);
if(edit)
edit->Text = "";
}
for(int i = 0; i < ComponentCount; i++)
{
TComboBox* edit;
edit = dynamic_cast<TComboBox*>(Components[i]);
if(edit)
edit->Text = "";
}
}
void __fastcall TForm1::Button22Click(TObject *Sender)
{
zaschita();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
Form4->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
46
Form1->Close();
}
//---------------------------------------------------------------------------
47
Документ
Категория
Программирование, Базы данных
Просмотров
63
Размер файла
862 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа