Bank homework 10 2016 4 25
#include<iostream>
#include<string>
using namespace std;
class Bank
{
public:
Bank(string _name)
{
name = _name;
}
string getName() const
{
return name;
}
virtual void printMessage() const = 0;
virtual void deposit(double m) = 0;
virtual void withdraw(double m) = 0;
virtual double getMoney() const = 0;
protected:
string name;
};
class ICBC : public Bank
{
public:
ICBC(double _money = 0):Bank("ICBC")
{
money = _money;
}
void printMessage() const
{
cout << "Welcome to Industrial and Commercial Bank of China" << endl;
}
void deposit(double m)
{
money += m;
}
void withdraw(double m)
{
if (money > m) money -= m;
else money = 0;
}
double getMoney() const
{
return money;
}
private:
double money;
};
class ABC : public Bank
{
public:
ABC(double _money = 0):Bank("ABC")
{
money = _money;
}
void printMessage() const
{
cout << "Welcome to Agricultural Bank of China" << endl;
}
void deposit(double m)
{
money += m;
}
void withdraw(double m)
{
if (money > m) money -= m;
else money = 0;
}
double getMoney() const
{
return money;
}
private:
double money;
};
class AccountManager
{
public:
AccountManager(int _size);
~AccountManager();
void setBank(int i, Bank *bank);
Bank* getBank(int i);
void deposit(Bank *bank, double money);
void withdraw(Bank *bank, double money);
void transfer(Bank *bank1, Bank *bank2, double money);
void printAccount() const; //print the welcome message, bank name and money for each array element
private:
Bank* *bankList; //bank array, where each element is a (Bank*) type
int size; //the length of the bank array
};
AccountManager::AccountManager(int _size){
size = _size;
bankList = new Bank*[size];
}
AccountManager::~AccountManager(){
delete [] bankList;
}
void AccountManager::setBank(int i, Bank *bank){
bankList[i] = bank;
}
Bank* AccountManager::getBank(int i){
return bankList[i];
}
void AccountManager::deposit(Bank *bank, double money){
bank->deposit(money);
}
void AccountManager::withdraw(Bank *bank, double money){
bank->withdraw(money);
}
void AccountManager::transfer(Bank *bank1, Bank *bank2, double money){
if(bank1->getMoney()>=money){
bank1->withdraw(money);
bank2->deposit(money);
}
else{
bank2->deposit(bank1->getMoney());
bank1->withdraw(bank1->getMoney());
}
}
void AccountManager::printAccount() const{
for(int i=0;i<size;i++){
bankList[i]->printMessage();
cout<<bankList[i]->getName()<<" ";
cout<<bankList[i]->getMoney()<<endl;
}
}
int main()
{
AccountManager accountManager(2);
Bank *bank1 = new ICBC (100);
accountManager.setBank(0, bank1);
Bank *bank2 = new ABC;
accountManager.setBank(1, bank2);
accountManager.printAccount();
accountManager.deposit(accountManager.getBank(0), 100);
accountManager.deposit(accountManager.getBank(1), 100);
accountManager.printAccount();
accountManager.withdraw(accountManager.getBank(0), 50);
accountManager.withdraw(accountManager.getBank(1), 50);
accountManager.printAccount();
accountManager.transfer(accountManager.getBank(0), accountManager.getBank(1), 500);
accountManager.printAccount();
return 0;
}
Bank homework 10 2016 4 25的更多相关文章
- Windows 10 2016 LTS版本下载与激活
Windows 10 2016 LTS版是针对企业用户推出的长期支持版本,有如下2个优点:1.不会被强制升级.2.去掉小娜,应用商店等不常用的功能,系统相对简洁. 安装文件下载地址如下(x86/x64 ...
- Alpha冲刺(2/10)——2019.4.25
所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(2/10)--2019.4.25 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...
- OneZero第五次站立会议(2016.3.25)
会议时间:2016年3月25日 12:45~12:57 会议成员:冉华,张敏,王巍,夏一鸣. 会议目的:汇报前一天工作,全体成员评论,确定会后修改内容. 会议内容:1.界面原型已经确定.(夏负责) 2 ...
- iros2016-Monday 10/10/2016
Workshop Day Integrating Multiple Knowledge Representation and Reasoning Techniques in Robotics (MIR ...
- 2016 - 1 - 25 第三方网络框架 AFN的简单使用
AFNetworking 底层是对NSURlSession 和对 NSURLConnect 的包装 1.具体使用方法可以参照github上的主页面,在这里只是举一个文件上传的简单列子 - (void) ...
- 2016.8.25 JavaScript入门之二
1.字符串中,引用字符串:要用/"转换: 例如:var myStr="I am a \"double quoted\" string inside \" ...
- “耐撕”团队 2016.03.25 站立会议
1.时间:2016.3.23 2.成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:http://www.cnblo ...
- 2016/2/25 html+css学习资源
html+css学习资源 1.Position is Everything,一个描述和展示在各种浏览器中发现的bug,并提供css解决方法的网站,顶! 2.一个国外的网页设计论坛 3.http://c ...
- 2016/1/25 多线程 作业 方法一 继承Thread 方法二 实现Runnable 多线程笔记
/* * 1,尝试定义一个继承Thread类的类,并覆盖run()方法, * 在run()方法中每隔100毫秒打印一句话.*/ package Stream; //方法一 继承Thread 实现多线程 ...
随机推荐
- ASP.NET Web API之消息[拦截]处理
标题相当难取,内容也许和您想的不一样,而且网上已经有很多这方面的资料了,我不过是在实践过程中作下记录.废话少说,直接开始. Exception 当服务端抛出未处理异常时,most exceptions ...
- 【Linux】netdata监控组件
github:https://github.com/firehol/netdata 安装:https://github.com/firehol/netdata/wiki/Installation 内存 ...
- 如何对具有端点加密功能的LINE进行取证
LINE又有新动作了,这回默认即启用了端点加密功能,强调确保传输过程的安全,且让我们来看看如何对付新版的LINE. 有启用Letter Sealing就会在昵称前多个锁头的图像. 这手机据犯嫌供称,落 ...
- java的InputStream和OutputStream的理解【转】
1.在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头)2.任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象既然它能产生 ...
- mysql高可用架构
高可用 高可用(High Availabiltity) 应用提供持续不间断(可用)的服务的能力 系统高可用性的评价通常用可用率表示 造成不可用的原因 硬件故障(各种) 预期中的系统软硬件维护 ...
- make: g77: Command not found
编译cblas时报错,这时,修改Makefile.in中的编译文件中的g77为gfortran
- asp.net web api 测试帮助页面建立并测试
asp.net web api 测试帮助页面建立并测试 现在使用WEB API来开发,越来越流行. 在开发过程中的测试调试,可以使用Fiddler等工具来帮助测试外,还有: 在asp.net 中有种方 ...
- {POJ}{树状数组}
总结一下树状数组的题目: {POJ}{3928}{Ping Pong} 非常好的题目,要求寻找一个数组中满足A[i]<A[k]<A[j]的个数,其中i<k<j(或者相反).很巧 ...
- MySql中的tinying,smallint,int,bigint的类型介绍——转载
tinyint 从 0 到 255 的整型数据.存储大小为 1 字节. smallint 从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据.存储大小为 2 个字节 ...
- 上传文件(单文件)(FormData)(前端代码+.NET服务器端)
由于样式需要不能直接用file,只能用文本框+按钮 <form class="form-horizontal form-bordered form-row-strippe" ...