//定义一个银行账户类。银行账户包含两部分数据:账户余额和利率rate。其中余额用两个整型值来表示:一个代表美元accountDollars,一个代表美分accountCents。即该类的数据成员有3个(accountDollars,accountCents,rate)。注意:负的账户余额用负的dollars和负的cents表示,例如-$4.50将accountDollars设置为-4,将accountCents设置为-50.
//1) 用户可以认为账户的余额是一个double类型表示的,也可以认为是用两个int类型表示的(分别为美元和美分)。例如主函数中account1和account3两个对象的定义方式。为满足主函数中的对象定义,请为类重载构造函数。如果用户的余额是一个double类型数据,需要将其整数部分存入accountDollars,小数部分存入accountCents。
//2) 为数据成员建立相应的set系列函数。注意,余额有两种形式的设置方式,分别是一个double,或者两个int,设置函数中应检查参数是否同时为正,或者同时为负。一正一负需给出错误提示(Inconsistent account data.)。如果利率为负数,需给出错误提示(Cannot have a negative interest rate.),并调用exit函数结束程序。
//3) 为数据成员建立相应的get系列函数。
//4) 类还有4个私有成员函数,如下所示。这些函数只在类内部使用,因此可定义为私有。
#include<iostream>
#include<stdlib.h>
#include<iomanip>
#include<cmath>
using namespace std;
class BankAccount{
private:
int accountDollars;
int accountCents;
double rate;
double amount;
int dollarsPart(double);//用于返回amount的整数部分
int centsPart(double);//用于返回amount的小数部分
int round(double);//用于返回number四舍五入的结果
double fraction(double);//用于把一个数换成百分数形式
public:
BankAccount(double sum,double rate1):amount(sum),rate(rate1){}
BankAccount();
void input(){
cin>>amount>>rate;
cout<<"\n";}
void setAmount(double );
void setRate(double ) ;
int getAmountDollars(BankAccount &){return accountDollars;}
int getAmountCents() {return accountCents;}
double getRate(){return rate;}
double getAmount1(BankAccount &) {return amount;}
};
BankAccount::BankAccount(){
}
void BankAccount::setAmount(double amount){
accountDollars=dollarsPart(amount);
accountCents=centsPart(amount);
if((accountDollars>0&&accountCents<0)||(accountDollars>0&&accountCents<0))
cout<<"Inconsistent account data.\n";
exit(0);
}
void BankAccount::setRate(double rate1){
rate=fraction(rate1);
if(rate<0)
cout<<"Cannot have a negative interest rate.\n";
exit(0);
}
void welcome(BankAccount &account1){
cout<<"Welcome to our bank.\n"<<"The status of your account is:\n";
cout<<"Account balance:$"<<account1.getAmount1(account1)<<endl;
cout<<"Rate:"<<account1.getRate()<<"%"<<endl;//老师,我这里没有用那个百分数那个函数,直接输出的。
}
int isLarger(BankAccount &account1,BankAccount &account2){
if(account1.getAmount1(account1)>account2.getAmount1(account2))
return true;
else
return false;
}
int BankAccount::dollarsPart(double amount)
{
return static_cast<int>(amount);
}
int BankAccount::centsPart(double amount)
{
double doubleCents = amount*100;
int intCents = (round(fabs(doubleCents)))%100;//负数取余数,可能出现问题,因此先对doubleCents取绝对值。
if(amount < 0)
intCents= -intCents;
return intCents;
}
int BankAccount::round(double number)
{
return static_cast<int>(floor(number + 0.5));
}
double BankAccount::fraction(double percent)
{
return (percent/100.0);
}
int main(){
BankAccount account1(6543.21,4.5),account2;
//cout<<"Enter data for account 2:\n‘;
account2.input();
cout<<"Account 2:\n";
welcome(account2);
cout<<"\nAccount 1:\n";
welcome(account1);
if(isLarger(account1,account2))
cout<<"\naccount1 is larger.\n";
else
cout<<"\naccount2 is at least as large as account1\n";
system("pause");
return 0;
}
原文地址:https://www.cnblogs.com/zhaoyiyao/p/12681259.html