I. The Problem
A banking institution offers certificates of deposit (CD's) with a variety of interest rates, and maturities of 1, 3, 5, and 10 years. Interest is always compounded, daily, monthly, or quarterly.
Write a Java program that will compute the accumulated value (principal plus interest earned), at yearly intervals, of any number of such CD's. Assume that a year always consists of exactly 365 days.
Output will be a series of 10 annual reports:
1. Reports will be in table form with appropriate column headings. There will be one row of the table for each active CD, which will include all the data along with the accumulated value and total interest earned to date.
2. Each report will also print the total accumulated value of all active CDs, and total interest earned by all active CD’s to date.
3. Once a CD reaches maturity, it will stop earning interest and will not appear in any future reports. E.g., a CD with a maturity of 5 years will appear in the reports for years one through five, but not thereafter.
II. The CD Class
Begin by creating a class to model a CD. Each CD object "knows" its own principal, interest rate, maturity, and compounding mode (private instance variables). The class has “get” methods to return this data and a method to compute and return the accumulated value.
III. The CDList Class
Now create a class to maintain a list of CDs. You will need methods to add a CD to the list and to print an annual report.
IV. The Driver (i.e., "Test") Class
Your test class or "driver" class will read data for any number of CDs from a file that I will supply. Each line (i.e., “record”) of the file will contain the data – principal, interest rate (as an annual per cent), maturity, and compounding mode – for one CD.
Create a CD object from the data in each record of the file and add it to the list. Then print the reports.
V. Additional Specifications
1. Your CDList class must use an ArrayList as the principal (no pun intended) data structure.
2. Your test class is to read the data file one time only. No credit will be given for programs that read the data file more than once.
3. Make sure your program is well documented and adheres to the style conventions discussed in class.
The accumulated value (i.e., principal plus interest), A, is given by the formula:
A = p ( 1 + r / n)
p = principal
n = number of times compounded per year
r = annual interest rate, expressed as a decimal
t = elapsed time in years (not the maturity!)
Hint: The method that computes and returns the accumulated value requires one parameter – the elapsed time in years
IX. Extra Credit Opportunity
In each annual report, also compute and print the interest earned for that year for each CD, and the total interest earned for that year for all active CD’s.