习题 13.5 编程序实现以下功能:
(1) 按职工号由小到大的顺序将5个员工的数据(包括号码、姓名、年龄、工资)输出到磁盘文件中保存。
(2) 从键盘输入两个员工的数据(职工号大于已有的职工号),增加到文件的末尾。
(3) 输出文件中全部职工的数据。
(4) 从键盘输入一个号码,从文件中查找有无此职工号,如有则显示此职工是第几个职工,以及此职工的全部数据。如没有,就输出“无此人”。可以反复多次查询,如果输入查找的职工号为0,就结束查询。
(1) 按职工号由小到大的顺序将5个员工的数据(包括号码、姓名、年龄、工资)输出到磁盘文件中保存
代码:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct Staff
{
char num[20];
char name[20];
int age;
double wage;
};
int main()
{
const int N = 5;
Staff s[N] =
{
{"10001","赵一",18,1000},
{"10002","钱二",19,2000},
{"10003","孙三",20,3000},
{"10004","李四",30,4000},
{"10005","周五",31,5000}
};
void func_1(Staff * , const int );
func_1(s, N);
return 0;
}
void func_1( Staff *s , const int n)
{
ofstream outfile("staff_information.dat", ios::out | ios::binary);
if (!outfile)
{
cerr << "open error!" << endl;
abort();
}
for (int i = 0; i != n; ++i)
{
outfile.write((char*)&s[i], sizeof(s[i]));
}
outfile.close();
}
运行结果:
(2) 从键盘输入两个员工的数据(职工号大于已有的职工号),增加到文件的末尾
代码:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct Staff
{
char num[20];
char name[20];
int age;
double wage;
};
int main()
{
const int N = 5;
Staff s[N] =
{
{"10001","赵一",18,1000},
{"10002","钱二",19,2000},
{"10003","孙三",20,3000},
{"10004","李四",30,4000},
{"10005","周五",31,5000}
};
//void func_1(Staff * , const int );
void func_2();
//func_1(s, N);
func_2();
return 0;
}
void func_1( Staff *s , const int n)
{
ofstream outfile("staff_information.dat", ios::out | ios::binary);
if (!outfile)
{
cerr << "open error!" << endl;
ab