21xrx.com
2025-03-30 08:23:34 Sunday
文章检索 我的文章 写文章
C++代码实现通讯录管理系统的文件流功能
2023-07-01 19:34:48 深夜i     19     0
C++ 通讯录管理系统 文件流

通讯录管理系统是一个常见的应用程序,它能够帮助我们管理联系人的信息。C++语言是一种常见的编程语言,也可以用来实现通讯录管理系统。在这篇文章中,我们将探讨如何使用文件流来实现通讯录管理系统的数据存储和读取功能。

文件流是C++中用于读写文件的类模板,它可以通过文件指针来读写文件。在通讯录管理系统中,我们可以使用文件流来将联系人信息保存在文件中,以便在下一次运行程序时进行读取。下面是使用文件流实现通讯录管理系统的代码示例:

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
// 定义联系人结构体
struct Contact
  string name;
  string phone;
;
// 添加联系人函数
void add_contact(vector<Contact> &contacts) {
  Contact contact;
  cout << "请输入联系人姓名:" << endl;
  cin >> contact.name;
  cout << "请输入联系人电话:" << endl;
  cin >> contact.phone;
  contacts.push_back(contact);
  cout << "已添加联系人:" << contact.name << " " << contact.phone << endl;
}
// 显示联系人函数
void show_contacts(vector<Contact> &contacts) {
  cout << "联系人列表:" << endl;
  for (int i = 0; i < contacts.size(); i++) {
    Contact contact = contacts[i];
    cout << contact.name << " " << contact.phone << endl;
  }
}
// 保存联系人函数
void save_contacts(vector<Contact> &contacts, string filename) {
  ofstream file(filename);
  for (int i = 0; i < contacts.size(); i++) {
    Contact contact = contacts[i];
    file << contact.name << "," << contact.phone << endl;
  }
  file.close();
  cout << "联系人已保存至文件:" << filename << endl;
}
// 读取联系人函数
void read_contacts(vector<Contact> &contacts, string filename) {
  ifstream file(filename);
  string line;
  while (getline(file, line)) {
    string name, phone;
    size_t pos = line.find(',');
    name = line.substr(0, pos);
    phone = line.substr(pos+1);
    Contact contact = phone;
    contacts.push_back(contact);
  }
  file.close();
  cout << "已从文件:" << filename << " 读取联系人" << endl;
}
int main() {
  vector<Contact> contacts;
  // 读取已保存的联系人
  read_contacts(contacts, "contacts.txt");
  // 显示操作菜单
  while (true) {
    cout << "请选择操作:" << endl;
    cout << "1 - 添加联系人" << endl;
    cout << "2 - 显示联系人" << endl;
    cout << "3 - 保存联系人" << endl;
    cout << "0 - 退出程序" << endl;
    int choice;
    cin >> choice;
    switch (choice) {
      case 1:
        add_contact(contacts);
        break;
      case 2:
        show_contacts(contacts);
        break;
      case 3:
        save_contacts(contacts, "contacts.txt");
        break;
      case 0:
        return 0;
      default:
        cout << "无效操作,请重新输入。" << endl;
    }
  }
  return 0;
}

在上面的代码中,我们定义了一个Contact结构体来存储联系人信息,使用vector来存储多个联系人。我们定义了四个函数来实现不同的操作:添加联系人、显示联系人、保存联系人和读取联系人。

在添加联系人函数中,我们通过cin来获取用户输入的联系人信息,然后将其添加至contacts向量中。

在显示联系人函数中,我们遍历contacts向量并输出每个联系人的姓名和电话。

在保存联系人函数中,我们使用ofstream来创建文件流并打开一个文件,然后将contacts向量中的联系人信息写入文件中。

在读取联系人函数中,我们使用ifstream来创建文件流并打开一个文件,然后逐行读取文件内容并将每个联系人信息分别存储至contacts向量中。

在主函数中,我们首先调用read_contacts函数来读取已保存的联系人信息。然后使用一个while循环来输出操作菜单并等待用户选择操作,根据用户的选择调用不同的函数来执行相应的操作。

使用文件流能够帮助我们简易地将数据保存在文件中,并且在下一次运行程序时可以方便地读取这些信息。在通讯录管理系统中,我们使用文件流来实现数据的存储和读取功能,帮助我们更好地管理联系人信息。

  
  

评论区