Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

**Please respond only if you can answer the whole question** ~~~~~~~~~~~~~~~~~~~

ID: 3573883 • Letter: #

Question

**Please respond only if you can answer the whole question**

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Java Programming: Ch 10 Case Problem 1

a. In Chapter 8, you created an Event class for Carly’s Catering. Now extend the class to create a DinnerEvent class. In the extended class, include four new integer fields that represent numeric choices for an entrée, two side dishes, and a dessert for each DinnerEvent object. Also include three final arrays that contain String menu options for entrées, side dishes, and desserts, and store at least three choices in each array. Create a DinnerEvent constructor that requires arguments for an event number and number of guests, and integer menu choices for one entrée, two side dishes, and one dessert. Pass the first two parameters to the Event constructor, and assign the last four parameters to the appropriate local fields. Also include a getMenu() method that builds and returns a String including the Strings for the four menu choices. Save the file as DinnerEvent.java.

b. In Chapter 9, you created an EventDemo program for Carly’s Catering. The program uses an array of Event objects and allows the user to sort Events in ascending order by event number, number of guests, or event type. Now modify the program to use an array of four DinnerEvent objects. Prompt the user for all values for each object, and then allow the user to continuously sort the DinnerEvent descriptions by event number, number of guests, or event type. Save the file as DinnerEventDemo.java.

Please use code and display output

~~~~~~~~~~~~~~~~~~~~~

import java.util.Scanner;

public class Event {

    public final static double LOWER_PRICE_PER_GUEST = 32.00;
    public final static double HIGHER_PRICE_PER_GUEST = 35.00;
    public final static int CUTOFF_VALUE = 50;

    public final String EVENT_TYPES[] = {
            "wedding", "baptism", "birthday", "corporate" , "other"
    };

    public int eventType;
    public boolean largeEvent;
    private String eventNum;
    private int numOfGuests;
    private double price;
    private double pricePerGuest;
    private String contact;
    private Scanner input = new Scanner(System.in);

    public Event(String event, int guests) {
        eventNum = event;
        numOfGuests = guests;
    }

    public Event() {
        this("A000", 0);
    }


    public void setEventNumber() {
        System.out.print("What is the event number? ");
        eventNum = input.nextLine();

        if (eventNum.length() != 4)
            eventNum="A000";

        if (eventNum.length() == 4
                && Character.isLetter(eventNum.charAt(0))
                && Character.isDigit(eventNum.charAt(1))
                && Character.isDigit(eventNum.charAt(2))
                && Character.isDigit(eventNum.charAt(3))){
        }else{
            eventNum = "A000";
        }
        eventNum = eventNum.toUpperCase();
    }

    public void setEventType(int i){
        System.out.print("What is the event type? ");
        i = input.nextInt();
        if(i < EVENT_TYPES.length)
            eventType = i;
        else
            eventType = EVENT_TYPES.length - 1;
    }

    public void setNumOfGuests() {

        do {
            System.out.print("How many guests are attending the event? ");
            numOfGuests = input.nextInt();
            input.nextLine();
            if (numOfGuests < 5 || numOfGuests > 100) {
                System.out.println("The number of guests must be between 5 and 100 ");
            }else{
                break;
            }
        }while (true);

        if (isLargeEvent()) {
            pricePerGuest = LOWER_PRICE_PER_GUEST;
        }else{
            pricePerGuest = HIGHER_PRICE_PER_GUEST;
        }
        largeEvent = (numOfGuests >= CUTOFF_VALUE);
        price = numOfGuests * pricePerGuest;
    }

    public void setContactPhone() {
        System.out.print("What is the contact phone number? ");
        contact = input.nextLine();
        contact = contact.replaceAll("[^0-9]", "");
        if (contact.length() != 10)
            contact = "0000000000";
    }

    public boolean isLargeEvent(){
        if(this.getNumOfGuests() >= 50)
            return true;
        else
            return false;
    }

    public String getEventNumber() {
        return eventNum;
    }

