第三周项目五——数组做数据成员(5)

来源:互联网 发布:ubuntu安装搜狗拼音 编辑:程序博客网 时间:2024/06/05 03:37
(5)用多文件的方式组织最后的程序。

参考解答:
(1)main.cpp  用于定义main()函数
/* All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 3 月 29 日 * 版 本 号:v1.0 * 问题描述:(3)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(下载),从文件中读数据,完成上面的工作。 * 输入描述: * 输出结果: */#include <iostream>#include "salary.h"#include <fstream>#include <cstdlib>using namespace std;int main(){    Salary s;    s.read_data();    s.add_salarys(500);    s.sort_salarys();    s.write_data();    s.show_salarys();    return 0;}

(2)头文件: salary.h,头文件,声明类,定义内置成员函数
#ifndef SALARY_H_INCLUDED#define SALARY_H_INCLUDEDconst 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();//显示工资的信息};#endif // SALARY_H_INCLUDED

(3) salary.cpp,用于定义Salary中其他成员函数
#include <iostream>#include "salary.h"#include <fstream>#include <cstdlib>using namespace std;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';    }}


心得体会:多文件组织已掌握,又建成一小截的管道,继续加油!
0 0