158k views
3 votes
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

1 Answer

2 votes

Answer:

Code given below

Step-by-step 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());

}

}

User Daniel Widdis
by
7.9k points