    public String getContactPhone(){
        return "(" + contact.substring(0, 3) + ")" + " "
                + contact.substring(3, 6) + "-"
                + contact.substring(6);
    }

    public int getNumOfGuests() {
        return numOfGuests;
    }

    public double getPrice() {
        return price;
    }

    public double getPricePerGuest(){
        return pricePerGuest;
    }

    public String getEventType(){
        return EVENT_TYPES[eventType];
    }
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~

import java.util.Scanner;
public class EventDemo {

    public static void main(String[] args) {

        final int SIZE = 8;
        Event[] event = new Event[SIZE];

        for (int i = 0; i < event.length; ++i) {
            Event e = new Event();
            System.out.println("Event #" + (i + 1) + ": ");
            e.setEventNumber();
           e.setEventType(i);
            e.setNumOfGuests();
            e.setContactPhone();
            System.out.println("");
            event[i] = e;
        }

        for (Event e : event) {
            display(e);
        }
        boolean flag = true;
        int choice;

        Scanner input = new Scanner(System.in);

        do {
            System.out.println("Enter 1: Sort by event number " +
                    "Enter 2: Sort by number of guests Enter 3: Sort by event type Enter 0: To exit program");
            System.out.println("");
            System.out.print("Enter your choice: ");
            choice = input.nextInt();
            if (choice == 0)
                flag = false;
            else if (choice == 1) {
                sortByEventNumber(event);
                for (Event e : event)
                    display(e);
            } else if (choice == 2) {
                sortByNumberOfGuests(event);
                for (Event e : event)
                    display(e);
            } else if (choice == 3) {
                sortByEventType(event);
                for (Event e : event)
                    display(e);
            } else
                System.out.println("You entered an invalid choice. Please try again.");

        } while (flag);
    }

    public static void display(Event e) {
        System.out.println("Event number: " + e.getEventNumber());
        System.out.println("Event type: " + e.getEventType());
        System.out.println("Total guests: " + e.getNumOfGuests());
       System.out.println("Contact phone number: " + e.getContactPhone());
        System.out.println("Total price per guest: $" + String.format("%.2f", e.getPricePerGuest()));
        System.out.println("Total price: $" + String.format("%.2f", e.getPrice()));
        System.out.println("Large event: " + e.isLargeEvent());
        System.out.println("");
    }

    public static void sortByEventNumber(Event event[]) {
        Event tempevent;
        for (int i = 0; i < event.length; ++i) {
            for (int x = i + 1; x < event.length; ++x) {
                if (event[i].getEventNumber().trim().compareTo(event[x].getEventNumber().trim()) > 0) {
                    tempevent = event[i];
                    event[i] = event[x];
                    event[x] = tempevent;
                }
            }
        }
    }

    public static void sortByNumberOfGuests(Event event[]) {
        Event tempevent;
        for (int i = 0; i < event.length; ++i) {
            for (int x = i + 1; x < event.length; ++x) {
                if (event[i].getNumOfGuests() > event[x].getNumOfGuests()) {
                    tempevent = event[i];
                    event[i] = event[x];
                    event[x] = tempevent;
                }
            }
        }
    }

    public static void sortByEventType(Event event[]) {
        Event tempevent;
        for (int i = 0; i < event.length; ++i) {
            for (int x = i + 1; x < event.length; ++x) {
                if (event[i].getEventType().trim().compareTo(event[x].getEventType().trim()) > 0) {
                    tempevent = event[i];
                    event[i] = event[x];
                    event[x] = tempevent;
                }
            }
        }
    }
}

Explanation / Answer

//DinnerEvent.java

public class DinnerEvent extends Event{
// include four new integer fields that represent numeric choices for an entrée,
//two side dishes, and a dessert for each DinnerEvent object
int entree;
int sideDish1;
int sideDish2;
int dessert;
/*
include three final arrays that contain String menu options for entrées,
side dishes, and desserts, and store at least three choices in each array.
*/
final String entrees[]=new String[]{"Rice with chapathi","Briyani","Aloo Paratha"};
final String sideDishes[]=new String[]{"Fish fry","Dragon chicken","Grilled Chicken"};
final String desserts[]=new String[]{"Ice cream","Falooda","Orange Juice"};
// DinnerEvent constructor that requires arguments for an event number and number of guests,
//and integer menu choices for one entrée, two side dishes, and one dessert.
public DinnerEvent(String eventNum,int numGuests,int entre,int side1,int side2,int des )
{
//Pass the first two parameters to the Event constructor
super(eventNum, numGuests);
//assign the last four parameters to the appropriate local fields.
entree=entre;
sideDish1=side1;
sideDish2=side2;
dessert=des;
}
//include a getMenu() method that builds and returns a String
//including the Strings for the four menu choices
public static String getMenu()
{
return "1. Entree 2. Side dish1 3. Side dish3 4. Dessert";
}

public int getEntree()
{
return entree;
}
public int getSideDish1()
{
return sideDish1;
}
public int getSideDish2()
{
return sideDish2;
}
public int getDessert()
{
return dessert;
}
}

//----------------------------------------------------------------

//Event.java
import java.util.Scanner;

public class Event {

public final static double LOWER_PRICE_PER_GUEST = 32.00;
public final static double HIGHER_PRICE_PER_GUEST = 35.00;
public final static int CUTOFF_VALUE = 50;

public final String EVENT_TYPES[] = {
"wedding", "baptism", "birthday", "corporate" , "other"
};

public int eventType;
public boolean largeEvent;
private String eventNum;
private int numOfGuests;
private double price;
private double pricePerGuest;
private String contact;
private Scanner input = new Scanner(System.in);

public Event(String event, int guests) {
eventNum = event;
numOfGuests = guests;
}

public Event() {
this("A000", 0);
}


public void setEventNumber() {
System.out.print("What is the event number? ");
eventNum = input.nextLine();

if (eventNum.length() != 4)
eventNum="A000";

if (eventNum.length() == 4
&& Character.isLetter(eventNum.charAt(0))
&& Character.isDigit(eventNum.charAt(1))
&& Character.isDigit(eventNum.charAt(2))
&& Character.isDigit(eventNum.charAt(3))){
}else{
eventNum = "A000";
}
eventNum = eventNum.toUpperCase();
}

public void setEventType(int i){
System.out.print("What is the event type? ");
i = input.nextInt();
if(i < EVENT_TYPES.length)
eventType = i;
else
eventType = EVENT_TYPES.length - 1;
}

public void setNumOfGuests() {

do {
System.out.print("How many guests are attending the event? ");
numOfGuests = input.nextInt();
input.nextLine();
if (numOfGuests < 5 || numOfGuests > 100) {
System.out.println("The number of guests must be between 5 and 100 ");
}else{
break;
}
}while (true);

if (isLargeEvent()) {
pricePerGuest = LOWER_PRICE_PER_GUEST;
}else{
pricePerGuest = HIGHER_PRICE_PER_GUEST;
}
largeEvent = (numOfGuests >= CUTOFF_VALUE);
price = numOfGuests * pricePerGuest;
}

public void setContactPhone() {
System.out.print("What is the contact phone number? ");
contact = input.nextLine();
contact = contact.replaceAll("[^0-9]", "");
if (contact.length() != 10)
contact = "0000000000";
}

public boolean isLargeEvent(){
if(this.getNumOfGuests() >= 50)
return true;
else
return false;
}

public String getEventNumber() {
return eventNum;
}

public String getContactPhone(){
return "(" + contact.substring(0, 3) + ")" + " "
+ contact.substring(3, 6) + "-"
+ contact.substring(6);
}

public int getNumOfGuests() {
return numOfGuests;
}

public double getPrice() {
return price;
}

public double getPricePerGuest(){
return pricePerGuest;
}

public String getEventType(){
return EVENT_TYPES[eventType];
}
}

//-------------------------------------------------------------------------------------

//DinnerEventDemo.java
import java.util.Scanner;

public class DinnerEventDemo {

public static void main(String[] args) {

final int SIZE = 4;
Scanner input=new Scanner(System.in);
int choice;
DinnerEvent[] dinnerEvent = new DinnerEvent[SIZE];

for (int i = 0; i < dinnerEvent.length; ++i) {
int entre;
int side1;
int side2;
int des;
System.out.println("Enter the event number: ");
String eventNum=input.next();
System.out.println("Enter the Number of guests: ");
int numGuests=input.nextInt();
System.out.println("Input entree <1-3>: ");
entre=input.nextInt();
System.out.println("Input side dish1<1-3>: ");
side1=input.nextInt();
System.out.println("Input side dish2<1-3>: ");
side2=input.nextInt();
System.out.println("Input side dessert<1-3>: ");
des=input.nextInt();
DinnerEvent e = new DinnerEvent(eventNum, numGuests,entre,side1,side2,des);
dinnerEvent[i] = e;
}
System.out.println(" List of dinner events: ");
for (DinnerEvent e : dinnerEvent) {
display(e);
}
boolean flag = true;
int ch;

do {
System.out.println("Enter 1: Sort by event number " +
"Enter 2: Sort by number of guests Enter 3: Sort by event type Enter 0: To exit program");
System.out.println("");
System.out.print("Enter your choice: ");
choice = input.nextInt();
if (choice == 0)
flag = false;
else if (choice == 1) {
sortByEventNumber(dinnerEvent);
for (DinnerEvent e : dinnerEvent)
display(e);
} else if (choice == 2) {
sortByNumberOfGuests(dinnerEvent);
for (DinnerEvent e : dinnerEvent)
display(e);
} else if (choice == 3) {
sortByEventType(dinnerEvent);
for (DinnerEvent e : dinnerEvent)
display(e);
} else
System.out.println("You entered an invalid choice. Please try again.");

} while (flag);
}

public static void display(DinnerEvent e) {
System.out.println("Event number: " + e.getEventNumber());
System.out.println("Event type: " + e.getEventType());
System.out.println("Total guests: " + e.getNumOfGuests());
System.out.println("Contact phone number: " + e.getContactPhone());
System.out.println("Total price per guest: $" + String.format("%.2f", e.getPricePerGuest()));
System.out.println("Total price: $" + String.format("%.2f", e.getPrice()));
System.out.println("Large event: " + e.isLargeEvent());
  
System.out.println("Food Type");
System.out.println("Entree: "+e.getEntree());
System.out.println("Side dish1: "+e.getSideDish1());
System.out.println("Side dish2: "+e.getSideDish2());
System.out.println("Dessert: "+e.getDessert());
}

public static void sortByEventNumber(DinnerEvent event[]) {
DinnerEvent tempevent;
for (int i = 0; i < event.length; ++i) {
for (int x = i + 1; x < event.length; ++x) {
if (event[i].getEventNumber().trim().compareTo(event[x].getEventNumber().trim()) > 0) {
tempevent = event[i];
event[i] = event[x];
event[x] = tempevent;
}
}
}
}

public static void sortByNumberOfGuests(DinnerEvent event[]) {
DinnerEvent tempevent;
for (int i = 0; i < event.length; ++i) {
for (int x = i + 1; x < event.length; ++x) {
if (event[i].getNumOfGuests() > event[x].getNumOfGuests()) {
tempevent = event[i];
event[i] = event[x];
event[x] = tempevent;
}
}
}
}

public static void sortByEventType(DinnerEvent event[]) {
DinnerEvent tempevent;
for (int i = 0; i < event.length; ++i) {
for (int x = i + 1; x < event.length; ++x) {
if (event[i].getEventType().trim().compareTo(event[x].getEventType().trim()) > 0) {
tempevent = event[i];
event[i] = event[x];
event[x] = tempevent;
}
}
}
}
}