Magician_liu 2023-05-13 13:51 采纳率: 57.1%
浏览 40
已结题

关于#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后得以解决,但此时却多了几个参数。

  • 写回答

2条回答 默认 最新

  • 语言-逆行者 2023-05-13 13:57
    关注

    基于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 类的实现代码,可以通过对象来管理银行账户的资金往来和账目。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 创建了问题 5月13日

悬赏问题

  • ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
  • ¥20 求:怎么实现qt与pcie通信
  • ¥50 前后端数据顺序不一致问题,如何解决?(相关搜索:数据结构)
  • ¥15 基于蒙特卡罗法的中介效应点估计代码
  • ¥15 罗技G293和UE5.3
  • ¥20 Tesla 特斯拉K80显卡 如果需要使用该设备,你需要禁用系统上的另一个设备。
  • ¥30 QT调用百度智能云千帆模型无法取得返回文本
  • ¥50 CCD工业视觉相机检测出现光边
  • ¥60 二次元手游日常任务自动化代肝(相关搜索:自动化)
  • ¥15 mysql将查询的结果作为动态列名怎么实现