+1 (315) 557-6473 

Program To Implement a Cruise Management System Using Java Programming Language Assignment Solutions.


Instructions

Objective
Write a program to implement a cruise management system in Java programming language.

Requirements and Specifications

Implement cruise ship management system in Java programming language
Implement cruise ship management system in Java programming language 1
Implement cruise ship management system in Java programming language 2
Implement cruise ship management system in Java programming language 3
Implement cruise ship management system in Java programming language 4
Implement cruise ship management system in Java programming language 5
Implement cruise ship management system in Java programming language 6
Implement cruise ship management system in Java programming language 7
Implement cruise ship management system in Java programming language 8
Implement cruise ship management system in Java programming language 9
Implement cruise ship management system in Java programming language 10
Implement cruise ship management system in Java programming language 11
Implement cruise ship management system in Java programming language 12
Implement cruise ship management system in Java programming language 13
Implement cruise ship management system in Java programming language 14

Source Code

CRUISE

public class Cruise {

    // Instance Variables

    private String cruiseName;

    private String cruiseShipName;

    private String departurePort;

    private String destination;

    private String returnPort;

    // Constructor - default

    Cruise() {

    }

    // Constructor - full

    Cruise(String tCruiseName, String tShipName, String tDeparture, String tDestination, String tReturn) {

        cruiseName = tCruiseName;

        cruiseShipName = tShipName;

        departurePort = tDeparture;

        destination = tDestination;

        returnPort = tReturn;

    }

    // Accessors

    public String getCruiseName() {

        return cruiseName;

    }

    public String getCruiseShipName() {

        return cruiseShipName;

    }

    public String getDeparturePort() {

        return departurePort;

    }

    public String getDestination() {

        return destination;

    }

    public String getReturnPort() {

        return returnPort;

    }

    // Mutators

    public void setCruiseName(String tVar) {

        cruiseName = tVar;

    }

    public void setCruiseShipName(String tVar) {

        cruiseShipName = tVar;

    }

    public void setDeparturePort(String tVar) {

        departurePort = tVar;

    }

    public void setDestination(String tVar) {

        destination = tVar;

    }

    public void setReturnPort(String tVar) {

        returnPort = tVar;

    }

    // print cruise details

    public void printCruiseDetails() {

        // Using String.format method instead of appending spaces manually

        // Format line '%-{length}s' allows string to occupy {length} spaces with content aligned to the left

        String cruiseDetails = String.format("%-20s", cruiseName) +

                String.format("%-20s", cruiseShipName) +

                String.format("%-20s", departurePort) +

                String.format("%-20s", destination) +

                returnPort;

        System.out.println(cruiseDetails);

    }

    // method added to print ship's name vice memory address

    @Override

    public String toString() {

        return cruiseName;

    }

}

DRIVER

import java.util.ArrayList;

import java.util.Scanner;

import static java.lang.Integer.parseInt;

public class Driver {

    // instance variables (add more as needed)

    private static ArrayList<Ship> shipList = new ArrayList();

    private static ArrayList<Cruise> cruiseList = new ArrayList();

    private static ArrayList<Passenger> 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

        boolean isFinished = false;

