支票透支了怎么办


​ 在一定的范围内,支票透支后“好心”的银行也会让你取出来,但之后吗……利息是少不了的

:(

#pragma once
#include<iostream>
#include<string>
using namespace std;

// Brass类表示一个基本的银行账户
class Brass
{
private:
string fullName; // 客户姓名
long acctNum; // 账户号码
double balance; // 账户余额
public:
// 构造函数,初始化客户姓名、账户号码和余额
Brass(const string& s = "Nullbody", long an = -1, double bal = 0.0);

// 存款函数
void Deposit(double amt);

// 虚函数,取款函数
virtual void Withdraw(double amt);

// 返回账户余额
double Balance()const;

// 虚函数,显示账户信息
virtual void ViewAcct()const;

// 虚析构函数
virtual ~Brass();
};

// BrassPlus类继承自Brass类,表示一个具有透支功能的银行账户
class BrassPlus :public Brass
{
private:
double maxLoan; // 最大贷款额
double rate; // 贷款利率
double owesBank; // 欠银行的钱
public:
// 构造函数,初始化客户姓名、账户号码、余额、最大贷款额和贷款利率
BrassPlus(const string& s = "Nullbody", long an = -1, double bal = 0.0, double m1 = 500, double r = 0.011125);

// 构造函数,使用Brass对象初始化,并设置最大贷款额和贷款利率
BrassPlus(const Brass& ba, double m1 = 500, double r = 0.11125);

// 虚函数,显示账户信息
virtual void ViewAcct()const;

// 虚函数,取款函数
virtual void Withdraw(double amt);

// 重置最大贷款额
void ResertMax(double m) {
maxLoan = m;
}

// 重置贷款利率
void ResertRate(double r) {
rate = r;
}

// 重置欠银行的钱为0
void ResertOwes()
{
owesBank = 0;
}
};
#include "Brass.h"
typedef ios_base::fmtflags format;
typedef streamsize precis;

// 设置格式
format setFormat();
// 恢复格式
void restore(format f, precis p);

// BrassPlus 构造函数
BrassPlus::BrassPlus(const string& s, long an, double bal, double m1, double r)
{
maxLoan = m1;
owesBank = 0.0;
rate = r;
}

// BrassPlus 构造函数
BrassPlus::BrassPlus(const Brass& ba, double m1, double r)
{
maxLoan = m1;
owesBank = 0.0;
rate = r;
}

// 查看账户信息
void BrassPlus::ViewAcct() const
{
format initialstate = setFormat();
precis prec = cout.precision(2);
Brass::ViewAcct();
cout << "Maxium load: $" << maxLoan << endl;
cout << "Owed to bank: $" << owesBank << endl;
cout.precision(3);
cout << "Loan Rate: " << 100 * rate << "%\n";
restore(initialstate, prec);
}

// 提现
void BrassPlus::Withdraw(double amt)
{
format initialstate = setFormat();
precis prec = cout.precision(2);
double bal = Balance();
if (amt <= bal)
Brass::Withdraw(amt);
else if (amt <= bal + maxLoan - owesBank)
{
double advance = amt - bal;
owesBank += advance * (1.0 + rate);
cout << "Bank advance: $" << advance << endl;
cout << "Finance charge : $" << advance * rate << endl;
Deposit(advance);
}
else
cout << "Credit limit exceeded. Transaction cancelled.\n";
restore(initialstate, prec);
}

// Brass 构造函数
Brass::Brass(const string& s, long an, double bal)
{
fullName = s;
acctNum = an;
balance = bal;
}

// 存款
void Brass::Deposit(double amt)
{
if (amt < 0)
{
cout << "Negative deposit not allowed; deposit is cancelled.\n";
}
else
balance += amt;
}

// 提现
void Brass::Withdraw(double amt)
{
format initialstate = setFormat();
precis prec = cout.precision(2);
}

// 获取余额
double Brass::Balance() const
{
return balance;
}

// 查看账户信息
void Brass::ViewAcct() const
{
format initialstate = setFormat();
precis prec = cout.precision(2);
cout << "Client: " << fullName << endl;
cout << "Account Number: " << acctNum << endl;
cout << "Balance: $" << balance << endl;
restore(initialstate, prec);
}

// Brass 析构函数
Brass::~Brass()
{
}

// 设置格式
format setFormat()
{
return cout.setf(ios_base::fixed, ios_base::floatfield);
}

// 恢复格式
void restore(format f, precis p)
{
cout.setf(f, ios_base::floatfield);
cout.precision(p);
}

#include "Brass.h"

int main()
{
// 创建一个Brass对象Piggy,账户名为"porcelot pigg",账户号为381299,初始余额为4000.00
Brass Piggy("porcelot pigg", 381299, 4000.00);

// 创建一个BrassPlus对象Hoggy,账户名为"Horation Hogg",账户号为382288,初始余额为3000.00
BrassPlus Hoggy("Horation Hogg", 382288, 3000.00);

// 显示Piggy账户信息
Piggy.ViewAcct();
cout << endl;

// 显示Hoggy账户信息
Hoggy.ViewAcct();
cout << endl;

// 向Hoggy账户存入1000美元
cout << "Depositing $1000 into the hogg Account:\n";
Hoggy.Deposit(1000.00);
cout << "New balance: $" << Hoggy.Balance() << endl;

// 从Piggy账户取出4200美元
Piggy.Withdraw(4200.00);
cout << "Piggy account balance: $" << Piggy.Balance() << endl;

// 从Hoggy账户取出4200美元
cout << "Withdrawing $4200 from the Hogg Account:\n";
Hoggy.Withdraw(4200.00);

// 显示Hoggy账户信息
Hoggy.ViewAcct();

// 暂停系统,等待用户输入
system("pause");
return 0;
}

结果:

Client:porcelot pigg
Account Number:381299
Balance: $4000.00

Client:Nullbody
Account Number:-1
Balance: $0.00
Maxium load: $500.00
Owed to bank: $0.00
Loan Rate: 1.113%

Depositing $1000 into the hogg Account:
Nem balance: $1000
Pigg account balance:$4000.00
Withdrawing $4200 from the Hogg Account:
Credit limit exceeded.Transaction cancelled.
Client:Nullbody
Account Number:-1
Balance: $1000.00
Maxium load: $500.00
Owed to bank: $0.00
Loan Rate: 1.113%

特别鸣谢Github Copilot生成的注释)


Author: t1g3r
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source t1g3r !
评论
  TOC