关于#c++#的问题:Bank类实验中我觉得难点是如何获得操作时间,一开始用的ctime,可是编译器报错提示不安全,百度查询后改为ctime_s后得以解决

一、设计一个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
即可