Java Reservation System: Calculate Total Price and Stay Duration Using LocalDate

 

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.

Java Reservation System: Calculate Total Price and Stay Duration Using LocalDate


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


 📩 Need a similar solution? Email me: adel455@hotmail.com





 

Previous Post Next Post

Comments

Nepali Graphics - Learn design, Animation, and Progrmming