Система бронирования билетов «Aircraft Tickets» Software Design Description

advertisement
Система бронирования билетов
«Aircraft Tickets»
Software Design Description
Версия 1.1
08/06/2009
Юлия Беляева, Михаил Дворкин, Антон Иринёв,
Евгений Курбацкий, Дмитрий Трофимов
i
Оглавление
1
Введение ................................................................................................................................. 2
1.1
Цель .................................................................................................................................. 2
1.2
Краткий обзор.................................................................................................................. 2
1.3
Список определений, сокращений и аббревиатур ...................................................... 2
1.4
Ссылки .............................................................................................................................. 3
2
Диаграмма размещения ........................................................................................................ 4
3
Архитектурный дизайн .......................................................................................................... 5
3.1
4
Описание интерфейсов компонетов ............................................................................. 5
3.1.1
Интерфейсы Database и DatabaseOperations ......................................................... 5
3.1.2
Интерфейсы DatabaseListener и DatabaseListenerOperations ............................. 8
Дизайн структур данных ........................................................................................................ 9
4.1
Таблица «Airports» .......................................................................................................... 9
4.2
Таблица «Airplanes» ........................................................................................................ 9
4.3
Таблица «Airplanes_seats» .............................................................................................. 9
4.4
Таблица «Tickets» ............................................................................................................ 9
4.5
Таблица «Flights» ............................................................................................................. 9
5
Сценарии работы.................................................................................................................... 9
6
Дизайн графического интерфейса пользователя ................................................................ 9
1
1 Введение
1.1 Цель
Целью данного документа является детальное изложение того, как устроена
система покупки авиабилетов Aircraft Tickets.
1.2 Краткий обзор
Система состоит из трех компонент – клиентского приложения (которые
существуют двух типов – для администраторов и операторов системы), сервера
приложений и базы данных. Сервер приложений обслуживает подключенных к
нему клиентов, позволяя тем совершать операции по покупке билетов,
добавлению новых аэропортов, самолетов, мест и рейсов. Все данные об
аэропортах, самолетах, билетах, местах содержатся в базе данных.
1.3 Список определений, сокращений и аббревиатур
CORBA – Common Object Request Broker Architecture, общая архитектура брокера
объектных запросов
OMG – Object Management Group
SQL – Structured Query Language
Аэропорт – запись в базе данных, содержащая название и международный код
аэропорта
Билет — запись в базе данных, содержащая номер рейса, номер места и паспортные
данные клиента, и означающая факт покупки клиентом указанного места на
указанном рейсе
Место — запись в базе данных, содержащая код самолета и номер места, и
означающая наличие в указанном типе самолета места с указанным номером
Рейс — запись в базе данных, содержащая коды аэропортов отправления и прибытия,
даты отправления и прибытия, и код самолета, на котором осуществляется рейс
Самолет — запись в базе данных, содержащая название типа самолета и его код
СУБД – система управления базой данных
1.4 Ссылки
1. Sun Java http://java.sun.com/
2. OMG’s CORBA web site. http://www.corba.org/
3. http://www.oracle.com/technology/obe/2day_dba/backup/backup.htm#t2
4. Система бронирования авиабилетов Expedia www.expedia.com
5. СУБД Oracle http://www.oracle.com
2 Диаграмма размещения
На рис. 1 представлена диаграмма физического размещения компонентов
cистемы.
Client Editor
Client Monitor
Компьютер администратора
Компьютер оператора
Application server
Database
Сервер
Сервер с базой данных
Рис. 1. Диаграмма размещения
3 Архитектурный дизайн
Диаграмма компонентов с указанием интерфейсов представлена на рис. 2.
Client Application
DatabaseListener
Database
Oracle C++ Call Interface
Application Server
Oracle DBMS
Advanced Query
Рис. 2. Диаграмма компонентов
3.1 Описание интерфейсов компонетов
В данном разделе описаны интерфейсы между компонентами системы.
3.1.1
Интерфейсы Database и DatabaseOperations
Интерфейс Database наследуется от DatabaseOpeations, который будет описан далее.
Интерфейс DatabaseOperations содержит следующие операции:

boolean deleteTicket (int id)
Описание: Удаление билета по идентификатору.
Аргументы: Идентификатор билета.
Возвращаемое значение: Был удалён билет или нет.
Предусловия: Существование билета с данным идентификатором.
Постусловие: Билет удалён или возвращено значение false.

boolean updateTicket (int id, int flightId, int seatId,
java.lang.String clientName, java.lang.String
clientPassport)
Описание: Обновление информации о билете.
Аргументы: Идентификатор билета, идентификатор полёта, идентификатор места,
имя клиента, паспортные данные клиента.
Возвращаемое значение: Был обновлён билет или нет.
Предусловия: Существование билета с данным идентификатором.
Постусловие: Информация о билете обновлена или возвращено значение false.

boolean addTicket (int flightId, int seatId,
java.lang.String clientName, java.lang.String
clientPassport)
Описание: Добавление нового билета.
Аргументы: Идентификатор полёта, идентификатор места в самолёте, имя клиента,
паспортные данные клиента.
Возвращаемое значение: Был добавлен билет или нет.
Предусловия: Отсутствие билета на полёт с данным идентификатором на данное
место.
Постусловие: Билет добавлен или возвращено значение false.

ru.ifmo.airtickets.idl.Ticket[] getTicket (int id)
Описание: Получение билета по идентификатору.
Аргументы: Идентификатор билета.
Возвращаемое значение: Билет с данным идентификатором или массив длины
ноль.
Предусловия: Нет.
Постусловие: Нет.

ru.ifmo.airtickets.idl.Ticket[] getAllTickets ()
Описание: Получение всех забронированных билетов.
Аргументы: Нет.
Возвращаемое значение: Массив билетов.
Предусловия: Нет.
Постусловие: Нет.

boolean deleteFlight (int id)
Описание: Удаление полёта по идентификатору.
Аргументы: Идентификатор полёта.
Возвращаемое значение: Был удалён полёт или нет.
Предусловия: Существование полёта с данным идентификатором.
Постусловие: Полёт удалён или возвращено значение false.

boolean updateFlight (int id, int departureAirportId,
java.lang.String departureDate, int arrivalAirportId,
java.lang.String arrivalDate, int airplaneId, double cost)

boolean addFlight (int departureAirportId, java.lang.String
departureDate, int arrivalAirportId, java.lang.String
arrivalDate, int airplaneId, double cost)

ru.ifmo.airtickets.idl.Flight[] getFlight (int id)

ru.ifmo.airtickets.idl.Flight[] getAllFlights ()

boolean deleteAirplaneSeat (int id)

boolean updateAirplaneSeat (int id, int airplaneId,
java.lang.String seat)

boolean addAirplaneSeat (int airplaneId, java.lang.String
seat)

ru.ifmo.airtickets.idl.AirplaneSeat[] getAirplaneSeat (int
id)

ru.ifmo.airtickets.idl.AirplaneSeat[] getAllAirplaneSeats
()

boolean deleteAirplane (int id)

boolean updateAirplane (int id, java.lang.String name)

boolean addAirplane (java.lang.String name)

ru.ifmo.airtickets.idl.Airplane[] getAirplane (int id)

ru.ifmo.airtickets.idl.Airplane[] getAllAirplanes ()

boolean deleteAirport (int id)

boolean updateAirport (int id, java.lang.String shortName,
java.lang.String fullName)

boolean addAirport (java.lang.String shortName,
java.lang.String fullName)

ru.ifmo.airtickets.idl.Airport[] getAirport (int id)

ru.ifmo.airtickets.idl.Airport[] getAllAirports ()

void addDatabaseListener
(ru.ifmo.airtickets.idl.DatabaseListener listener)
3.1.2
Интерфейсы DatabaseListener и DatabaseListenerOperations
Интерфейс DatabaseListener наследуется от DatabaseListenerOpeations, который будет
описан далее. Интерфейс DatabaseListenerOperations содержит следующие операции:

void updateByQuery (java.lang.String query)

void updateTickets ()

void updateFlights ()

void updateAirplaneSeats ()

void updateAirplanes ()

void updateAirports ()
4 Дизайн структур данных
Инфологическая модель используемой базы данных приведена на рис. 3.
AIRPORTS
AIRPLANES
PK
ID
U1
SHORT_NAME
LONG_NAME
PK
ID
NAME
FLIGHTS
AIRPLANES_SEATS
PK
ID
FK2
DEPARTURE_AIRPORT_ID
DEPARTURE_DATE
ARRIVAL_AIRPORT_ID
ARRIVAL_DATE
AIRPLANE_ID
COST
FK3
FK1
PK
ID
FK1,U1 AIRPLANE_ID
SEAT
U1
TICKETS
PK
ID
FK2,U1 FLIGHT_ID
FK1,U1 SEAT_ID
CLIENT_NAME
CLIENT_PASSPORT
Рис. 3. Инфологическая модель базы данных
4.1 Таблица «Airports»
Атрибут
Тип атрибута
Размер
Описание
ID
Long
8
Идентификатор
SHORT_NAME
Char
3
Трехбуквенный международный
идентификатор аэропорта
LONG_NAME
Text
100
Название аэропорта (включая город и
страну)
4.2 Таблица «Airplanes»
Атрибут
Тип атрибута
Размер
Описание
ID
Long
8
Идентификатор
NAME
Text
100
Название типа самолета
4.3 Таблица «Airplanes_seats»
Атрибут
Тип атрибута
Размер
Описание
ID
Long
8
Идентификатор записи
AIRPLANE_ID
Long
8
Идентификатор типа самолета
SEAT
Text
5
Буквенно-цифровое обозначение места
4.4 Таблица «Tickets»
Атрибут
Тип атрибута
Размер
Описание
ID
Long
8
Идентификатор
FLIGHT_ID
Long
8
Идентификатор рейса
SEAT_ID
Long
8
Идентификатор места в самолете
CLIENT_NAME
Text
100
Имя и фамилия пассажира
CLIENT_PASSPORT
Text
20
Номер паспорта пассажира
4.5 Таблица «Flights»
Атрибут
Тип атрибута
ID
Long
Размер
8
Описание
Идентификатор
DEPARTURE_AIRPORT_ID
Long
8
Идентификатор аэропорта
отправления
ARRIVAL_AIRPORT_ID
Long
8
Идентификатор аэропорта
назначения
DEPARTURE_DATE
DateTime
7
Дата и время отлета
ARRIVAL_DATE
DateTime
7
Дата и время прибытия
AIRPLANE_ID
Long
8
Идентификатор типа
самолета
COST
Numeric
10,2
Стоимость билета (в
долларах США)
Все атрибуты во всех таблицах являются обязательными.
5 Сценарии работы
В настоящем разделе описаны сценарии работы системы. На рис. 4 изображен
сценарий получения списка рейсов.
Client
Application Server
Database
getAllFlights()
SQL Query
SQL Query Result
FlightArray
Рис. 4. Сценарий получения списка рейсов
На рис. 5 изображен сценарий получения списка самолетов.
Client
Application Server
Database
getAllAirplanes()
SQL Query
SQL Query Result
AirplaneArray
Рис. 5. Сценарий получения списка самолетов
На рис. 6 изображен сценарий получения списка самолетов.
Client
Application Server
Database
getAllAirplaneSeats()
SQL Query
SQL Query Result
AirplaneSeatArray
Рис. 6. Сценарий получения списка мест
На рис. 7 изображен сценарий получения списка аэропортов.
Client
Application Server
Database
getList
SQL Query
SQL Query Result
airportsList
Рис. 7. Сценарий получения списка аэропортов
На рис. 8 изображен сценарий получения списка проданных билетов.
Client
Application Server
Database
getAllTickets()
SQL Query
SQL Query Result
TicketArray
Рис. 8. Сценарий получения списка проданных билетов
На рис. 9 изображен сценарий добавления нового аэропорта.
Client
Application Server
Database
new airport data
make transaction
result
ALT
[SQLException]
bad new airport
[else]
confirm OK
Рис. 9. Сценарий добавления нового аэропорта
На рис. 10 изображен сценарий добавления нового самолета. Действия,
выполняемые при этом аналогичны действиям, выполняемым при добавлении
нового аэропорта.
Client
Application Server
Database
new airplane data
make transaction
result
ALT
[SQLException]
bad new airplane
[else]
confirm OK
Рис. 10. Сценарий добавления нового самолета
На рис. 11 изображен сценарий добавления нового места в самолет.
Client
Application Server
Database
new seat data
make transaction
result
ALT
[SQLException]
bad new seat
[else]
confirm OK
Рис. 11. Сценарий добавления нового места в самолет
На рис. 12 изображен сценарий добавления нового рейса.
Client
Application Server
Database
new filght data
make transaction
result
ALT
[SQLException]
bad new flight
[else]
confirm OK
Рис. 12. Сценарий добавления нового места в самолет
На рис. 13 изображен сценарий покупки билета.
Client
Application Server
Database
flight date and route
SQL query
SQL query result
f lights list
preferable flight
SQL query
SQL query result
seats list
preferable seat
make transaction
result
ALT
[SQLException]
seat not available
[else]
confirm OK
Рис. 13. Сценарий покупки билета
Сценарии изменения информации о самолете, аэропорте, рейсе, месте или
о билете аналогичны сценариям, приведенным на рис. 9–13, поэтому приводиться
не будут.
На рис. 14 изображен сценарий удаления информации о существующем
аэропорте.
Client
Application Server
Database
airport name
make transaction
result
ALT
[SQLException]
cannot be deleted
[else]
confirm OK
Рис. 14. Сценарий удаления существующего аэропорта
На рис. 15 изображен сценарий удаления информации о существующем
самолете. Этот сценарий аналогичен приведенному на рис. 14.
Client
Application Server
Database
airplane name
make transaction
result
ALT
[SQLException]
cannot be deleted
[else]
confirm OK
Рис. 15. Сценарий удаления существующего самолета
На рис. 16 изображен сценарий удаления информации о существующем
месте в самолете.
Client
Application Server
Database
seat code
make transaction
result
ALT
[SQLException]
cannot be deleted
[else]
confirm OK
Рис. 16. Сценарий удаления существующего места
На рис. 17 изображен сценарий удаления информации о существующем
рейсе.
Client
Application Server
Database
flight code
make transaction
result
ALT
[SQLException]
cannot be deleted
[else]
confirm OK
Рис. 17. Сценарий удаления существующего рейса
6 Дизайн графического интерфейса пользователя
Клиентское приложение Monitor позволяет редактировать данные о рейсах, типах
самолетов, местах и аэропортах. Внесенные изменения вносятся в базу данных через
сервер приложений, а изменения, внесенные другими приложениями, будут отражены
автоматически.
Вкладка «Flights» отображает информацию о рейсах. По умолчанию отображаются все
рейсы, хранящиеся в базе данных, однако имеется возможность фильтрации рейсов по
аэропортам отправления и назначения, а также дате вылета.
Там же оператор может забронировать билет на данный рейс, указав для этого номер
места в самолете, имя и фамилию клиента и номер паспорта клиента.
На рис. 18 изображен снимок экрана при открытой вкладке «Flights»
Рис. 18. Вкладка «Flights»
Вкладка «Airplanes» содержит информацию о типах самолетов и имеющихся в них местах.
На рис. 19 изображен снимок экрана при открытой вкладке «Aircrafts»
Рис. 19. Вкладка «Aircrafts»
На рис. 20 изображен снимок экрана при открытой вкладке «Airports».
Рис. 20. Вкладка «Airports»
Также в клиентском приложении Monitor можно бронировать билеты.
Клиентское приложение Editor имеет схожую структуру и интерфейс с приложением
Monitor, однако в нем у пользователя (правильнее говорить, администратора) имеется
возможность добавлять, редактировать и удалять записи обо всех сущностях, хранящихся
в базе данных.
Эти действия осуществляются через соответствующие пункты меню с естественным
интерфейсом.
На рис. 21 изображен снимок экрана с приложением Editor при открытой вкладке
«Flights».
Рис. 21. Вкладка «Flights» приложения Editor
Download