Автоматизированная система бронирования авиабилетов. Курсовая работа (т). Информационное обеспечение, программирование.

Автоматизированная система бронирования авиабилетов. Курсовая работа (т). Информационное обеспечение, программирование.




🛑 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Похожие работы на - Автоматизированная система бронирования авиабилетов

Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе

Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

по
дисциплине: «Корпоративные информационные системы»


Автоматизированная система бронирования авиабилетов





2.1 Этап концептуального проектирования


2.2 Этап логического проектирования


3.2 Поиск рейсов по определенным критериям       


3.4 Заказ билетов на выбранный рейс


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


Для этого необходимо решить
следующие задачи:


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


- построить даталогическую модель
организации данных;


- реализовать базу данных
посредством MS SQL Server 2005;


- реализовать соответствующее
WEB-приложение;


- произвести развертывание и
тестирование системы.


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


Для каждой модели самолета имеется
определенное число мест каждого класса. Каждая модель самолета характеризуется
авиакомпанией-производителем.


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





Наиболее важными элементами модели
выбраны рейсы (flights) и заказы (orders).


Каждый рейс характеризуется
следующей информацией:


- стоимость билетов первого класса,


- стоимость билетов второго класса.


Заказ описывается следующим набором
полей:


- количество заказанных билетов
первого класса,


- количество заказанных билетов
второго класса,


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


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


В системе предполагается
использовать следующие роли пользователей:


Администратор: имеет права на
просмотр полного списка рейсов, включая заказы.


Клиент: имеет право на отбор рейсов
по определенным параметрам и на заказ билета.


Доступ к системе предоставляется
только зарегистрированным пользователям.





2.1 Этап концептуального
проектирования




На этапе концептуального
проектирования использовалась модель «сущность-связь». Как видно из рисунка 1,
в предметной области выделено 6 сущностей: пользователи (users), заказы
(orders), рейсы (flights), города (cities), самолеты (aircrafts) и авиакомпании
(companies). Связи между сущностями также изображены на рисунке. Атрибуты
сущностей и их типы более подробно будут рассмотрены на этапе логического
проектирования.




Рисунок 1 - ER- модель разработанной
системы




2.2 Этап логического проектирования




Использование реляционной модели
данных в системах управления базами данных было предложено в 1970 г. доктором
Э. Ф. Коддом. Одним из важных достоинств реляционного подхода является его
простота, а отсюда и доступность для понимания конечным пользователем.


Рассмотрим схемы отношений,
используемых в реляционной модели:




R1 = ORDERS (OrderID, CreditCard,
Number1cl, Number2cl, UserID, FlightID),





- CreditCard - номер кредитной
карты;


- Number1cl - количество заказанных
билетов первого класса;


- Number2cl - количество билетов
второго класса;


- UserID - идентификатор
пользователя, оформившего заказ;


- FlightID - идентификатор рейса, на
который оформлен данный заказ.




R2 = FLIGHTS (FlightID,
DateDeparture, DateArrival, Price1, Price2, AircraftID, CityDepatrureID,
CityArrivalID),




- DateDeparture - дата отправления;


- Price1 - стоимость билета первого
класса;


- Price2 - стоимость билета второго
класса;


- CompanyID - идентификатор
компании, организующей рейс;


- AircraftID - идентификатор самолета;


- CityDepatrureID - идентификатор
города отправления;


- CityArrivalID - идентификатор
города прибытия.




R4 = AIRCRAFTS (AircraftID,
AircraftModel, Count1, Count2),





- AircraftID - идентификатор
самолета;


- Count1 - общее количество мест
первого класса;


- Count2 - общее количество мест
второго класса.




R5= COMPANIES (ID, COMPANY_NAME,
COMPANY_PHONE),




- CompanyID - идентификатор
компании;


- CompanyName- название
авиакомпании.




- UserID - идентификатор
пользователя;


Данная схема отношений находится в 1
НФ, так все входящие в нее атрибуты являются атомарными (неделимыми). Более
того, данная схема находится в НФ Бойса-Кодда, так как она находится в 1 НФ и
никакой атрибут не зависит транзитивно ни от одного ключа.


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





Рисунок 2 - Даталогическая модель
базы данных





В системе реализованы следующие виды
запросов:




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


