第3周项目5-数组做数据成员(2)

来源:互联网 发布:汽车行业erp软件 编辑:程序博客网 时间:2024/05/21 17:44

问题描述:

设计一个工资类(Salary)   要设计的成员函数有:

  • void set_salarys( ):输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中;
  • void add_salarys(int x):给每个人涨x元工资
  • void sort_salarys():对工资排序
  • void show_salarys( ):显示工资信息

(1)      main函数定义Salary类的对象,输入工资,再给每个人涨500元工资,排序后工资数据,然后输出结果。
2)用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用动态分配内存的机制,开辟一个大小正好的连续空间,完成上面的工作。
3)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt,从文件中读数据,完成上面的工作。
4)增加一个成员函数,将排序后结果保存到一个文件中。
5)用多文件的方式组织最后的程序。


代码:

1.main.cpp

#include <iostream>using namespace std;#include"Salary.h"int main(){    Salary s1;    s1.read();    s1.show();    s1.add_salary(50);    s1.sort_salary();    s1.show();    s1.write();    return 0;}

2.Salary.h

#ifndef SALARY_H_INCLUDED#define SALARY_H_INCLUDEDclass Salary{private:    double salarys[500];    int number;public:    void read();    void write();    void add_salary(double);    void sort_salary();    void show();};#endif // SALARY_H_INCLUDED

3.Salary.cpp

#include <iostream>#include <fstream>#include <cstdlib>using namespace std;#include"Salary.h"void Salary::read(){    ifstream infile("salary.txt",ios::in);    if(!infile)    {        cerr<<"open error!"<<endl;        exit(1);    }    int i=0;    while(infile>>salarys[i])        i++;    number=i;    infile.close();}void Salary::add_salary(double n){    int i=0;    for(;i<number;i++)    {        salarys[i]+=n;    }}void Salary::sort_salary(){    int i,j;    double n;    for(i=0;i<number-1;i++)    {        for(j=0;j<number-i-1;j++)        {            if(salarys[j+1]>salarys[j])            {                n=salarys[j+1];                salarys[j+1]=salarys[j];                salarys[j]=n;            }        }    }}void Salary::show(){    int i=0;    for(;i<number;i++)        cout<<salarys[i]<<"   ";    cout<<endl<<endl;}void Salary::write(){    ofstream outfile("write.txt",ios::out);    if(!outfile)    {        cerr<<"open error!"<<endl;        exit(1);    }    int i;    for(i=0;i<number;i++)    {        outfile<<salarys[i]<<endl;    }    outfile.close();}


运行结果:


学习心得:

    文件读取于写入。

0 0
原创粉丝点击