第八周项目一(2) 数组做数据成员(工资类 文件 指针)

来源:互联网 发布:安德烈波切利 知乎 编辑:程序博客网 时间:2024/04/29 23:42
/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:舒文超 * 完成日期:2016年4月17日 * 版本号:vc++6.0 * * 问题描述: 手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt,             增加一个成员函数,用于从文件中读取数据,再增加一个成员函数,将排序后的结果保存到             一个文件中编写main函数,测试你的扩充功能。 */#include <iostream>#include <fstream>#include <cstdlib>using namespace std;class Salary{public:    void add_salarys(int x); //给每个人涨x元工资    void sort_salarys(); //对工资由大到小排序    void show_salarys(); //显示工资信息    void read_data( ); //读入数据    void write_data();  //写入数据private:    double salarys[500]; //多人的工资    int number;  //实际人数};void Salary::read_data( ){    int i;    double *p;    p=salarys;    ifstream infile("salary.txt",ios::in);   //以输入的方式打开文件    if(!infile)                 //测试是否成功打开    {        cerr<<"File can not open!"<<endl;        exit(0);    }    i=0;    while(infile>>*(p+i))        i++;    number=i;    infile.close();}void Salary::write_data( ){    int i;    double *p;    p=salarys;    ofstream outfile("salary_ordered.txt",ios::out);   //以输入的方式打开文件    if(!outfile)                 //测试是否成功打开    {        cerr<<"open error!"<<endl;        exit(1);    }    for(i=0; i<number; ++i)    {        outfile<<*(p+i)<<endl;    }    outfile.close();}void Salary::add_salarys(int x){    int i;    double *p;    p=salarys;    for(i=0;i<number;i++)        *(p+i)+=x;}void Salary::sort_salarys(){    int i,j;    double money;    double *p;    p=salarys;    for(i=0;i<number-1;i++)    {        for(j=0;j<number-i-1;j++)        {            if(*(p+j)>*(p+j+1))            {                money=*(p+j);                *(p+j)=*(p+j+1);                *(p+j+1)=money;            }        }    }}void Salary::show_salarys(){    int i;    double *p;    p=salarys;    for(i=0;i<number;i++)        cout<<*(p+i)<<endl;}int main(){    Salary sa;    sa.read_data();    sa.add_salarys(500);    sa.sort_salarys();    sa.write_data();    sa.show_salarys();    return 0;    return 0;}

0 0
原创粉丝点击