首先,写出一个UML类图。
然后“头文件”处,写类的定义,名为 “Loan.h”。
#pragma once
class Loan
{
public:
Loan(); //默认构造函数
Loan(double rate, int years, double amount); //带参数的构造函数
double getAnnualInterestRate(); //返回贷款年利率
int getNumberOfYears(); //返回贷款年限
double getLoanAmount(); //返回贷款总额
void setAnnualInterestRate(double rate); //设置新的贷款年利率
void setNumberOfYears(int year); //设置新的贷款年限
void setLoanAmount(double amount); //设置贷款总额
double getMonthlyPayment(); //返回月还款总额
double getTotalPayment(); //返回总还款总额
private:
double annualInterestRate; //贷款的年利率
int numberOfYears; //贷款年限
double loanAmount; //贷款额
};
接着,在源文件处的“Loan.cpp”中,完成类的实现。
#include "pch.h"
#include "Loan.h"
#include <cmath>
using namespace std;
Loan::Loan()
{
annualInterestRate = 9.5;
numberOfYears = 30;
loanAmount = 100000;
}
Loan::Loan(double rate, int years, double amount)
{
annualInterestRate = rate;
numberOfYears = years;
loanAmount = amount;
}
double Loan::getAnnualInterestRate()
{
return annualInterestRate;
}
int Loan::getNumberOfYears()
{
return numberOfYears;
}
double Loan::getLoanAmount()
{
return loanAmount;
}
void Loan::setAnnualInterestRate(double rate)
{
annualInterestRate = rate;
}
void Loan::setNumberOfYears(int years)
{
numberOfYears = years;
}
void Loan::setLoanAmount(double amount)
{
loanAmount = amount;
}
double Loan::getMonthlyPayment()
{
double monthlyInterestRate = annualInterestRate / 1200;
return loanAmount * monthlyInterestRate / (1 - pow(1 / (1 + monthlyInterestRate), numberOfYears * 12));
}
double Loan::getTotalPayment()
{
return getMonthlyPayment() * numberOfYears * 12;
}
最后,完成测试函数“TestLoanClass.cpp”。
#include "pch.h"
#include <iostream>
#include <iomanip>
#include "Loan.h"
using namespace std;
int main()
{
cout << "Enter yearly interest rate, for example 8.25: "; // 输入贷款年利率
double annualInterestRate;
cin >> annualInterestRate;
cout << "Enter number of years as an integer, for example 5: "; //输入贷款年限
int numberOfYears;
cin >> numberOfYears;
cout << "Enter loan amount, for example 120000.95L "; //输入贷款额度
double loanAmount;
cin >> loanAmount;
Loan loan(annualInterestRate, numberOfYears, loanAmount); //创建对象
cout << fixed << setprecision(2);
cout << "The monthly payment is " << loan.getMonthlyPayment() << endl; //输出每月还款额
cout << "The total payment is " << loan.getTotalPayment() << endl; //输出总还款额
return 0;
}