        while (!isFinished) {

            displayMenu();

            Scanner menuScan = new Scanner(System.in);

            String userInput = menuScan.nextLine().toLowerCase();

            switch (userInput) {

                case "1":

                    addShip();

                    break;

                case "2":

                    editShip();

                    break;

                case "3":

                    addCruise();

                    break;

                case "4":

                    editCruise();

                    break;

                case "5":

                    addPassenger();

                    break;

                case "6":

                    editPassenger();

                    break;

                case "x":

                    isFinished = true;

                    break;

                case "a":

                    printShipList("name");

                    break;

                case "b":

                    printShipList("active");

                    break;

                case "c":

                    printShipList("full");

                    break;

                case "d":

                    printCruiseList("list");

                    break;

                case "e":

                    printCruiseList("details");

                    break;

                case "f":

                    printPassengerList();

                    break;

                default:

                    System.out.println("Invalid input");

            }

        }

    }

    // 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");

            printShipListHeader();

            // iterating over ships, printing only those, which are in service

            for (Ship eachShip: shipList)

                if (eachShip.getInService())

                    eachShip.printShipData();

        } else if (listType == "full") {

            System.out.println("\n\nSHIP LIST - Full");

            printShipListHeader();

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

        Scanner newShipInput = new Scanner(System.in);

        System.out.println("Enter the new ship's name: ");

        String newShipName = newShipInput.nextLine();

        // ensure new ship name does not already exist

        for (Ship eachShip: shipList) {

            if (eachShip.getShipName().equalsIgnoreCase(newShipName)) {

                System.out.println("That ship is already in the system. Exiting to menu...");

                return; // quits addShip() method processing

            }

        }

        // get balcony rooms for ship

        System.out.println("Enter number of balcony rooms: ");

        int bal = tryGetIntFromInput(newShipInput);

        if (bal < 0)

            // parsing method returned -1

            return; // quits addShip() method processing

        // get ocean view rooms for ship

        System.out.println("Enter number of ocean view rooms: ");

        int ov = tryGetIntFromInput(newShipInput);

        if (ov < 0)

            // parsing method returned -1

            return; // quits addShip() method processing

        // get suite rooms for ship

        System.out.println("Enter number of suite rooms: ");

        int ste = tryGetIntFromInput(newShipInput);

        if (ste < 0)

            // parsing method returned -1

            return; // quits addShip() method processing

        // get interior rooms for ship

        System.out.println("Enter number of interior rooms: ");

        int interior = tryGetIntFromInput(newShipInput);

        if (interior < 0)

            // parsing method returned -1

            return; // quits addShip() method processing

        // get is in service

        System.out.println("Enter if ship is in service or not ('y' - if is service, otherwise - not): ");

        boolean inService = tryGetBoolFromInput(newShipInput);

        shipList.add(new Ship(newShipName, bal, ov, ste, interior, inService));

    }

    // 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() {

        Scanner newCruiseInput = new Scanner(System.in);

        System.out.println("Enter the new cruise's name: ");

        String newCruiseName = newCruiseInput.nextLine();

        // ensure new cruise name does not already exist

        for (Cruise eachCruise: cruiseList) {

            if (eachCruise.getCruiseName().equalsIgnoreCase(newCruiseName)) {

                System.out.println("That cruise is already in the system. Exiting to menu...");

                return; // quits addCruise() method processing

            }

        }

        System.out.println("Enter the new cruise ship's name: ");

        String newCruiseShipName = newCruiseInput.nextLine();

        // Validating ship name:

        // ensure cruise ship name exists

        boolean exists = false;

        for (Ship eachShip: shipList) {

            if (eachShip.getShipName().equalsIgnoreCase(newCruiseShipName)) {

                exists = true;

                break;

            }

        }

        if (!exists) {

            // if ship is not found - exiting

            System.out.println("That ship is not in the system. Exiting to menu...");

            return; // quits addCruise() method processing

        }

        // ensure cruise ship is not already assigned

        for (Cruise eachCruise: cruiseList) {

            if (eachCruise.getCruiseShipName().equalsIgnoreCase(newCruiseShipName)) {

                System.out.println("That ship is already assigned to another cruise. Exiting to menu...");

                return; // quits addCruise() method processing

            }

        }

        System.out.println("Enter the new cruise departure port: ");

        String newCruiseDeparturePort = newCruiseInput.nextLine();

        System.out.println("Enter the new cruise destination: ");

        String newCruiseDestination = newCruiseInput.nextLine();

        System.out.println("Enter the new cruise return port: ");

        String newCruiseReturnPort = newCruiseInput.nextLine();

        cruiseList.add(new Cruise(newCruiseName, newCruiseShipName, newCruiseDeparturePort,

                newCruiseDestination, newCruiseReturnPort));

    }

    // 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;

    }

    // common header printing method for tables generated in method printShipList with different arguments

    private static void printShipListHeader() {

        System.out.println("-----------------------------------------------");

        System.out.println(" Number of Rooms In");

        System.out.print("SHIP NAME Bal OV Ste Int Service");

        System.out.println("\n-----------------------------------------------");

    }

    // method for parsing non-negative integer from user input

    // returns -1 if attempt was unsuccessful

    private static int tryGetIntFromInput(Scanner input) {

        int result = 0;

        try {

            // try parse non-negative int number from user input

            result = Integer.parseInt(input.nextLine());

            if (result < 0)

                throw new IllegalArgumentException();

            return result;

        }

        catch (IllegalArgumentException e) {

            System.out.println("Invalid input. Exiting to menu...");

            return -1;

        }

    }

    // method for parsing boolean from user input

    // 'y' ignore case is for true, otherwise - false

    private static boolean tryGetBoolFromInput(Scanner input) {

        return input.nextLine().trim().equalsIgnoreCase("y");

    }

}

PASSENGER

public class Passenger {

    // Instance 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;

    }

}

SHIP

public class Ship {

    // Instance Variables

    private String shipName;

    private int roomBalcony;

    private int roomOceanView;

    private int roomSuite;

    private int roomInterior;

    private boolean inService;

    // Constructor - default

    Ship() {

    }

    // Constructor - full

    Ship(String tName, int tBalcony, int tOceanView,

         int tSuite, int tInterior, boolean tInService) {

        shipName = tName;

        roomBalcony = tBalcony;

        roomOceanView = tOceanView;

        roomSuite = tSuite;

        roomInterior = tInterior;

        inService = tInService;

    }

    // Accessors

    public String getShipName() {

        return shipName;

    }

    public int getRoomBalcony() {

        return roomBalcony;

    }

    public int getRoomOceanView() {

        return roomOceanView;

    }

    public int getRoomSuite() {

        return roomSuite;

    }

    public int getRoomInterior() {

        return roomInterior;

    }

    public boolean getInService() {

        return inService;

    }

    // Mutators

    public void setShipName(String tVar) {

        shipName = tVar;

    }

    public void setRoomBalcony(int tVar) {

        roomBalcony = tVar;

    }

    public void setRoomOceanView(int tVar) {

        roomOceanView = tVar;

    }

    public void setRoomSuite(int tVar) {

        roomSuite = tVar;

    }

    public void setRoomInterior(int tVar) {

        roomInterior = tVar;

    }

    public void setInService(boolean tVar) {

        inService = tVar;

    }

    // print method

    public void printShipData() {

        int spaceCount;

        String spaces = "";

        spaceCount = 20 - shipName.length();

        for (int i = 1; i <= spaceCount; i++) {

            spaces = spaces + " ";

        }

        System.out.println(shipName + spaces + roomBalcony + "\t" +

                roomOceanView + "\t" + roomSuite + "\t" +

                roomInterior + "\t\t" + inService);

    }

    // method added to print ship's name vice memory address

    @Override

    public String toString() {

        return shipName;

    }

}