建立某单位职工通讯录的二进制数据文件,文件中的每个记录包括:职工编号、姓名、电话号码、邮政编码和住址。 c++
时间: 2024-05-04 20:22:26 浏览: 104
以下是一个简单的实现:
```cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Employee {
int id;
string name;
string phone;
string postcode;
string address;
};
int main() {
int numEmployees;
cout << "请输入职工人数:";
cin >> numEmployees;
Employee employees[numEmployees];
for (int i = 0; i < numEmployees; i++) {
cout << "请输入职工编号:";
cin >> employees[i].id;
cout << "请输入姓名:";
cin >> employees[i].name;
cout << "请输入电话号码:";
cin >> employees[i].phone;
cout << "请输入邮政编码:";
cin >> employees[i].postcode;
cout << "请输入住址:";
cin >> employees[i].address;
}
ofstream file("employees.bin", ios::binary);
if (file.is_open()) {
file.write((char*)&numEmployees, sizeof(numEmployees));
file.write((char*)employees, sizeof(employees));
file.close();
cout << "数据已保存到文件 employees.bin" << endl;
} else {
cout << "无法创建文件 employees.bin" << endl;
}
return 0;
}
```
这个程序首先要求用户输入职工人数,然后根据每个职工的信息创建一个 `Employee` 结构体。接下来,程序创建一个二进制文件 `employees.bin`,并将职工人数和职工数组写入该文件。最后,程序输出保存成功的消息。
注意,我们使用 `ofstream` 类创建输出文件流,并将 `ios::binary` 标志传递给它,以指示我们要创建一个二进制文件。我们还使用 `is_open()` 方法检查文件是否成功创建。
如果要读取此文件并打印每个职工的信息,可以编写以下代码:
```cpp
ifstream file("employees.bin", ios::binary);
if (file.is_open()) {
int numEmployees;
file.read((char*)&numEmployees, sizeof(numEmployees));
Employee employees[numEmployees];
file.read((char*)employees, sizeof(employees));
for (int i = 0; i < numEmployees; i++) {
cout << "职工编号:" << employees[i].id << endl;
cout << "姓名:" << employees[i].name << endl;
cout << "电话号码:" << employees[i].phone << endl;
cout << "邮政编码:" << employees[i].postcode << endl;
cout << "住址:" << employees[i].address << endl;
}
file.close();
} else {
cout << "无法打开文件 employees.bin" << endl;
}
```
这个程序首先打开二进制文件 `employees.bin`,读取职工人数和职工数组,然后使用 `for` 循环遍历每个职工,并打印他们的信息。最后,程序关闭文件。
阅读全文