工资类

来源:互联网 发布:tensorflow feeddict 编辑:程序博客网 时间:2024/04/28 16:56
 请设计成员函数实现下面的功能:
  (1)输入职工工资,工资保存到salary数组中,实际人数保存到number[]中(输入-1标志着工资输入结束);
  (2)给每个人涨500元工资(add_salarys是有参函数,在调用时,500当实参);
  (3)对涨后的工资进行排序;
  (4)输出排序后的工资。
  (5)在main函数定义Salary类的对象,调用你自己设计好的成员函数,完成相关的工作。
【项目4扩展1(选做)】

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

【项目4扩展2(选做)】  下载salary.txt文件

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

【项目4扩展3(选做)】

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

#include<iostream>#include<fstream>using namespace std;class Salarys{public:void Get_n(int x);//获取工资个数void Creat_a(int n);//动态分配内存空间void SCIN();//从文件中读取工资void Print();//输出工资void Sort();//使用快速排序对工资进行排序void Delete();//释放内存void Sove();//将排序之后的工资存入新文件void Add(double n);//增加工资private: int number; double *salarys;//动态数组指针};void Salarys::Get_n(int x){    number=x;}void Salarys::Creat_a(int n){  salarys=new double [n];//动态分配n个数据的数组}void Salarys::SCIN(){ifstream file("salary.txt",ios::in);if(!file){ cout<<"read file error! "<<endl; exit(1);}for(int i=0;i<number;i++)file>>salarys[i];file.close();}void Salarys::Print(){  for(int j=0;j<number;j++)  cout<<salarys[j]<<'\t';  cout<<endl;}void Salarys::Sort()//quick sort:{int  k;double t;for(int i=0;i<number-1;i++){k=i; for(int j=i+1;j<number;j++) if(salarys[k]>salarys[j])k=j; if(k!=i) {  t=salarys[k];  salarys[k]=salarys[i];  salarys[i]=t; }}}void Salarys::Delete(){  delete salarys;}void Salarys::Sove(){ofstream file_sorted("sorted.dat",ios::out);if(!file_sorted){  cout<<"open the file is error! "<<endl;  exit(1);}for(int i=0;i<number;i++)file_sorted<<salarys[i]<<'\t';cout<<endl;file_sorted.close();}void Salarys::Add(double n){  for(int i=0;i<number;i++)  salarys[i]+=n;}int main(){ Salarys S; int n; cout<<"input the number: "<<endl; cin>>n;S.Get_n(n);S.Creat_a(n);S.SCIN();cout<<"show the salarys: "<<endl;S.Print();S.Add(500);cout<<"show the sorted salarys: "<<endl;S.Sort();S.Sove();S.Print();S.Delete();return 0;}


0 0