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;

}

时间: 2024-11-05 14:41:02

Bank homework 10 2016 4 25的相关文章

Test on 09/10/2016

1.勇士闯塔   (tower.pas/c/cpp) [问题描述] 在遥远的东方,有一座膜塔,膜王抓走了公主,并将其囚禁在膜塔的21层,勇士需要闯塔,解救公主. 现在勇士的前方有n个膜怪,每一个膜怪有一个属性值ai,属性值不同的膜怪视为不同种类的膜怪,现在勇士想知道在第qi~qj个膜怪中有多少种不同的膜怪,请你帮忙解决. [输入格式] 第1行:2个整数n,q,分别表示膜怪数量以及询问数. 第2行:n个整数,表示每个膜怪的属性值. 第3~q+2行:每行2个整数qi,qj. [输出格式] 共q行,每

编程两道——悼念2016.3.25模拟糟糕的模拟考

很久不做算法题,模拟考一团糟,今天自己实现记录下: 1.生成N位格雷码,e.g.[00,01,10,11] 1 #include <iostream> 2 #include <string> 3 #include <cmath> 4 using namespace std; 5 6 7 const int n = 4; 8 int size = 0; 9 int num = int(pow(2, n)); 10 string* codes = new string[nu

2016.8.25 JavaScript入门之二

1.字符串中,引用字符串:要用/"转换: 例如:var myStr="I am a \"double quoted\" string inside \"double quotes\"."; 输出是:I am a "double quoted" string inside "double quotes". 2.字符串处理方法二:单引号中,嵌套双引号: 例如:var myStr = '<a hr

2016/2/25 html+css学习资源

html+css学习资源 1.Position is Everything,一个描述和展示在各种浏览器中发现的bug,并提供css解决方法的网站,顶! 2.一个国外的网页设计论坛 3.http://css-tricks.com/ 4.http://html5demos.com/ 有很多html5 DEMO 5.http://www.alistapart.com 6.http://webreference.com/ 7.http://www.webmonkey.com/ 8.http://www.

2016.8.25 NOIP2012 day1 解题报告

考试总结: 1.  显然第一道送分题,我差一点直接打表来对拍了,后来发现我们的pdf有问题不能复制,并且我没有YJQ大神那样足够的时间每道题都对拍,就只能试过样例就遁,(其实这种密码我玩过,密码学入门密码,当时好像叫凯撒密码233):对了,ASCII的掌握也很重要,我之前一直以为大写在小写后面啧.(之间漏掉过大于以后减的步骤,这种简单题还是做少了居然耗了30min,以后好好检查争取一次过): 2.  这道题我拿到的第一反应就是贪心,马上想了一个贪心规则但自己总觉得是错的,花了很长的时间举反例举不

2016 - 1 - 25 第三方网络框架 AFN的简单使用

AFNetworking 底层是对NSURlSession 和对 NSURLConnect 的包装 1.具体使用方法可以参照github上的主页面,在这里只是举一个文件上传的简单列子 - (void)update{ AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager POST:@"http://120.25.226.186:32812/upload" parameters:nil constr

u-boot-2014.10移植第25天----nand flash启动(三)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 在实现u-boot从nand flash启动之前,我们将前面asm_led程序放在nand flash第一个块的前4Kbit之中,因为asm_led没有系统初始化功能,所以还需要将bootstrap程序,放在nand flash的0地址处.bootstrap初始化完2440后,跳转到asm_led程序去执行.这对于掌握从n

2016.3.25(mySQL简单的数据查询)

要从数据库中查询,要使用SQL的select语句,标准select查询有select子句,where子句,order by子句组成. 查询数据的标准结构为:select 列名 from 表名 where 条件 order by 列名 asc(升序)/desc(降序) 查询操作的分类:1.投影操作,指定查询结果中能显示哪些列 2.选择操作,指定哪行出现在结果中 3.排序操作,指定查询的结果以什么样的顺序显示 投影操作:select 列1,列2 from 表名 表前缀:select 表名.列名 fr

QT Linux/Ubuntu 平台安装qt5.7.1 2016.12.25

QT 下载: https://www.qt.io/download-open-source/ 查看所有下载项: 下载Linux平台的QT 添加运行权限,并安装 启动QT后,将其锁定到边框 qt ide的命令行模式版 Hello world ! 当然,从命令行也可以直接启动QT createtor qt的pro文件编辑技巧 1.添加库文件静态库 linux:LIBS += your_lib_path/your_lib  linux:LIBS += -L your_lib_path -lyour_l