Для того, чтобы представить данные
именно в такой форме необходимо выполнить дополнительные операции. Так в базе
данных нет поля продолжительность полета, зато есть поля дата отправления и дата
прибытия. По ним легко получить продолжительность. Для её вычисления была
создана функция timeFlight:




convert(char(2),datediff(hh,@dateDeparture,@dateArrival))+':'+


convert(char(2),datediff(mi,@dateDeparture,@dateArrival)-


datediff(hh,@dateDeparture,@dateArrival)*60)


Данная функция возвращает
продолжительность полета в виде строки из 5 символов в формате hh:mm.


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




CREATE FUNCTION [dbo].[CountEmptyPlaces1cl]


IF EXISTS (SELECT OrderID FROM
Orders WHERE FlightID=@flightID


                  SELECT
@count=Aircrafts.Count1


                           -(SELECT
SUM(Number1cl) FROM Orders WHERE FlightID=@flightID)


         FROM Flights,Aircrafts
WHERE Flights.FlightID=@flightID


                           AND
Flights.AircraftID=Aircrafts.AircraftID


                  SELECT
@count=Aircrafts.Count1


                  FROM
Flights,Aircrafts WHERE Flights.FlightID=@flightID


                           AND
Flights.AircraftID=Aircrafts.AircraftID


CREATE FUNCTION
[dbo].[CountEmptyPlaces2cl]


IF EXISTS (SELECT OrderID FROM
Orders WHERE FlightID=@flightID


                  SELECT
@count=Aircrafts.Count2


                           -(SELECT
SUM(Number2cl) FROM Orders WHERE FlightID=@flightID)


         FROM Flights,Aircrafts
WHERE Flights.FlightID=@flightID


                           AND
Flights.AircraftID=Aircrafts.AircraftID


                  SELECT
@count=Aircrafts.Count2


                  FROM
Flights,Aircrafts WHERE Flights.FlightID=@flightID


                           AND
Flights.AircraftID=Aircrafts.AircraftID


Для получения информации по рейсам
было создано представление FlightView:




        dbo.timeFlight(DateArrival,DateDeparture)
AS TimeFlight,


DepartureCities.CityName AS
CityDeparture,


ArrivalCities.CityName AS
CityArrival, 


        dbo.CountEmptyPlaces1cl(FlightID)
AS EmptyPlace1cl,


        dbo.CountEmptyPlaces2cl(FlightID)
AS EmptyPlace2cl


ON Group0703b.dbo.Flights.CompanyID
= Group0703b.dbo.Companies.CompanyID


INNER JOIN Group0703b.dbo.Aircrafts


ON Group0703b.dbo.Flights.AircraftID
= Group0703b.dbo.Aircrafts.AircraftID


LEFT OUTER JOIN
Group0703b.dbo.Cities AS DepartureCities


ON
Group0703b.dbo.Flights.CityDepartureID = DepartureCities.CityID


LEFT OUTER JOIN
Group0703b.dbo.Cities AS ArrivalCities


ON
Group0703b.dbo.Flights.CityArrivalID = ArrivalCities.CityID




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





3.2 Поиск рейсов по определенным
критериям




Система позволяет выполнять отбор
рейсов с заданными параметрами.


- дата (критерий - равенство) и
время вылета (критерий - до/после включительно);


- дата (критерий - равенство) и
время прибытия (критерий - до/после включительно).


Ни один из критериев не является
обязательным для задания при выполнении поиска. Все критерии опциональны. Если
ни один из критериев поиска не заполнен, то выводится полный список рейсов.


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


Эти критерии учитываются путем
добавления необходимых условий к представлению FlightView в секцию WHERE.
Формирование и выполнение данного запроса происходит в слое доступа к данным
методом SearchFlights().




Система предоставляет возможность
просмотра заказов пользователя на выбранный рейс. В этом случае запрос
осуществляется по идентификатору пользователя и рейса.


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





3.4 Заказ билетов на выбранный рейс




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


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




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


Удаление заказа осуществляется
посредством хранимой процедуры Delete_Order:




CREATE PROCEDURE [dbo].[Delete_Order]


        DELETE FROM Orders WHERE
[OrderID]=@orderID


Добавление рейса осуществляется
хранимой процедурой Insert_FlightString:





CREATE PROCEDURE
[dbo].[Insert_FlightString]


                  ([DateDeparture],[DateArrival],


                  [Price1],[Price2],


                  [CompanyID],[AircraftID],


                  [CityDepartureID],[CityArrivalID])



                  @dateDeparture,@dateArrival,


                  @price1,@price2,


                  @company,@aircraft,


                  @cityDeparture,@cityArrival)


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





Обновление информации о рейсе
обеспечивается хранимой процедурой Update_FlightString:




CREATE PROCEDURE
[dbo].[Update_FlightString]


        @dateDeparture datetime,     


                  dateDeparture =
@dateDeparture,


                  dateArrival =
@dateArrival,


                  price1 = @price1,


                  price2 = @price2,


                  cityDepartureID =
@cityDepartureID,


                  cityArrivalID =
@cityArrivalID,


                  companyID =
@companyID,


                aircraftID =
@aircraftID


        WHERE FlightID = @FlightID


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




При удалении рейса срабатывает
триггер TR_Flights_Delete:




CREATE TRIGGER [TR_Flights_Delete]
ON [dbo].[Flights] INSTEAD OF DELETE


        WHERE Orders.FlightID=
(SELECT top(1) deleted.FlightID FROM deleted)


        WHERE Flights.FlightID=
(SELECT top(1) deleted.FlightID FROM deleted)


Так как в базе данных существует
связь FK_Orders_Flights между таблицами Flight и Orders, то невозможно удалить
рейс, пока есть хотя бы одна заявка на него. Поэтому сначала должны быть
удалены все связанные заявки, а уже потом - сам рейс. Эту логику и осуществляет
даный триггер.




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




CREATE PROCEDURE [dbo].[Insert_User]


                  (UserLogin,
Password, Email)


                  (@login,
@password, @email)


Удаление пользователя осуществляется
хранимой процедурой Delete_User:




CREATE PROCEDURE [dbo].[Delete_User]


        DELETE FROM Orders WHERE
[UserID]=@UserID


        DELETE FROM Users WHERE
[UserID]=@UserID


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







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


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




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


После входа в систему пользователь
оказывается на странице поиска полетов. Эта страница имеет разный вид в
зависимости от роли пользователя. Если это администратор, то он увидит
страницу, показанную на рисунке 4, иначе загрузится страница, приведенная на
рисунке 5.





Рисунок 4 - Страница Flights
интерфейса администратора




Рисунок 5 - Страница Flights
пользовательского интерфейса




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


На параметры поиска налагается одно
ограничение: время вылета или прибытия не может быть указано без
соответствующей даты. При нарушении этого условия появляется сообщение об
ошибке (Рисунок 6).





Выбрав рейс, пользователь может
сделать заказ на некоторое количество билетов первого и/или второго класса. Для
этого ему необходимо на странице Orders указать нужное количество билетов и
номер кредитной карты. Информацию о заявке невозможно будет сохранить, пока он
не укажет количество билетов, не превышающее число свободных мест заданного
класса и корректный номер кредитной карты (16 цифр). В случае неправильного
заполнения полей система выводит соответствующие сообщения. (Рисунок 7) Эти
надписи остаются видимыми до тех пор, пока ошибка не будет исправлена.




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


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




Рисунок 8 - Удаление пользователя
посредством интерфейса страницы Users




Кроме этого администратор может
добавлять рейсы - на странице AddingFlight (Рисунок 9) и редактировать
информацию по выбранному рейсу на странице EditFlight (Рисунок 10). На этих
обязательно заполнение всех полей. Также проверяется, чтобы: не совпадали
указанные город вылета и прибытии; значения, введенные в поля цены за билеты
были положительными числами; дата прибытии была бы больше даты вылета. Если
хотя бы одно из этих условий нарушается, выводится сообщение об ошибке. В
случае корректного ввода информация сохраняется в базе данных и система
сообщает пользователю об успешно выполненной операции.





Рисунок 9 - Страница добавления
рейса




Рисунок 10 - Страница редактирования
рейса





В рамках данной курсовой работы была
разработана система бронирования авиабилетов: спроектирована база данных для MS
SQL Server 2005, а так же реализованы слой доступа к данным и WEB-интерфейс.
При проектировании базы данных акцент делался на серверную часть. На стороне
сервера были применены индексы, хранимые процедуры, функции, триггеры,
представления. Клиентская часть была реализована посредством языка С# на
платформе.NET. В частности: доступ к данным был обеспечен провайдером ADO.NET,
а WEB-интерфейс построен с помощью ASP.NET. Дополнительно при реализации
WEB-представления были использованы HTML, CSS, JavaScript, AJAX.


В итоге, в соответствии с
поставленной задачей, мы получили систему бронирования авиабилетов. Данное
приложение предоставляет удобный, интуитивно понятный интерфейс для клиентов
компании. Кроме того, администратор получает возможность выполнять многие
операции по сопровождению системы: по добавлению, удалении, редактированию
пользователей, рейсов, заказов посредством того же (но уже расширенного в
соответствии с его ролью) WEB-интерфейса.





1.  Жилинский А.А. Самоучитель Microsoft SQL Server 2005 - СПб.:
БХВ-Петербург, 2007. - 224 с.


2.     Рихтер ДЖ. CLR via C#. Программирование на платформе.NET
Framework 2.0 на языке С#. Мастер-класс./ Пер. с англ. - М.: Издательство
«Русская редакция»; СПб.; Питер, 2007. - 656 с.


3.     Экспозито Д. Microsoft ASP.NET 2.0. Базовый курс.
Мастер-класс/ Пер. с англ. - М. Издательство «Русская редакция»; СПб.; Питер,
2007. - 688 с.


4.     Экспозито Д. Microsoft ASP.NET 2.0. Углубленное изучение/
Пер. с англ. - М. Издательство «Русская редакция»; СПб.; Питер, 2007. - 592 с.


5.     Microsoft Corporation. Проектирование и реализация баз
данных Microsoft SQL Server 2000. Учебный курс MCAD/MSCE, MCDMA/ Пер. с англ. -
2-е изд., испр. - М.: Издательско-торговый дом «Русская редакция», 2003. -
512с.







IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Companies]') AND type in
(N'U'))


        [CompanyID] [int]
