/*
*Copyright(c) 2016,烟台大学计算机学院
*All rights reserved.
*作 者:刘金石
*完成日期:2016年4月17日
*版本 号:v1.0
*问题描述:打开一个工资数据的文本文件,排序后再把数据存入另一个文件
*输入描述:无。
*输出描述:排序后的工资。
*/
#include<iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
const int N=500;
class Salary
{
public:
void read_sadate();
void write_sadate();
void add_salary(int x);//给每个人涨x元工资
void sort_salary();//对工资由大到小排序
void show_salary();
private:
double salarys[N];//多人的工资
int number;//实际人数
};
void Salary::read_sadate()
{
int i=0;
ifstream infile("salary.txt",ios::in);
if(!infile)//是否打开成功
{
cout<<"can't open the file!"<<endl;
exit(0);
}
while(infile>>salarys[i])
i++;
number=i;
infile.close();
}
void Salary::write_sadate()
{
int i=0;
ofstream outfile("salary_write.txt",ios::out);//以输入的方式打开
if(!outfile)//是否打开成功
{
cout<<"can't open the file!"<<endl;
exit(0);
}
for(i=0;i<number;i++)
outfile<<salarys[i]<<endl;
outfile.close();
}
void Salary::sort_salary()
{
int i,j;
double t;
for(i=0;i<number-1;i++)
{
for(j=i+1;j<number;j++)
{
if(salarys[i]<salarys[j])
{
t=salarys[i];
salarys[i]=salarys[j];
salarys[j]=t;
}
}
}
}
void Salary::add_salary(int x)
{
for(int i=0;i<number;i++)
salarys[i]+=x;
}
void Salary::show_salary()
{
int i;
cout<<"排序后的工资为:"<<endl;
for(i=0;i<number;i++)
{
cout<<salarys[i]<<" ";
if((i+1)%5==0)
cout<<'\n';
}
}
int main()
{
Salary sa;
sa.add_salary(500);
sa.sort_salary();
sa.show_salary( );
return 0;
}
学习心得:
通过本次练习,使自己对C++中数据的写入和写出有了基本的了解。