21xrx.com
2025-06-18 05:34:04 Wednesday
文章检索 我的文章 写文章
C++编写通讯录程序
2023-07-07 01:03:18 深夜i     9     0
C++ 编写 通讯录程序 对象 数据结构

通讯录程序是一类非常常见的软件工具,可以用来记录联系人信息、联系方式等,对于个人和企业而言都是非常重要的工具。而C++是一种高效、灵活、易于学习的编程语言,在开发这样的工具时非常适用。

通讯录程序的基本功能是添加、删除、修改、查询联系人信息。我们可以使用C++的面向对象特性,将联系人信息封装在一个类中,通过类的对象来操作联系人信息。下面是一个基本的通讯录程序的实现:

#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
class Contact{
private:
  char name[100];
  char phone[20];
  char email[50];
public:
  Contact(){}
  Contact(char* nm,char* ph,char* em){
    strcpy(name, nm);
    strcpy(phone, ph);
    strcpy(email, em);
  }
  void setName(char* nm){strcpy(name, nm);}
  void setPhone(char* ph){strcpy(phone, ph);}
  void setEmail(char* em){strcpy(email, em);}
  char* getName(){return name;}
  char* getPhone(){return phone;}
  char* getEmail(){return email;}
};
int main(){
  int choice=0;
  Contact cont;
  char name[100],phone[20],email[50];
  fstream file("contact.txt",ios::in | ios::out | ios::app);
  while(choice!=5){
    cout<<"######### 通讯录程序 #########"<<endl;
    cout<<"请选择你要进行的操作:"<<endl;
    cout<<"1.添加新联系人"<<endl;
    cout<<"2.查询联系人信息"<<endl;
    cout<<"3.修改联系人信息"<<endl;
    cout<<"4.删除联系人"<<endl;
    cout<<"5.退出程序"<<endl;
    cout<<"请输入您的选择:";
    cin>>choice;
    switch(choice){
      case 1:
        cin.ignore();
        cout<<"请输入联系人姓名:";
        cin.getline(name,100);
        cout<<"请输入联系人电话:";
        cin.getline(phone,20);
        cout<<"请输入联系人邮箱:";
        cin.getline(email,50);
        cont = Contact(name,phone,email);
        file<<cont.getName()<<" "<<cont.getPhone()<<" "<<cont.getEmail()<<endl;
        break;
      case 2:
        cin.ignore();
        cout<<"请输入联系人姓名:";
        cin.getline(name,100);
        while(file>>cont.getName()>>cont.getPhone()>>cont.getEmail()){
          if(strcmp(name,cont.getName())==0){
            cout<<"联系人电话:"<<cont.getPhone()<<endl;
            cout<<"联系人邮箱:"<<cont.getEmail()<<endl;
            break;
          }
        }
        break;
      case 3:
        cin.ignore();
        cout<<"请输入联系人姓名:";
        cin.getline(name,100);
        while(file>>cont.getName()>>cont.getPhone()>>cont.getEmail()){
          if(strcmp(name,cont.getName())==0){
            cout<<"请输入新的联系人电话:";
            cin.getline(phone,20);
            cout<<"请输入新的联系人邮箱:";
            cin.getline(email,50);
            cont.setPhone(phone);
            cont.setEmail(email);
            file.seekp(-1*(strlen(cont.getName())+strlen(cont.getPhone())+strlen(cont.getEmail())),ios::cur);
            file<<cont.getName()<<" "<<cont.getPhone()<<" "<<cont.getEmail()<<endl;
            break;
          }
        }
        break;
      case 4:
        cin.ignore();
        cout<<"请输入联系人姓名:";
        cin.getline(name,100);
        while(file>>cont.getName()>>cont.getPhone()>>cont.getEmail()){
          if(strcmp(name,cont.getName())==0){
            file.seekp(-1*(strlen(cont.getName())+strlen(cont.getPhone())+strlen(cont.getEmail())),ios::cur);
            file<<"";
            break;
          }
        }
        break;
      case 5:
        break;
      default:
        cout<<"错误的选择,请重新输入!"<<endl;
    }
  }
  file.close();
  cout<<"程序已经退出,欢迎下次再来!"<<endl;
  return 0;
}

在这个程序中,我们定义了一个Contact类,将联系人信息封装在类中。我们可以使用类的公共函数来操作联系人信息,例如setName()、setPhone()、setEmail()、getName()、getPhone()和getEmail()。这些函数使我们可以轻松地添加、修改和查询联系人信息。

程序将联系人信息保存在一个文本文件中(contact.txt),这个文件是在程序开始时打开的。添加、查询、修改和删除联系人信息都将影响这个文件。

在程序中,我们使用了一个主循环,通过选择菜单项来执行不同的操作。在每个菜单项中,我们可以通过cin来获取用户的输入,并根据输入选择要执行的操作。添加联系人时,我们使用cin.getline()来获取字符串输入,并将联系人信息写入文件中。查询联系人时,我们使用了文件流的重载运算符,将文件中的相应联系人信息读取出来并输出到控制台。修改联系人和删除联系人的操作都与查询联系人类似,区别仅在于对联系人信息的修改或删除。

总的来说,编写通讯录程序可以使我们更好地应对现实生活中遇到的问题,而使用C++作为编写工具,可以使我们更加高效和快速地实现这一目标。

  
  

评论区