C++
Primer Plus(第六版) 中文版
教材案例,自定义编程练习。
在自学大概有半年的时间自己尝试着完成了这个工程。想法来源于个人对多态的理解,实现来源于
C++ Primer Plus(第六版) 中文版 第十三章 继承类
下面是源代码.\n
第一个代码块-main()函数
#include<string>
#include"acctabc.h"
#include<iostream>
#include<cctype>
const int MAX = 50;
using std::string;
using std::cout;
using std::endl;
using std::cin;
void show();
void supershow();
int main()
{
int x = 0;
string name;
long zhanghao;
long chaxun;
double cunkuan;
double qukuan;
char ch;
AcctABC* p_kehu[MAX];
cout << "欢迎光临Brass银行,请更具系统提示完成您需要的操作.\n";
cout << "本程序正在Bate测试中,如有BUG请谅解.\n";
show();
cout << "输入前缀数字进入服务.\n";
while (cin >> ch && ch != '10'&&ch!='q'&&ch!='s')
{
if (isdigit(ch)&&ch>='1'&&ch<='10')
{
switch (ch)
{
case'1':
cout << "\n\n"; cout << "请输入注册人真实姓名; ";
cin >> name;
cout << "请输入注册账号; ";
cin >> zhanghao;
cout << "请输入您需要注册的账户类型.\n"
<< "输入1.普通用户 输入2.Plus用户\n";
int i;
while (!(cin>>i) && i <= 2 && i >= 1)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "请重新输入您需要注册的账户类型.\n";
cin >> i;
}
if (i == 1)
{
p_kehu[x] = new Brass(name, zhanghao, 0.0);
x++;
cout << "账户创建成功!\n";
}
else if (i == 2)
{
p_kehu[x] = new BrassPlus(name, zhanghao, 0.0, 500, 0.10);
x++;
cout << "Plus账户创建成功!\n";
}
else
{
p_kehu[x] = new Brass(name, zhanghao, 0.0);
x++;
cout << "账户创建成功.\n";
}
cout << "\n\n";
show();
cout << "\n\n";
break;
case '2':
cout << "\n\n"; cout << "请输入您需要查询的银行账户号.\n";
while (!(cin>>chaxun))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请从新输入.\n";
}
if(x > 0)
{
for (int i = 0; i < x; i++)
{
if (p_kehu[i]->fanhui_zhanghao() == chaxun)
{
p_kehu[i]->xianshi_xingxi();
break;
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != chaxun)
{
cout << "抱歉,我们没有查询到任何与 " << chaxun << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
}
}
else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
show();
cout << "\n\n";
break;
case '3':
cout << "\n\n";
cout << "请输入您需要查询的银行账户号.\n";
cin >> chaxun;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请从新输入.\n";
}
if (x > 0)
{
for (int i = 0; i < x; i++)
{
if (p_kehu[i]->fanhui_zhanghao() == chaxun)
{
if(p_kehu[i]->fanhui_leixing()==2)
cout << "账户类型为; Plus用户\n";
if (p_kehu[i]->fanhui_leixing() == 1)
cout << "账户类型为; 普通用户.\n";
break;
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != chaxun)
{
cout << "抱歉,我们没有查询到任何与 " << chaxun << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
}
}
else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
show();
cout << "\n\n";
break;
case'4':
cout << "\n\n"; cout << "请输入您需要存款的银行账户号.\n";
while (!(cin >> zhanghao))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请从新输入.\n";
cin >> zhanghao;
}
if (x > 0)
{
for (int i = 0; i < x; i++)
{
if(p_kehu[i]->fanhui_zhanghao() == zhanghao)
{
p_kehu[i]->xianshi_xingxi();
cout << "请输入您需要存入的金额.\n";
cin >> cunkuan;
while (!cin)
{
cin.clear();
while(cin.get()!='\n')
continue;
cout << "请从新输入.\n";
cin >> cunkuan;
}
p_kehu[i]->cunkuan(cunkuan);
break;
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != zhanghao)
{
cout << "抱歉,我们没有查询到任何与 " << zhanghao << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
}
}
else
{
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
}
cout << "\n\n";
show();
cout << "\n\n";
break;
case '5':
cout << "\n\n"; cout << "请输入您需要取款的银行账户号.\n";
while (!(cin >> zhanghao))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请从新输入.\n";
cin >> zhanghao;
}
if (x > 0)
{
for (int i = 0; i < x; i++)
{
if (p_kehu[i]->fanhui_zhanghao() == zhanghao)
{
p_kehu[i]->xianshi_xingxi();
cout << "请输入您需要取出的金额.\n";
while (!(cin>>qukuan))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "请重新输入.\n";
cin >> qukuan;
}
p_kehu[i]->qukuan(qukuan);
break;
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != zhanghao)
{
cout << "抱歉,我们没有查询到任何与 " << zhanghao << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
}
}
else
cout<< "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
show();
cout << "\n\n";
break;
case '6':
cout << "\n\n"; cout << "请输入您需要降低利率的银行账户.\n";
while (!(cin >> zhanghao))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误.请从新输入.\n";
cin >> zhanghao;
}
if (x > 0)
{
for (int i = 0; i < x; i++)
{
if (p_kehu[i]->fanhui_zhanghao() == zhanghao)
{
p_kehu[i]->xianshi_xingxi();
if (p_kehu[i]->fanhui_leixing() == 1)
{
cout << "您的账户所属类型为普通用户,不能提交利率降低申请.\n";
break;
}
else if (p_kehu[i]->fanhui_leixing() == 2)
{
cout << "正在为您提交利率降低申请,请稍后...\n";
p_kehu[i]->xiugai_lilv();
break;
}
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != zhanghao)
{
cout << "抱歉,我们没有查询到任何与 " << zhanghao << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
}
}
else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
show();
cout << "\n\n";
break;
case '7':
cout << "\n\n"; cout << "请输入您的Plus银行账户号.\n";
while (!(cin >> zhanghao))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您输入有误,请从新输入.\n";
cin >> zhanghao;
}
if (x > 0)
{
for (int i = 0; i < x; i++)
{
if (p_kehu[i]->fanhui_zhanghao() == zhanghao)
{
p_kehu[i]->xianshi_xingxi();
if (p_kehu[i]->fanhui_leixing() == 1)
{
cout << "您的账户所属类型为普通用户,不能提贷款申请.\n";
break;
}
if (p_kehu[i]->fanhui_leixing() == 2)
{
cout << "请输入您的还款金额(超出还款金额自动存入到该银行账户内.)\n";
while (!(cin>>cunkuan))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "输入有误.请从新输入您的还款金额\n";
cin >> cunkuan;
}
p_kehu[i]->xiugai_qiankuan(cunkuan);
break;
}
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != zhanghao)
{
cout << "抱歉,我们没有查询到任何与 " << zhanghao << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
}
}else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
show();
cout << "\n\n";
break;
case '8':
cout << "\n\n"; cout << "请输入您的Plus银行账户.\n";
while (!(cin >> zhanghao))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您输入有误,请从新输入.\n";
cin >> zhanghao;
}
if (x > 0)
{
int i;
for (i = 0; i < x; i++)
{
if (p_kehu[i]->fanhui_zhanghao() == zhanghao)
{
p_kehu[i]->xianshi_xingxi();
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != zhanghao)
{
cout << "抱歉,我们没有查询到任何与 " << zhanghao << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
cout << "\n\n";
if (p_kehu[i]->fanhui_leixing() == 1&&p_kehu[i]->fanhui_zhanghao()==zhanghao)
{
cout << "您的账户所属类型为普通用户,不能提交贷款提额服务.\n";
break;
}
if (p_kehu[i]->fanhui_leixing() == 2&&p_kehu[i]->fanhui_zhanghao()==zhanghao)
{
double tie;
cout << "请输入您需要提交的贷款额度.\n";
while (!(cin >> tie))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "输入有误,请输入正确的数字.\n";
}
p_kehu[i]->xiugai_daikuan(tie);
break;
}
}
}
else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
show();
cout << "\n\n";
break;
case '9':cout << "请输入您想要升级的账户号.\n";
while (!(cin >> zhanghao))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误请检查输入再次尝试.\n";
cin >> zhanghao;
}
if (x > 0)
{
int i;
for (i = 0; i < x; i++)
{
if (p_kehu[i]->fanhui_leixing() == 2&&p_kehu[i]->fanhui_zhanghao()==zhanghao)
{
cout << "该账户以为Plus用户,不能再升级.\n";
break;
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != zhanghao)
{
cout << "抱歉,我们没有查询到任何与 " << zhanghao << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
if (p_kehu[i]->fanhui_leixing() == 1 && p_kehu[i]->fanhui_zhanghao() == zhanghao)
{
p_kehu[i]->xianshi_xingxi();
cout << "--------账户升级--------";
string name_shengji;
double yue_shengji = p_kehu[i]->fanhui_yue();
name_shengji = p_kehu[i]->fanhui_name();
AcctABC* temp = p_kehu[i];
delete[]temp;
p_kehu[i] = new BrassPlus(name_shengji, zhanghao, yue_shengji,500,0.10);
cout << "\n\n升级成功!.\n\n";
p_kehu[i]->xianshi_xingxi();
break;
}
}
}
else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
show();
cout << "\n\n";
break;
}
}
continue;
}
int i;
if (ch == 's'||ch!=6)
{
supershow();
cin >> i;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "请输入正确的数字.\n";
cin >> i;
}
while ((i < 6 && i > 0)&&i!=6&&cin)
{
switch (i)
{
case 1:
if (x > 0)
{
cout << "正在清空所有账户信息资料\n";
for (int i = 0; i < x; i++)
{
AcctABC* temp = p_kehu[i];
delete[] temp;
}
cout << "清理成功!\n";
cout << "以清除客户数量; " << x << "位用户,可用空间为; " << MAX << "位.\n";
supershow();
x = 0;
break;
}
else
cout << "目前没有任何用户数据.\n";
cout << "\n\n";
supershow();
cout << "\n\n";
break;
case 2:
if (x > 0)
{
cout << "请输入需要删除的用户账号.\n";
cin >> zhanghao;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您输入的账户信息有误,请从新输入.\n";
cin >> zhanghao;
}
for (int i = 0; i < x; i++)
{
if (p_kehu[i]->fanhui_zhanghao() == zhanghao)
{
AcctABC* temp = p_kehu[i];
delete[]temp;
p_kehu[i] = new Brass("暂无", -1, 0.0);
cout << "\n账号清除成功.\n";
break;
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != zhanghao)
{
cout << "抱歉,我们没有查询到任何与 " << zhanghao << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
}
}
else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
supershow();
cout << "\n\n";
break;
case 3:
if (x > 0)
{
cout << "\n清空所有账户余额.\n";
for (int i = 0; i < x; i++)
{
double a = p_kehu[i]->fanhui_yue();
p_kehu[i]->qukuan(a);
}
cout << "所有账户余额已被清空.\n";
break;
}
else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
supershow();
cout << "\n\n";
break;
case 4:
if (x > 0)
{
cout << "请输入您需要修改的账户号;\n";
cin >> zhanghao;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请重新输入.\n";
cin >> zhanghao;
}
for (int i = 0; i < x; i++)
{
if (p_kehu[i]->fanhui_zhanghao() == zhanghao)
{
p_kehu[i]->xianshi_xingxi();
string name_xiugai;
long zhanghao_xiugai;
double yue_xiugai;
double daikuan_xiugai;
double lilv_xiugai;
if (p_kehu[i]->fanhui_leixing() == 2)
{
cout << "请输入新的姓名; ";
cin >> name_xiugai;
cout << "请输入新的账号; ";
cin >> zhanghao_xiugai;
while (!cin )
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请从新输入.\n";
cin >> zhanghao_xiugai;
}
cout << "请输入新的余额; ";
cin >> yue_xiugai;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请从新输入.\n";
cin >> yue_xiugai;
}
cout << "请输入新的贷款量; ";
cin >> daikuan_xiugai;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请重新输入.\n";
cin >> daikuan_xiugai;
}
cout << "请输入新的利率; ";
cin >> lilv_xiugai;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误请从新输入.\n";
cin >> lilv_xiugai;
}
AcctABC* tmep = new BrassPlus(name_xiugai, zhanghao_xiugai, daikuan_xiugai, lilv_xiugai);
AcctABC* abc = p_kehu[i];
delete[]abc;
p_kehu[i] = tmep;
cout << "修改成功.\n";
break;
}
if (p_kehu[i]->fanhui_leixing() == 1)
{
cout << "请输入新的姓名; ";
cin >> name_xiugai;
cout << "请输入新的账号; ";
cin >> zhanghao_xiugai;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请从新输入.\n";
cin >> zhanghao_xiugai;
}
cout << "请输入新的余额; ";
cin >> yue_xiugai;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "您的输入有误,请从新输入.\n";
cin >> yue_xiugai;
}
AcctABC* temp = new Brass(name_xiugai, zhanghao_xiugai, yue_xiugai);
AcctABC* abc = p_kehu[i];
delete[]abc;
p_kehu[i] = temp;
cout << "修改成功.\n";
break;
}
else if (i + 1 == x && p_kehu[i]->fanhui_zhanghao() != zhanghao)
{
cout << "抱歉,我们没有查询到任何与 " << zhanghao << " 账户相关的信息."
<< "请检查您的输入并核对您的账户信息再次查询.\n";
break;
}
}
}
}
else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
supershow();
cout << "\n\n";
break;
case 5:
if (x > 0)
{
cout << "正在为您查询所有账户资料; \n";
for (int i = 0; i < x; i++)
{
p_kehu[i]->xianshi_xingxi();
cout << endl;
cout << endl;
}
cout << "\n查询完毕.\n";
supershow();
break;
}
else
cout << "您还没有注册任何账户,请先尝试注册再返回次操作.\n";
cout << "\n\n";
supershow();
cout << "\n\n";
break;
}
cin >> i;
continue;
}
}
cout << "感谢使用.\n"
<< "Done.\n";
cin.get();
cin.get();
return false;
}
void show()
{
cout << endl;
cout << "1.注册账号. 2.查询账户信息.\n"
<< "3.账户类型查询. 4.存款服务.\n"
<< "5.取款服务. 6.利率降低服务申请.\n"
<< "7.还款服务. 8.贷款提额申请服务.\n"
<< "9.账户升级服务. q.退出程序.\n";
cout << endl;
}
void supershow()
{
cout << endl;
cout << "---------超级管理员选项--------\n";
cout << "1.清空所有账户. 2.指定删除账户\n"
<< "3.清空所有账户余额 4.修改账户信息\n"
<< "5.查看所有账户信息 6.退出超级管理\n";
cout << endl;
}
紧接着是第二个代码块-头文件
#include<string>
#include"acctabc.h"
#include<iostream>
using std::cout;
using std::endl;
using std::cin;
using std::string;
void AcctABC::cunkuan(double amt)
{
kehu_yue += amt;
}
void AcctABC::qukuan(double amt)
{
kehu_yue -= amt;
}
void Brass::xianshi_xingxi()const
{
cout << "-------查询用户信息----------\n"
<< fanhui_zhanghao() << " 账号持有人; " << fanhui_name() << endl
<< "账户余额; $" << fanhui_yue() << endl
<< "账户类型 (普通用户)\n";
}
void Brass::cunkuan(double amt)
{
if (amt <= 0)
cout << "输入的存款金额有误.交易取消.\n";
else
{
AcctABC::cunkuan(amt);
cout << "存款成功!\n"
<< "当前账户余额为; $" << fanhui_yue() << endl;
}
}
void Brass::qukuan(double amt)
{
if (amt <= 0)
cout << "输入的取款金额有误.交易取消.\n";
else if (amt <= fanhui_yue())
{
AcctABC::qukuan(amt);
cout << "取款成功.\n"
<< "当前账户余额为; $" << fanhui_yue() << endl;
}
else
cout << "您的取款金额以超出余额限制."
<< "交易取消.\n";
}
void BrassPlus::xiugai_daikuan(double amt)
{
if (amt <= 0)
cout << "不可申请当前贷款量 提示:(最高可申请 5000 元贷款).\n";
if (muqian_qiankuan > 0)
{
cout << "申请失败,请先还清银行贷款再尝试申请.\n";
cout << "当前欠款; $" << fanhui_qiankuan() << endl;
cout << "当前利率; %" << 100 * dangqian_lilv << endl;
}
else if ((amt > 0 && (amt <= 5000))&&(zuigao_daikuan+amt<=5000))
{
cout << "申请成功!\n";
keyong_daikuan += amt;
zuigao_daikuan = keyong_daikuan;
cout << fanhui_zhanghao() << " 账户所属类型; Plus账号.\n";
cout << "当前可用贷款; $" << fanhui_daikuan() << endl;
}
else
cout << "不可申请当前贷款量, 提示:(最高可申请 5000 元贷款).\n";
}
void BrassPlus::xiugai_lilv()
{
double i = 0.07;
if (dangqian_lilv == 0.07)
cout << "您当前利率为 " << dangqian_lilv << " 是改账户最低贷款利率.\n"
<< "不可再次申请.\n";
else
{
int a;
cout << "请输入数字 1 或者 2.\n"
<< "1. 提交申请最低利率. 2.我再相想想.\n";
cin >> a;
while (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "请输入正确的数字.\n";
cin >> a;
}
if (a == 1)
{
dangqian_lilv = 0.07;
cout << "申请成功!.\n"
<< "Plus 用户; " << fanhui_zhanghao() << endl
<< "当前利率为; " << fanhui_lilv() << endl;
}
else if (a == 2)
{
cout << "返回上一级.#\n";
}
else
{
cout << "输入有误,返回上一级.#\n";
}
}
}
void BrassPlus::xianshi_xingxi()const
{
cout << "-------- 查询用户信息----------\n"
<< fanhui_zhanghao() << " 账号目前持有人 " << fanhui_name() << endl
<< "账户类型 Plus账户.\n"
<< "账户目前余额; $" << fanhui_yue() << endl
<< "账户目前可用贷款数; $" << fanhui_daikuan() << endl
<< "账户目前贷款利率; %" << fanhui_lilv() * 100 << endl
<< "账户目前欠款数; $" << fanhui_qiankuan() << endl;
}
void BrassPlus::xiugai_qiankuan(double amt)
{
if (amt <= 0)
cout << "您输入的还款金额有误.\n"
<< "交易取消.\n";
else if (muqian_qiankuan==0)
{
cout << "当前没有任何欠款记录,交易取消.\n";
}
else if (amt >= muqian_qiankuan&&muqian_qiankuan>0)
{
double huankuan_shengyu = amt - muqian_qiankuan;
muqian_qiankuan = 0.0;
AcctABC::cunkuan(huankuan_shengyu);
cout << "还款成功!.\n"
<< "账户可用贷款初始化.\n";
if (zuigao_daikuan <= double(5000.0) - double(100.0))
keyong_daikuan = zuigao_daikuan + double(100.0);
else
keyong_daikuan = zuigao_daikuan;
cout << fanhui_zhanghao() << " Plus账户目前信息;\n";
BrassPlus::xianshi_xingxi();
}
else
{
muqian_qiankuan -= amt;
cout << "还款成功.\n";
BrassPlus::xianshi_xingxi();
}
}
void BrassPlus::cunkuan(double amt)
{
if (amt <= 0)
cout << "您输入的存款金额有误.交易取消\n";
else if (muqian_qiankuan > 0)
{
cout << "检测到您当前有欠款; $" << muqian_qiankuan << " 元.\n"
<< "系统将自动将您的存款优先进行还款处理.\n";
if (amt >= muqian_qiankuan)
{
double huankuan_shengyu = amt - muqian_qiankuan;
AcctABC::cunkuan(huankuan_shengyu);
cout << "系统以自动将您存入的 " << amt << " 元进行还款处理,"
<< "本次还款 " << muqian_qiankuan << " 元.\n"
<< "余下金额 " << huankuan_shengyu << " 元以存入您的银行账户类.\n";
cout << "账户可用贷款初始化.\n";
muqian_qiankuan = 0.0;
if (zuigao_daikuan <= double(5000) - double(100))
keyong_daikuan = zuigao_daikuan + double(100);
else
keyong_daikuan = zuigao_daikuan;
cout << fanhui_zhanghao() << " Plus账户目前信息;\n";
BrassPlus::xianshi_xingxi();
}
else
{
muqian_qiankuan -= amt;
cout << "存款成功!\n"
<< "本次存款将作为贷款偿还处理.\n";
BrassPlus::xianshi_xingxi();
}
}
else
{
AcctABC::cunkuan(amt);
cout << "存款成功.\n";
BrassPlus::xianshi_xingxi();
}
}
void BrassPlus::qukuan(double amt)
{
if (amt <= 0)
cout << "您输入的取款金额有误,交易取消.\n";
else if (amt <= fanhui_yue())
{
AcctABC::qukuan(amt);
}
else if (amt <= fanhui_yue() + keyong_daikuan - muqian_qiankuan)
{
double daikuan = amt - fanhui_yue();
muqian_qiankuan += daikuan * (1 + dangqian_lilv);
keyong_daikuan -= daikuan;
cout << "本次贷款金额; $" << daikuan << endl;
cout << "贷款利率; $" << daikuan * dangqian_lilv << endl;
AcctABC::cunkuan(daikuan);
AcctABC::qukuan(amt);
}
else
{
cout << "您当前无法取出 " << amt << " 金额.\n"
<< "请查询您账户的详细信息.\n";
}
}
最后是第三个代码块-头文件定义
#ifndef ACCTABC_H_
#define ACCTABC_H_
#include<string>
#include<iostream>
using std::cout;
class AcctABC
{
private:
std::string kehu_name;
long kehu_zhanghao;
double kehu_yue;
protected:
public:
virtual void cunkuan(double amt);
virtual void qukuan(double amt);
AcctABC(const std::string&s="暂无",long zhanghao=-1,double yue=0.0):kehu_name(s),kehu_zhanghao(zhanghao),kehu_yue(yue){}
AcctABC(AcctABC&a){}
virtual void xianshi_xingxi()const = 0;
long fanhui_zhanghao()const { return kehu_zhanghao; }
virtual int fanhui_leixing()const = 0;
virtual void xiugai_daikuan(double amt) = 0;;
virtual std::string fanhui_name()const { return kehu_name; }
virtual double fanhui_yue()const { return kehu_yue; }
virtual void xiugai_qiankuan(double amt) = 0;
virtual void xiugai_lilv() = 0;
virtual ~AcctABC(){}
};
class Brass :public AcctABC
{
public:
virtual void xianshi_xingxi()const;
virtual void xiugai_daikuan(double amt) { cout << "抱歉,普通用户无法享有贷款服务.\n"; }
virtual void xiugai_qiankuan(double amt) { cout << "抱歉,普通用户无法享有贷款服务.\n"; }
virtual void xiugai_lilv() { cout << "抱歉,普通用户无法享受贷款服务.\n"; }
virtual void cunkuan(double amt);
virtual void qukuan(double amt);
virtual int fanhui_leixing()const { return 1; }
Brass(const std::string&s,long zhanghao,double yue):AcctABC(s,zhanghao,yue){}
virtual ~Brass(){}
};
class BrassPlus :public AcctABC
{
private:
double keyong_daikuan;
double dangqian_lilv;
double muqian_qiankuan;
double zuigao_daikuan;
public:
BrassPlus(const std::string& s, long zhanghao, double yue, double daikuan = 500, double lilv = 0.10) :AcctABC(s, zhanghao, yue), keyong_daikuan(daikuan), dangqian_lilv(lilv){ muqian_qiankuan = 0.0; zuigao_daikuan = 500; }
BrassPlus(AcctABC& a, double daikuan = 500, double lilv = 0.10) :AcctABC(a), keyong_daikuan(daikuan), dangqian_lilv(lilv) { muqian_qiankuan = 0.0; }
double fanhui_daikuan()const { return keyong_daikuan; }
double fanhui_lilv()const { return dangqian_lilv; }
virtual int fanhui_leixing()const { return 2; }
double fanhui_qiankuan()const { return muqian_qiankuan; }
virtual void xiugai_daikuan(double amt);
virtual void xiugai_lilv();
virtual void xiugai_qiankuan(double amt);
virtual void xianshi_xingxi()const;
virtual void cunkuan(double amt);
virtual void qukuan(double amt);
};
#endif
用到的特性简单,且基础,虽然代码没有任何的研究价值,但也是我自学C++道路上的一个里程碑!.\n
加油