您的位置:首页 > 其它

第三周上机实践项目5-工资类(3、4从文件中读入数据并把结果保存在另一个文件中)

2015-03-27 19:37 465 查看
/*
*Copyright(c)2014,烟台大学计算机学院
*All rights reserved.
*文件名称:test.cpp
*作者:满星辰
*完成日期:2015年 3月 27日
*版本号:v1.0
*问题描述:设计一个工资类(Salary),其中类的数据成员如下:
*输入描述:
*程序输出:
*/
class Salary
{
private:
double salarys[50]; //多人的工资
int number;  //实际人数
};
(3)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(下载),从文件中读数据,完成上面的工作。

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

#include <fstream>   //操作文件必写
#include<iostream>
#include<cstdlib>   //调用exit(1)需要包含cstdlib
using namespace std;
class Salary
{
private:
double salarys[500]; //多人的工资
int number;  //实际人数
public:
void set_salarys( );//输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中;
void add_salarys(int x);//给每个人涨x元工资
void sort_salarys();//对工资排序
void show_salarys( );//显示工资信息
void save_salarys();//在另一个文件中保存数据
};
int main()
{
Salary s1;
s1.set_salarys();
s1.add_salarys(500);
s1.sort_salarys();
s1.show_salarys();
s1.save_salarys();
return 0;
}
void Salary::set_salarys( )
{
int i=0;
double a;
//以输入的方式(ios::in)打开文件,注意f1.dat必须在文件夹中存在
ifstream infile("salary - C++语言基础.txt",ios::in);
//测试是否成功打开,打开失败时(如要读的数据文件不存在)退出
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
while(infile>>a)  //当到达文件尾,则循环处理结束。类似cin>>a,只不过数据来源于打开的文件
{
salarys[i]=a;
i++;
}
infile.close(); 		 //读入完毕要关闭文件
number=i;
}
void Salary::add_salarys(int x)//给每个人涨x元工资
{
for(int i=0; i<number; i++)
{
salarys[i]+=x;
}
}
void Salary::sort_salarys()//对工资排序
{
double t;
for(int i=0; i<number; ++i)
for(int j=0; j<number-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;
}
}
void Salary::save_salarys()
{
ofstream outfile("ordered_salary.txt",ios::out);
if(!outfile)                    //测试文件打开操作是否成功
{
cerr<<"open error!"<<endl;
exit(1);                //打开不成功,则提示后退出。
}
for(int i=0; i<number; ++i)
{
outfile<<salarys[i]<<endl;
}
outfile.close(); 		 //读入完毕要关闭文件
cout<<"处理完毕,请打开文件查看结果!"<<endl;
}
心得:

从文件中输入数据还行,虽然不记得具体语句但查阅一下还是明白的。。。

输出数据到文件就不太会了,输入时关闭文件用的是infile.close() 我输出时也直接复制下来了,结果报错!

思考若干秒之后果断改成outfile.close()就通过了。。。机智的我!!!

图片:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: