银行(Account)

//Account.h

#ifndef ACCOUNT_H

#define ACCOUNT_H

class Account

{

public:

Account(int m_accountNumber = 0, double m_availableBalance = 0);// constructor sets attributes 构造函数

double getAvailableBalance() const;// returns available balance 获取余额

void credit(double );// adds an amount to the Account balance 存款

int getAccountNumber() const;// returns account number 获取账号

public:

int accountNumber;// account number账号

double availableBalance;// 余额

};

#endif



//BalanceInquiry.h

class BankDatabase;

class BalanceInquiry//execute函数的实现请参考Deposit类的execute函数实现过程

{

public:

BalanceInquiry(int userAccountNumber, BankDatabase &); // constructor


int getAccountNumber() const; // return account number

BankDatabase & getBankDatabase() const; // return reference to database


void execute(); // perform the transaction 查询账户余额,需验证账户是否存在,即用户输入的账户均为合法账户;输入非合法账户则弹出提示信息。

private:

int accountNumber; // indicates account involved账号

BankDatabase & bankDatabase; // reference to the account info database 数据库引用,在此数据库

}; // end class BalanceInquiry#pragma once


//BankDatabase.h

#include"Account.h"

class BankDatabase//定义一个银行数据库BankDatabase类,用于存储所有账户信息

{

public:

BankDatabase(int arraysize,Account *);// constructor initializes accounts

BankDatabase(const BankDatabase& db);

~BankDatabase();


double getAvailableBalance(int accountNumber);// 根据账号,返回余额

void credit(int accountNumber, double amount);// 向指定账号存入金额

Account * getAccount(int accountNumber);// 根据账号返回指向Account 对象的指针

private:

Account* accounts;//存储所有账户的起始地址

int size;//数据库中账户总数

};



//Deposit.h

class BankDatabase;

class Deposit

{

public:

Deposit(int, BankDatabase &);


int getAccountNumber() const; // return account number

BankDatabase & getBankDatabase() const;// return reference to database


void execute(); // perform the transaction 将amount金额存入指定账户。

private:

double amount; // 存款的金额

int accountNumber; // indicates account involved账号

BankDatabase & bankDatabase; // reference to the account info database 数据库引用,在此数据库


}; // end class Deposit


//Account.cpp

#include<iostream>

#include"Account.h"

using namespace std;


Account::Account(int m_accountNumber, double m_availableBalance)// constructor sets attributes 构造函数

{

accountNumber = m_accountNumber;

availableBalance = m_availableBalance;

}


double Account::getAvailableBalance() const// returns available balance 获取余额

{

return availableBalance;

}


int Account::getAccountNumber() const

{

return accountNumber;

}


void Account::credit(double m_amount)// adds an amount to the Account balance 存款

{

availableBalance += m_amount;

}



//BalanceInquiry.cpp

#include<iostream>

#include"BalanceInquiry.h"

#include"BankDatabase.h"

using namespace std;


BalanceInquiry::BalanceInquiry(int userAccountNumber, BankDatabase &m_db):bankDatabase(m_db) // constructor

{

accountNumber = userAccountNumber;

}

int BalanceInquiry::getAccountNumber() const // return account number

{

return accountNumber;

}


BankDatabase & BalanceInquiry::getBankDatabase() const

{

return bankDatabase;

}


void BalanceInquiry::execute() // perform the transaction 查询账户余额,需验证账户是否存在,即用户输入的账户均为合法账户;输入非合法账户则弹出提示信息。

{ 

cout << "账户信息:"<<endl;

cout << " - 账号: " << accountNumber << " - 余额: " << bankDatabase.getAvailableBalance(accountNumber) << endl;

}


//BankDatabase.cpp

#include<iostream>

#include"BankDatabase.h"

using namespace std;


BankDatabase::BankDatabase(int arraysize,Account* a)// constructor initializes accounts

{

size = arraysize;

accounts = a;

}


BankDatabase::BankDatabase(const BankDatabase & db)

{

for (int i = 0; i < size; i++)

{

accounts[i]=db.accounts[i];

}

}


BankDatabase::~BankDatabase()

{

delete accounts;

accounts = NULL;

}


double BankDatabase::getAvailableBalance(int accountNumber)// 根据账号,返回余额

{

return (getAccount(accountNumber)->getAvailableBalance());

}


void BankDatabase::credit(int accountNumber, double amount)// 向指定账号存入金额

{

getAccount(accountNumber)->credit(amount);

}


Account * BankDatabase::getAccount(int accountNumber)

{

for (int i = 0; i < size; i++)

{

if (accounts[i].Account::getAccountNumber() == accountNumber)

{

return (&accounts[i]);

}

}

return 0;

}


//Deposit.cpp

#include<iostream>

#include"BankDatabase.h"

#include"Deposit.h"

using namespace std;


Deposit::Deposit(int m_accountNumber, BankDatabase &m_db):bankDatabase(m_db)//存款

{

accountNumber = m_accountNumber;

}


int Deposit::getAccountNumber() const // return account number

{

return accountNumber;

}


BankDatabase & Deposit::getBankDatabase() const

{

return bankDatabase;

}


void Deposit::execute() // perform the transaction 将amount金额存入指定账户。

{

cout << "请输入存款金额: ";

cin >> amount;

bankDatabase.credit(accountNumber, amount);

} // end function execute


//main.cpp

#include<iostream>

using namespace std;

#include"Deposit.h"

#include"BalanceInquiry.h"

#include"BankDatabase.h"// BankDatabase class definition

int enterchoice();

int main()

{

int numberofaccount;

cout << "请输入账户总数:";

cin >> numberofaccount;//账户总数

Account * a = NULL;

a = new Account[numberofaccount];

if (NULL == a)

{

delete[]a;

a = NULL;

}

cout << "请输入" << numberofaccount << " 个账户:" << endl;

for (int i = 0; i < numberofaccount; i++)

{

cout << "账户 " << i + 1 << " 账号:";

int num;

cin >> num;

cout << "账户 " << i + 1 << " 余额:";

double bal;

cin >> bal;

a[i].Account::Account(num, bal);

}

BankDatabase db(numberofaccount,a);

int type;

bool userExit = false;

int currentAccountNumber;

while (!userExit)

{

switch (type = enterchoice())

{

case 1 : // 查询余额

cout << "请输入账号:";

cin >> currentAccountNumber;//目前账号

{BalanceInquiry *tempBal = new BalanceInquiry(currentAccountNumber, db);

tempBal->execute();//在这里实现余额查询,通过动态建立BalanceInquiry对象实现

delete tempBal;

tempBal = NULL; }

break;

case 2 : //存款

cout << "请输入账号:";

cin >> currentAccountNumber;

{Deposit *tempDep = new Deposit(currentAccountNumber, db);

tempDep->execute();//在这里实现存款操作,通过动态建立Deposit对象实现

delete tempDep;

tempDep = NULL; }

break;

case 3 :

userExit = true;

system("pause");

return 0;

break;

}

}

delete a;

a = NULL;

system("pause");

return 0;

}

int enterchoice()

{

int choice;

do {

cout << "\n*******************************" << endl;

cout << "主菜单:" << endl;

cout << "1 - 查询余额" << endl;

cout << "2 - 存款" << endl;

cout << "3 - 退出\n" ;

cout << "*******************************" << endl;

cout << "请输入选择: " ;

cin >> choice;

} while (choice>3 || choice<1);

return choice; // return user’s selection

} // end function displayMainMenu

C++学习交流群:

群号:810196747



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gy5461

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值