**Please respond only if you can answer the whole question** ~~~~~~~~~~~~~~~~~~~
ID: 3576348 • 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
Solution:
The java program code is shown below;
//Include library
import java.util.Scanner;
//DinnerEvent.class
//Define class DinnerEvent
class DinnerEvent extends Event
{
//Declare variables
int entree;
int sideDish1;
int sideDish2;
int dessert;
//Define entrees
final String entrees[]=new String[]{"Rice with chapathi","Briyani","Aloo Paratha"};
//Define sideDishes
final String sideDishes[]=new String[]{"Fish fry","Dragon chicken","Grilled Chicken"};
//Define desserts
final String desserts[]=new String[]{"Ice cream","Falooda","Orange Juice"};
//Define DinnerEvent()
public DinnerEvent(String eventNum,int numGuests,int entre,int side1,int side2,int des )
{
//Pass parameters to Event constructor
super(eventNum, numGuests);
//Assign last 4 parameters to fields.
entree=entre;
sideDish1=side1;
sideDish2=side2;
dessert=des;
}
//Define getMenu()
public static String getMenu()
{
//Return menu
return "1. Entree 2. Side dish1 3. Side dish3 4. Dessert";
}
//Define getEntree()
public int getEntree()
{
//Return value
return entree;
}
//Define getSideDish1()
public int getSideDish1()
{
//Return value
return sideDish1;
}
//Define getSideDish2()
public int getSideDish2()
{
//Return value
return sideDish2;
}
//Define getDessert()
public int getDessert()
{
//Return value
return dessert;
}
}
//DinnerEventDemo.class
//Define class DinnerEventDemo
public class DinnerEventDemo
{
//Define main method
public static void main(String[] args)
{
//Declare variables
final int SIZE = 4;
Scanner input=new Scanner(System.in);
int choice;
DinnerEvent[] dinnerEvent = new DinnerEvent[SIZE];
//Loop until length
for (int i = 0; i < dinnerEvent.length; ++i)
{
//Declare variables
int entre;
int side1;
int side2;
int des;
//Receive user input
System.out.println("Enter the event number: ");
//Store value
String eventNum=input.next();
//Receive user input
System.out.println("Enter the Number of guests: ");
//Store value
int numGuests=input.nextInt();
//Receive user input
System.out.println("Input entree <1-3>: ");
//Store value
entre=input.nextInt();
//Receive user input
System.out.println("Input side dish1<1-3>: ");
//Store value
side1=input.nextInt();
//Receive user input
System.out.println("Input side dish2<1-3>: ");
//Store value
side2=input.nextInt();
//Receive user input
System.out.println("Input side dessert<1-3>: ");
//Store value
des=input.nextInt();
//create e
DinnerEvent e = new DinnerEvent(eventNum, numGuests,entre,side1,side2,des);
//Set value
dinnerEvent[i] = e;
}
//Display message
System.out.println(" List of dinner events: ");
//Loop until length
for (DinnerEvent e : dinnerEvent)
{
//Call display()
display(e);
}
//Set flag
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);
}
//Define method display()
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("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());
}
//Define sortByEventNumber()
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;
}
}
}
}
//Define sortByNumberOfGuests()
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;
}
}
}
}
//Define sortByEventType()
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;
}
}
}
}
}
//Define class Event
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"};
//Declare variables
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);
//Define Event()
public Event(String event, int guests)
{
eventNum = event;
numOfGuests = guests;
}
public Event()
{
this("A000", 0);
}
//Define setEventNumber()
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();
}
//Define setEventType()
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;
}
//Define setNumOfGuests()
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;
}
//Define setContactPhone()
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";
}
//Define isLargeEvent()
public boolean isLargeEvent()
{
if(this.getNumOfGuests() >= 50)
return true;
else
return false;
}
//Define getEventNumber()
public String getEventNumber()
{
return eventNum;
}
//Define getContactPhone()
public String getContactPhone()
{
return "(" + contact.substring(0, 3) + ")" + " "
+ contact.substring(3, 6) + "-"
+ contact.substring(6);
}
//Define getNumOfGuests()
public int getNumOfGuests()
{
return numOfGuests;
}
//Define getPrice()
public double getPrice()
{
return price;
}
//Define getPricePerGuest()
public double getPricePerGuest()
{
return pricePerGuest;
}
//Define getEventType()
public String getEventType()
{
return EVENT_TYPES[eventType];
}
}
//Define class EventDemo
class EventDemo
{
//Define main method
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);
//Define loop
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);
}
//Define display()
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("");
}
//Define sortByEventNumber()
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;
}
}
}
}
//Define sortByNumberOfGuests()
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;
}
}
}
}
//Define sortByEventType()
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;
}
}
}
}
}
Sample Output:
D:Program FilesJavajdk1.8.0_40in>javac DinnerEventDemo.java
D:Program FilesJavajdk1.8.0_40in>java DinnerEventDemo
Enter the event number:
1
Enter the Number of guests:
7
Input entree <1-3>:
2
Input side dish1<1-3>:
2
Input side dish2<1-3>:
3
Input side dessert<1-3>:
1
Enter the event number:
4
Enter the Number of guests:
5
Input entree <1-3>:
2
Input side dish1<1-3>:
1
Input side dish2<1-3>:
3
Input side dessert<1-3>:
2
Enter the event number:
2
Enter the Number of guests:
6
Input entree <1-3>:
2
Input side dish1<1-3>:
3
Input side dish2<1-3>:
1
Input side dessert<1-3>:
2
Enter the event number:
3
Enter the Number of guests:
4
Input entree <1-3>:
3
Input side dish1<1-3>:
3
Input side dish2<1-3>:
2
Input side dessert<1-3>:
1
List of dinner events:
Event number: 1
Event type: wedding
Total guests: 7
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 2
Side dish2: 3
Dessert: 1
Event number: 4
Event type: wedding
Total guests: 5
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 1
Side dish2: 3
Dessert: 2
Event number: 2
Event type: wedding
Total guests: 6
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 3
Side dish2: 1
Dessert: 2
Event number: 3
Event type: wedding
Total guests: 4
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 3
Side dish1: 3
Side dish2: 2
Dessert: 1
Enter 1: Sort by event number
Enter 2: Sort by number of guests
Enter 3: Sort by event type
Enter 0: To exit program
Enter your choice: 1
Event number: 1
Event type: wedding
Total guests: 7
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 2
Side dish2: 3
Dessert: 1
Event number: 2
Event type: wedding
Total guests: 6
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 3
Side dish2: 1
Dessert: 2
Event number: 3
Event type: wedding
Total guests: 4
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 3
Side dish1: 3
Side dish2: 2
Dessert: 1
Event number: 4
Event type: wedding
Total guests: 5
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 1
Side dish2: 3
Dessert: 2
Enter 1: Sort by event number
Enter 2: Sort by number of guests
Enter 3: Sort by event type
Enter 0: To exit program
Enter your choice: 2
Event number: 3
Event type: wedding
Total guests: 4
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 3
Side dish1: 3
Side dish2: 2
Dessert: 1
Event number: 4
Event type: wedding
Total guests: 5
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 1
Side dish2: 3
Dessert: 2
Event number: 2
Event type: wedding
Total guests: 6
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 3
Side dish2: 1
Dessert: 2
Event number: 1
Event type: wedding
Total guests: 7
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 2
Side dish2: 3
Dessert: 1
Enter 1: Sort by event number
Enter 2: Sort by number of guests
Enter 3: Sort by event type
Enter 0: To exit program
Enter your choice: 3
Event number: 3
Event type: wedding
Total guests: 4
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 3
Side dish1: 3
Side dish2: 2
Dessert: 1
Event number: 4
Event type: wedding
Total guests: 5
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 1
Side dish2: 3
Dessert: 2
Event number: 2
Event type: wedding
Total guests: 6
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 3
Side dish2: 1
Dessert: 2
Event number: 1
Event type: wedding
Total guests: 7
Total price per guest: $0.00
Total price: $0.00
Large event: false
Food Type
Entree: 2
Side dish1: 2
Side dish2: 3
Dessert: 1
Enter 1: Sort by event number
Enter 2: Sort by number of guests
Enter 3: Sort by event type
Enter 0: To exit program
Enter your choice: 0
D:Program FilesJavajdk1.8.0_40in>
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.