问题描述:
- 创建一个SavingAccount类。使用一个static数据成员annualnterestRate保存每个存款者目前存款金额。
- 该类提供成员函数calculateMonthlyInterest,它将余额乘以annualInterestRate再除以12来计算月利息,这个利息应该加到savingsBalance中。
- 该类还提供一个static成员函数modifylnterestRate,它将static的annualInterestRate设置为一个值。
- 编写一个驱动程序测试SavingsAccount类。
- 实例化SavingsAccount类的两个对象saverl和saver2,余额分别是$2000.00和$3000.00。
- 将annualInterestRate设置为3%,然后计算月利率并打印每个存款者的新余额。
- 接着再将annualInterestRate设置为4%,计算下一个月的利息并打印每个存款者的新余额。
下面我们将根据问题描述来编写程序。
1.首先我们创建一个static数据成员annualnterestRate保存每个存款者目前存款金额。
static float annualInterestRate;//保存每个存款者的年利率
注意:static数据成员是在类内声明,类外定义的,而缺乏类外的初始化,编译器则会报错。
2.利用构造函数对数据成员进行初始化。
SavingAccount(float savingBalance_,float annualInterestRate_)
{
savingBalance=savingBalance_;
annualInterestRate=annualInterestRate_;
}
3. 然后我们提供成员函数calculateMonthlyInterest,它将余额乘以annualInterestRate再除以12来计算月利息,而且应该把这个利息加到savingsBalance中。
float calculateMonthyInterest()//计算月利息
{
float monthyInterest;
monthyInterest = savingBalance*annualInterestRate;
savingBalance += monthyInterest/12;
return monthyInterest;
}
4.我们还要提供一个static成员函数modifylnterestRate,它将static的annualInterestRate设置为一个值。
static void modifyInterestRate(float newAnnualInterestRate)//将annualInterestRate设置为一个新值
{
annualInterestRate = newAnnualInterestRate;
}
5.最后编写一个驱动程序以测试类的功能。
int main()
{
SavingAccount saver1(2000,0.03);
float saver1_=saver1.calculateMonthyInterest() ;
float saver2_=saver1.calculateMonthyInterest() ;
cout << "saver1 的新余额为 :" << saver1_ << endl;
cout << "saver2 的新余额为 :" << saver2_ << endl;
SavingAccount saver2(3000,0.04);
float saver1__=saver1.calculateMonthyInterest() ;
float saver2__=saver1.calculateMonthyInterest() ;
cout <<"下个月的利息为 :" << saver1__ - saver1_ << " "<<"saver1 的新余额为 :" << saver1__ << endl;
cout <<"下个月的利息为 :" << saver2__ - saver2_ << " "<<"saver2 的新余额为 :" << saver2__ << endl;
return 0;
}
完整的代码如下:
//创建一个SavingAccount类
#include<iostream>
using namespace std;
class SavingAccount
{
public:
SavingAccount(float savingBalance_,float annualInterestRate_)
{
savingBalance=savingBalance_;
annualInterestRate=annualInterestRate_;
}
float calculateMonthyInterest()//计算月利息
{
float monthyInterest;
monthyInterest = savingBalance*annualInterestRate;
savingBalance += monthyInterest/12;
return monthyInterest;
}
static void modifyInterestRate(float newAnnualInterestRate)//将annualInterestRate设置为一个新值
{
annualInterestRate = newAnnualInterestRate;
}
private:
float savingBalance;//用于指示目前的存款余额
static float annualInterestRate;//保存每个存款者的年利率
};
float SavingAccount::annualInterestRate;//static数据成员必须在文件作用域(在类定义体以外)进行定义
int main()
{
SavingAccount saver1(2000,0.03);
float saver1_=saver1.calculateMonthyInterest() ;
float saver2_=saver1.calculateMonthyInterest() ;
cout << "saver1 的新余额为 :" << saver1_ << endl;
cout << "saver2 的新余额为 :" << saver2_ << endl;
SavingAccount saver2(3000,0.04);
float saver1__=saver1.calculateMonthyInterest() ;
float saver2__=saver1.calculateMonthyInterest() ;
cout <<"下个月的利息为 :" << saver1__ - saver1_ << " "<<"saver1 的新余额为 :" << saver1__ << endl;
cout <<"下个月的利息为 :" << saver2__ - saver2_ << " "<<"saver2 的新余额为 :" << saver2__ << endl;
return 0;
}