用C++设计一个 Bank 类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。 指导:Bank 类包括私有数据成员 top(当前账指针)、date(日期)、money(金额)、rest (余额)和 sum(累计余额),以及一个构造函数和三个成员函数 bankin()(处理存入账), bankout()(处理取出账)和 disp()(输出明细账)。
时间: 2023-12-26 09:05:55 浏览: 148
以下是一个简单的 Bank 类的实现,包括建账号、存入、取出和输出明细账等功能:
```cpp
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
class Bank {
public:
// 构造函数
Bank() : top(nullptr), date(time(nullptr)), money(0), rest(0), sum(0) {}
// 存入账
void bankin(double amount) {
money = amount;
rest += amount;
sum += amount;
cout << "存入" << amount << "元,余额为" << rest << "元" << endl;
addRecord();
}
// 取出账
void bankout(double amount) {
money = -amount;
rest -= amount;
sum -= amount;
cout << "取出" << amount << "元,余额为" << rest << "元" << endl;
addRecord();
}
// 输出明细账
void disp() {
cout << "账号明细:" << endl;
cout << "日期\t\t金额\t余额" << endl;
for (auto p = top; p != nullptr; p = p->next) {
cout << p->date << "\t" << p->money << "\t" << p->rest << endl;
}
cout << "累计余额:" << sum << endl;
}
private:
struct Record {
time_t date;
double money;
double rest;
Record* next;
Record(time_t _date, double _money, double _rest, Record* _next = nullptr)
: date(_date), money(_money), rest(_rest), next(_next) {}
};
Record* top; // 当前账指针
time_t date; // 日期
double money; // 金额
double rest; // 余额
double sum; // 累计余额
// 添加记录
void addRecord() {
auto p = new Record(date, money, rest, top);
top = p;
}
};
int main() {
Bank bank;
bank.bankin(1000);
bank.bankin(2000);
bank.bankout(500);
bank.bankin(3000);
bank.bankout(1000);
bank.disp();
return 0;
}
```
在这个实现中,Bank 类包含了一个内部类 Record,用于记录每一笔资金往来的日期、金额和余额。Bank 类的成员变量包括当前账指针 top、日期 date、金额 money、余额 rest 和累计余额 sum。Bank 类提供了三个成员函数 bankin()、bankout() 和 disp(),用于存入、取出和输出明细账。
在存入或取出账时,Bank 类会记录当前的日期、金额和余额,并将记录添加到链表中。在输出明细账时,Bank 类会遍历整个链表并输出每一笔资金往来的日期、金额和余额,以及累计余额。
阅读全文