编写账户类CAccount,要求:
(1)账户余额和币种(假设两种币种,人民币"CNY"和美元"USD")为私有数据成员。
(2)在构造函数中通过键盘输入来初始化数据成员币种和账户余额。
(3)输出函数输出币种类型和余额值,余额保留2位小数。
(4)设计友元函数Transfer,当a和b账户的币种相同时,a的余额减少,b的余额增加相同值;当a、b账户币种不同时,b的余额增加值应进行汇率 换算,在友元函数中由键盘输入汇率和需要转账的金额。
输入样例:
CNY 20000
USD 10000
1000
0.1381
输出样例:
存款类型为人民币
存款余额为19000.00元
存款类型为美元
存款余额为10138.10美元
输入格式:
分四行输入信息,前两行分别输入第1个和第2个账户的币种和余额,第三行输入第一个账户到第二个账户需要转账的金额,第四行输入人民币到美元的汇率,例如:
CNY 20000
USD 10000
1000
0.1381
输出格式:
分别输入第1个和第二个账户转账之后的账户币种和余额,例如:
存款类型为人民币
存款余额为19000.00元
存款类型为美元
存款余额为10138.10美元
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
class CAccount
{
private:
double m_money;
string m_variety;
string m_danwei;
public:
CAccount(string variety, double money)
{
m_money = money;
if (variety == "CNY")
{
m_variety = "人民币";
m_danwei = "元";
}
if (variety == "USD")
{
m_variety = "美元";
m_danwei = "美元";
}
}
friend void Transfer(CAccount &, CAccount &);
};
int main(void)
{
string variety;
double money;
cin >> variety >> money;
CAccount a(variety, money);
cin >> variety >> money;
CAccount b(variety, money);
Transfer(a, b);
return 0;
}
void Transfer(CAccount &account1, CAccount &account2)
{
double trans;
double huilv;
cin >> trans;
cin >> huilv;
if (account1.m_variety == account2.m_variety)
{
account1.m_money = account1.m_money - trans;
account2.m_money = account2.m_money + trans;
}
else
{
if (account1.m_variety == "人民币")
{
account1.m_money = account1.m_money - trans;
account2.m_money = account2.m_money + trans * huilv;
}
if (account1.m_variety == "美元")
{
account1.m_money = account1.m_money - trans;
account2.m_money = account2.m_money + trans / huilv;
}
}
cout << "存款类型为" << account1.m_variety << endl;
cout << "存款余额为" << fixed << setprecision(2) << account1.m_money << account1.m_danwei << endl;
cout << "存款类型为" << fixed << setprecision(2) << account2.m_variety << endl;
cout << "存款余额为" << account2.m_money << account2.m_danwei << endl;
}