Created
April 29, 2015 23:03
-
-
Save stedmanm/a68de61807d1a023fb4e to your computer and use it in GitHub Desktop.
Flight Booking Program
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package lab1; | |
/** | |
* | |
* @author Marc | |
*/ | |
public class Flight { | |
private int flightNumber; | |
private String origin; | |
private String destination; | |
private String departureTime; | |
private int capacity; | |
private int numberOfSeatsleft; | |
private double originalPrice; | |
public Flight(int fn, String o, String ds, String dp, int c, double op) { | |
if (ds.equals(o) == true) { | |
throw new IllegalArgumentException("destination and origin are the same"); | |
} | |
flightNumber = fn; | |
origin = o; | |
destination = ds; | |
departureTime = dp; | |
capacity = c; | |
numberOfSeatsleft = c; | |
originalPrice = op; | |
} | |
public boolean bookASeat() { | |
if (numberOfSeatsleft > 0) { | |
numberOfSeatsleft = numberOfSeatsleft - 1; | |
return true; | |
} | |
return false; | |
} | |
public double getPrice() { | |
return originalPrice; | |
} | |
public String getOrigin() { | |
return origin; | |
} | |
public String getDestination() { | |
return destination; | |
} | |
public String getDepartureTime() { | |
return departureTime; | |
} | |
public int getFlightNumber() { | |
return flightNumber; | |
} | |
public int getNumberOfSeatsleft() { | |
return numberOfSeatsleft; | |
} | |
public int getCapacity() { | |
return capacity; | |
} | |
public void setPrice(double p) { | |
originalPrice = p; | |
} | |
public void setOrigin(String o) { | |
origin = o; | |
} | |
public void setDestination(String d) { | |
destination = d; | |
} | |
public void setDepartureTime(String d) { | |
departureTime = d; | |
} | |
public void setFlightNumber(int fn) { | |
flightNumber = fn; | |
} | |
public void setNumberOfSeatsleft(int s) { | |
numberOfSeatsleft = s; | |
} | |
public void setCapacity(int c) { | |
capacity = c; | |
} | |
@Override | |
public String toString() { | |
String one = "Flight " + flightNumber; | |
String two = "," + origin + " to " + destination; | |
String three = "," + departureTime; | |
String four = ", original price: " + originalPrice + "$"; | |
return one + two + three + four; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package lab1; | |
import java.util.*; | |
import java.util.Scanner; | |
/** | |
* | |
* @author Marc | |
*/ | |
public class Manager { | |
List<Flight> flights; | |
List<Ticket> tickets; | |
public Manager() { | |
flights = new ArrayList<Flight>(); | |
tickets = new ArrayList<Ticket>(); | |
} | |
public void createFlights() { | |
int FN, c; | |
double op; | |
String origin, destination, dt; | |
Scanner scan1 = new Scanner(System.in); | |
Scanner scan2 = new Scanner(System.in); | |
Scanner scan3 = new Scanner(System.in); | |
System.out.println("Enter flight Number"); | |
FN = scan1.nextInt(); | |
System.out.println("Enter flight origin"); | |
origin = scan2.nextLine(); | |
System.out.println("Enter flight destination"); | |
destination = scan2.nextLine(); | |
System.out.println("Enter flight departure time and date"); | |
dt = scan2.nextLine(); | |
System.out.println("Enter flight capacity"); | |
c = scan1.nextInt(); | |
System.out.println("Enter original price of ticket"); | |
op = scan3.nextDouble(); | |
Flight F = new Flight(FN, origin, destination, dt, c, op); | |
flights.add(F); | |
System.out.println("The following flight has been created:"); | |
System.out.println(F); | |
} | |
public void displayAvailableFlights(String origin, String destination) { | |
int size, seats; | |
boolean flag = true; | |
String o, d; | |
size = flights.size(); | |
for (int i = 0; i < size; i++) { | |
o = flights.get(i).getOrigin(); | |
d = flights.get(i).getDestination(); | |
seats = flights.get(i).getNumberOfSeatsleft(); | |
if ((o.equals(origin) == true) && (d.equals(destination) == true) && seats > 0) { | |
if (flag == true) { | |
System.out.println("List of available flights:"); | |
flag = false; | |
} | |
System.out.println(flights.get(i)); | |
} | |
} | |
if (flag == true) { | |
System.out.println("no available flights"); | |
} | |
} | |
public Flight getFlight(int flightNumber) { | |
int size = flights.size(); | |
for (int i = 0; i < size; i++) { | |
if (flights.get(i).getFlightNumber() == flightNumber) { | |
return flights.get(i); | |
} | |
} | |
return null; | |
} | |
public void bookSeat(int flightNumber, Passenger p) { | |
int size = flights.size(); | |
boolean flag = false; | |
int index = 0, seats; | |
for (int i = 0; i < size; i++) { | |
if (flights.get(i).getFlightNumber() == flightNumber) { | |
flag = true; | |
index = i; | |
break; | |
} | |
} | |
double price; | |
seats = flights.get(index).getNumberOfSeatsleft(); | |
if (flag == true && (seats > 0)) { | |
flights.get(index).bookASeat(); | |
price = p.applyDiscount(flights.get(index).getPrice()); | |
Ticket a = new Ticket(flights.get(index), p, price); | |
tickets.add(a); | |
System.out.println("you have succesfully booked a seat for flight " + flightNumber); | |
System.out.println("ticket: " + a); | |
} else { | |
if (flag == true && seats == 0) { | |
System.out.println("The Flight " + flightNumber + " is full you cannot book a ticket for this flight"); | |
} else if (flag == false) { | |
System.out.println("The Flight " + flightNumber + " cdoes not exist"); | |
} | |
} | |
} | |
public static void main(String[] args) { | |
Manager M = new Manager(); | |
Flight F; | |
Passenger P; | |
Scanner scan1 = new Scanner(System.in); | |
Scanner scan2 = new Scanner(System.in); | |
String input, destination, origin, name; | |
int FN, age, years; | |
boolean flag = false; | |
while (flag != true) { | |
System.out.println("Enter c if you would like to create a flight (creatFlight method)"); | |
System.out.println("Enter d if you would like to display all flights (displayAvailableFlights method)"); | |
System.out.println("Enter g if you would like to get information on a flight (getFlight method)"); | |
System.out.println("Enter b if you would like to book a seat (bookSeat method)"); | |
System.out.println("Enter t if you would like to terminate the program"); | |
input = scan1.nextLine(); | |
switch (input) { | |
case "c": | |
M.createFlights(); | |
break; | |
case "d": | |
System.out.println("Enter flight origin"); | |
origin = scan1.nextLine(); | |
System.out.println("Enter flight destination"); | |
destination = scan1.nextLine(); | |
M.displayAvailableFlights(origin, destination); | |
break; | |
case "g": | |
System.out.println("Enter Flight number"); | |
FN = scan2.nextInt(); | |
F = M.getFlight(FN); | |
if (F == null) { | |
System.out.println("Flight " + FN + " does not exist"); | |
} else { | |
System.out.println("Info for Flight " + FN + ":"); | |
System.out.println(F); | |
} | |
break; | |
case "b": | |
System.out.println("If passenger is non memeber enter n, if passenger is a member enter m"); | |
input = scan1.nextLine(); | |
System.out.println("Enter passengers age"); | |
age = scan2.nextInt(); | |
System.out.println("Enter passengers name"); | |
name = scan1.nextLine(); | |
System.out.println("Enter flight number"); | |
FN = scan2.nextInt(); | |
if (input.equals("n") == true) { | |
P = new NonMember(age, name); | |
M.bookSeat(FN, P); | |
} else if (input.equals("m") == true) { | |
System.out.println("For how many years has the passenger been a member"); | |
years = scan2.nextInt(); | |
P = new Member(years, age, name); | |
M.bookSeat(FN, P); | |
} | |
break; | |
case "t": | |
flag = true; | |
System.out.println("Program is terminated"); | |
break; | |
default: | |
System.out.println("You entered an invalid option"); | |
break; | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package lab1; | |
/** | |
* | |
* @author Marc | |
*/ | |
public class Member extends Passenger { | |
private int yearsOfMembership; | |
public Member(int yom, int a, String n) { | |
super(a, n); | |
yearsOfMembership = yom; | |
} | |
@Override | |
public double applyDiscount(double p) { | |
if (yearsOfMembership > 5) { | |
p = p / 2; | |
return p; | |
} else if (yearsOfMembership <= 5 && yearsOfMembership > 1) { | |
p = (p *9)/10; | |
return p; | |
} | |
return p; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package lab1; | |
/** | |
* | |
* @author Marc | |
*/ | |
public class NonMember extends Passenger { | |
public NonMember(int a, String n) { | |
super(a, n); | |
} | |
@Override | |
public double applyDiscount(double p) { | |
if (age > 65) { | |
p = (p *9)/10; | |
return p; | |
} | |
return p; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package lab1; | |
/** | |
* | |
* @author Marc | |
*/ | |
public abstract class Passenger { | |
String name; | |
int age; | |
public Passenger(int a, String n) { | |
name = n; | |
age = a; | |
} | |
public String getName(){ | |
return name; | |
} | |
public int getAge(){ | |
return age; | |
} | |
abstract public double applyDiscount(double p); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package lab1; | |
/** | |
* | |
* @author Marc | |
*/ | |
public class Ticket { | |
private Flight flight; | |
private Passenger passenger; | |
private double price; | |
private int number; | |
private static int count = 0; | |
public Ticket(Flight f, Passenger pa, double pr) { | |
count++; | |
flight = f; | |
passenger = pa; | |
price = pr; | |
number = count; | |
} | |
@Override | |
public String toString() { | |
String one = passenger.getName() + ", Flight " + flight.getFlightNumber(); | |
String two = ", " + flight.getOrigin() + " to " + flight.getDestination(); | |
String three = ", " + flight.getDepartureTime(); | |
String four = ", original price: " + flight.getPrice() + "$"; | |
String five = ", ticket price: " + price + "$"; | |
return one + two + three + four + five; | |
} | |
public Flight getFlight() { | |
return flight; | |
} | |
public void setFlight(Flight F) { | |
flight=F; | |
} | |
public Passenger getPassenger() { | |
return passenger; | |
} | |
public void setPassenger(Passenger P) { | |
passenger=P; | |
} | |
public double getPrice() { | |
return price; | |
} | |
public void setPrice(double P) { | |
price=P; | |
} | |
public int getNumber() { | |
return number; | |
} | |
public void setNumber(int n) { | |
number=n; | |
} | |
public int getCount() { | |
return count; | |
} | |
public void setCount(int n) { | |
count=n; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment