温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在C++中利用vector实现通讯录功能

发布时间:2021-05-31 18:28:00 来源:亿速云 阅读:225 作者:Leah 栏目:编程语言

怎么在C++中利用vector实现通讯录功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

main.cpp

  #include "../../include/head.h"   personMessage pep; vector<personMessage> person; vector<personMessage>::iterator it;   int main() {  //personMessage pep;  //vector<personMessage> person;    char ch = 0;    //system("clear");    while(ch != 'q')  {  if((ch != 'a') && (ch != 'c') && (ch != 'd') && (ch != 'f'))  {   system("clear");   ch = book_ui();  }    switch(ch)  {       case 'a':   {   ch = add_person();   break;   }   case 'c':   {   ch = change_person();   break;   }   case 'd':   {   ch = delete_person();   break;   }   case 'e':   {   ch = display_person();   break;   }   case 'f':   {   ch = find_person();   break;   }   case 'q':   {   cout << "Byebye!" << endl;   return 0;   break;   }   default:   {   cout << "input error!" << endl;   break;   }  }  }     return 0; }

head.h

/***************************************************** Copyright (C): 2017-2018  File name  : head.h Author    : Zhengqijun Date     : 2017年02月12日 星期日 17时11分29秒 Description :  Funcion List :  *****************************************************/   #ifndef __HEAD_H__ #define __HEAD_H__   #include <iostream> #include <string> #include <vector> #include <algorithm>   #include <stdio.h> #include <string.h>   using namespace std;   class personMessage { public:  personMessage();  personMessage(string s);  ~personMessage();    personMessage& operator=(string s);  personMessage& operator=(personMessage& other);    /* sort排序算法需要重载'<',注意加const! */  bool operator<(const personMessage& p) const;  bool operator>(const personMessage& p) const;  bool operator<=(const personMessage& p) const;  bool operator>=(const personMessage& p) const;     bool operator==(string s);    friend istream& operator>>(istream& in, personMessage& p);  friend ostream& operator<<(ostream& out, personMessage& p);    int selectFlag; //用来选择哪一个私有成员!   private:  string name_;  string addr_;  string phone_; };   extern personMessage pep; extern vector<personMessage> person; extern vector<personMessage>::iterator it;   extern char book_ui(); extern char add_person(); extern char change_person(); extern char delete_person(); extern char display_person(); extern char find_person();   #endif

book.cpp

/***************************************************** Copyright (C): 2017-2018  File name  : book.cpp Author    : Zhengqijun Date     : 2017年02月12日 星期日 18时53分19秒 Description :  Funcion List :  *****************************************************/   #include "../../include/head.h"   personMessage::personMessage() : selectFlag(0) {  cout << "default coonstructor!" << endl; }   personMessage::personMessage(string s) {  name_ = s; }   personMessage::~personMessage() {  cout << "destroy person message!" << endl; }   #if 1 personMessage& personMessage::operator=(string s) {  name_ = s;  return *this; } #endif   personMessage& personMessage::operator=(personMessage& other) {  if(this == &other)  {  return *this;  }    name_ = other.name_;  addr_ = other.addr_;  phone_ = other.phone_;  return *this; }   bool personMessage::operator>(const personMessage& p) const {  return name_ > p.name_; }   bool personMessage::operator>=(const personMessage& p) const {  return name_ >= p.name_; }   bool personMessage::operator<(const personMessage& p) const {  return name_ < p.name_; }   bool personMessage::operator<=(const personMessage& p) const {  return name_ <= p.name_; }   bool personMessage::operator==(string s) {  if(selectFlag == 1)  {  return name_ == s;  }  else if(selectFlag == 2)  {  return addr_ == s;  }  else if(selectFlag == 3)  {  return phone_ == s;  }  else  {  return false;  } }   #if 1 istream& operator>>(istream& in, personMessage& p) {  string name;  string addr;  string phone;    cout << "请输入新的成员名字:" << endl;  in >> name;  p.name_ = name;    cout << "请输入新的成员地址:" << endl;  in >> addr;  p.addr_ = addr;    cout << "请输入新的成员电话:" << endl;  in >> phone;  p.phone_ = phone;    return in; }   ostream& operator<<(ostream& out, personMessage& p) {  out << "名字: " << p.name_ << endl;  out << "地址: " << p.addr_ << endl;  out << "电话: " << p.phone_ << endl;    return out; } #endif

book_ui.cpp

/***************************************************** Copyright (C): 2017-2018  File name  : book_ui.cpp Author    : Zhengqijun Date     : 2017年02月12日 星期日 16时49分50秒 Description :  Funcion List :  *****************************************************/   #include "../../include/head.h"   char book_ui() {  char ch = 0;    cout << " ____________________________________" << endl;  cout << "|                  |" << endl;  cout << "|    欢迎进入通讯录系统 v2.0   |" << endl;  cout << "|                  |" << endl;  cout << "|====================================|" << endl;  cout << "|                  |" << endl;  cout << "|     a. 增加新的成员      |" << endl;  cout << "|     c. 修改成员信息      |" << endl;  cout << "|     d. 删除成员信息      |" << endl;  cout << "|     e. 展示所有成员      |" << endl;  cout << "|     f. 查找成员信息      |" << endl;  cout << "|     q. 退出通讯录系统     |" << endl;  cout << "|____________________________________|" << endl;  cout << endl << "请输入你的选择:" << endl;  cin >> ch;    return ch; }

add_person.cpp

