Design and code a program including the following classes, as well as a client class to test all the methods coded:A Passenger class, encapsulating a passenger. A passenger has two attributes: a name, and a class of service, which will be 1 or 2.A Train class, encapsulating a train of passengers. A train of passengers has one attribute: a list of passengers, which must be represented with an ArrayList. Your constructor will build the list of passengers by reading data from a file called passengers.txt. You can assume that passengers.txt has the following format:...For instance, the file could contain:James 1Ben 2Suri 1Sarah 1Jane 2...You should include the following methods in your Train class:
a method returning the percentage of passengers traveling in first class
a method taking two parameters representing the price of traveling in first and second class and returning the total revenue for the train
a method checking if a certain person is on the train; if he/she is, the method returns true; otherwise, it returns false

Respuesta :

Answer:

Code given below

Explanation:

/*

* Class to hold the Passenger data

* Stores the name and classOfService

* */

public class Passenger {

  String name;

int classOfService;

  public Passenger(String string, int classOfService) {

      this.name = string;

      this.classOfService = classOfService;

  }

@Override

  public String toString() {

      return "Passenger [name=" + name + ", classOfService=" + classOfService

              + "]";

  }

@Override

  public int hashCode() {

      final int prime = 31;

      int result = 1;

      result = prime * result + classOfService;

      result = prime * result + ((name == null) ? 0 : name.hashCode());

      return result;

  }

@Override

  public boolean equals(Object obj) {

      if (this == obj)

          return true;

      if (obj == null)

          return false;

      if (getClass() != obj.getClass())

          return false;

      Passenger other = (Passenger) obj;

      if (classOfService != other.classOfService)

          return false;

      if (name == null) {

          if (other.name != null)

              return false;

      } else if (!name.equals(other.name))

          return false;

      return true;

  }

  public String getName() {

      return name;

  }

  public int getClassOfService() {

      return classOfService;

  }

}

----

import java.util.ArrayList;

import java.util.List;

/* Train class for holding the

* passengerList.

* The passengerList is the list of Passenger Object

*/

public class Train {

  List<Passenger> passengerList;

  public Train() {

      passengerList = new ArrayList<Passenger>();

  }

  public Passenger getPassenger(int index) {

      if (index <= 0 && getTotalNumberOfPassengersOnBoard() < index) {

          return null;

      } else {

          return passengerList.get(index - 1);

      }

  }

  public void addPassenger(Passenger p) {

      passengerList.add(p);

  }

  public int getTotalNumberOfPassengersOnBoard() {

      return passengerList.size();

  }

  public boolean isPassengerOnBoard(String name) {

      boolean flag= false;

      for (Passenger p : passengerList) {

          if (p.getName().equalsIgnoreCase(name)) {

              flag = true;

              break;

          } else {

              flag = false;

          }

      }

      return flag;

  }

public double getRevenue(double priceFirstClass, double priceSecondClass) {

      double total = 0.0;

      for (Passenger p : passengerList) {

          if (p.getClassOfService() == 1) {

              total += priceFirstClass;

          } else {

              total += priceSecondClass;

          }

      }

      return total;

  }

  public double getPercentageFirstClassTravellers() {

      double count = 0.0;

      for (Passenger p : passengerList) {

          if (p.getClassOfService() == 1) {

              count++;

          }

      }

      return count / getTotalNumberOfPassengersOnBoard() * 100;

  }

@Override

  public String toString() {

      return "Train [passengerList=" + passengerList + "]";

  }

@Override

  public int hashCode() {

      final int prime = 31;

      int result = 1;

      result = prime * result

              + ((passengerList == null) ? 0 : passengerList.hashCode());

      return result;

  }

@Override

  public boolean equals(Object obj) {

      if (this == obj)

          return true;

      if (obj == null)

          return false;

      if (getClass() != obj.getClass())

          return false;

      Train other = (Train) obj;

      if (passengerList == null) {

          if (other.passengerList != null)

              return false;

      } else if (!passengerList.equals(other.passengerList))

          return false;

      return true;

  }

}

-----------

public class TrainTest {

  public static void main(String[] args) {

      Train t = new Train();

      Passenger p1 = new Passenger("James", 1);

      Passenger p2 = new Passenger("Sarah", 2);

      Passenger p3 = new Passenger("Jhon", 1);

      Passenger p4 = new Passenger("Test", 2);

      // add other passengers Test1 .. Test6

      for (int j = 1; j < 7; j++) {

          t.addPassenger(new Passenger("Test" + j, j % 2));

      }

      t.addPassenger(p1);

      t.addPassenger(p2);

      t.addPassenger(p3);

      t.addPassenger(p4);

      System.out.println("total revenue $" + t.getRevenue(10.0, 25.0));

      System.out.println("total number of passengers on Board .. "

              + t.getTotalNumberOfPassengersOnBoard());

      System.out.println("percentage of first class traveller .. "

              + t.getPercentageFirstClassTravellers());

      System.out.println("getPassenger number # 2 .. " + t.getPassenger(2));

      System.out.println("is passenger Jhon on board ? "

              + t.isPassengerOnBoard("Jhon"));

      System.out.println("is passenger Dummy on board ? "

              + t.isPassengerOnBoard("Dummy"));

      System.out.println("Printing all the Passengers on Board ...");

      for (int i = 1; i <= t.getTotalNumberOfPassengersOnBoard(); i++) {

          System.out.println("" + t.getPassenger(i));

      }

     

      // using the the Train toString to print all the passengers from Train

      System.out.println(t.toString());

  }

}