一、设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等
Bank类包括私有数据成员账号number,rest(账户余额)和成功操作的交易记录string records(或者char records)。每一条记录包含的信息有:交易时间(精确到秒)、交易类型(存钱和取钱) 和交易金额
Bank类有一个构造函数(设置账号和初始余额)和三个成员函数
bankin(double m)(处理存入账),bankout( double m)处理取出账)和
disp(Bank b)(输出明细账)自己设计main函数使用该类
#include<iostream>
#include<time.h>
#include<string>
using namespace std;
class Bank
{
private:
long number;
double rest;
string records[50];
int N;
public:
Bank(long number, double rest)
{
this->number = number;
this->rest = rest;
this->N = 0;
}
void Bankin(double m)
{
this->rest += m;
time_t now = time(0);
char x[30];
ctime_s(x, sizeof(x), &now);
this->records[N++] = (string)"交易时间为:" +x + (string)"交易类型为:存钱 " + (string)"交易金额为:" + to_string(m);
}
void Bankout(double m)
{
if (m > this->rest)
{
cout << "余额不足" << endl;
return;
}
this->rest -= m;
time_t now = time(0);
char x[30];
ctime_s(x, sizeof(x), &now);
this->records[N++] = (string)"交易时间为:" + x + (string)"交易类型为:取钱 " + (string)"交易金额为:" + to_string(m);
}
friend void disp(Bank& b);
};
void disp(Bank& b)
{
cout <<b.number<<"账户剩余余额为:" << b.rest << endl;
cout << "该账户共有" << b.N << "条交易记录" << endl;
for (int i = 0; i < b.N; i++)
{
cout << b.records[i] << endl;
}
}
int main() {
Bank a(12215, 10000);
a.Bankin(5000);
a.Bankout(12000);
disp(a);
return 0;
}
Bank类实验中我觉得难点是如何获得操作时间,一开始用的ctime,可是编译器报错提示不安全,百度查询后改为ctime_s后得以解决,但此时却多了几个参数。
基于new bing的编写参考:
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
class Bank {
private:
string number; // 账号
double rest; // 余额
string records; // 交易记录
public:
Bank(string n, double r) {
number = n;
rest = r;
records = "";
}
void bankin(double m) { // 存入账
time_t now = time(0);
char* dt = ctime(&now);
records += dt;
records += " 存入 ";
records += to_string(m);
records += "\n";
rest += m;
}
void bankout(double m) { // 取出账
if (rest < m) {
cout << "余额不足!" << endl;
} else {
time_t now = time(0);
char* dt = ctime(&now);
records += dt;
records += " 取出 ";
records += to_string(m);
records += "\n";
rest -= m;
}
}
void disp() { // 输出明细账
cout << "账号:" << number << endl;
cout << "余额:" << rest << endl;
cout << "交易记录:\n";
cout << records << endl;
}
};
int main() {
Bank bank("1234567890", 1000); // 初始化一个账户
bank.bankin(500); // 存入 500 元
bank.bankout(200); // 取出 200 元
bank.bankin(1000); // 存入 1000 元
bank.disp(); // 输出账户明细
return 0;
}
以上代码中,我们首先定义了一个 Bank 类,并设置了三个私有成员变量:账号 number、余额 rest 和交易记录 records。
在类的构造函数中,我们初始化了账号和初始余额,并将交易记录的字符串设为空。
在 bankin 函数中,我们定义了一个 time_t 变量来获取当前时间,并使用 ctime 函数将其转换为一个可以打印的字符串格式。然后将交易类型(即存入)和交易金额加入到交易记录的字符串中,并将余额增加相应的数目。
在 bankout 函数中,我们首先判断账户余额是否足够取出指定的金额。如果余额不足,则不进行交易,并输出提示信息;否则,按照上述方式记录交易记录并更新余额。
在 disp 函数中,我们首先输出账号和余额的信息,然后输出交易记录的字符串。
最后,在 main 函数中,我们首先创建一个 Bank 类型的对象,并进行存入、取出和存入的操作。最后,调用 disp 函数来输出账户明细。
以上就是一个简单的 Bank 类的实现代码,可以通过对象来管理银行账户的资金往来和账目。
不安全的提示只要在开头加上一行
#define _CRT_SECURE_NO_WARNINGS 1
即可