Monday, 10 February 2025

Create a Base class Train containing protected data members as Train_no, Train_Name. Derive a class Route (Route_id, Source, Destination) from Train class. Also derive a class Reservation(Number_Of_Seats, Train_Class, Fare, Travel_Date) from Route. Write java program to perform following necessary functions :i. Enter details of ‘n’ reservations ii.Display details of all reservations iii.Display reservation details of a specified Train class

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();

    }

}