用C++设计一个Bank类,实现银行某账户的资金往来账目管理。

用C++设计一个Bank类,实现银行某账户的资金往来账目管理。(主要分为创建用户,存钱,取钱,记录。)

  hello,大家好!,我是一名学生党,如果有不严谨的问题请指出,我会积极学习的。
代码如下::

#include <iostream>
#include <string.h>
#include <vector>
#include <ctime>

using namespace std;

class Bank{
	private:
	    string account; 
	    time_t create_time; 
	    double balance; 
	    vector< pair<time_t, double> > history; 
	public:
		Bank(string accountNumber,double balance){
			account = accountNumber;
			this->balance = balance;
			create_time = time(NULL);
		}
		void deposit(double amount){
			balance +=amount;
			time_t deposit_time =time(NULL);
			history.emplace_back(make_pair(deposit_time, amount));
		}
		bool Withdraw(double amount){
			if(amount>balance){
				return false;
			}
			balance -=amount;
			time_t Withdraw_time =time(NULL);
		    history.emplace_back(make_pair(Withdraw_time, -amount));
			return true; 
		}
		void printHistory() {
		        for (auto& record : history) {
		            string type = (record.second > 0) ? "存入" : "取出";
		            cout << "在" << ctime(&record.first) << type << abs(record.second) << "元" << endl;
		        }
		    }
		double GetBalance()const{
			return balance;
		} 
	    time_t GetCreateTime() const {
	        return create_time;
	    }
		vector< pair<time_t, double> >GetHistory()const{
			return history;
		}
   };
		int main(){
			Bank account("12345",100.0);
			account.deposit(50.0);
			account.Withdraw(125.0);
			account.printHistory();
			return 0;
		}
		

超详细分析如下:

第一步,C++标准库

#include <iostream>
#include <string.h>
#include <vector>
#include <ctime>
using namespace std;

  其中,iostream 用于输入输出流,string.h 用于处理字符串,vector>用于动态数组,ctime 用于处理日期和时间。using namespace std;是声明命名空间, 可以免去每次调用这些函数和类时都需要加上 std:: 的繁琐操作,但要根据情况而定,不能盲目使用。

第二步,创建一个Bank类,其中包含七个成员函数和四个私有成员变量。

七个成员函数:
1.构造函数 Bank(string accountNumber,double balance)
2.存款函数 void deposit(double amount)
3.取款函数 bool Withdraw(double amount)
4.打印历史记录函数 void printHistory()
5.获取余额函数 double GetBalance() const
6.获取创建时间函数 time_t GetCreateTime() const
7.获取历史记录函数 vector< pair<time_t, double> > GetHistory() const


	public :
		Bank(string accountNumber,double balance){
			account= accountNumber;
			this->balance = balance;
			create_time = time(NULL);
		}
		void deposit(double amount){
			balance +=amount;
			time_t deposit_time =time(NULL);
			history.emplace_back(make_pair(deposit_time, amount));		
		}

  其中emplace_back是向容器vector(history)最后添加一个新的元素的方法,每个元素是一个pair,存储了存款时间和金额。
  make_pair函数是将deposit_time与amount进行封装成一个pair,再用emplace_back把它添加到容器的末尾。

		bool Withdraw(double amount){
			if(amount>balance){
				return false;
			}
			balance -=amount;
			time_t Withdraw_time =time(NULL);
		    history.emplace_back(make_pair(Withdraw_time, -amount));
			return true; 
		}
		void printHistory() {
		        for (auto& record : history) {
		            string type = (record.second > 0) ? "存入" : "取出";
		            cout << "在" << ctime(&record.first) << type << abs(record.second) << "元" << endl;
		        }
		    }

  该函数使用了一个for循环来遍历容器。其中,history存储时间戳和交易金额。每次循环都会取出一个记录,使用ctime函数将时间戳转换为可读的时间字符串,并根据交易金额的正负性确定是存入还是取出,并输出相应的信息。其中abs函数用于取交易金额的绝对值。

		double GetBalance()const{
			return balance;
		} 
	    time_t GetCreateTime() const {
	        return create_time;
	    }
		vector< pair<time_t, double> >GetHistory()const{
			return history;
		}

const用于声明该值不会改变。
四个私有变量:
(1)字符串类型的账户名(account)
(2)time_t类型的创建时间(create_time)
(3)双精度浮点数类型的余额(balance)
(4)vector<pair<time_t, double>>类型的历史记录(history)。
注意:
1.变量要声明,在Bank类中可以先声明,也可以在最后声明。
2.私有的成员变量只能在该类的成员函数中被访问和修改。

第三步,创建main函数,调用成员函数实现方法。

	int main(){
   		Bank account("12345",100.0);
   		account.deposit(50.0);
   		account.Withdraw(125.0);
   		account.printHistory();
   		return 0;
   	}

  首先创建了一个带有账户号和初始余额的 Bank 对象 account,然后分别调用了 deposit() 存款、Withdraw() 取款和 printHistory() 打印交易记录的方法。

实验题目 编写一个实现银行帐户的概念,包括的属性有“帐号”、“储户姓名”、“地址”、“存款余额”,包括的方法有“存款”、“取款”、“查询”、“计算利息”、“累加利息”等。 实验要求 改写上面的,增加一个的静态属性“最小余额”和一个用来修改这个最小余额属性的方法。 改写上面的,增加一个的静态属性“活期利率”和封装这个属性的相应方法。 程序模块 实验后的结果验证 总结体会 通过此次实验,我初步掌握了编写一个的概念,更进一步的熟悉了static等等与之用法相似的语法,增强了自己学好JAVA的信心。进一步掌握静态对象和非静态对象的区别与联系。 静态对象的数据在全局是唯一的,一改都改。如果你想要处理的东西是整个程序中唯一的,弄成静态是个好方法。 非静态的东西你修改以后只是修改了他自己的数据,但是不会影响其他同对象的数据。 静态对象和非静态对象都是对象,是对象都是要实例化的。不同之处就是2者的数据表现和存储方式不一样。 静态的好处: 引用方便。对于公用型的变量,直接用 名.静态方法名 或者 名.静态变量名就可引用并且直接可以修改其属性值,不用getter和setter方法。 保持数据的唯一性。此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。 有效减少多余的浪费。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

绵羊就会咩咩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值