第3周項目5-數組作資料成員(4),第3周5-
* * Copyright (c) 2015, 煙台大學電腦學院 * All rights reserved. * 檔案名稱:test.cpp * 作 者:劉暢 * 完成日期:2015年 3 月 22 日 * 版 本 號:v1.0 * * 問題描述: 閱讀教材P255例8.4,注意到類中的資料成員可以是數組。設計一個工資類(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( ):顯示工資資訊(4)增加一個成員函數,將排序後結果儲存到一個檔案中。 * 輸入描述:NULL; * 程式輸出:按要求輸出。
代碼如下:
#include <iostream>#include <fstream>#include <cstdlib>using namespace std;class Salary{public: void set_salarys( ); //輸入職員工資(輸入-1標準著工資輸入結束),工資儲存到salary數組中,實際人數儲存到number中。 void add_salarys(int x); //給每個人漲x元工資 void sort_salarys( ); //對工資排序 void show_salarys( ); //顯示工資資訊 void save_salarys( ); //儲存工資資訊private: double salarys[500]; //多人的工資 int number; //實際人數};int main(){ Salary s; int x; s.set_salarys( ); s.show_salarys( ); cout<<"請輸入需要增加的工資量:"; cin>>x; s.add_salarys(x); s.sort_salarys( ); s.save_salarys( ); return 0;}void Salary::set_salarys(){ int i=0; ifstream infile("salarys.txt",ios::in); if (!infile) { cerr<<"open error!"<<endl; exit(1); } while (infile>>salarys[i]) { i++; } number=i; infile.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-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( ){ int i; for (i=0;i<number;i++) cout<<salarys[i]<<endl; cout<<endl;}void Salary::save_salarys( ){ int i; ofstream outfile("salary_data.txt",ios::out); //以輸入的方式開啟檔案 if(!outfile) //測試是否成功開啟 { cerr<<"open error!"<<endl; exit(1); } for(i=0; i<number; ++i) { outfile<<salarys[i]<<endl; } outfile.close();}
運行結果: