Project 2 – On-Line Mortgage Calculator
In this project you will write a client/server application that implements a mortgage calculator. The mortgage calculator should be designed to handle the three scenarios described below. The formulas you will need as well as a sample calculation are also provided on the following pages.
Scenarios Handled by the Mortgage Calculator
Scenario 1: Determine Monthly Payments for a Loan In this scenario the user provides the following information 1. Loan amount 2. Annual interest rate 3. Number of years in which to pay off the loan 4. Number of payments that will be made in each year The calculator should then display the following information: 1. Amount of each payment 2. Total interest paid over the life of the loan 3. Total amount of money paid for the loan
Scenario 2: Determine the Number of Years Required to Pay Off a Loan In this scenario, the user provides the following information: 1. Loan amount 2. Annual interest rate 3. Amount of each payment 4. Number of payments that will be made each year The calculator should then display the following information: 1. Number of years required to pay off the loan 2. Total interest paid over the life of the loan 3. Total amount of money paid for the loan
Scenario 3: Determine a Loan Amount In this scenario, the user provides the following information: 1. Annual interest rate 2. Amount of each payment 3. Number of payments that will be made each year 4. Number of years in which the loan will be paid off The calculator should then display the following information: 1. Amount of a loan that these payments will cover 2. Total interest paid over the life of the loan 3. Total amount of money paid for the loan
Requirements
1. Stand-Alone Mortgage Calculator a. Write a class called MortgageCalculator that handles the three required scenarios. You will need to write additional wrapper classes in order the return the results for each scenario. b. Write a class with a main method that provides a user interface for the mortgage calculator. This can be a simple text-base interface. A sample execution might look something like this: Welcome to the mortgage Calculator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ What do 1. 2. 3. you want to do? Calculate Monthly Payments Calculate Years To Pay Off A Loan Determine A Loan Amount
Selection: 2 Selection 2 - Calculate Years To Pay Off A Loan Enter Loan Amount: 135000 Enter Annual Interest Rate: 6 Enter Amount Of Each Payment: 804 Enter Number Of Payments Per Year: 12 Results: Number Of Years Required To Pay Loan: 30.57 Total Interest Paid: $ 706,395 Total Amount Paid: $ 841,395 c. Note: This part of project 2 is not a client/server application. It is simply a stand-alone application the implements the logic of the mortgage calculator and provides a user interface.
2.
Client/Server Mortgage Calculator a. In this part of the project you will write the client and server classes for the mortgage calculator. You should write one class called CalculatorClient and another class celled CalculatorServer. These classes can use the following protocol, which correspond to our three scenarios: Client Request PAYMENT loanAmount rate years payments YEARS loanAmount rate paymentAmount payments AMOUNT rate paymentAmount payments years b. Server Response paymentAmount interestPaid totalPaid years interestPaid totalPaid loanAmount interestPaid totalPaid
The CalculatorServer class should use the MortgageCalculator class you wrote for part 1. It accepts requests from the CalculatorClient class, determines the correct response by using the MortgageCalculator class, then sends the response to back to the CalculatorClient class. Write a class with a main method that provides a user interface for the client/server version of the mortgage calculator. This interface can be exactly the same as the user interface you created in part 1. However, now the user interface will be interacting with the CalculatorClient class, rather than with the MortgageCalculator class.
c.
3.
Replace the text-base user interface with a graphical user interface.
Required Formulas
There are three basic formulas you will need to write the application logic for the mortgage calculator.
fv = pv × (1 + intPeriod ) fv = pmt ×
numPeriods
(1)
(1 + intPeriod )numPeriods − 1
intPeriod
(2)
totalIntPa id = fv − pv
Where: pv = Loan amount (present value) fv = Total amount paid to the bank (future value) intPeriod = Interest rate per period numPeriods = Number of periodic payments made pmt = Amount of each periodic payment totalIntPaid = Total interest paid
(3)
Using these equations, along with some algebra, the following useful equations can be obtained:
pmt =
fv × intPeriod (1 + intPeriod)numPeriods − 1
intPeriod × pv Log 1 − pmt numPeriods = (− 1) × Log (1 + intPeriod ) pmt pmt − (1 + intPeriod )numPeriods pv = intPeriod
Example Calculations
Scenario 1 - Determine Monthly Payments for a Loan Inputs 1) Loan amount = pv 2) Annual interest rate = intAnnual 3) Number of years = numYears 4) Payments per year = pmtsPerYear Outputs 1) Amount of each payment = pmt 2) Total interest paid = totalIntPaid 3) Total amount paid = fv Get Inputs & Calculate values needed to use formulas (1) and (2) pv = $100,000 intAnnual = 5% numYears = 30 pmtsPerYear = 12
Determine number of periods
Determine interest per period
Calculate Total Amount Paid This is obtained from formula (1)
Calculate Total Interest Paid This is obtained from formula (3). We can do this since pv is an input and we calculated fv in the previous step.
Calculate Amount of Each Payment We need to solve formula (2) for pmt
Scenario 2 - Determine Number of Years to Pay Off a Loan Inputs 1) Loan amount = pv 2) Annual interest rate = intAnnual 3) Amount of each payment = pmt 4) Payments per year = pmtsPerYear Outputs 1) Number of years to pay off the loan = numYears 2) Total interest paid = totalIntPaid 3) Total amount paid = fv Get Inputs & Calculate values needed to use formulas (1) and (2) The inputs: pv = $100,000 intAnnual = 5% pmt = 536.82 pmtsPerYear = 12
Determine interest per period
Calculate Number of Years to Pay Off Loan Using formulas (1) and (2) solve for number of periods to pay off loan
Convert that to years
Calculate Total Amount Paid This is obtained from formula (1)
Calculate Total Interest Paid This is obtained from formula (3)
Scenario 3 - Determine Loan Amount Inputs 1) Amount of each payment = pmt 2) Annual interest rate = intAnnual 3) Payments per year = pmtsPerYear 4) Number of Years = numYears Outputs 1) The amount of the loan I can afford = pv 2) Total interest paid = totalIntPaid 3) Total amount paid = fv Get Inputs & Calculate values needed to use formulas (1) and (2) The inputs: pmt = 536.82 intAnnual = 5% pmtsPerYear = 12 numYears = 30
Determine number of periods
Determine interest per period
Calculate Loan Amount Using formulas (1) and (2) solve for present value
Calculate Total Amount Paid This is obtained from formula (1)
Calculate Total Interest Paid This is obtained from formula (3)