Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

CIS 221 PA6 - Loan Calculator Enhancement Introduction You are a systems analyst working with a company that provides loans to customers. Your manager has

CIS 221 PA6 - Loan Calculator Enhancement

Introduction

You are a systems analyst working with a company that provides loans to customers. Your manager has asked you to enhance and correct an existing Loan Calculator program, which is designed to calculate monthly and total payments given the loan amount, the annual interest rate, and the duration of the loan. Although the current version of the program (hereby termed the As Is version) has some functionality, there are several missing pieces, and the user would like to see significant improvements. Also, the program has some bugs that need to be fixed. After a requirements elicitation session (see https://en.wikipedia.org/wiki/Requirements_elicitation), you have uncovered the following facts about the As Is version, and you are prepared to work with this existing program and create the enhanced version (hereby termed the To Be version). image text in transcribed

Note: the as-is program is Listing 9.11 LoanCalculator.py, which is described in section 9.7 of the textbook. The existing code is available in the PA6 Assignment download the code for a starting point.

The requirements are discussed below.

The As Is System

In its current state, the program takes user input in the form of an annual interest rate, number of years, and total loan amount. It displays the calculated monthly payment, and the calculated total payment. This image shows an example.

image text in transcribed

This is fine as far as it goes. But it has a glitch. For example, if the user fails to enter proper numeric values, the program aborts with an ugly message like this:

Users are very annoyed when they see this, and they have to restart the program in order to continue their work.

Also, the program is incomplete. There is more functionality that the users want, which is described below.

The To Be System

The users would like additional functionality to the program, and also some corrections.

First, your program should handle exceptions more gracefully. Rather than the ugly situation described above, an error message should appear telling the user what correction to make. For example, if the user clicks the calculate button without having proper input data entered, you should display a dialog like this:

image text in transcribed

Second, the program should include an amortization schedule. This should be displayed in a Text widget. This screens shows an example of what would appear given user input:

image text in transcribed

Note: for hints on how to calculate the amortization schedule, see problem 5.24 on page 162 of your textbook. Instead of printing as shown in the algorithm on page 162, you will either concatenate to a string or insert into the Text widget.

Note also that the interest, monthly payment, and total payment values are shown in currency format. In order to make these amounts show up with correct currency format, make use of Pythons locale module: https://docs.python.org/2/library/locale.html. Use Google to find out how you can do this.

Finally, we want to be able to save the loan report to a file (note the extra button in the figure shown above). If the user clicks the Save button, prompt the user to enter the loan recipients name using a dialog, as shown below:

image text in transcribed

When the user enters the name, write to a file named using the given name. The new file will include data shown as below:

image text in transcribed

In addition to the proper functioning program, please also include a modified UML diagram. The original UML diagram is shown below and is discussed in Ch 9 of the text. The modified UML diagram will include any additional methods you wrote to accomplish your programming task.

image text in transcribed

Final Deliverables:

Zip together the modified Python program and the modified UML diagram; upload the zip file to Canvas. Test the program to make sure what youre turning in works correctly (download what you uploaded on a different computer and run the program).

Here is the code that goes along with the program

from tkinter import * # Import tkinter class LoanCalculator: def __init__(self): window = Tk() # Create a window window.title("Loan Calculator") # Set title Label(window, text = "Annual Interest Rate").grid(row = 1, column = 1, sticky = W) Label(window, text = "Number of Years").grid(row = 2, column = 1, sticky = W) Label(window, text = "Loan Amount").grid(row = 3, column = 1, sticky = W) Label(window, text = "Monthly Payment").grid(row = 4, column = 1, sticky = W) Label(window, text = "Total Payment").grid(row = 5, column = 1, sticky = W) self.annualInterestRateVar = StringVar() Entry(window, textvariable = self.annualInterestRateVar, justify = RIGHT).grid(row = 1, column = 2) self.numberOfYearsVar = StringVar() Entry(window, textvariable = self.numberOfYearsVar, justify = RIGHT).grid(row = 2, column = 2) self.loanAmountVar = StringVar() Entry(window, textvariable = self.loanAmountVar, justify = RIGHT).grid(row = 3, column = 2) self.monthlyPaymentVar = StringVar() lblMonthlyPayment = Label(window, textvariable = self.monthlyPaymentVar).grid(row = 4, column = 2, sticky = E) self.totalPaymentVar = StringVar() lblTotalPayment = Label(window, textvariable = self.totalPaymentVar).grid(row = 5, column = 2, sticky = E) btComputePayment = Button(window, text = "Compute Payment", command = self.computePayment).grid( row = 6, column = 2, sticky = E) window.mainloop() # Create an event loop

def computePayment(self): monthlyPayment = self.getMonthlyPayment( float(self.loanAmountVar.get()), float(self.annualInterestRateVar.get()) / 1200, int(self.numberOfYearsVar.get())) self.monthlyPaymentVar.set(format(monthlyPayment, '10.2f')) totalPayment = float(self.monthlyPaymentVar.get()) * 12 \ * int(self.numberOfYearsVar.get()) self.totalPaymentVar.set(format(totalPayment, '10.2f')) def getMonthlyPayment(self, loanAmount, monthlyInterestRate, numberOfYears): monthlyPayment = loanAmount * monthlyInterestRate / (1 - 1 / (1 + monthlyInterestRate) ** (numberOfYears * 12)) return monthlyPayment;

thanks!

Loan Calculator Annual Interest Rate Number of Years Loan Amount Monthly Payment Total Payment 8.5 10 10000 123.99 14878.80 Compute Payment

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Design For Mere Mortals

Authors: Michael J Hernandez

4th Edition

978-0136788041

More Books

Students also viewed these Databases questions

Question

What are the Five Phases of SDLC? Explain each briefly.

Answered: 1 week ago

Question

How can Change Control Procedures manage Project Creep?

Answered: 1 week ago