Project Description:
This Java programming exercise involves creating a Fraction
class to represent and manipulate mathematical fractions using object-oriented programming principles. The class includes private attributes for the numerator and denominator, constructors for initialization, getter and setter methods, and arithmetic operations such as addition, subtraction, multiplication, and division. It also features a properFraction
method to convert improper fractions into mixed numbers, and a toString
method for formatted output. A separate Main
class is used to test various operations on Fraction
objects. This project demonstrates key OOP concepts like encapsulation, constructors, and method overloading in Java.
Reservation
Calculator
Enter
the arrival month (1-12): 5
Enter
the arrival day (1-31): 16
Enter
the arrival year: 2018
Enter
the departure month (1-12): 5
Enter
the departure day (1-31): 18
Enter
the departure year: 2018
Arrival
Date: May 16, 2018
Departure
Date: May 18, 2018
Price:
$145.00 per night
Total
price: $290.00 for 2 nights
Continue?
(y/n): n
Bye!
Specifications
Create a class named Reservation that
defines a reservation. This class should contain instance variables for
the arrival date and departure date. It should also contain a constant
initialized to the nightly rate of $145.00.
The Reservation class should include
the following methods:
- public LocalDate getArrivalDate()
- public String getArrivalDateFormatted()
- public setArrivalDate(LocalDate arrivalDate)
- public LocalDate getDepartureDate()
- public String getDepartureDateFormatted()
- public setDepartureDate(LocalDate departureDate)
- public int getNumberOfNights()
- public String getPricePerNightFormatted()
- public double getTotalPrice()
- public String getTotalPriceFormatted()
Assume that the dates are
valid and that the departure date is after the arrival date. You must
allow the user to enter the date in the MM/DD/YYYY format.
Reservation
class
Create
a class named Reservation that defines a reservation
This
criterion is linked to a Learning OutcomeInstance variables
Reservation
class should contain instance variable for the arrival date.
Reservation
class should contain instance variable for the departure date.
Nightly
rate constant
Reservation
class should also contain a constant initialized to the nightly rate of
$145.00.
Entry
format for dates
Allow
the user to enter the date in the MM/DD/YYYY format.
This
criterion is linked to a Learning Outcomepublic instance methods
The
Reservation class should include the following methods:
Answer
import
java.util.Scanner;
import
java.time.LocalDate;
import
java.time.temporal.ChronoUnit;
import
java.text.DecimalFormat;
public
class Reservation {
static
LocalDate arrival ;
static
LocalDate departure;
final
double nightly_rate = 145.0;
public
static void main(String[] args) {
Scanner
input = new Scanner(System.in);
//
variables
String
cont = "";
int
monthar ,monthdep ;
int
dayar , daydep ;
int
yearar , yeardep ;
//
instance object
Reservation
reserv = new Reservation();
while(!cont.equals("n")){
System.out.println("\nReservation
Calculator");
//arrival
System.out.print("Enter
the arrival month (1-12): ");
monthar
= input.nextInt();
System.out.print("Enter
the arrival day (1-31): ");
dayar
= input.nextInt();
System.out.print("Enter
the arrival year: ");
yearar
= input.nextInt();
arrival
= LocalDate.of(yearar, monthar, dayar);
//departure
System.out.print("Enter
the departure month (1-12): ");
monthdep
= input.nextInt();
System.out.print("Enter
the departure day (1-31): ");
daydep
= input.nextInt();
System.out.print("Enter
the departure year: ");
yeardep
= input.nextInt();
departure
= LocalDate.of(yeardep, monthdep, daydep);
//
Arrive
System.out.println(reserv.getArrivalDateFormatted());
//Departure
System.out.println(reserv.getDepartureDateFormatted());
//PricePerNight
System.out.println(reserv.getPricePerNightFormatted());
//TotalPrice
System.out.println(reserv.getTotalPriceFormatted()
);
System.out.print
("Continue? (y/n): " );
cont
= input.next();
}//
end while
System.out.println("Bye!"
);
}
// end main
public
LocalDate getArrivalDate(){
return
arrival ;
}
public
String getArrivalDateFormatted(){
return
"Arrival Date: "+arrival.getMonth() +"
"+arrival.getDayOfMonth() +", " + arrival.getYear() ;
}
public
void setArrivalDate(LocalDate arrivalDate){
arrival
= arrivalDate ;
}
public
LocalDate getDepartureDate(){
return
departure ;
}
public
String getDepartureDateFormatted(){
return
"Departure Date: "+departure.getMonth() +"
"+departure.getDayOfMonth() +", " + departure.getYear() ;
}
public
void setDepartureDate(LocalDate departureDate){
departure
= departureDate;
}
public
int getNumberOfNights(){
return
(int)ChronoUnit.DAYS.between(arrival, departure);
}
public
String getPricePerNightFormatted(){
DecimalFormat
df = new DecimalFormat("#0.00");
return
"Price: $"+df.format(nightly_rate) + " per night";
}
public
double getTotalPrice(){
return
nightly_rate * getNumberOfNights();
}
public
String getTotalPriceFormatted(){
//Total
price: $290.00 for 2 nights
DecimalFormat df = new
DecimalFormat("#0.00");
return "Total price: $" +
df.format( getTotalPrice() )+" for "+ getNumberOfNights()+ "
nights";
}
}// end class