Microsoft Word - F2019_HW5.docx CIS331 – Fall 2019 Homework #5 – DukeLoanSystem General Overview: An amortization schedule shows the month‐to‐month state of a loan as a...

I am wondering if anyone can help me on this assignment. I am struggling on methods. This is a very simple basic Java Class so no coding of advance. I only know the basic strings, methods, and just learned arrays.


Microsoft Word - F2019_HW5.docx CIS331 – Fall 2019  Homework #5 – DukeLoanSystem    General Overview:  An amortization schedule shows the month‐to‐month state of a loan as a  payee makes payments on interest and principle. Generally, your program will allow you to  create loans for multiple people, and store these amortization tables in a 3‐dim array.     Due Date:      Saturday, October 26th by 11:59 p.m.    Grade:   80 Homework Points    Program output is at the end of this Requirements Document.    Requirements and Grading Rubric: This is a complex program that will test your knowledge on  all concepts we have covered so far. You will be working with Methods, as well as with Multi‐ dimensional arrays in this assignment. Make sure you understand all the major concepts from  these chapters and the associated in‐class lectures.    ‐ At a minimum, you must implement the methods as listed in the Pseudocode below.  You may create more if you wish/need.   ‐ Your program contains no compile or run‐time errors.  ‐ Loan customer names must be stored in the two‐dimensional array nameTable (as  shown below). Customer amortization schedules must be stored in the three  dimensional array amortDB (as shown below)  ‐ The populateAmort() method must be able to handle any loan, interest, and lifetime  inputs, along with references to the amortDB and nameTable arrays, and the input of  what position in the amortDB to store the new schedule at.  You will account for both  printing it to the screen and storing the data for each amortization schedule in the  three‐dimensional array appropriately.  ‐ Your program must not contain any logic errors. You must properly traverse the two and  three‐dimensional arrays that store your customer data.   o When adding a new customer, you must split and reverse their name using the  splitName() method, and add this at a new empty position in the nameTable[][]  array (Meaning, you will write the code that will traverse the array searching for  a new empty spot, and once found, the lastname and firstname will be inserted  into this empty spot at column locations 0 and 1, respectively.  o When adding a new loan schedule for a new customer, you will add the new  schedule at the same position in the amortDB[][][] array that you added the new  name at in the nameTable[][] array. Meaning: These two arrays will be parallel to  each other. If you have three names in nameTable then there should be three  schedules stored in amortDB[][][], and at positions 0, 1, and 2 in each,  respectively. populateAmort() should be used for generating the new schedule  and saving it into amortDB[][][]   o When updating/changing a schedule for a customer, you will call  populateAmort() at the position you are updating and have it run using the new  loan, APR, or lifetime figures, and it will re‐populate the amortization schedule at  that location (overwriting the old values for the new at the pre‐existing position).    Method Hierarchy: (Solid Thin Arrows: Dependencies)                          Listing of main(): (This is all the code you should have in your main() method)    handleLoanMenuChoice()  addLoan()  adjustLoan()  printAmort()  splitName()  nameTableFreePosition()  populateAmort()  chooseCustomer()  Program will loop at menu  after all processing unless  user chooses “Exit” option  Pseudocode for each method:  Here I am giving you the actual Method Definition’s Header that will use in your code, then I  give you some pseudocode for how each method will work. Take note of the parameters passed  in and any return values for the methods. Your parameters will tell you what data/value inputs  you can see and work with in each method. Your return types (if not ‘void’) will tell you what you  need to send back to the calling code.    public static void handleLoanMenuChoice(int menuChoice,              double[][][] amortDB,              String[][] nameTable)    Swtich on menu choice.  {    Case 1: call addLoan(…);    Case 2: call adjustLoan(…);    Case 3: call printAmort(…chooseCustomer() );    Default: Prompt for invalid menu choice.  }    public static void printAmort(double[][][] amortDB,              String[][] nameTable, int amortTablePosition)    (Accepts the position of the amortization table to print as a parameter input)  Print out “Amortization schedule for” with lastname, firstname concatenanted on end.  Print out schedule column headers    for (i=0; i< length of nametable)     less than number of rows in nametable ="" { =""  ="" if (the lastname at nametable[sentinel value] is equal to null) =""  =""  ="" break; =""  ="" print out the firstname and lastname from nametable[sentinel value] =""  ="" increment the sentinel value ="" } ="" prompt for and capture the user choice ="" return the user choice as the integer return value for this method. =""  ="" [next page ‐‐‐‐="">]    Thinking about nameTable[1000][2] and amortDB[1000][][] arrays:        nameTable[rows][cols]:    amortDB[tables][rows][cols]       0 1 0 "Ezell" "Jeremy" 1 "Madison""James" 2 null null . . . . . . . . . 1000 null null 0 1 2 0 58.33 806.93 9193.07 1 53.63 811.64 8381.42 2 48.89 816.38 7565.05 3 44.13 821.14 6743.91 4 39.34 825.93 5917.98 5 34.52 830.75 5087.24 6 29.68 835.59 4251.65 7 24.8 840.47 3411.18 8 19.9 845.37 2565.81 9 14.97 850.3 1715.51 10 10.01 855.26 860.25 11 5.02 860.25 0 0 1 2 0 7.44 145.45 1640.55 1 6.84 146.06 1494.49 2 6.23 146.67 1347.82 3 5.62 147.28 1200.54 4 5 147.89 1052.65 5 4.39 148.51 904.14 6 3.77 149.13 755.01 7 3.15 149.75 605.26 8 2.52 150.37 454.89 9 1.9 151 303.89 10 1.27 151.63 152.26 11 0.63 152.26 0 [0]  [1]  ‐ If I refer to amortDB[1][0][0] then I am referring to the specific value 7.44 (try it above!)  ‐ If I refer to amortDB[1] then I am referring to the entire second table.  ‐ If I refer to amortDB[1][0] then I am referring to the first single‐dimension double[] array on  the second table {7.44, 145.45, 1640.55}.  ‐ When you call addLoan() and you tell it to add a customer at position 2, this means that the  lastname and first name will be added at nameTable[2] in the first and second colulmn, and  you will add the new customer’s amortization schedule at amortDB[2].  ‐ Notice in the two examples above, the amortization schedules both have 12 months. How  would you add a third that maybe has 180 months? How would I do a simple example of  this? Notice in the listing for main() above that when I create the amortDB object, that I only  initialize it with the pages dimension (double[][][] amortDB = new double[1000][][];).   amortDB[0] = new double[12][3];  // Creates an empty first table in amortDB[][][].  amortDB[1] = new double[12][3]; //  Creates an empty second table in amortDB[][][].  amortDB[2] = new double[180][3];  // adds an empty third page, but this one has 180 rows  instead of just 12 like in the first two.    Program Output:    Welcome to DukeLoanSystem!    ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  1. Add New Loan  2. Adjust Customer Loan  3. Print Loan Schedule  4. Exit Program  Enter Choice: 1  ====================  Enter Customer Name: Jeremy Ezell  Please enter amount of full loan principal: 10000  Please enter your Annual Interest Rate: 7  Please enter # of years of the loan: 1  Amortization Schedule for  Ezell, Jeremy  =========================================  Payment #:  Interest: Principal:  Balance:    1    58.33    806.93    9193.07    2    53.63    811.64    8381.42    3    48.89    816.38    7565.05    4    44.13    821.14    6743.91    5    39.34    825.93    5917.98    6    34.52    830.75    5087.24    7    29.68    835.59    4251.65    8    24.80    840.47    3411.18    9    19.90    845.37    2565.81   10    14.97    850.30    1715.51   11    10.01    855.26    860.25   12    5.02    860.25    0.00  =========================================    ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  1. Add New Loan  2. Adjust Customer Loan  3. Print Loan Schedule  4. Exit Program  Enter Choice: 1  ====================  Enter Customer Name: James Madison  Please enter amount of full loan principal: 1786  Please enter your Annual Interest Rate: 5.0  Please enter # of years of the loan: 1  Amortization Schedule for  Madison, James  =========================================  Payment #:  Interest: Principal:  Balance:    1    7.44    145.45    1640.55    2    6.84    146.06    1494.49    3    6.23    146.67    1347.82    4    5.62    147.28    1200.54    5    5.00    147.89    1052.65    6    4.39    148.51    904.14    7    3.77    149.13    755.01    8    3.15    149.75    605.26    9    2.52    150.37    454.89   10    1.90    151.00    303.89   11    1.27    151.63    152.26   12    0.63    152.26    ‐0.00  =========================================    ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  1. Add New Loan  2. Adjust Customer Loan  3. Print Loan Schedule  4. Exit Program  Enter Choice: 2  Please Choose a Customer:   ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  0:  Ezell, Jeremy  1:  Madison, James  ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  Choice?: 1  Please enter amount of full loan principal: 5000  Please enter your Annual Interest Rate: 5.0  Please enter # of years of the loan: 1  Amortization Schedule for  Madison, James  =========================================  Payment #:  Interest: Principal:  Balance:    1    20.83    407.20    4592.80    2    19.14    408.90    4183.90    3    17.43    410.60    3773.29    4    15.72    412.32    3360.98    5    14.00    414.03    2946.94    6    12.28    415.76    2531.18    7    10.55    417.49    2113.69    8    8.81    419.23    1694.46    9    7.06    420.98    1273.49   10    5.31    422.73    850.75   11    3.54    424.49    426.26   12    1.78    426.26    ‐0.00  =========================================    ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  1. Add New Loan  2. Adjust Customer Loan  3. Print Loan Schedule  4. Exit Program  Enter Choice: 3  Please Choose a Customer:   ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  0:  Ezell, Jeremy  1:  Madison, James  ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  Choice?: 0  Amortization Schedule for  Ezell, Jeremy  =========================================  Payment #:  Interest: Principal:  Balance:    1    58.33    806.93    9193.07    2    53.63    811.64    8381.42    3    48.89    816.38    7565.05    4    44.13    821.14    6743.91    5    39.34    825.93    5917.98    6    34.52    830.75    5087.24    7    29.68    835.59    4251.65    8    24.80    840.47    3411.18    9    19.90    845.37    2565.81   10    14.97    850.30    1715.51   11    10.01    855.26    860.25   12    5.02    860.25    0.00  =========================================    ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  1. Add New Loan  2. Adjust Customer Loan  3. Print Loan Schedule  4. Exit Program  Enter Choice: 4    Program Exiting. . .
Oct 25, 2021
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here