【C++】【记录自己的自学过程】用纯C++实现模拟银行注册 存款 取款 贷款 升级账户 等服务。主要用的内容包括多态,封装。

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
加油

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值