解析: 考题本身非常简单,需要注意书写格式(特别是我被扣分的注释QAQ)。
考试题目
请各位考生从课程教学群文件中下载数据文件account.txt,然后将数据文件手动保存在D 盘根文件夹下。按要求编写一个deposit 类,用于存储文件account.txt 中的数据。该文件中每行记录一个账户的信息,包含4 项数据,以tab字符分隔,各个字段的信息如下:
第 1 列表示账户名称name;
第 2 列表示账户存款余额balance;
第 3 列表示账户贷款余额loan;
第 4 列表示每次还贷金额charge;
根据account.txt 文件中的数据,现设计deposit 类的结构如下,其中包含4个私有数据成员变量:
class deposit
{
private:
string name;
double balance, loan, charge;
public:
……
}
按以下要求编写程序
- deposit 类包含构造函数,name默认值为“NoName”,其余参数默认值为0.0。
- deposit 类包含成员函数setName,用于设置账户名称。
- deposit 类包含成员函数pay,用于执行还贷操作。正常还贷操作的过程是:balance 减去charge,loan 减去charge。如果loan 大于charge,则还贷金额为charge,否则还贷金额为loan。如果余额balance 大于还贷金额charge,则正常还贷,并返回true,否则不执行还贷操作,并设置账户名称为原名称后面加“(*)”,并返回false。
- 重载后自增运算符++,用于将当前对象的每次还贷金额charge 增加100。
- 重载流输出运算符,用于显示一个对象的信息。其中,name 占10 列并左对齐,balance、loan、charge 各占15 列并精确到小数点后2 位。
- 编写函数 inputData,完成数据的读入,结果存放在向量v_acc 中。
- 编写函数 incData,将v_acc 中所有账户的还贷金额增加100。
- 编写函数 decData,将v_acc 中所有账户执行一次还贷操作,返回无法完成还贷的账户数;
- 编写函数 outPut,用于把向量v_acc 中的数据显示输出。显示格式在重载流输出运算符中已有表述。
程序的main 函数(注意:不得修改main 函数!对main 函数每修改
一处扣2 分,最多扣10 分。)
int main()
{
vector<deposit> v_acc;
string path = "d:\\account.txt";
inputData(path, v_acc);
outPut(v_acc);
cout << "-------------------------------" << endl;
incData(v_acc);
outPut(v_acc);
cout << "-------------------------------" << endl;
cout << "can not pay = " << decData(v_acc) << endl;
outPut(v_acc);
return 0;
}
考试代码
//1927405148,凌珑
#include<iostream>
#include<sstream>
#include<istream>
#