In: Computer Science
Use the code below as the basis for a hotel reservation system (HRS). The customer calls the hotel front desk to book a room. The front desk is running your software on one of its computers. The basic operations available are:
The people at the front desk choose a particular operation, typically in response to a phone call.
Start by modularizing the existing program code below as follows. Create a method from the welcome message (and call this new method from main). Next, create a method from the end message (and also call it from main). Finally, create a method from the help information (and call from main too).
Now we'll implement the methods of the HRS. A new method, bookOneRoom, should randomly book one room when 'b' or 'B' is pressed. Once a room is chosen, it should call bookARoom to indicate that the room is now booked. A new method, bookTwoRooms, should randomly book two rooms when '2' is pressed. It should call bookARoom (twice). Also, write a method that lists (prints out) the room numbers of all of the unoccupied rooms (when the user presses 'l' - lowercase L). Similarly, write a method that lists (prints out) the room nummbers of all of the occupied rooms (when 'L' is entered). Finally, write a method that reports the percentage of the hotel rooms that are unoccupied. This method should use the existing occupiedCount method.
Note: Every method should be preceeded by a comment that explains what the method does.
Summary of what to submit:
A properly commented, indented, and working program.
/* file: HRS.java author: < your-name-here > desc.: Hotel Reservation System (HRS) */ import java.util.Scanner; class HRS { final static int N = 101; final static boolean Occupied = true; //------------------------------------------------------------ //program initialization static void initialize ( boolean[] rooms ) { for (int i=0; i<rooms.length; i++) rooms[i] = !Occupied; } //------------------------------------------------------------ //book a particular room static void bookARoom ( int rm, boolean[] rooms ) { assert( rooms[rm] == !Occupied ); //cause boom if bad rooms[ rm ] = Occupied; } //------------------------------------------------------------ //determine how many rooms are occupied in our hotel static int occupiedCount ( boolean[] rooms ) { int count = 0; for (int i=1; i<rooms.length; i++) { if (rooms[i]) ++count; } return count; } //------------------------------------------------------------ //it all starts here public static void main ( String[] args ) { //say hello System.out.println(); System.out.println( "Welcome to HRS (Hotel Reservation System)." ); System.out.println(); boolean[] hotel = new boolean[ N ]; initialize( hotel ); Scanner kbd = new Scanner( System.in ); boolean timeToQuit = false; while (!timeToQuit) { //prompt for and read a command System.out.print( "HRS --> " ); String command = kbd.nextLine(); //process the command if (command.equalsIgnoreCase("q")) { timeToQuit = true; } else if (command.equals("?")) { System.out.println(); System.out.println( "Enter..." ); System.out.println( " 2 to book two adjoining rooms" ); System.out.println( " b/B to book a single room" ); System.out.println( " l to list all unoccupied rooms" ); System.out.println( " L to list all occupied rooms" ); System.out.println( " h/H/? for help" ); System.out.println( " p/P for percent unoccupied" ); System.out.println( " q/Q to quit" ); System.out.println(); } else { System.out.println( " Please enter a valid command." ); } } //say goodbye System.out.println(); System.out.println( "Thanks for using HRS!" ); System.out.println(); } }
//Java code
/* file: HRS.java author: < your-name-here > desc.: Hotel Reservation System (HRS) */ import java.util.Random; import java.util.Scanner; class HRS { final static int N = 101; final static boolean Occupied = true; //------------------------------------------------------------ //program initialization static void initialize ( boolean[] rooms ) { for (int i=0; i<rooms.length; i++) rooms[i] = !Occupied; } //------------------------------------------------------------ //book a particular room static void bookARoom ( int rm, boolean[] rooms ) { if( rooms[rm] == !Occupied ) //cause boom if bad { rooms[rm] = Occupied; System.out.println("Room No."+(rm+1)+" has been booked successfully"); } else { System.out.println("Room is already occupied"); } } //------------------------------------------------------------ //determine how many rooms are occupied in our hotel static int occupiedCount ( boolean[] rooms ) { int count = 0; for (int i=1; i<rooms.length; i++) { if (rooms[i]) ++count; } return count; } /** * Print Welcome Message */ private static void welcomeMessage() { System.out.println(); System.out.println( "Welcome to HRS (Hotel Reservation System)." ); System.out.println(); } /** * Print the display message */ private static void endMessage() { System.out.println(); System.out.println( "Thanks for using HRS!" ); System.out.println(); } /** * help function */ private static void help() { System.out.println(); System.out.println( "Enter..." ); System.out.println( " 2 to book two adjoining rooms" ); System.out.println( " b/B to book a single room" ); System.out.println( " l to list all unoccupied rooms" ); System.out.println( " L to list all occupied rooms" ); System.out.println( " h/H/? for help" ); System.out.println( " p/P for percent unoccupied" ); System.out.println( " q/Q to quit" ); System.out.println(); } /** * bookOneRoom, should randomly book one room when 'b' or 'B' * is pressed. Once a room is chosen, * it should call bookARoom to indicate that the room is now booked. */ private static void bookOneRoom(boolean[] rooms) { Random random = new Random(); int randomRoom = random.nextInt(100); bookARoom(randomRoom,rooms); } /** * A new method, bookTwoRooms, should randomly book * two rooms when '2' is pressed. It should call bookARoom (twice). */ private static void bookTwoRooms(boolean[] rooms) { bookOneRoom(rooms); bookOneRoom(rooms); } /** * write a method that lists (prints out) the room numbers of all of the * unoccupied rooms (when the user presses 'l' - lowercase L). */ private static void listAllUnoccupiedRooms(boolean[] rooms) { for (int i = 0; i <rooms.length ; i++) { if(!rooms[i]) { System.out.println("Room No.: -> "+(i+1)+" is not occupied." ); } } } /** * lists (prints out) the room nummbers of * all of the occupied rooms (when 'L' is entered). */ private static void listAllOccupiedRooms(boolean[] rooms) { for (int i = 0; i <rooms.length ; i++) { if(rooms[i]) { System.out.println("Room No.: -> "+(i+1)+" is occupied." ); } } } /** * method that reports the percentage of the hotel rooms that are unoccupied. */ private static void getPercentageOfUnoccupiedRooms(boolean[] rooms) { int occ = occupiedCount(rooms); int unOcc = N-occ; double per = (unOcc/(double)N)*100; System.out.println("% of unoccupied rooms: "+ String.format("%.2f",per)+"%"); } //------------------------------------------------------------ //it all starts here public static void main ( String[] args ) { new HRS(); //say hello welcomeMessage(); boolean[] hotel = new boolean[ N ]; initialize( hotel ); Scanner kbd = new Scanner( System.in ); boolean timeToQuit = false; while (!timeToQuit) { //prompt for and read a command System.out.print( "HRS --> " ); String command = kbd.nextLine(); switch (command) { case "H": case "h": case "?": help(); break; case "Q": case "q": timeToQuit = true; break; case "2": bookTwoRooms(hotel); break; case "b": case "B": bookOneRoom(hotel); break; case "l": listAllUnoccupiedRooms(hotel); break; case "L": listAllOccupiedRooms(hotel); break; case "P": case "p": getPercentageOfUnoccupiedRooms(hotel); break; default: System.err.println("ERROR!!! ... Please enter a valid choice.."); break; } /** //process the command if (command.equalsIgnoreCase("q")) { timeToQuit = true; } else if (command.equals("?")) { help(); } else { System.out.println( " Please enter a valid command." ); } */ } //say goodbye endMessage(); } }
//Output
//If you need any help regarding this solution ....... please leave a comment ......... thanks