IDENTITY(1,1) NOT NULL,


        [CompanyName]
[nvarchar](40) NULL,


CONSTRAINT [PK_Companies] PRIMARY
KEY CLUSTERED


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Users]') AND type in (N'U'))


        [UserID] [int]
IDENTITY(1,1) NOT NULL,


        [UserLogin] [nvarchar](20)
NOT NULL,


        [Password] [nvarchar](20)
NOT NULL,


        [Email] [nvarchar](50)
NULL,


CONSTRAINT [PK_Users_1] PRIMARY KEY
CLUSTERED


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Cities]') AND type in (N'U'))


        [CityID] [int]
IDENTITY(1,1) NOT NULL,


        [CityName] [nvarchar](40)
NULL,


CONSTRAINT [PK_Cities] PRIMARY KEY
CLUSTERED


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Aircrafts]') AND type in
(N'U'))


        [AircraftID] [int]
IDENTITY(1,1) NOT NULL,


        [AircraftModel]
[nvarchar](40) NULL,


CONSTRAINT [PK_Aicrafts] PRIMARY KEY
CLUSTERED


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[timeFlight]') AND type in
(N'FN', N'IF', N'TF', N'FS', N'FT'))


execute dbo.sp_executesql @statement
= N'CREATE FUNCTION [dbo].[timeFlight]


        convert(char(2),datediff(hh,@dateDeparture,@dateArrival))+'':''+


