用C++实现以下:建立某单位职工通讯录的二进制数据文件,文件中的每个记录包括:职工编号、姓名、电话号码、 邮政编码和住址。 从键盘输入职工的编号,在所建立的通讯录文件中查找该职工资料。 查找成功后,显示职工的姓名、电话号码、邮政编码和住址
时间: 2024-05-07 08:22:34 浏览: 166
基于C++语言和单链表数据结构实现的通讯录管理系统,包含文件读取、文件保存、增删改查、排序、清空等功能.zip
5星 · 资源好评率100%
这是一个比较典型的文件操作题目,需要使用到 C++ 中的文件操作和结构体。
以下是代码实现:
```c++
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
// 定义职工结构体
struct Employee {
int id;
char name[20];
char phone[15];
char zipcode[7];
char address[50];
};
// 将职工信息写入文件
void writeEmployee(ofstream &out, Employee emp) {
out.write((char *) &emp, sizeof(Employee));
}
// 读取职工信息
Employee readEmployee(ifstream &in) {
Employee emp;
in.read((char *) &emp, sizeof(Employee));
return emp;
}
int main() {
int id;
bool found = false;
Employee emp;
// 打开文件
ifstream fin("employee.dat", ios::binary);
if (!fin) {
cout << "无法打开文件!" << endl;
return 1;
}
// 输入职工编号
cout << "请输入职工编号:";
cin >> id;
// 查找职工信息
while (!fin.eof()) {
emp = readEmployee(fin);
if (emp.id == id) {
found = true;
break;
}
}
// 输出职工信息
if (found) {
cout << "姓名:" << emp.name << endl;
cout << "电话:" << emp.phone << endl;
cout << "邮编:" << emp.zipcode << endl;
cout << "地址:" << emp.address << endl;
} else {
cout << "未找到该职工信息!" << endl;
}
// 关闭文件
fin.close();
return 0;
}
```
这里使用了 `ofstream` 和 `ifstream` 对文件进行读写操作,其中 `ofstream` 用于写入数据,`ifstream` 用于读取数据。同时使用了 `struct` 定义了一个职工结构体,将职工信息写入文件时使用了 `write()` 函数,读取职工信息时使用了 `read()` 函数。在主函数中,首先打开文件,输入职工编号,然后进行查找,如果找到了该职工信息,就输出其姓名、电话、邮编和地址,否则输出未找到该职工信息的提示。最后关闭文件。
阅读全文