第三周项目5——数组做数据成员(3)(4)
第三周项目五——数组做数据成员(3)(4)
(3)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(下载),从文件中读数据,完成上面的工作。
(4)增加一个成员函数,将排序后结果保存到一个文件中。
/* All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 3 月 29 日 * 版 本 号:v1.0 * 问题描述:(3)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(下载),从文件中读数据,完成上面的工作。 * 输入描述: * 输出结果: */ #include <iostream> #include <fstream> #include <cstdlib> using namespace std; const int N=500; class Salary { private: double salarys[N];//用数组保存工资 int number;//实际的人数 public: void read_data(); void write_data(); void add_salarys(int x);//给每个人涨工资 void sort_salarys();//对工资排序 void show_salarys();//显示工资的信息 }; int main() { Salary s; s.read_data(); s.add_salarys(500); s.sort_salarys(); s.write_data(); s.show_salarys(); return 0; } void Salary::read_data() { int i; ifstream infile("salary.txt",ios::in);//以输入的方式打开文件 if (!infile) //测试是否成功打开 { cerr<<"open error!"<<endl; exit(1); } i=0; while(infile>>salarys[i]) i++; number=i; infile.close(); } void Salary::write_data() { int i; ofstream outfile("salary_ordered.txt",ios::out); //以输入的方式打开文件 if(!outfile) //测试是否成功打开 { cerr<<"open error!"<<endl; exit(1); } for(i=0;i<number;++i) { outfile<<salarys[i]<<endl; } outfile.close(); } void Salary::add_salarys(int x) { int i; for(i=0; i<number; i++) { salarys[i]+=x; } } void Salary::sort_salarys() { int i,j; double t; for(i=0; i<number-1; i++) for(j=0; j<number-1-i; j++) { if(salarys[j+1]>salarys[j]) { t=salarys[j]; salarys[j]=salarys[j+1]; salarys[j+1]=t; } } } void Salary::show_salarys() { int i; cout<<"输出增加工资后的工资数据排序:"<<endl; for(i=0; i<number; i++) { cout<<i+1<<" "<<salarys[i]<<'\t'; } }输出的结果为:
心得体会:不容易啊,继续加油吧!