【c++】2020大一下期末考试

解析: 注意要对输入数据不合格的情况进行处理

考试题目

基类说明: 现有CWorker 类
派生类说明:
请以CWorker类为基类进行公有继承,派生出CBenchWorker类用于描述钳工。CBenchWorker
类在继承CWorker所有数据成员的基础上,还需要添加1个私有成员用于描述钳工级别,成员
定义代码如下:
int m_Grade; //钳工级别 1-5,最大为5级

  1. 为CBenchWorker 类添加一个构造函数。构造函数通过6 个形式参数对钳工的6 个成员分别进行初始化。如果这6 个形式参数都没有提供初始值,则各成员的初始值如下所示:
  • 工号:0
  • 姓名:”No Name”
  • 性别:’M’
  • 年龄:18
  • 级别:1
  1. 为CBenchWorker 类添加返回级别的成员函数GetGrade;
  2. 为CBenchWorker 类添加前自增运算符++。++运算符用于将钳工的级别加1;
  3. 为CBenchWorker 类重载流输出运算符<<。其中基类部分数据的输出格式与基类的
    operator<<函数相同,CBenchWorker 类新增成员的输出格式要求如下:
  4. 级别:右对齐,占5 列,不足部分补空格
  5. 不允许在题目要求以外添加其它成员变量、成员函数或友元函数。

程序业务流程说明

  1. 编写一个函数readData 。从下载的数据文件workers.txt 中读取数据, 逐个生成CBenchWorker 类的对象,并将这些对象存储到vector 对象myVect 中。
  2. 编写一个函数DisplayData。显示这些钳工信息。每个钳工数据占一行,每行中显示格式的要求与CBenchWorker 类operator<<函数的要求相同。
  3. 编写一个函数InecData。对所有钳工依次执行前自增运算,结果仍然保存在myVect 中。
  4. 编写一个函数DelData。删除所有年龄大于等于X 岁、级别小于等于Y 级的钳工,结果仍然保存在myVect 中,并返回删除人数。
  5. 编写一个函数DelData。删除所有姓名中包含(大小写不敏感)字符串X 的钳工,结果仍然保存在myVect 中,并返回删除人数。例如,以目标字符串“Tom”为例,“TOMWANG”“WANGtOM” “WANGtOm” “toMWANG”“ToMWANG” “tomWANG”中都包含了“Tom”子串。
  6. 编写一个函数SortData。对所有钳工按照性别(女士优先,女性在前、男性在后)进行排序,其中男性钳工中按照级别进行增序排列,女性钳工中按照级别进行降序排列。
  7. 编写一个函数WriteData。将经过上述处理后的所有钳工信息保存到指定文件中。每个钳工数据占一行,每行中文件保存格式的要求CBenchWorker 类operator<<函数的要求相

考试代码

/*******************************************
	学号:1927405148 
	姓名:凌珑 
	手机号码:18261902240 
*******************************************/

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

class CWorker
{
   
private:
	int m_ID;		//工号
	string m_Name;	//姓名
	int m_Sex;		//性别	0代表女性	1代表男性
	int m_Age;		//年龄

public:
	CWorker(int ID, string Name, int Sex, int Age)
	{
   
		if (Sex<0 || Sex>1)
		{
   
			cout<<"性别初始值"<<Sex<<"不符合要求!"<<endl;
			exit(0);
		}
		if (Age<=0 )
		{
   
			cout<<"年龄初始值"<<Age<<"不符合要求!"<<endl;
			exit(0);
		}

		m_ID=ID;
		m_Name=Name;
		m_Sex=Sex;
		m_Age=Age;
	}

	string GetName()const
	{
   
		return m_Name;
	}

	int GetSex()const
	{
   
		return m_Sex;
	}

	int GetAge()const
	{
   
		return m_Age;
	}

	friend ostream& operator<<(ostream& Out, const CWorker& Obj)
	{
   
		Out<<right<<setw(5)<<Obj.m_ID;
		Out<<right<<setw(10)<<Obj.m_Name;
		Out<<right<<setw(5)<<Obj.m_Sex;
		Out<<right<<setw(6)<<Obj.m_Age
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值