- 期中考前小练习3
按以下要求编写程序。
- 请各位考生从课程信息发布网站下载数据文件input.txt,然后将该数据文件手动保存在D盘根目录中。在该文件中以文本文件的方式存放了若干个用于表示工人信息的结构体类型数据,每个工人信息占一行,每个工人的各数据之间以空格来间隔。结构体类型的声明如下所示。
typedef struct
{
int ID; //工号
string Name; //姓名
int WorkYears; //工龄
float Salary; //工资
}WORKER; - 编写一个函数,将input.txt文件中的数据读出,并且构建1个工人向量A。要求使用C++中文件流的方法。
- 编写一个函数,将上述向量A针对姓名Name按照字典序进行增序排序。本函数的声明形式规定如下:
void Sort(vector &Arr); - 编写一个函数,将向量A中所有工人的信息显示在屏幕上,显示格式要求如下:
《工号》
10列,左对齐 《姓名》
10列,右对齐 《工龄》
5列,右对齐 《工资》
保留1位小数,右对齐
111 TOM 25 3091.0
122 MIKE 3 2393.5
…… - 编写一个Fliter函数,将向量A中工龄大于等于X的工人数据输出到新的向量B中,并按照上述第4步中相同的要求显示向量B。如不输入工龄范围值X,X等于10。
- 编写一个与上面第5步中同名的Fliter函数,将向量A中工资大于等于Y的工人数据输出到新的向量C中,并按照上述第4步中相同的要求显示向量C。如不输入工资范围值Y,Y等于1500.0。
- 要求使用流的方法来完成程序流程中所有的数据输入和输出操作;要求使用向量来保存工人信息。
- 代码:
#include<iostream>
#include<vector>
#include<string>
#include<fstream>
#include<sstream>
#include<algorithm>
#include<iomanip>
using namespace std;
typedef struct
{
int ID; //工号
string Name; //姓名
int WorkYears; //工龄
float Salary; //工资
}WORKER;
void read_data(vector<WORKER>& A) {
A.clear();
ifstream data(