import java.util.*;
class Flight {
private static int idCounter = 1;
private int flightID;
private int carrierID;
private String origin;
private String destination;
private int airFare;
private int seatCapacityBusiness;
private int seatCapacityEconomy;
private int seatCapacityExecutive;
public Flight(int carrierID, String origin, String destination, int airFare, int seatCapacityBusiness, int seatCapacityEconomy, int seatCapacityExecutive) {
this.flightID = idCounter++;
this.carrierID = carrierID;
this.origin = origin;
this.destination = destination;
this.airFare = airFare;
this.seatCapacityBusiness = seatCapacityBusiness;
this.seatCapacityEconomy = seatCapacityEconomy;
this.seatCapacityExecutive = seatCapacityExecutive;
}
// Getters for flight details
public int getFlightID() { return flightID; }
public int getCarrierID() { return carrierID; }
public String getOrigin() { return origin; }
public String getDestination() { return destination; }
public int getAirFare() { return airFare; }
public int getSeatCapacityBusiness() { return seatCapacityBusiness; }
public int getSeatCapacityEconomy() { return seatCapacityEconomy; }
public int getSeatCapacityExecutive() { return seatCapacityExecutive; }
// Method to display flight details
public void displayFlightDetails() {
System.out.printf("Flight ID: %d\nCarrier ID: %d\nOrigin: %s\nDestination: %s\nAir Fare: %d\nBusiness Seats: %d\nEconomy Seats: %d\nExecutive Seats: %d\n",
flightID, carrierID, origin, destination, airFare, seatCapacityBusiness, seatCapacityEconomy, seatCapacityExecutive);
}
}
class Admin {
private List<Flight> flights = new ArrayList<>();
// Add new flight
public void addFlight(Scanner sc) {
System.out.println("Enter Carrier ID: ");
int carrierID = sc.nextInt();
sc.nextLine(); // Consume newline
System.out.println("Enter Origin: ");
String origin = sc.nextLine();
System.out.println("Enter Destination: ");
String destination = sc.nextLine();
System.out.println("Enter Air Fare: ");
int airFare = sc.nextInt();
System.out.println("Enter Business Class Seat Capacity: ");
int businessSeats = sc.nextInt();
System.out.println("Enter Economy Class Seat Capacity: ");
int economySeats = sc.nextInt();
System.out.println("Enter Executive Class Seat Capacity: ");
int executiveSeats = sc.nextInt();
Flight flight = new Flight(carrierID, origin, destination, airFare, businessSeats, economySeats, executiveSeats);
flights.add(flight);
System.out.println("Flight Information Saved Successfully in the System.");
}
public List<Flight> getFlight(){
return flights;
}
// View all flights
public void viewAllFlights() {
if (flights.isEmpty()) {
System.out.println("No flights available.");
} else {
System.out.printf("%-10s %-10s %-15s %-15s %-10s %-10s %-10s %-10s\n", "Flight ID", "Carrier ID", "Origin", "Destination", "AirFare", "Business", "Economy", "Executive");
for (Flight flight : flights) {
System.out.printf("%-10d %-10d %-15s %-15s %-10d %-10d %-10d %-10d\n",
flight.getFlightID(), flight.getCarrierID(), flight.getOrigin(), flight.getDestination(), flight.getAirFare(),
flight.getSeatCapacityBusiness(), flight.getSeatCapacityEconomy(), flight.getSeatCapacityExecutive());
}
}
}
// Search flight by ID
public void searchFlightByID(int flightID) {
for (Flight flight : flights) {
if (flight.getFlightID() == flightID) {
flight.displayFlightDetails();
return;
}
}
System.out.println("Either the data is incorrect or no Flight Information is available for the given Flight ID.");
}
// Remove flight by ID
public void removeFlight(int flightID) {
Iterator<Flight> iterator = flights.iterator();
while (iterator.hasNext()) {
Flight flight = iterator.next();
if (flight.getFlightID() == flightID) {
iterator.remove();
System.out.println("Flight Information successfully removed from system.");
return;
}
}
System.out.println("Either the data is incorrect or no Flight Information is available for the given Flight ID.");
}
}
class Customer {
// Bookings map (can include more functionality based on requirements)
private Map<Integer, String> bookings = new HashMap<>();
// Search flight by origin and destination
public void searchFlightByRoute(Scanner sc, List<Flight> flights) {
System.out.println("Enter Origin: ");
String origin = sc.next();
System.out.println("Enter Destination: ");
String destination = sc.next();
for (Flight flight : flights) {
if (flight.getOrigin().equalsIgnoreCase(origin) && flight.getDestination().equalsIgnoreCase(destination)) {
flight.displayFlightDetails();
}
}
}
// Book flight (basic implementation)
public void bookFlight(Scanner sc, List<Flight> flights) {
System.out.println("Enter Flight ID: ");
int flightID = sc.nextInt();
System.out.println("Enter Number of Seats: ");
int seats = sc.nextInt();
sc.nextLine(); // Consume newline
System.out.println("Enter Seat Category (Business/Economy/Executive): ");
String seatCategory = sc.nextLine();
for (Flight flight : flights) {
if (flight.getFlightID() == flightID) {
// Check seat availability based on seatCategory
System.out.println("Booking successful! Booking ID: " + (bookings.size() + 1));
bookings.put(bookings.size() + 1, "Flight ID: " + flightID + ", Seats: " + seats + ", Category: " + seatCategory);
return;
}
}
System.out.println("No seats available under this category for booking.");
}
// View all bookings
public void viewBookings() {
if (bookings.isEmpty()) {
System.out.println("No bookings available.");
} else {
for (Map.Entry<Integer, String> entry : bookings.entrySet()) {
System.out.println("Booking ID: " + entry.getKey() + ", Details: " + entry.getValue());
}
}
}
}
public class AMS {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Admin admin = new Admin();
Customer customer = new Customer();
boolean running = true;
while (running) {
System.out.println("Select Role: \n1. Admin\n2. Customer\n3. Exit");
int role = sc.nextInt();
switch (role) {
case 1: // Admin
System.out.println("Admin Options: \n1. Add Flight\n2. View All Flights\n3. Search Flight by ID\n4. Remove Flight\n5. Exit");
int adminChoice = sc.nextInt();
switch (adminChoice) {
case 1:
admin.addFlight(sc);
break;
case 2:
admin.viewAllFlights();
break;
case 3:
System.out.println("Enter Flight ID: ");
int flightID = sc.nextInt();
admin.searchFlightByID(flightID);
break;
case 4:
System.out.println("Enter Flight ID to remove: ");
int removeFlightID = sc.nextInt();
admin.removeFlight(removeFlightID);
break;
case 5:
running = false;
break;
default:
System.out.println("Invalid choice.");
}
break;
case 2: // Customer
System.out.println("Customer Options: \n1. Search Flight\n2. Book Flight\n3. View Bookings\n4. Exit");
int customerChoice = sc.nextInt();
switch (customerChoice) {
case 1:
customer.searchFlightByRoute(sc, admin.getFlight());
break;
case 2:
customer.bookFlight(sc, admin.getFlight());
break;
case 3:
customer.viewBookings();
break;
case 4:
running = false;
break;
default:
System.out.println("Invalid choice.");
}
break;
case 3: // Exit
running = false;
break;
default:
System.out.println("Invalid choice.");
}
}
sc.close();
}
}