convert(char(2),datediff(mi,@dateDeparture,@dateArrival)-datediff(hh,@dateDeparture,@dateArrival)*60)


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Flights]') AND type in (N'U'))


        [FlightID] [int]
IDENTITY(1,1) NOT NULL,


        [DateDeparture] [datetime]
NULL,


        [DateArrival] [datetime]
NULL,


        [Price1] [decimal](18, 0)
NULL,


        [Price2] [decimal](18, 0)
NULL,


        [CityDepartureID] [int]
NULL,


        [CityArrivalID] [int] NULL,


CONSTRAINT [PK_Flights] PRIMARY KEY
CLUSTERED


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Flights]') AND name =
N'IX_Fligts_AircraftID')


CREATE NONCLUSTERED INDEX
[IX_Fligts_AircraftID] ON [dbo].[Flights]


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Flights]') AND name = N'IX_Fligts_CityArrivalID')


CREATE NONCLUSTERED INDEX
[IX_Fligts_CityArrivalID] ON [dbo].[Flights]


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Flights]') AND name =
N'IX_Fligts_CityDepartureID')


CREATE NONCLUSTERED INDEX
[IX_Fligts_CityDepartureID] ON [dbo].[Flights]


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Flights]') AND name =
N'IX_Fligts_CompanyID')


CREATE NONCLUSTERED INDEX
[IX_Fligts_CompanyID] ON [dbo].[Flights]


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[TR_Flights_Delete]'))


EXEC dbo.sp_executesql @statement =
N'CREATE TRIGGER [dbo].[TR_Flights_Delete] ON [dbo].[Flights] INSTEAD OF DELETE


        WHERE Orders.FlightID=
(SELECT top(1) deleted.FlightID FROM deleted)


        WHERE Flights.FlightID=
(SELECT top(1) deleted.FlightID FROM deleted)


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Orders]') AND type in (N'U'))


        [OrderID] [int]
IDENTITY(1,1) NOT NULL,


        [CreditCard] [varchar](16)
NULL,


CONSTRAINT [PK_Orders] PRIMARY KEY
CLUSTERED


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Orders]') AND name =
N'IX_Orders_UserID')


CREATE NONCLUSTERED INDEX
[IX_Orders_UserID] ON [dbo].[Orders]


)WITH (PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF) ON [PRIMARY]


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Insert_User]') AND type in
(N'P', N'PC'))


EXEC dbo.sp_executesql @statement =
N'-- Вставка новой записи в таблицу Users


CREATE PROCEDURE [dbo].[Insert_User]


                  (UserLogin,
Password, Email)


                  (@login,
@password, @email)


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Delete_User]') AND type in
(N'P', N'PC'))


EXEC dbo.sp_executesql @statement =
N'-- Удаление записи из таблицы Users


CREATE PROCEDURE [dbo].[Delete_User]


        DELETE FROM Users WHERE
[UserID]=@UserID


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CountEmptyPlaces1cl]') AND
type in (N'FN', N'IF', N'TF', N'FS', N'FT'))


execute dbo.sp_executesql @statement
= N'CREATE FUNCTION [dbo].[CountEmptyPlaces1cl]


        IF EXISTS (SELECT OrderID
FROM Orders WHERE FlightID=@flightID AND Number1cl>0)


                  SELECT
@count=Aircrafts.Count1


                           -(SELECT
SUM(Number1cl) FROM Orders WHERE FlightID=@flightID)


FROM Flights,Aircrafts WHERE Flights.FlightID=@flightID



                           AND
Flights.AircraftID=Aircrafts.AircraftID


                  SELECT
@count=Aircrafts.Count1


                  FROM
Flights,Aircrafts WHERE Flights.FlightID=@flightID


                           AND
Flights.AircraftID=Aircrafts.AircraftID


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CountEmptyPlaces2cl]') AND
type in (N'FN', N'IF', N'TF', N'FS', N'FT'))


execute dbo.sp_executesql @statement
= N'CREATE FUNCTION [dbo].[CountEmptyPlaces2cl]


        IF EXISTS (SELECT OrderID
FROM Orders WHERE FlightID=@flightID AND Number2cl>0)


                  SELECT
@count=Aircrafts.Count2


                           -(SELECT
SUM(Number2cl) FROM Orders WHERE FlightID=@flightID)


FROM Flights,Aircrafts WHERE
Flights.FlightID=@flightID


                           AND
Flights.AircraftID=Aircrafts.AircraftID


                  SELECT
@count=Aircrafts.Count2


                  FROM
Flights,Aircrafts WHERE Flights.FlightID=@flightID


                           AND
Flights.AircraftID=Aircrafts.AircraftID


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Insert_FlightString]') AND
type in (N'P', N'PC'))


EXEC dbo.sp_executesql @statement =
N'-- Вставка новой записи в таблицу Flight


CREATE PROCEDURE
[dbo].[Insert_FlightString]


                  ([DateDeparture],[DateArrival],


                  [Price1],[Price2],


                  [CompanyID],[AircraftID],


                  [CityDepartureID],[CityArrivalID])



                  @dateDeparture,@dateArrival,


                  @price1,@price2,


                  @company,@aircraft,


                  @cityDeparture,@cityArrival)


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Update_FlightString]') AND
type in (N'P', N'PC'))


EXEC dbo.sp_executesql @statement =
N'-- Обновление записи в таблице Flights


CREATE PROCEDURE
[dbo].[Update_FlightString]


        @dateDeparture datetime,     


                  dateDeparture =
@dateDeparture,


                  dateArrival =
@dateArrival,


                  price1 = @price1,


                  price2 = @price2,


                  cityDepartureID =
@cityDepartureID,


                  cityArrivalID =
@cityArrivalID,


                  companyID =
@companyID,


                  aircraftID =
@aircraftID


        WHERE FlightID = @FlightID


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Delete_Order]') AND type in
(N'P', N'PC'))


EXEC dbo.sp_executesql @statement =
N'-- Удаление записи из таблицы Orders по OrderID


CREATE PROCEDURE
[dbo].[Delete_Order]


        DELETE FROM Orders WHERE
[OrderID]=@orderID


IF NOT EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Delete_OrderByUserID]') AND
type in (N'P', N'PC'))


EXEC dbo.sp_executesql @statement =
N'-- Удаление записей из таблицы Orders по UserID


CREATE PROCEDURE
[dbo].[Delete_OrderByUserID]


        DELETE FROM Orders WHERE
[UserID]=@UserID


IF NOT EXISTS (SELECT * FROM
sys.views WHERE object_id = OBJECT_ID(N'[dbo].[FlightView]'))


EXEC dbo.sp_executesql @statement =
N'CREATE VIEW [dbo].[FlightView] AS


        dbo.timeFlight(DateArrival,DateDeparture)
AS TimeFlight,


DepartureCities.CityName AS
CityDeparture,


ArrivalCities.CityName AS
CityArrival, 


        dbo.CountEmptyPlaces1cl(FlightID)
AS EmptyPlace1cl,


        dbo.CountEmptyPlaces2cl(FlightID)
AS EmptyPlace2cl


FROM dbo.Flights INNER JOIN
dbo.Companies


        ON
Group0703b.dbo.Flights.CompanyID = Group0703b.dbo.Companies.CompanyID


INNER JOIN Group0703b.dbo.Aircrafts


        ON
Group0703b.dbo.Flights.AircraftID = Group0703b.dbo.Aircrafts.AircraftID


LEFT OUTER JOIN
Group0703b.dbo.Cities AS DepartureCities


ON

Похожие работы на - Автоматизированная система бронирования авиабилетов Курсовая работа (т). Информационное обеспечение, программирование.
Реферат по теме Агрегирование интересов молодежи через молодежный парламент на примере Москвы
Сочинение: RlinC
Курсовая Работа Психология Личности Преступника
Реферат: Животные смешанных лесов
Курсовая работа по теме Отраслевая структура экономики Республики Адыгея. Проблемы и перспективы развития отраслей региона
Доклад: Николай Семенович Голованов
Реферат: Необходимая оборона 5
Контрольная Работа На Тему Община В Вавилоне В Первой Половине 2 Тыс. До Н.Э. По Законам Хаммурапи
Курсовая работа по теме Возбуждение производства по пересмотру судебного постановления в порядке надзора и процессуальный по...
Дипломная работа по теме Школьник как субъект образовательного процесса. Учебная деятельность и ориентация подростка на труд
Дипломная работа по теме Система документационного обеспечения управления
Дипломная работа по теме Комплексный анализ форм устройства детей, оставшихся без попечения родителей
Физика 8 Класс Лабораторная Работы Контрольные
Заболевания Детей Раннего Возраста Эссе
Нужна Ли Современному Человеку Литература Сочинение
Реферат по теме Части речи в китайском языке
Курсовая работа: Расчет системы передачи дискретных сообщений
Дипломная работа по теме Правовое регулирование деятельности государственных и муниципальных органов в сфере занятости населения
Россия Сочинение На Английском С Переводом
Реферат: Buddha Essay Research Paper BuddhaThe word Buddha

Курсовая работа: Тигр обыкновенный на примере подвида "амурский тигр"
Реферат: Кредитно-денежная политика

Report Page