📄 3.16.cpp
字号:
#include <string>
#include <vector>
#include <iostream>
using namespace std;
class bankaccount//银行帐户类
{
private:
int account_id;//帐号
string account_name;//帐户人
int balance;//余额
public:
bankaccount(int account_id,string account_name,int balance)
{
this->account_id=account_id;
this->account_name=account_name;
this->balance=balance;
}
void setBalance(int balance)
{
this->balance=balance;
}
int getBalance()
{
return balance;
}
int getAccount_id()
{
return account_id;
}
string getAccount_name()
{
return account_name;
}
};
class banktransaction//银行交易类
{
private:
int bankaccount_id;//帐号种子
vector<bankaccount*> accountlist;
public:
banktransaction()
{
bankaccount_id=0;
}
bool openAccount(string account_name,int balance)//开户
{
bankaccount_id++;
bankaccount* bap=new bankaccount(bankaccount_id,account_name,balance);
accountlist.push_back(bap);
return true;
}
bool cancelAccount(int bankaccount_id)//消户,通过帐号
{
vector <bankaccount*>::iterator ba_iterator;
bankaccount* bap;
for(ba_iterator=accountlist.begin();ba_iterator!=accountlist.end();ba_iterator++)
{
bap=*ba_iterator;
if(bap->getAccount_id()==bankaccount_id)
{
accountlist.erase(ba_iterator);
delete(bap);
break;
}
}
return true;
}
bool cancelAccount(string bankaccount_name)//消户,通过帐户名,注销该帐户名相关的所有帐户
{
vector <bankaccount*>::iterator ba_iterator;
bankaccount* bap;
ba_iterator=accountlist.begin();
while(ba_iterator!=accountlist.end())
{
bap=*ba_iterator;
if(bap->getAccount_name()==bankaccount_name)
{
accountlist.erase(ba_iterator);
delete(bap);
continue;
}
ba_iterator++;
}
return true;
}
bool deposit(int bankaccount_id,int balance)//存钱
{
vector <bankaccount*>::iterator ba_iterator;
bankaccount* bap;
for(ba_iterator=accountlist.begin();ba_iterator!=accountlist.end();ba_iterator++)
{
bap=*ba_iterator;
if(bap->getAccount_id()==bankaccount_id)
{
bap->setBalance(bap->getBalance()+balance);
break;
}
}
return true;
}
bool fetch(int bankaccount_id,int balance)//取钱,取钱之前判断是否透支,若透支,则取消事务
{
if(isOverdraft(bankaccount_id,balance))
{
cout<<bankaccount_id<<",you have overdrafted,transaction is canceled!"<<endl;
return false;
}
vector <bankaccount*>::iterator ba_iterator;
bankaccount* bap;
for(ba_iterator=accountlist.begin();ba_iterator!=accountlist.end();ba_iterator++)
{
bap=*ba_iterator;
if(bap->getAccount_id()==bankaccount_id)
{
bap->setBalance(bap->getBalance()-balance);
break;
}
}
return true;
}
bool isOverdraft(int bankaccount_id,int balance)//判断是否透支
{
vector <bankaccount*>::iterator ba_iterator;
bankaccount* bap;
for(ba_iterator=accountlist.begin();ba_iterator!=accountlist.end();ba_iterator++)
{
bap=*ba_iterator;
if(bap->getAccount_id()==bankaccount_id)
break;
}
return (bap->getBalance()-balance)<0;
}
vector<bankaccount*> getAccountlist()
{
return accountlist;
}
};
void main()
{
banktransaction bt;
vector <bankaccount*>::iterator ba_iterator;
vector <bankaccount*>accountlist;
bankaccount* bap;
bt.openAccount("Account1",100);
bt.openAccount("Account1",100);
bt.openAccount("Account1",100);
bt.openAccount("Account1",100);
bt.openAccount("Account2",200);
bt.openAccount("Account2",200);
bt.openAccount("Account2",200);
bt.openAccount("Account3",300);
bt.openAccount("Account4",400);
bt.openAccount("Account4",400);
bt.openAccount("Account4",400);
bt.openAccount("Account4",400);
bt.openAccount("Account4",400);
bt.openAccount("Account4",400);
bt.openAccount("Account4",400);
bt.openAccount("Account4",400);
bt.cancelAccount("Account4");
bt.cancelAccount(5);
bt.deposit(3,4500);
bt.fetch(3,50);
bt.fetch(3,1000);
accountlist=bt.getAccountlist();
for(ba_iterator=accountlist.begin();ba_iterator!=accountlist.end();ba_iterator++)
{
bap=*ba_iterator;
cout<<bap->getAccount_id()<<" "<<bap->getAccount_name()<<" "<<bap->getBalance()<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -