import java.util.Scanner;
class Train {
protected int trainNo;
protected String trainName;
public void acceptTrainDetails(Scanner scanner) {
System.out.print("Enter Train Number: ");
trainNo = scanner.nextInt();
scanner.nextLine(); // Consume newline
System.out.print("Enter Train Name: ");
trainName = scanner.nextLine();
}
}
class Route extends Train {
protected int routeId;
protected String source, destination;
public void acceptRouteDetails(Scanner scanner) {
acceptTrainDetails(scanner);
System.out.print("Enter Route ID: ");
routeId = scanner.nextInt();
scanner.nextLine(); // Consume newline
System.out.print("Enter Source: ");
source = scanner.nextLine();
System.out.print("Enter Destination: ");
destination = scanner.nextLine();
}
}
class Reservation extends Route {
private int numberOfSeats;
private String trainClass;
private double fare;
private String travelDate;
public void acceptReservationDetails(Scanner scanner) {
acceptRouteDetails(scanner);
System.out.print("Enter Number of Seats: ");
numberOfSeats = scanner.nextInt();
scanner.nextLine(); // Consume newline
System.out.print("Enter Train Class: ");
trainClass = scanner.nextLine();
System.out.print("Enter Fare: ");
fare = scanner.nextDouble();
scanner.nextLine(); // Consume newline
System.out.print("Enter Travel Date (DD/MM/YYYY): ");
travelDate = scanner.nextLine();
}
public void displayReservationDetails() {
System.out.println("\nReservation Details:");
System.out.println("Train Number: " + trainNo);
System.out.println("Train Name: " + trainName);
System.out.println("Route ID: " + routeId);
System.out.println("Source: " + source);
System.out.println("Destination: " + destination);
System.out.println("Number of Seats: " + numberOfSeats);
System.out.println("Train Class: " + trainClass);
System.out.println("Fare: " + fare);
System.out.println("Travel Date: " + travelDate);
}
public String getTrainClass() {
return trainClass;
}
}
public class TrainReservationSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the number of reservations: ");
int n = scanner.nextInt();
scanner.nextLine(); // Consume newline
Reservation[] reservations = new Reservation[n];
// Entering reservation details
for (int i = 0; i < n; i++) {
System.out.println("\nEnter details for Reservation " + (i + 1) + ":");
reservations[i] = new Reservation();
reservations[i].acceptReservationDetails(scanner);
}
// Displaying all reservations
System.out.println("\nAll Reservations:");
for (Reservation res : reservations) {
res.displayReservationDetails();
}
// Display reservations of a specific train class
System.out.print("\nEnter the Train Class to search for: ");
String searchClass = scanner.nextLine();
System.out.println("\nReservations with Train Class " + searchClass + ":");
boolean found = false;
for (Reservation res : reservations) {
if (res.getTrainClass().equalsIgnoreCase(searchClass)) {
res.displayReservationDetails();
found = true;
}
}
if (!found) {
System.out.println("No reservations found for the specified train class.");
}
scanner.close();
}
}