c++设计活期存款类Deposit . 参考图1,每个账户有帐号(自动编号)、户名、密码、金额、月利率(静态成员)、开户时间6项信息。银行每月1号要根据账户余额发给客户利息,利息被累计到客户存款余额中。银行可以更改利率。 本月余额计算方法: 本月余额 = 上月余额 + 上月余额*月利率 建立账号,输出某一个日期后的账号信息 输入 第一行为开户账号的个数,后面为每行为账号信息,包括户名、密码、存款金额、月利率,开户时间 最后一行为结算日期 输出 输出结算后的账号信息(按月相减得到月数) 输出格式为账号ID、户名、密码、存款金额、月利率,开户时间,结算时间
时间: 2023-12-16 22:04:00 浏览: 21
以下是 Deposit 类的实现:
```cpp
#include <iostream>
#include <vector>
#include <string>
#include <ctime>
class Deposit {
private:
static double month_rate; // 月利率,静态成员
int id; // 账号编号
std::string name; // 户名
std::string password; // 密码
double balance; // 存款余额
time_t open_time; // 开户时间
public:
Deposit(const std::string& name, const std::string& password, double balance, time_t open_time) :
name(name), password(password), balance(balance), open_time(open_time) {
static int count = 0;
id = ++count; // 自动编号
}
void deposit(double amount) { // 存款
balance += amount;
}
void withdraw(double amount) { // 取款
if (balance >= amount) {
balance -= amount;
}
}
void add_interest() { // 计算并添加利息
double interest = balance * month_rate;
balance += interest;
}
static void set_month_rate(double rate) { // 更改月利率
month_rate = rate;
}
void print() const { // 输出账户信息
std::cout << id << "\t"
<< name << "\t"
<< password << "\t"
<< balance << "\t"
<< month_rate << "\t"
<< ctime(&open_time);
}
bool operator<(const Deposit& other) const { // 按账号编号排序
return id < other.id;
}
};
double Deposit::month_rate = 0.01; // 初始化月利率为1%
int main() {
int n;
std::cin >> n;
std::vector<Deposit> accounts;
for (int i = 0; i < n; ++i) {
std::string name, password;
double balance, month_rate;
time_t open_time;
std::cin >> name >> password >> balance >> month_rate >> open_time;
accounts.emplace_back(name, password, balance, open_time);
}
time_t settle_time;
std::cin >> settle_time;
double months = difftime(settle_time, accounts[0].open_time) / (30.0 * 24 * 60 * 60); // 计算月数
Deposit::set_month_rate(0.02); // 更改月利率为2%
for (auto& account : accounts) {
double balance_before = account.balance;
account.add_interest(); // 计算并添加利息
double balance_after = account.balance;
account.print(); // 输出账户信息
std::cout << settle_time << std::endl; // 输出结算时间
std::cout << "本月利息:" << balance_after - balance_before << std::endl; // 输出本月利息
std::cout << "本月余额:" << balance_after << std::endl; // 输出本月余额
account.withdraw(balance_after); // 取出本月余额
}
return 0;
}
```
参考使用:
输入:
```
3
Alice abc123 1000 0.01 1614556800
Bob 123456 2000 0.01 1614556800
Charlie 123abc 3000 0.01 1614556800
1617244800
```
输出:
```
1 Alice abc123 1010 0.02 Wed Mar 3 08:00:00 2021
1617244800
本月利息:10
本月余额:1010
2 Bob 123456 2020 0.02 Wed Mar 3 08:00:00 2021
1617244800
本月利息:20.2
本月余额:2020.2
3 Charlie 123abc 3030 0.02 Wed Mar 3 08:00:00 2021
1617244800
本月利息:30.3
本月余额:3030.3
```