In: Computer Science
Write a menu-driven program to implement a roomsboard for a classroom reservations system. The menu includes the following options:
The program will call the removeAll() method from the RoomsBoard class.
add it to the following code:
package Chegg;
public class ReservedRoom {
private String roomID; //data member declaration
private String courseID;
private int time;
public ReservedRoom(String roomID, String courseID, int time) { // constructor
this.roomID = roomID;
this.courseID = courseID;
this.time = time;
}
public String getRoom() { //get methods
return roomID;
}
public String getCourse() {
return courseID;
}
public int getTime() {
return time;
}
@Override
public String toString() { // return string representation of ReservedRoom Object
return "ReservedRoom [roomID=" + roomID + ", courseID=" + courseID + ", time=" + time + "]";
}
}
----------------------------------------------------------------------------------------------------------------------------------
RoomsBoard class:
package Chegg;
public class RoomsBoard {
ReservedRoomNode head; //Node for storing head of the list
private int size=0; //variable for storing size
public void add(ReservedRoom r)
{
ReservedRoomNode node=new ReservedRoomNode(r);
ReservedRoomNode current; //Node to traverse the list
if(head==null|| head.getroom().getTime()>r.getTime())
{
node.setNext(head);
head=node;
size++;
}
else
{
current=head;
while(current.getNext()!=null&& current.getNext().getroom().getTime()<r.getTime())
{
current=current.getNext();
}
node.setNext(current.getNext());
current.setNext(node);
size++;
}
}
public void remove(String roomId)
{
if(head==null) {
System.out.println("Number of Reserved Rooms: 0");
return;
}
ReservedRoomNode current=head,temp=null;
while(current!=null && current.getroom().getRoom()==roomId)
{
head=current.getNext();
current=head;
size--;
}
while(current!=null)
{
while(current!=null && current.getroom().getRoom()!=roomId)
{
temp=current;
current=current.getNext();
}
if(current==null)
return;
temp.setNext(current.getNext());
current=temp.getNext();
size--;
}
}
public void listRooms()
{
if(isEmpty()) {
System.out.println("Number of Reserved Rooms: 0");
return;
}
ReservedRoomNode current=head; //Node to traverse the list
while(current!=null)
{
System.out.print(current);
current=current.getNext();
}
System.out.println();
System.out.println("-------------------------------------------------");
}
public void remove_all_but(String roomId)
{
if(isEmpty()) {
System.out.println("Number of Reserved Rooms: 0");
return;
}
ReservedRoomNode current=head;
while(current.getroom().getRoom()!=roomId && current!=null)
{
current=current.getNext();
}
if(current==null)
return;
current.setNext(null);
head=current;
size=1;
}
public void removeAll()
{
head=null; //assigning null to head removes all nodes
size=0;
}
public void split(RoomsBoard board1,RoomsBoard board2)
{
if(this.isEmpty())
{
System.out.println("Number of Reserved Rooms: 0");
return;
}
ReservedRoomNode current=head;
while(current!=null)
{
if(current.getroom().getTime()<=12) //board1 will store rooms with timings before and at 12
board1.add(current.getroom());
else
board2.add(current.getroom()); //board2 will store rooms with timings after 12
current=current.getNext();
}
System.out.print("Rooms before and at 12:");
System.out.println();
board1.listRooms();
System.out.println();
System.out.println("Rooms after 12:");
board2.listRooms();
}
public void listReservations(String roomID)
{
if(isEmpty())
{
System.out.println("Number of Reserved Rooms: 0");
return;
}
ReservedRoomNode current=head;
while(current!=null)
{
if(current.getroom().getRoom()==roomID)
System.out.println(current.getroom().toString());
current=current.getNext();
}
System.out.println("--------------------------------------------------------");
}
public boolean isEmpty()
{
return head==null;
}
public int size()
{
return size;
}
}
------------------------------------------------------------------------------------------------------------------------
RoomsBoardMain class
package Chegg;
public class RoomsBoardMain {
public static void main(String[] args) {
ReservedRoom r1=new ReservedRoom("98","maths",15);
ReservedRoom r2=new ReservedRoom("94","physics",12);
ReservedRoom r3=new ReservedRoom("99","english",9);
ReservedRoom r4=new ReservedRoom("98","geography",11);
ReservedRoom r5=new ReservedRoom("99","history",18);
ReservedRoom r6=new ReservedRoom("101","geology",22);
ReservedRoom r7=new ReservedRoom("98","chemistry",11);
RoomsBoard list=new RoomsBoard();
RoomsBoard board1=new RoomsBoard();
RoomsBoard board2=new RoomsBoard();
list.add(r1);
list.add(r2);
list.add(r3);
list.add(r4);
list.add(r5);
list.add(r6);
list.add(r7);
list.listRooms();
System.out.println("------------------------------------------");
list.remove("98");
System.out.println("Reserverd Rooms after removing room with ID=98");
list.listRooms();
list.split(board1,board2);
System.out.println("Reservation for Room with ID=99");
list.listReservations("99");
System.out.print("Number of Reservations is Empty: ");
System.out.println(list.isEmpty());
System.out.println("Number of Reserved Rooms: "+list.size());
System.out.println("----------------------------------------");
System.out.println("Removing all Reserved Rooms except with id=101");
list.remove_all_but("101");
list.listRooms();
System.out.println("------------------------------------");
System.out.println("After Removing all reservations");
list.removeAll();
list.listRooms();
}
}
-----------------------------------------------------------------------------------------------------------------------
ReservedRoomNode class
package Chegg;
public class ReservedRoomNode { //class for creating nodes of ReservedRoom
ReservedRoom room;
ReservedRoomNode next;
public ReservedRoomNode(ReservedRoom room) //constructor for creating Node
{
this.room=room;
}
public ReservedRoom getroom() {
return room;
}
public void setRoom(ReservedRoom room) {
this.room = room;
}
public ReservedRoomNode getNext() {
return next;
}
public void setNext(ReservedRoomNode next) {
this.next = next;
}
@Override
public String toString() {
return room.toString() ;
}
}
Answer:
/****************JAVA CODE**************/
/************ReservedRoom.java************/
public class ReservedRoom {
private String roomId;
private String courseId;
private int time;
/**
* Parameterized constructor
* @param roomId
* @param courseId
* @param time
*/
public ReservedRoom(String roomId, String courseId,
int time) {
this.roomId = roomId;
this.courseId = courseId;
this.time = time;
}
/**
* @return the roomId
*/
public String getRoomId() {
return roomId;
}
/**
* @return the courseId
*/
public String getCourseId() {
return courseId;
}
/**
* @return the time
*/
public int getTime() {
return time;
}
@Override
public String toString() {
return "ReservedRoom [roomId=" +
roomId + ", courseId=" + courseId + ", time=" + time + "]";
}
}
/**************RoomsBoard.java****************/
public class RoomsBoard {
//Represent a node of the singly linked list
class Node{
ReservedRoom reservedRoom;
Node next;
//Constructor
public Node(ReservedRoom
reservedRoom) {
this.reservedRoom = reservedRoom;
this.next =
null;
}
}
//Represent the head of the singly linked
list
public Node head = null;
//Default size of the list
public int size = 0;
/***
* This method used to add element in order of date
non-descending
* @param reservedRoom
*/
public void add(ReservedRoom reservedRoom) {
//Creating new node before
inserting
Node newNode = new
Node(reservedRoom);
//This blocks executes when there
is not reservation
if (head == null ||
head.reservedRoom.getTime() >=
newNode.reservedRoom.getTime())
{
newNode.next =
head;
head =
newNode;
}
else
{
//Insert node in
sorted manner to maintain sorting by time
Node current =
head;
while
(current.next != null &&
current.next.reservedRoom.getTime() <
newNode.reservedRoom.getTime())
{
current = current.next;
}
newNode.next =
current.next;
current.next =
newNode;
}
size++;
}
/***
* This method used to remove all occurrences of room
from list
* @param roomId
*/
public void remove(String roomId) {
//This check if head is having
given roomId to remove
while (head != null &&
head.reservedRoom.getRoomId().equals(roomId)) {
head = head.next;
size -= 1;
}
if (head == null) {
return;
}
//This will remove all occurrences of roomId
present in each node
Node current = head;
while (current.next != null) {
if
(current.next.reservedRoom.getRoomId().equals(roomId)) {
current.next = current.next.next;
size -= 1;
} else {
current = current.next;
}
}
}
/***
* This method used to remove all reservations except
given room Id
* @param roomId
*/
public void remove_all_but(String roomId) {
Node current = head;
// loop to iterate the nodes and
remove other rooms except given
while(current != null)
{
if(!current.reservedRoom.getRoomId().equals(roomId)) {
remove(current.reservedRoom.getRoomId());
}
current =
current.next;
}
}
/**
* This method remove all rooms reservation from
list
*/
public void removeAll() {
Node current = head;
// loop to iterate the linked
list
while(current != null)
{
remove(current.reservedRoom.getRoomId());
current =
current.next;
}
}
/**
* This method splits room reservation by time
* @param board1
* @param board2
*/
public void split(RoomsBoard board1,RoomsBoard board2)
{
Node current = head;
//Iterate over all nodes
while (current != null) {
//Checks if
reserved room is before 1200 then it gets added in board1 otherwise
in board2
if(current.reservedRoom.getTime() <= 1200) {
if(board1.head == null) {
board1.head = new
Node(current.reservedRoom);
} else {
Node temp =
board1.head;
while(temp.next != null)
{
temp =
temp.next;
}
temp.next = new
Node(current.reservedRoom);
}
board1.size++;
} else {
if(board2.head == null) {
board2.head = new
Node(current.reservedRoom);
} else {
Node temp =
board2.head;
while(temp.next != null)
{
temp =
temp.next;
}
temp.next = new
Node(current.reservedRoom);
}
board2.size++;
}
current =
current.next;
}
}
/**
* This method use to prints all reserved rooms
*/
public void listRooms() {
Node current = head;
while (current != null) {
System.out.println(current.reservedRoom.toString());
current =
current.next;
}
}
/**
* This methods prints all reservation of given
roomId
* @param roomId
*/
public void listReservations(String roomId) {
Node current = head;
while (current != null){
if(current.reservedRoom.getRoomId().equals(roomId)) {
System.out.println(current.reservedRoom.toString());
}
current =
current.next;
}
}
/**
* This method return size of list
* @return
*/
public int size() {
return size;
}
/**
* This method checks if reservation is empty or
not
* @return
*/
public boolean isEmpty() {
return (size == 0);
}
}
/**************ReservedRoomMenu.java****************/
public class ReservedRoomMenu {
public static void main(String[] args) {
Scanner sc = new
Scanner(System.in);
RoomsBoard roomsBoard = new
RoomsBoard();
int input = 0;
do{
System.out.println("1 Add new room");
System.out.println("2 Remove all occurrences of a room.");
System.out.println("3 Remove all rooms except a room.");
System.out.println("4 Clear the RoomsBoard.");
System.out.println("5 Split");
System.out.println("6 Display RoomsBoard.");
System.out.println("7 Display the reservations of a room.");
System.out.println("8 Exit");
System.out.println("Plese enter above menu between 1 to 8");
input =
Integer.parseInt(sc.nextLine());
if(input == 1)
{
System.out.print("Please enter RoomId :");
String roomId = sc.nextLine();
System.out.print("Please enter CourseId
:");
String courseId = sc.nextLine();
System.out.print("Please enter Time :");
int time =
Integer.parseInt(sc.nextLine());
ReservedRoom reservedRoom = new
ReservedRoom(roomId, courseId, time);
roomsBoard.add(reservedRoom);
} else if(input
== 2) {
if(roomsBoard.isEmpty()) {
System.out.println("No rooms
available to remove");
continue;
} else {
System.out.print("Please
enter Room No. to remove :");
String roomNumber =
sc.nextLine();
roomsBoard.remove(roomNumber);
System.out.println("Rooms
removed successfully.");
continue;
}
} else if(input
== 3) {
if(roomsBoard.isEmpty()) {
System.out.println("No rooms
available to remove");
continue;
} else {
System.out.print("Please
enter Room No. to exclude :");
String roomNumber =
sc.nextLine();
roomsBoard.remove_all_but(roomNumber);
System.out.println("Rooms
removed successfully.");
continue;
}
} else if(input
== 4) {
if(roomsBoard.isEmpty()) {
System.out.println("No rooms
available to remove");
continue;
} else {
roomsBoard.removeAll();
System.out.println("Rooms
removed successfully.");
continue;
}
} else if(input
== 5) {
if(roomsBoard.isEmpty()) {
System.out.println("No rooms
available to split");
continue;
} else {
RoomsBoard board1 = new
RoomsBoard();
RoomsBoard board2 = new
RoomsBoard();
roomsBoard.split(board1,board2);
System.out.println("Rooms
splited successfully.");
System.out.println("Board 1 -
");
board1.listRooms();
System.out.println("Board 2 -
");
board2.listRooms();
continue;
}
} else if(input
== 6) {
if(roomsBoard.isEmpty()) {
System.out.println("No rooms
available to display");
continue;
} else {
roomsBoard.listRooms();
continue;
}
} else if(input
== 7) {
if(roomsBoard.isEmpty()) {
System.out.println("No rooms
available to display");
continue;
} else {
System.out.print("Please
enter Room No. to view reservation :");
String roomNumber =
sc.nextLine();
roomsBoard.listReservations(roomNumber);
continue;
}
} else if(input
== 8) {
break;
} else {
System.out.println("Invalid input, Please enter
menu number bwtween 1 to 8");
}
} while(true);
}
}
