C++实验9 输入输出流

所使用的开发工具及环境:PC机一套 Visual Studio 2010

实验要求
1.硬件基本配置:Intel PentiumIII以上级别的CPU,大于64MB的内存。
2.软件要求:Window 2000操作系统,Visual Studio 6.0或更高版本开发环 境。
3.实验学时:2学时
4.实现实验内容中的题目。
5.写实验报告

实验目的
1、深入理解C++的输入输出的含义与其实现方法。
2、掌握标准输入输出流的应用。
3、掌握对文件的输入输出操作。
实验内容:
(1) 输入三角形的三边a,b,c,计算三角形的面积的公式是
, //20分,
形成三角形的条件是:a+b>c,b+c>a,a+c>b
编写程序,输入a,b,c,检查a,b,c是否满足以上条件,如不满足,由cerr输出有关出错信息。

#include
#include
using namespace std;
int main(){
	double a,b,c,s,area;
	cin>>a>>b>>c;
	if(a+b<=c)
		cerr<<"a+b<=c,error!"<>a[i++];
	}
	i--;
	while(!f2.eof()){
		f2>>a[i++];
	}
}

int main(){
	createDat("f1.dat");
	createDat("f2.dat");
	int i,j;
	for(j=0;j!=Count;j++){
	cin>>i;
	writeDat(i);
}
	readDat();
	sort(a,a+Count);
	for(i=0;i

(3)(读写二进制文件)编程序实现以下功能: (50分)
a)按职工号由小到大的顺序将5个员工的数据(包括号码、姓名、年龄、工资)输出到磁盘文件中保存。
b)从键盘输入两个员工的数据(职工号大于已有的职工号),增加到文件的末尾。
c)输出文件中全部职工的数据。
d)从键盘输入一个号码,从文件中查找有无此职工号,如有则显示此职工是第几个职工,以及此职工的全部数据。如没有,就输出“无此人”。可以反复多次查询,如果输入查找的职工号为0,就结束查询。
参考如下类结构:

class staff
{
public:void input();
	   void display();
private:
	int id;//职工号
	char name[20];
	int age;
	double pay;//工资

};
class FileHandle
{
public:FileHandle(char *pn);
	   void writeBinaryFile();
//在此函数中输入5个职工信息,再把5人信息写到二进制文件staff.dat中
	   void writeBinaryFile(staff *pstaff,n);
//在此函数中直接写pstaff所指数组中的n个职工信息到二进制文件staff.dat中,其中n个职工信息在主函数中通过键盘输入
	   void readBinaryFile(staff *pstaff,int &n);
//从staff.dat文件中读员工信息出来存入pstaff所指数组中,所读到的职工数存入n中
private:
	char *filename;
};
int searchStaff(satff *pstaff,int n,int id);//实现在pstaff所指数组n个元素中查找员工号为id的员工。找到返回其在数组中的下标,未找到返回-1


#include //通用输入流和其他输入流的基类
#include //输入输出文件流类
#include //标准库头文件
using namespace std;
//录入员工信息
class staff
{
public:
staff(){}
//构造函数
staff(int num, char n[20], int ages, double wages)
{
id = num; 
strcpy_s(name,n);
age = ages;
pay = wages;
}
//输入员工信息
void input()
{
cout << " 职工号 : ";
cin >> id;
cout << " 姓名 : ";
cin >> name;
cout << " 年龄 : ";
cin >> age;
cout << " 工资 : ";
cin >> pay;
}
//输出员工信息
void display()
{cout << " 职工号 : " << id << " 姓名 : " << name << " 年龄 : " << age << " 工资 : " << pay << endl;}
int getid()
{
return id;
}
private:
int id; //职工号
char name[20]; //姓名
int age; //年龄
double pay; //工资
};
class FileHandle
{
public:
FileHandle(char *pn):filename(pn){}

//在此函数中输入5个职工信息,再把5人信息写到二进制文件staff.dat中
void writeBinaryFile(staff *pstaff, int n)
{
ofstream iofile(filename, ios::in|ios::out|ios::binary);
if(!iofile)
{
cerr << "open error!" << endl; //打开错误
abort(); //异常退出
}
for(int i = 0; i < n; i++) 
{
iofile.write((char *)&pstaff[i],sizeof(pstaff[i])); //写入文件
}
iofile.close();
}

//在此函数中直接写pstaff所指数组中的n个职工信息到二进制文件
//staff.dat中,其中n个职工信息在主函数中通过键盘输入
void writeBinaryFile(staff *pstaff)
{
ofstream iofile(filename, ios::out|ios::app);
if(!iofile)
{
cerr << "open error!" << endl;
abort(); //异常退出
}
iofile.seekp(0, ios::end);
//定位 直接跳到当前流的结尾,略过流内的所有数据。
iofile.write((char *)&pstaff, sizeof(staff));
iofile.close();
}

//从staff.dat文件中读员工信息出来存入pstaff所指数组中,所读到的职工数存入n中
void readBinaryFile(staff *pstaff, int n)
{
ifstream ifile(filename, ios::in|ios::out|ios::binary);
//创建输入文件,以输入文件打开,并以二进制方式输入
if(!ifile)
{
cerr << "open error!" << endl;
abort();
}
for(int i=0;i> num;
while(num){
file.searchStaff(num);
cout << " enter number you want search,enter 0 to stop. ";
cin >> num;
}
return 0;
}

结果与分析 ( 收获、问题 )
1、深入理解C++的输入输出的含义与其实现方法。
2、掌握标准输入输出流的应用。
3、掌握对文件的输入输出操作。

你可能感兴趣的:(C++)