Design An Airline Management System
Design An Airline Management System
An Airline Management System is a managerial software which targets to control all operations of an airline. Airlines provide
transport services for their passengers. They carry or hire aircraft for this purpose. All operations of an airline company are
controlled by their airline management system.
This system involves the scheduling of flights, air ticket reservations, flight cancellations, customer support, and staff
management. Daily flights updates can also be retrieved by using the system.
System Requirements
We will focus on the following set of requirements while designing the Airline Management System:
1. Customers should be able to search for flights for a given date and source/destination airport.
2. Customers should be able to reserve a ticket for any scheduled flight. Customers can also build a multi-flight itinerary.
3. Users of the system can check flight schedules, their departure time, available seats, arrival time, and other flight details.
4. Customers can make reservations for multiple passengers under one itinerary.
5. Only the admin of the system can add new aircrafts, flights, and flight schedules. Admin can cancel any pre-scheduled flight
(all stakeholders will be notified).
7. The system should be able to handle the assignment of pilots and crew members to flights.
9. The system should be able to send notifications to customers whenever a reservation is made/modified or there is an update
for their flights.
Admin: Responsible for adding new flights and their schedules, canceling any flight, maintaining staff-related work, etc.
https://www.educative.io/collection/page/5668639101419520/5692201761767424/5768755258851328 1/9
06/07/2019 Design an Airline Management System
Here are the top use cases of the Airline Management System:
Search Flights: To search the flight schedule to find flights for a suitable date and time.
Create/Modify/View reservation: To reserve a ticket, cancel it, or view details about the flight or ticket.
Assign seats to passengers: To assign seats to passengers for a flight instance with their reservation.
Make payment for a reservation: To pay for the reservation.
Update flight schedule:To make changes in the flight schedule, and to add or remove any flight.
Assign pilots and crew:To assign pilots and crews to flights.
Add/Modify aircraft
Add/Modify flight
Add/Modify flight
schedule
Modify flight
instance
Admin
<<extends>>
Assign pilot/crew
View flight
Login/Logout/Reset instance
password
Pilot/Crew
Search flights
Create itinerary
Front Desk Officer
Customer
<<include>>
<<include>>
<<include>>
Assign seat to
passenger
Send itinerary
Make payment notification
<<include>> <<include>>
Send reservation
Refund payment Cancel itinerary
canceled notification
https://www.educative.io/collection/page/5668639101419520/5692201761767424/5768755258851328 2/9
06/07/2019 Design an Airline Management System
Class diagram
Airline: The main part of the organization for which this software has been designed. It has attributes like ‘name’ and an
airline code to distinguish the airline from other airlines.
Airport: Each airline operates out of different airports. Each airport has a name, address, and a unique code.
Aircraft: Airlines own or hire aircraft to carry out their flights. Each aircraft has attributes like name, model, manufacturing
year, etc.
Flight: The main entity of the system. Each flight will have a flight number, departure and arrival airport, assigned aircraft,
etc.
FlightInstance: Each flight can have multiple occurrences; each occurrence will be considered a flight instance in our system.
For example, if a British Airways flight from London to Tokyo (flight number: BA212) occurs twice a week, each of these
occurrences will be considered a separate flight instance in our system.
WeeklySchedule and CustomSchedule:Flights can have multiple schedules and each schedule will create a flight instance.
FlightReservation: A reservation is made against a flight instance and has attributes like a unique reservation number, list of
passengers and their assigned seats, reservation status, etc.
FlightSeat: This class will represent all seats of an aircraft assigned to a specific flight instance. All reservations of this flight
instance will assign seats to passengers through this class.
Notification: This class will be responsible for sending notifications for flight reservations, flight status update, etc.
https://www.educative.io/collection/page/5668639101419520/5692201761767424/5768755258851328 3/9
06/07/2019 Design an Airline Management System
Class diagram
https://www.educative.io/collection/page/5668639101419520/5692201761767424/5768755258851328 4/9
06/07/2019 Design an Airline Management System
UML conventions
<<interface>>
Name
Interface: Classes implement interfaces, denoted by Generalization.
method1()
ClassName
property_name: type Class: Every class can have properties and methods.
Abstract classes are identified by their Italic names.
method(): type
A B Generalization: A implements B.
Activity diagrams
Reserve a ticket: Any customer can perform this activity. Here are the steps to reserve a ticket:
[yes]
[no]
See if it is [no]
an existing
customer?
[yes]
https://www.educative.io/collection/page/5668639101419520/5692201761767424/5768755258851328 5/9
06/07/2019 Design an Airline Management System
Print Email
Cancel a reservation:Any customer can perform this activity. Here are the set of steps to cancel a reservation:
https://www.educative.io/collection/page/5668639101419520/5692201761767424/5768755258851328 6/9
06/07/2019 Design an Airline Management System
[yes]
Check if the
customer is [no]
cancelling before
the cancel
deadline?
[yes]
Print Email
Code
Enums and Constants: Here are the required enums, data types, and constants:
1 public enum FlightStatus{
2 ACTIVE,
3 SCHEDULED,
4 DELAYED,
https://www.educative.io/collection/page/5668639101419520/5692201761767424/5768755258851328 7/9
06/07/2019 Design an Airline Management System
5 DEPARTED,
6 LANDED,
7 IN_AIR,
8 ARRIVED,
9 CANCELLED,
10 DIVERTED,
11 UNKNOWN
12 }
13
14 public enum PaymentStatus{
15 UNPAID,
16 PENDING,
17 COMPLETED,
18 FILLED,
19 DECLINED,
20 CANCELLED,
21 ABANDONED,
22 SETTLING,
23 SETTLED,
24 REFUNDED
25 }
Account, Person, Customer and Passenger: These classes represent the different people that interact with our system:
1 // For simplicity, we are not defining getter and setter functions. The reader can
2 // assume that all class attributes are private and accessed through their respective
3 // public getter method and modified only through their public setter method.
4
5 public class Account {
6 private String id;
7 private String password;
8 private AccountStatus status;
9
10 public boolean resetPassword();
11 }
12
13 public abstract class Person {
14 private String name;
15 private Address address;
16 private String email;
17 private String phone;
18
19 private Account account;
20 }
21
22 public class Customer extends Person {
23 private String frequentFlyerNumber;
24
25 public List<Itinerary> getItineraries();
Airport, Aircraft, Seat and FlightSeat: These classes represent the top-level classes of the system:
1 public class Airport {
2 private String name;
3 private Address address;
4 private String code;
5
6 public List<Flight> getFlights();
7 }
8
9 public class Aircraft {
10 private String name;
11 private String model;
12 private int manufacturingYear;
13 private List<Seat> seats;
14
15 public List<FlightInstance> getFlights();
16 }
https://www.educative.io/collection/page/5668639101419520/5692201761767424/5768755258851328 8/9
06/07/2019 Design an Airline Management System
17
18
public class Seat {
19 private String seatNumber;
20 private SeatType type;
21 private SeatClass _class;
22 }
23
24 public class FlightSeat extends Seat {
25 private double fare;
Flight Schedule classes, Flight, FlightInstance, FlightReservation, Itinerary:Here are the classes related to flights and
reservations:
1 public class WeeklySchedule {
2 private int dayOfWeek;
3 private Time departureTime;
4 }
5
6 public class CustomSchedule {
7 private Date customDate;
8 private Time departureTime;
9 }
10
11 public class Flight {
12 private String flightNumber;
13 private Airport departure;
14 private Airport arrival;
15 private int durationInMinutes;
16
17 private List<WeeklySchedules> weeklySchedules;
18 private List<CustomSchedules> customSchedules;
19 private List<FlightInstance> flightInstances;
20 }
21
22 public class FlightInstance {
23 private Date departureTime;
24 private String gate;
25 private FlightStatus status;
https://www.educative.io/collection/page/5668639101419520/5692201761767424/5768755258851328 9/9