Block of Code

Practical Examples for Programmers

  • Home
  • C++
  • Java
  • Visual Basic
  • Discrete Math
  • Ask a Question

Loan Calculator

The most common types of loans are mortgage loans, which are used to finance the purchase of a house, and car loans.  A loan consists of four components – amount, interest rate, duration, and periodic payment.  The purpose of this programming project is to calculate the value of any one of the components given the values of the other three components.

We will assume that the duration is in months, that interest (given as a percent) is compounded monthly, and that payments are made monthly.  Currently home mortgages typically have an interest rate of about 4% and a duration of 30 years (360 months).  Car loans typically have an interest rate of about 6% and a duration of between 3 and 5 years (36 to 60 months).

Four built-in Visual Basic financial functions that perform loan calculations are as follows:

Pmt(interest rate / 1200, duration, -amount) gives the monthly payment
1200 * Rate(duration, monthly payment, -amount) gives the stated interest rate
PV(interest rate / 1200, duration, -monthly payment) gives the amount of the loan
NPer(interest rate / 1200, monthly payment, -amount) gives the duration of the loan in months

Write a program in which the user specifies a value to calculate, enters three other values, and clicks on the Calculate Value button.  See the figure below for a possible outcome.  Before any calculations are made, the program should use a function to validate that a radio button is checked and that the values entered into the three text boxes corresponding to unchecked radio buttons are valid.

Loan Calculator

Hints:

When you are running the program, you should only check the radio button for the component that you are seeking to compute.  For example, if you want to calculate the monthly payment, the other three buttons must remain unchecked.  See the example above.

The equations above are built-in visual basic functions and must be used exactly as they are written above.

For the sake of simplicity, when you are entering the three pieces of information that you already have, be sure to enter them without punctuation.  For example, the amount of the loan should be entered as “14500” and not “$14,500”.  This will simplify the input validation process and prevent needing to code complex exception handlers, which we will learn about later.

Suggested Control Names and Attributes:

Name Property Text Property Control Type Notes
frmLoan Loan Calculator Form Holds Controls
radAmount Amount of Loan Radio Button Calculates amount of loan when selected.
radRate Interest Rate Radio Button Calculates the interest rate when selected.
radDuration Duration of Loan Radio Button Calculates the duration of loan when selected.
radPayment Monthly Payment Radio Button Calculates the monthly payment when selected.
btnCalculate  Calculate Value Button When triggered, relevant computation is performed.
btnClear Clear All Values Button When triggered, clears all values on the form.

Write the Code:

' Project: Loan Calculator
' Description:  Simulates a loan calculator.  Given three out of four values, program calculates the amount, interest rate
'   duration of loan or monthly payment.  

Public Class frmLoan
    Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
        ' Clears values of the text boxes
        txtAmount.Text = ""
        txtRate.Text = ""
        txtDuration.Text = ""
        txtPayment.Text = ""
    End Sub

    Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
        ' Evaluates input and displays calculations or error message
        If InputIsValid() = True Then
            CalculateValue()
        Else
            MessageBox.Show("You forgot to enter data in at least one box")
        End If
    End Sub

    Function InputIsValid() As Boolean
        ' Make sure input is valid

        ' Declare local variable
        Dim blank As Boolean = True ' variable to make sure there is valid input in unchecked text boxes

        ' Check to see if unchecked buttons have blank text boxes
        If (radAmount.Checked = True) Then
            blank = False
        ElseIf txtAmount.Text = "" Then
            blank = True
        End If
        If (radDuration.Checked = True) Then
            blank = False
        ElseIf txtDuration.Text = "" Then
            blank = True
        End If
        If (radPayment.Checked = True) Then
            blank = False
        ElseIf txtPayment.Text = "" Then
            blank = True
        End If
        If (radRate.Checked = True) Then
            blank = False
        ElseIf txtRate.Text = "" Then
            blank = True
        End If
        Return (blank = False)
    End Function

    Sub CalculateValue()
        ' calculate missing number
        If radAmount.Checked = True Then
            txtAmount.Text = PV(CDbl(txtRate.Text) / 1200, CDbl(txtDuration.Text), -CDbl(txtPayment.Text)).ToString("C")
        End If
        If radRate.Checked = True Then
            txtRate.Text = (1200 * Rate(CDbl(txtDuration.Text), CDbl(txtPayment.Text), -CDbl(txtAmount.Text))).ToString("N1")
        End If
        If radDuration.Checked = True Then
            txtDuration.Text = NPer(CDbl(txtRate.Text) / 1200, CDbl(txtPayment.Text), -CDbl(txtAmount.Text)).ToString("N0")
        End If
        If radPayment.Checked = True Then
            txtPayment.Text = Pmt(CDbl(txtRate.Text) / 1200, CDbl(txtDuration.Text), -CDbl(txtAmount.Text)).ToString("C")
        End If
    End Sub
End Class

Secondary Sidebar

This is the secondary sidebar

Copyright © 2025 · Metro Pro Theme on Genesis Framework · WordPress · Log in