Question

In: Computer Science

The Luxury Ocean Cruise Outings company has provided Global Rain with a software specification document that...

The Luxury Ocean Cruise Outings company has provided Global Rain with a software specification document that details a menu-driven software application. Other developers on your software development team have already begun this project by creating the Ship, Cruise, Passenger, and Driver classes. You will modify the classes by including attributes and their proper data structures, writing methods to perform required functionality and behavior, and making sure that your program performs input validation and exception handling.

--------DRIVER.JAVA---------

import java.util.ArrayList;
import java.util.Scanner;

import static java.lang.Integer.parseInt;

public class Driver {

// class variables (add more as needed)
private static ArrayList shipList = new ArrayList();
private static ArrayList cruiseList = new ArrayList();
private static ArrayList passengerList = new ArrayList();


public static void main(String[] args) {

initializeShipList(); // initial ships
initializeCruiseList(); // initial cruises
initializePassengerList(); // initial passengers

// add loop and code here that accepts and validates user input
// and takes the appropriate action. include appropriate
// user feedback and redisplay the menu as needed


}

// hardcoded ship data for testing
// Initialize ship list
public static void initializeShipList() {
add("Candy Cane", 20, 40, 10, 60, true);
add("Peppermint Stick", 10, 20, 5, 40, true);
add("Bon Bon", 12, 18, 2, 24, false);
add("Candy Corn", 12, 18, 2, 24, false);
}

// hardcoded cruise data for testing
// Initialize cruise list
public static void initializeCruiseList() {
Cruise newCruise = new Cruise("Southern Swirl", "Candy Cane", "Miami", "Cuba", "Miami");
cruiseList.add(newCruise);
}

// hardcoded cruise data for testing
// Initialize passenger list
public static void initializePassengerList() {
Passenger newPassenger1 = new Passenger("Neo Anderson", "Southern Swirl", "STE");
passengerList.add(newPassenger1);

Passenger newPassenger2 = new Passenger("Trinity", "Southern Swirl", "STE");
passengerList.add(newPassenger2);

Passenger newPassenger3 = new Passenger("Morpheus", "Southern Swirl", "BAL");
passengerList.add(newPassenger3);
}

// custom method to add ships to the shipList ArrayList
public static void add(String tName, int tBalcony, int tOceanView,
int tSuite, int tInterior, boolean tInService) {
Ship newShip = new Ship(tName, tBalcony, tOceanView, tSuite, tInterior, tInService);
shipList.add(newShip);
}


public static void printShipList(String listType) {
// printShipList() method prints list of ships from the
// shipList ArrayList. There are three different outputs
// based on the listType String parameter:
// name - prints a list of ship names only
// active - prints a list of ship names that are "in service"
// full - prints tabbed data on all ships

if (shipList.size() < 1) {
System.out.println("\nThere are no ships to print.");
return;
}
if (listType == "name") {
System.out.println("\n\nSHIP LIST - Name");
for (int i = 0; i < shipList.size(); i++) {
System.out.println(shipList.get(i));
}
} else if (listType == "active") {
System.out.println("\n\nSHIP LIST - Active");

// complete this code block
}

} else if (listType == "full") {
System.out.println("\n\nSHIP LIST - Full");
System.out.println("-----------------------------------------------");
System.out.println(" Number of Rooms In");
System.out.print("SHIP NAME Bal OV Ste Int Service");
System.out.println("\n-----------------------------------------------");
for (Ship eachShip: shipList)
eachShip.printShipData();

} else
System.out.println("\n\nError: List type not defined.");
}

public static void printCruiseList(String listType) {
if (cruiseList.size() < 1) {
System.out.println("\nThere are no cruises to print.");
return;
}
if (listType == "list") {
System.out.println("\n\nCRUISE LIST");
for (int i=0; i < cruiseList.size(); i++) {
System.out.println(cruiseList.get(i));
}
} else if (listType == "details") {
System.out.println("\n\nCRUISE LIST - Details");
System.out.println("------------------------------------------------------------------------------------------");
System.out.println(" |----------------------PORTS-----------------------|");
System.out.print("CRUISE NAME SHIP NAME DEPARTURE DESTINATION RETURN");
System.out.println("\n-----------------------------------------------------------------------------------------");
for (Cruise eachCruise: cruiseList)
eachCruise.printCruiseDetails();
} else
System.out.println("\n\nError: List type not defined.");
}

public static void printPassengerList() {
if (passengerList.size() < 1) {
System.out.println("\nThere are no passengers to print.");
return;
}
System.out.println("\n\nPASSENGER LIST");
System.out.println("-----------------------------------------------------");
System.out.print("PASSENGER NAME CRUISE ROOM TYPE");
System.out.println("\n-----------------------------------------------------");
for (Passenger eachPassenger: passengerList)
eachPassenger.printPassenger();
}

// display text-based menu
public static void displayMenu() {

System.out.println("\n\n");
System.out.println("\t\t\tLuxury Ocean Cruise Outings");
System.out.println("\t\t\t\t\tSystem Menu\n");
System.out.println("[1] Add Ship [A] Print Ship Names");
System.out.println("[2] Edit Ship [B] Print Ship In Service List");
System.out.println("[3] Add Cruise [C] Print Ship Full List");
System.out.println("[4] Edit Cruise [D] Print Cruise List");
System.out.println("[5] Add Passenger [E] Print Cruise Details");
System.out.println("[6] Edit Passenger [F] Print Passenger List");
System.out.println("[x] Exit System");
System.out.println("\nEnter a menu selection: ");
}

// Add a New Ship
public static void addShip() {

// complete this method

}

// Edit an existing ship
public static void editShip() {

// This method does not need to be completed
System.out.println("The \"Edit Ship\" feature is not yet implemented.");

}

// Add a New Cruise
public static void addCruise() {

// complete this method

  
}

// Edit an existing cruise
public static void editCruise() {

// This method does not need to be completed
System.out.println("The \"Edit Cruise\" feature is not yet implemented.");

}

// Add a New Passenger
public static void addPassenger() {

Scanner newPassengerInput = new Scanner(System.in);
System.out.println("Enter the new passenger's name: ");
String newPassengerName = newPassengerInput.nextLine();

// ensure new passenger name does not already exist
for (Passenger eachPassenger: passengerList) {
if (eachPassenger.getPassengerName().equalsIgnoreCase(newPassengerName)) {
System.out.println("That passenger is already in the system. Exiting to menu...");
return; // quits addPassenger() method processing
}
}

// get cruise name for passenger
System.out.println("Enter cruise name: ");
String newCruiseName = newPassengerInput.nextLine();

// ensure cruise exists
for (Cruise eachCruise: cruiseList) {
if (eachCruise.getCruiseName().equalsIgnoreCase(newCruiseName)) {
// cruise does exist
} else {
System.out.println("That cruise does not exist in the system. Exiting to menu...");
return; // quits addPassenger() method processing
}
}

// get room type
System.out.println("Enter Room Type (BAL, OV, STE, or INT: ");
String room = newPassengerInput.nextLine();
// validate room type
if ((room.equalsIgnoreCase("BAL")) || (room.equalsIgnoreCase("OV")) ||
(room.equalsIgnoreCase("STE")) || (room.equalsIgnoreCase("INT"))) {
// validation passed - add passenger
Passenger newPassenger = new Passenger(newPassengerName, newCruiseName, room.toUpperCase());
passengerList.add(newPassenger);
} else {
System.out.println("Invalid input. Exiting to menu...");
return; // quits addPassenger() method processing
}
}

// Edit an existing passenger
public static void editPassenger() {

// This method does not need to be completed
System.out.println("The \"Edit Passenger\" feature is not yet implemented.");

}

// Method to check if input is a number
public static boolean isANumber(String str) {
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i)) == false)
return false;
}
return true;
}

}

----PASSENGER.JAVA------

public class Passenger {

    // Class variables
    private String passengerName;
    private String passengerCruise;
    private String passengerRoomType;


    // Constructor - default
    Passenger() {
    }

    // Constructor - full
    Passenger(String pName, String pCruise, String pRoomType) {
        passengerName = pName;
        passengerCruise = pCruise;
        passengerRoomType = pRoomType; // should be BAL, OV, STE, or INT
    }

    // Accessors
    public String getPassengerName() {
        return passengerName;
    }

    public String getPassengerCruise() {
        return passengerCruise;
    }

    public String getPassengerRoomType() {
        return passengerRoomType;
    }

    // Mutators
    public void setPassengerName(String tVar) {
        passengerName = tVar;
    }

    public void setPassengerCruise(String tVar) {
        passengerCruise = tVar;
    }

    public void setPassengerRoomType(String tVar) {
        passengerRoomType = tVar;
    }

    // print method
    public void printPassenger() {
        int spaceCount;
        String spaces1 = "";
        String spaces2 = "";
        spaceCount = 20 - passengerName.length();
        for (int i = 1; i <= spaceCount; i++) {
            spaces1 = spaces1 + " ";
        }
        spaceCount = 20 - passengerCruise.length();
        for (int i = 1; i <= spaceCount; i++) {
            spaces2 = spaces2 + " ";
        }

        System.out.println(passengerName + spaces1 + passengerCruise + spaces2 +
                passengerRoomType);
    }

    // method added to print passenger's name vice memory address
    @Override
    public String toString() {
        return passengerName;
    }

}

Solutions

Expert Solution

The Luxury Ocean Cruise Outings company has provided Global Rain with a software specification document that details a menu-driven software application.

To complete this project, must need :

1) Driver.java Class File

Cruise.java Class File

Ship.java Class File

Passenger.java Class File

I hope its help you...


Related Solutions

The Luxury Ocean Cruise Outings company has provided Global Rainwith a software specification document that...
The Luxury Ocean Cruise Outings company has provided Global Rain with a software specification document that details a menu-driven software application. Other developers on your software development team have already begun this project by creating the Ship, Cruise, Passenger, and Driver classes. You will modify the classes by including attributes and their proper data structures, writing methods to perform required functionality and behavior, and making sure that your program performs input validation and exception handling.--------DRIVER.JAVA---------import java.util.ArrayList;import java.util.Scanner;import static java.lang.Integer.parseInt;public class...
Develop Software Requirements Specification (SRS) Document.
Develop Software Requirements Specification (SRS) Document.
When looking at a Software Requirements Specification document: What are the strengths of an SRS? What...
When looking at a Software Requirements Specification document: What are the strengths of an SRS? What are the weaknesses of an SRS?
Cruise Bermuda Ocean Adventure has been growing exponentially in the past few years, based on its...
Cruise Bermuda Ocean Adventure has been growing exponentially in the past few years, based on its business models of operating low-price cruises from Miami to Bermuda targeted solely to retirees in the 65-80 age range. While the average all-inclusive 7-day Caribbean cruise will cost between $499 and $1,499 (traveltips.usatoday.com), Cruise Bermuda’s all-inclusive 7-day Caribbean cruise averages just $350 per person. What’s more, Cruise Bermuda makes sure to only stop at the tourist sites that require little or no cost to...
C PROGRAM Problem Specification: You are a software engineer of a Car Sale company. And Car...
C PROGRAM Problem Specification: You are a software engineer of a Car Sale company. And Car Sales is preparing for the end of the year sale. CEO wants to track the sales of your four sales people. You have been asked to help with the preparations for the sales event. The CEO asked for a program to quickly tabulate their sale. It will be your job to implement this program in C. You are not required to use functions in...
Anderson Document Services, a document creation and copying company, has two departments, Design and Copying.
 Anderson Document Services, a document creation and copying company, has two departments, Design and Copying. The company's most recent monthly contribution format income statement follows: A study indicates that $14,000 of the fixed expenses being charged to the Design Department are sunk costs or allocated costs that will continue even if the Design Department is dropped. In addition, the elimination of the Design Department would result in a 5% decrease in the sales of the Copying Department. Required: a. Calculate the effect on the operating...
Anderson Document Services, a document creation and copying company, has two departments, Design and Copying. The...
Anderson Document Services, a document creation and copying company, has two departments, Design and Copying. The company’s most recent monthly contribution format income statement follows: Department Total Design Copying   Sales $ 455,000 $ 120,000 $ 335,000   Variable expenses 279,000 78,000 201,000      Contribution margin 176,000 42,000 134,000   Fixed expenses 76,080 47,550 28,530   Operating income (loss) $ 99,920 $ (5,550 ) $ 105,470 A study indicates that $21,875 of the fixed expenses being charged to the Design Department are sunk costs...
The Indian software industry has become one of the leading global markets. According to Michael Porter,...
The Indian software industry has become one of the leading global markets. According to Michael Porter, a nation’s competitiveness depends on the capacity of its leading industries to innovate and upgrade. Critically discuss Porter’s diamond of national competitive advantage. Illustrate your answer by referring to Indian software industry as an example.
The Indian software industry has become one of the leading global markets. According to Michael Porter,...
The Indian software industry has become one of the leading global markets. According to Michael Porter, a nation’s competitiveness depends on the capacity of its leading industries to innovate and upgrade. Critically discuss Porter’s diamond of national competitive advantage. Illustrate your answer by referring to Indian software industry as an example. make sure its 360 words ( 1_factor endowments, 2_demand conditions, 3_related and supporting industries, 4_ firm strategy , structure and rivalry)
Ericsson is a large global company providing hardware, software, and related services for radio-access networks within...
Ericsson is a large global company providing hardware, software, and related services for radio-access networks within mobile telecommunication systems. Assume that it is developing a new networking system for smaller, private telephone companies. To attract small companies, Ericsson must keep the price low without giving up too many of the features of larger networking systems. A marketing research study conducted on the company’s behalf found that the price range must be $50,000 to $75,000. Management has determined a target price...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT