- Spring
- Maven
- Vaadin Framework
- Docker
- PostgreSQL
- Redis
The developed app solves the following tasks:
- Updated and improved ticket reservation system through the web application;
- The possibility of authorization to the system, thanks to which the necessary functionality is provided to airport employees;
- Possibility to return the reserved ticket through the web application;
- The possibility of instant tracking of available flights and seats on planes;
- Forming a document of the purchased ticket with personal data of the passenger and details of the selected flight and place;
- Forming a report on the amount of fuel consumed for each specific flight, taking into account the time of the flight;
- Formation of a list of flights departing from the airport in the specified period of time;
- The ability to carry out passport control and passenger safety control, as well as to establish the result of success or problems encountered during the check of passports or passengers;
- Monitoring of tickets sold for flights provided by the airport, together with the ability to register a boarding pass based on baggage data and ticket number, as well as the ability to track all flight boarding passes issued;
- The ability to control the process of boarding passengers on airplanes assigned to the relevant flights, reporting success or existing problems at the stage of checking passengers' documents.
The class architecture for the design object consists of the following elements:
- Data models – database entity classes (Passenger, Ticket, Flight, Aircraft, Seat, SeatPlace, BoardingPass, Luggage, LuggageType, LuggageControl, SecurityControl, BoardingControl, User).
- _Repository interfaces – inherited from ready-made interfaces for accessing database entities.
- _Service interfaces – concentrate prototypes of data access methods.
- _ServiceImpl classes – using _Repository implement methods of _Service interfaces for data access.
- _Controller classes – using _ServiceImpl are responsible for executing business logic.
The following users can be identified in our system:
- Passenger
- Registration agent
- Manager
- Security officer
The developed app uses two databases: PostgreSQL (relational) and Redis (key/value).
- Relational database gathers basic information and contains data about tickets and airport operations.
- The key/value database contains data about employee roles and passwords.
The logical schema of the database contains the following relationships between entities:
• ONE-TO-MANY:
- One passenger can have many tickets, but a separate ticket can belong to only one passenger;
- One flight can belong to many tickets, but a separate ticket can contain only one flight;
- One aircraft can perform many flights, but a separate flight is performed by a specific aircraft.
- One aircraft has many seats, but a certain seat belongs to the scheme of a certain aircraft model.
- One type of luggage (luggage_type) can belong to many pieces of luggage (luggage), but individual luggage can belong to only one type
• ONE-TO-ONE:
- One ticket (ticket) belongs to a certain place in the plane (seat_place)
- A separate boarding pass (boarding_pass) is formed on the basis of the corresponding ticket (ticket)
- A separate boarding pass (boarding_pass) contains one piece of luggage
- A certain boarding pass (boarding_pass) and/or a separate passenger (passenger) is contained in one record of passing controls (security_check, luggage_check, boarding_check)
• MANY-TO-MANY:
- Each flight contains a list of seats available for reservation, at the same time, each seat can be found in different flights.
It is worth noting that an additional table (seat_place) has been created to represent this relationship, which ensures the achievement of various combinations, and its is_reserved attribute provides the ability for an individual flight to mark seats as available or selected.
Web app interface:
- implements all necessary functionality;
- is convenient to use and intuitive for both the potential passenger and the employee;
- contains the necessary notifications, for example, a message about errors in case of incorrectly entered data;
- able to cope with unpredictable usage scenarios.