SRM

搏至无憾 鲨向巅峰

视觉组第三次培训作业

视觉组第三次培训作业

封装、继承、多态、模板


模板

在原先基础上为Vector添加模板特性


继承与多态

你是银行的一名程序员,银行分配给你开发两个类的任务。一个类用于表示基础支票账户—ChequeBase,仅支持存款和取款,无法透支;另一个类用于表示升级支票账户—ChequePlus,其添加了透支保护特性,即用户如果签出一张超出其存款余额的支票(透支存在上限),银行将对超出的部分收取额外的费用

ChequeBase账户信息:

  • 客户姓名
  • 账号
  • 当前结余

ChequeBase可执行的操作:

  • 创建账户
  • 存款
  • 取款
  • 显示账户信息(ChequeBase所有的账户信息)

ChequePlus账户信息

  • ChequeBase账户信息
  • 透支上限
  • 透支利率(银行收取的额外费用 = 透支数额 * 透支利率)
  • 当前透支总额 = 透支数额 + 银行收取的额外费用

ChequePlus可执行的操作

  • ChequeBase可执行的操作,但有透支特性
  • 显示ChequePlus所有的账户信息

现要求从一抽象基类Cheque派生出ChequeBase和ChequePlus,Cheque类声明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Cheque
{
private:
std::string fullname; // 客户姓名
long acctnum; // 账号
double balance; // 当前结余

protected:
const std::string& FullName() const { return fullname; }
long AcctNum() const { return acctnum; }

public:
Cheque(const std::string& a = "Nobody", long an = -1, double bal = 0.0); // 创建账户
void Deposit(double amt); // 存款
void Withdraw(double amt); // 取款
void ViewAcct() const; // 显示账户信息
void Balance() const { return balance; }
~Cheque();
};

修改上述声明,使其满足多态特性,并自行实现Cheque剩余部分的定义以及ChequeBase ChequePlus的声明与定义


测试

创建一个能够同时存储ChequeBase和ChequePlus的Vector对象,并编写代码测试Vector的插入(insert)、删除(erase)、访问([ ])操作,并通过Vector的访问操作对元素进行取款(Withdraw)、存款(Deposit)、显示账户信息(ViewAcct)的操作测试


提交

将代码文件打包压缩为姓名-组别-0724.zip,以邮件形式发送至linzitao1379@gmail.com

ddl:7.29 24:00