C++第4周项目5 - 数组作数据成员(扩展2、3引入文件)

来源:互联网 发布:仿36氪网站源码 编辑:程序博客网 时间:2024/05/16 08:20

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8690895


【项目5 - 数组作数据成员】阅读教材P2558.4,注意到类中的数据成员可以是数组。设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number表示的职工人数。在main函数中调用你自己设计好的成员函数完成下面的功能:

(1)输入职工工资,工资保存到salary数组中,实际人数保存到number中(输入-1标志着工资输入结束);
(2)给每个人涨100元工资;
(3)对涨后的工资进行排序;
(4)输出排序后的工资。

【项目5扩展2(选做)】手工输入工资?!太让人不能忍受了。现给出包含了500个职工工资的文件salary.txt,从文件中读数据,完成上面的工作。(salary.txt可以从BB平台下载)
【项目5扩展3(选做)】增加一个成员函数,将排序后结果保存到一个文件中。


参考解答:

#include <iostream>#include <fstream>using namespace std;const N=500;class Salary   {public:         void read_data( );  void write_data();void add_salarys(int x);    void sort_salarys();void show_salarys( );      private:double salarys[N]; //工资 };void Salary::read_data( )    {int i;    ifstream infile("salary.txt",ios::in);   //以输入的方式打开文件      if(!infile)                 //测试是否成功打开      {          cerr<<"open error!"<<endl;          exit(1);      }for(i=0;i<N;++i){infile>>salarys[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<N;++i){outfile<<salarys[i]<<endl;}outfile.close();}void Salary::add_salarys(int x)  {int i;for (i=0;i<N;i++)salarys[i]+=x;}void Salary::sort_salarys()  {int i,j;double t;for (i=0;i<N-1;i++)for(j=0;j<N-i-1;j++)if (salarys[j]<salarys[j+1]){t=salarys[j];salarys[j]=salarys[j+1];salarys[j+1]=t;}}void Salary::show_salarys( )   {int i;for (i=0;i<N;i++)cout<<salarys[i]<<"\t";}int main( ){Salary s;  s.read_data( );    s.add_salarys(100);    s.sort_salarys();s.write_data( ); s.show_salarys( );  system("PAUSE");return 0;}


原创粉丝点击