zoukankan      html  css  js  c++  java
  • 第三周项目5-数组作数据成员

    设计一个工资类(Salary),其中类的数据成员如下:
    class Salary
    {
    private:
        double salarys[50]; //多人的工资
        int number;  //实际人数
    };


    要设计的成员函数有:

    • void set_salarys( ):输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中;
    • void add_salarys(int x):给每个人涨x元工资
    • void sort_salarys():对工资排序
    • void show_salarys( ):显示工资信息
    (1)在main函数定义Salary类的对象,输入工资,再给每个人涨500元工资,排序后工资数据,然后输出结果。

    /*
     *Copyright (c) 2015,烟台大学计算机学院
     *All gight reserved.
     *文件名称:Demo.cpp
     *作者:邵帅
     *完成时间:2015年03月25日
     *版本号:v1.0
    */
    #include <iostream>
    using namespace std;
    class Salary
    {
    private:
        double salarys[50];
        int number;
    public:
        void set_salarys( );
        void add_salarys(int x);
        void sort_salarys();
        void show_salarys( );
    
    };
    void Salary::set_salarys()
    {
        int i=0,sal;
        while(cin>>sal && sal!=-1)
        {
            salarys[i]=sal;
            i++;
        }
        number=i+1;
    }
    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-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()
    {
        for (int i=0;i<number;i++)
            cout<<salarys[i]<<" ";
    }
    int main()
    {
        Salary a;
        a.set_salarys();
        a.add_salarys(500);
        a.sort_salarys();
        a.show_salarys();
        return 0;
    }
    



    (2)用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用动态分配内存的机制,开辟一个大小正好的连续空间,完成上面的工作。

    /*
     *Copyright (c) 2015,烟台大学计算机学院
     *All gight reserved.
     *文件名称:Demo.cpp
     *作者:邵帅
     *完成时间:2015年03月25日
     *版本号:v1.0
    */
    #include <iostream>
    using namespace std;
    class Salary
    {
    private:
        double *salarys;
        int number;
    public:
        void set_salarys( );
        void add_salarys(int x);
        void sort_salarys();
        void show_salarys( );
    
    };
    void Salary::set_salarys()
    {
        int x,i;
        cout<<"请输入职工的人数: ";
        cin>>number;
        salarys=new double[number];
        cout<<"请输入职工的工资: ";
        for(i=0;i<number;++i)
        {
            cin>>x;
            salarys[i]=x;
        }
    
    }
    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-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()
    {
        for (int i=0;i<number;i++)
            cout<<salarys[i]<<" ";
    }
    int main()
    {
        Salary a;
        a.set_salarys();
        a.add_salarys(500);
        a.sort_salarys();
        a.show_salarys();
        return 0;
    }
    



    (3)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(下载),从文件中读数据,完成上面的工作。

    /*
     *Copyright (c) 2015,烟台大学计算机学院
     *All gight reserved.
     *文件名称:Demo.cpp
     *作者:邵帅
     *完成时间:2015年03月25日
     *版本号:v1.0
    */
    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    using namespace std;
    class Salary
    {
    private:
        double salarys[500];
        int number;
    public:
        void set_salarys( );
        void add_salarys(int x);
        void sort_salarys();
        void show_salarys( );
    
    };
    void Salary::set_salarys()
    {
        int i;
        ifstream infile("salarys.txt",ios::in);
        if(!infile)
        {
            cerr<<"打开文件失败!"<<endl;
            exit(1);
        }
        i=0;
        while(infile>>salarys[i])
            i++;
        infile.close();
        number=i;
    }
    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-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()
    {
        for (int i=0; i<number; i++)
            cout<<salarys[i]<<endl;
    }
    int main()
    {
        Salary a;
        a.set_salarys();
        a.add_salarys(500);
        a.sort_salarys();
        a.show_salarys();
        return 0;
    }
    



    (4)增加一个成员函数,将排序后结果保存到一个文件中。

    /*
     *Copyright (c) 2015,烟台大学计算机学院
     *All gight reserved.
     *文件名称:Demo.cpp
     *作者:邵帅
     *完成时间:2015年03月25日
     *版本号:v1.0
    */
    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    using namespace std;
    class Salary
    {
    private:
        double salarys[500];
        int number;
    public:
        void set_salarys( );
        void add_salarys(int x);
        void sort_salarys();
        void show_salarys( );
        void save_date();
    
    };
    void Salary::set_salarys()
    {
        int i;
        ifstream infile("salarys.txt",ios::in);
        if(!infile)
        {
            cerr<<"打开文件失败!"<<endl;
            exit(1);
        }
        i=0;
        while(infile>>salarys[i])
            i++;
        infile.close();
        number=i;
    }
    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-i-1; j++)
                if (salarys[j]>salarys[j+1])
                {
                    t=salarys[j];
                    salarys[j]=salarys[j+1];
                    salarys[j+1]=t;
                }
    
    }
    void Salary::save_date()
    {
        int i;
        ofstream outfile("salarys_sort.txt",ios::out);
        if(!outfile)
        {
            cerr<<"打开文件失败!"<<endl;
            exit(1);
        }
        for(i=0; i<number; ++i)
        {
            outfile<<salarys[i]<<endl;
        }
        outfile.close();
    
    }
    void Salary::show_salarys()
    {
        for (int i=0; i<number; i++)
            cout<<salarys[i]<<endl;
    }
    int main()
    {
        Salary a;
        a.set_salarys();
        a.add_salarys(500);
        a.sort_salarys();
        a.show_salarys();
        a.save_date();
        return 0;
    }
    

    @ Mayuko

  • 相关阅读:
    Lucene
    coreseek
    Sphinx学习之sphinx的安装篇
    在Hive中使用Avro
    Hive中实现group concat功能(不用udf)
    Fresnel Reflection
    安装Windows更新程序遇到错误:0x80070422
    float4与half4数据类型
    Dijkstra算法(三)之 Java详解
    地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567529.html
Copyright © 2011-2022 走看看