/***************************************************** Copyright (C): 2017-2018  File name  : add_person.cpp Author    : Zhengqijun Date     : 2017年02月12日 星期日 17时22分56秒 Description :  Funcion List :  *****************************************************/   #include "../../include/head.h"   char add_person() {  cout << "This is add person!" << endl;   #if 0  getchar();  string tmp;    getline(cin, tmp);    cout << "tmp = " << tmp << endl;    pep = tmp; #endif    /* 输入新的成员信息 */  cin >> pep;  cout << pep << endl;    /* 向vector插入元素 */  person.push_back(pep);    cout << "插入成员信息成功!" << endl;    char ch = 0;    cout << "是否返回主菜单?(y/n)" << endl;  getchar();  cin >> ch;    if(ch == 'y')  {  return 0;  }  else if(ch == 'n')  {  return 'a';  }  else  {  cout << "输入错误!" << endl;  return 0;  } }

delete_person.cpp

/***************************************************** Copyright (C): 2017-2018  File name  : delete_person.cpp Author    : Zhengqijun Date     : 2017年02月12日 星期日 18时29分33秒 Description :  Funcion List :  *****************************************************/   #include "../../include/head.h"   char delete_person() {  cout << "This is delete person!" << endl;    /* 删除成员的信息 */  string pep_info;    int d_flag = 0;  int d_key = 0;    cout << "请输入你想要查找的方式(1-姓名/2-地址/3-电话):" << endl;  cin >> d_key;    switch(d_key)  {  case 1:  {   cout << "请输入你想要删除成员的名字:" << endl;   cin >> pep_info;   break;  }  case 2:  {   cout << "请输入你想要删除成员的地址:" << endl;   cin >> pep_info;   break;  }  case 3:  {   cout << "请输入你想要删除成员的电话:" << endl;   cin >> pep_info;   break;  }  default:  {   cout << "输入有误!" << endl;   return 0;   break;  }  }    for(it = person.begin(); it != person.end(); )  {  it->selectFlag = d_key;  if(*it == pep_info)  {   person.erase(person.begin()+d_flag, person.begin()+d_flag+1);   cout << "删除成员信息成功!" << endl;  }  else  {   ++it;   d_flag++;  }  }    char ch = 0;    cout << "是否返回主菜单?(y/n)" << endl;  getchar();  cin >> ch;    if(ch == 'y')  {  return 0;  }  else if(ch == 'n')  {  return 'd';  }  else  {  cout << "输入错误!" << endl;  return 0;  } }

change_person.cpp

/***************************************************** Copyright (C): 2017-2018  File name  : change_person.cpp Author    : Zhengqijun Date     : 2017年02月12日 星期日 18时20分15秒 Description :  Funcion List :  *****************************************************/   #include "../../include/head.h"   char change_person() {  cout << "This is change person!" << endl;    /* 修改成员的信息 */  string pep_info;    int ch_flag = 0;  int c_key = 0;    cout << "请输入你想要查找的方式(1-姓名/2-地址/3-电话):" << endl;  cin >> c_key;    switch(c_key)  {  case 1:  {   cout << "请输入你想要修改成员的名字:" << endl;   cin >> pep_info;   break;  }  case 2:  {   cout << "请输入你想要修改成员的地址:" << endl;   cin >> pep_info;   break;  }  case 3:  {   cout << "请输入你想要修改成员的电话:" << endl;   cin >> pep_info;   break;  }  default:  {   cout << "输入有误!" << endl;   return 0;   break;  }  }    for(it = person.begin(); it != person.end(); ++it)  {  it->selectFlag = c_key;  if(*it == pep_info)  {   ch_flag = 1;   cin >> *it;   cout << "修改成员信息成功!" << endl;  }  }    if(ch_flag != 1)  {  cout << "没有找到该成员!" << endl;  }    char ch = 0;    cout << "是否返回主菜单?(y/n)" << endl;  getchar();  cin >> ch;    if(ch == 'y')  {  return 0;  }  else if(ch == 'n')  {  return 'c';  }  else  {  cout << "输入错误!" << endl;  return 0;  } }

find_person.cpp

/***************************************************** Copyright (C): 2017-2018  File name  : find_person.cpp Author    : Zhengqijun Date     : 2017年02月12日 星期日 18时21分59秒 Description :  Funcion List :  *****************************************************/   #include "../../include/head.h"   char find_person() {  cout << "This is find person!" << endl;    int f_key = 0;  int f_flag = 0;  /* 输入查找的姓名 */  string f_info;    cout << "请输入查找方式(1-姓名/2-地址/3-电话)" << endl;  cin >> f_key;    switch(f_key)  {  case 1:  {   cout << "请输入你想要查找成员的名字:" << endl;   cin >> f_info;   break;  }  case 2:  {   cout << "请输入你想要查找成员的地址:" << endl;   cin >> f_info;   break;  }  case 3:  {   cout << "请输入你想要查找成员的名字:" << endl;   cin >> f_info;   break;  }  default:  {   cout << "输入有误!" << endl;   return 0;   break;  }  }    //pep.selectFlag = 2; //it迭代器在变化,不能直接赋值。    for(it = person.begin(); it != person.end(); ++it)  {  it->selectFlag = f_key;  if(*it == f_info)  {   f_flag = 1;   cout << "找到该成员!" << endl;   cout << *it << endl;  }  }    if(f_flag != 1)  {  cout << "没有找到该成员!" << endl;  }    char ch = 0;    cout << "是否返回主菜单?(y/n)" << endl;  getchar();  cin >> ch;    if(ch == 'y')  {  return 0;  }  else if(ch == 'n')  {  return 'f';  }  else  {  cout << "输入错误!" << endl;  return 0;  } }

display_person.cpp

  #include "../../include/head.h"   char display_person() {  cout << "This is display person!" << endl;    sort(person.begin(), person.end());    for(it = person.begin(); it != person.end(); ++it)  {  cout << *it << endl;  }    char ch = 0;  cout << "按任意键返回" << endl;  getchar();  cin >> ch;  return 0; }

关于怎么在C++中利用vector实现通讯录功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI