Your Task You will be implementing a Flight Reservation System. will be able to
ID: 3578122 • Letter: Y
Question
Your Task You will be implementing a Flight Reservation System. will be able to make and cancel flight reservations, and be able to upgrade from coach class Your solution will feature the Takeom driver class, Passenger, and interface data classes, the Flight database class, which implements the Here's how it works: e The driver class calls the tes method where the primary objects are created. Passengers are added to and removed from a flight. The flight will hold no more than 10 passengers. Ensure this number cannot be exceeded. A maximum of four first class passengers can board the plane. First class passengers pay twice (2x's the fair cost of coach passengers. Coach class passengers will occupy the remaining 6 seats. You are to use the Takeoff driver class to create and add passengers to the flight/plane, as well as remove passengers from the flight. The driver MUST also perform negative tests to ensure the flight is not over-filled beyond 10 passengers, and only four first class passengers are allowed on the flight. The output should display the flight number and the type of aircraft. Also, the output should display the first class passengers by name and seat. number. The same will be done for the coach passengers. It should be clearly indicated whether passengers are first class or coach class. Finally the total ticket costs paid by all passengers on the flight should be displayed.Explanation / Answer
public class Passenger {
private String firstName;
private String lastName;
private String creditCard;
private String email;
private boolean status;
public Passenger(String firstName, String lastName, String creditCard, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.creditCard = creditCard;
setEmail(email);
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
if (email.contains("@")) {
this.email = email;
}
else {
System.out.println("Invalid EmailID ! => "+email);
}
}
public String getCreditCard() {
return creditCard;
}
public void setCreditCard(String creditCard) {
this.creditCard = creditCard;
}
public boolean getStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
@Override
public String toString() {
return "Passenger [firstName=" + firstName + ", lastName=" + lastName + ", creditCard=" + creditCard
+ ", email=" + email + ", status=" + status + "]";
}
}
public class Aircraft {
private String aircraftType;
public Aircraft(String aircraftType) {
setAircraftType(aircraftType);
}
public String getAircraftType() {
return aircraftType;
}
public void setAircraftType(String aircraftType) {
this.aircraftType = aircraftType;
}
@Override
public String toString() {
return "Aircraft [aircraftType=" + aircraftType + "]";
}
}
public interface PassengerBooking {
/**
* Used for reserving a seat for the given passenger
* @param passenger - {@link Passenger}
*/
public void reserve(Passenger passenger);
/**
* Canceling the reservation of the given passenger
* @param passenger - {@link Passenger}
* */
public void cancel(Passenger passenger);
}
public class Flight implements PassengerBooking {
public static final int FLIGHT_CAPACITY = 10;
public static final int FIRST_CLASS_CAPACITY = 4;
public static final int ECONOMIC_CLASS_CAPACITY = 6;
public static final double FIRST_CLASS_COST = 112.50;
public static final double ECONOMIC_CLASS_COST = 75.00;
private double amount;
private Passenger[] passengers;
private Aircraft aircraft;
private String flightNumber;
public Flight(Aircraft aircraft, String flightNumber) {
this.aircraft = aircraft;
this.flightNumber = flightNumber;
this.amount = 0.0;
this.passengers = new Passenger[10];
}
@Override
public void reserve(Passenger passenger) {
/* If the passenger needs a first class reservation
* Find an empty seat in first class by iterating
* over first four seats and reserve it, set success flag to true
* Else
* Find an empty seat in economic class by iterating
* from fifth to tenth seats and the reserve it, set success flag to true
*
* If no empty seat is found, then print the message
*
* */
boolean success = false;
if (passenger.getStatus()) {
for (int i=0; i<FIRST_CLASS_CAPACITY; i++) {
if (passengers[i] == null) {
passengers[i] = passenger;
amount += FIRST_CLASS_COST;
System.out.println(passenger.getFirstName()+" "+passenger.getLastName()+" - "
+ "FIRST CLASS passenger. $" + FIRST_CLASS_COST);
success = true;
break;
}
}
}
else {
for (int i=FIRST_CLASS_CAPACITY; i<FLIGHT_CAPACITY; i++) {
if (passengers[i] == null) {
passengers[i] = passenger;
amount += ECONOMIC_CLASS_COST;
System.out.println(passenger.getFirstName()+" "+passenger.getLastName()+" - "
+ "ECONOMY CALSS passenger. $" + ECONOMIC_CLASS_COST);
success = true;
break;
}
}
}
if (success == false) {
System.out.println("Sorry, unable to book a flight. No availability! ");
}
}
@Override
public void cancel(Passenger passenger) {
/*
* 1. Find the passenger
* 2. remove the flight fare from total amount
* 3. Remove the reservation of the seat
*
* */
for (int i=0; i<FLIGHT_CAPACITY; i++) {
if (passengers[i] == null) {
continue;
}
Passenger passengerData = passengers[i];
if (passengerData.getFirstName().equals(passenger.getFirstName())
&& passengerData.getLastName().equals(passenger.getLastName())) {
if (passenger.getStatus()) {
amount -= FIRST_CLASS_COST;
}
else {
amount -= ECONOMIC_CLASS_COST;
}
passengers[i] = null;
break;
}
}
System.out.println(passenger.getFirstName()+" "+passenger.getLastName()+" "
+ "has CANCELLED their reservation for the flight");
}
public void upgrade(Passenger passenger) {
boolean freeSeatAvailable = false;
/*
* Find a free seat in first class
*/
for (int i=0; i<FIRST_CLASS_CAPACITY; i++) {
if (passengers[i] == null) {
freeSeatAvailable = true;
}
}
/*
* If the free seat is available then
* 1. cancel the reservation from economy class
* 2. upgrade the passenger status to first class
* 3. Add passenger to first class
*/
if (freeSeatAvailable) {
cancel(passenger);
passenger.setStatus(true);
reserve(passenger);
System.out.println(passenger.getFirstName()+" "+passenger.getLastName()+" "
+ "has UPGRADED their reservation for the flight");
}
}
public void displayFlightInfo() {
System.out.println("Flight "+getFlightNumber()+", "+getAircraft().getAircraftType()
+" is ready for Boarding ");
for (int i=0; i<FLIGHT_CAPACITY; i++) {
Passenger passenger = passengers[i];
if (passenger == null) {
continue;
}
if (passengers[i].getStatus()) {
System.out.println(passenger.getFirstName()+" "+passenger.getLastName()+" - "
+ "FIRST CLASS passenger. $" + FIRST_CLASS_COST);
}
else {
System.out.println(passenger.getFirstName()+" "+passenger.getLastName()+" - "
+ "ECONOMY CALSS passenger. $" + ECONOMIC_CLASS_COST);
}
}
System.out.println(" TOTAL fares for this flight : $"+ getAmount());
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public Passenger[] getPassengers() {
return passengers;
}
public void setPassengers(Passenger[] passengers) {
this.passengers = passengers;
}
public Aircraft getAircraft() {
return aircraft;
}
public void setAircraft(Aircraft aircraft) {
this.aircraft = aircraft;
}
public String getFlightNumber() {
return flightNumber;
}
public void setFlightNumber(String flightNumber) {
this.flightNumber = flightNumber;
}
}
public class TakeOff {
/**
*
* All the main work is done here
*
*/
public void test() {
/* Creating an aircraft
* Creating a flight and adding the aircraft to it*/
Aircraft aircraft = new Aircraft("Boeing 675");
Flight flight = new Flight(aircraft, "GB101");
System.out.println(" ");
/*
* Creating and adding the passengers to the flight
*
* NOTE : The reserve() method implicitly take cares of checking the availability and Negative tests.
* That is why not checking here again, explicitly.
*
* */
Passenger passenger = new Passenger("Zubaeyr","Odin","8765 8735 7227 2318", "wisestofall@vl.com");
passenger.setStatus(true);
flight.reserve(passenger);
Passenger passenger2 = new Passenger("Daffy","Duck","5155 6213 7237 8213", "darfy@vl.com");
passenger2.setStatus(true);
flight.reserve(passenger2);
Passenger passenger3 = new Passenger("Porky","Pig","9893 2832 2342 9876", "porky@vl.com");
passenger3.setStatus(true);
flight.reserve(passenger3);
Passenger passenger4 = new Passenger("Sylvester","Cat","5123 1116 1111 8988", "sylvester@vl.com");
passenger4.setStatus(true);
flight.reserve(passenger4);
Passenger passenger5 = new Passenger("Yosemite","Sam","5125 6761 7877 8198", "yosemite@vl.com");
passenger5.setStatus(false);
flight.reserve(passenger5);
Passenger passenger6 = new Passenger("Foghorn","LegHorn","9872 6216 7077 1808", "leghorn@vl.com");
passenger6.setStatus(false);
flight.reserve(passenger6);
Passenger passenger7 = new Passenger("Bugs","Bunny","7800 8275 2777 8888", "bunny@vl.com");
passenger7.setStatus(false);
flight.reserve(passenger7);
Passenger passenger8 = new Passenger("Gandalf","The Grey","8363 2635 9730 8000", "Gandalf@shire.com");
passenger8.setStatus(false);
flight.reserve(passenger8);
Passenger passenger9 = new Passenger("Hodor","Hodor","9893 2832 2342 9876", "Hodor@winterfell.com");
passenger9.setStatus(false);
flight.reserve(passenger9);
Passenger passenger10 = new Passenger("Danerys","Targaryen","5555 6666 7777 8888", "Danerys@targaryen.com");
passenger10.setStatus(false);
flight.reserve(passenger10);
/* Removing a passenger from FIRST CLASS */
System.out.println(" ");
flight.cancel(passenger3);
/* upgrading a passenger to FIRST CLASS */
System.out.println(" ");
flight.upgrade(passenger10);
/* Printing flight information */
System.out.println(" ");
flight.displayFlightInfo();
}
public static void main(String args[]) {
new TakeOff().test();
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.