返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++如何使用链表存储实现通讯录功能管理
  • 777
分享到

C++如何使用链表存储实现通讯录功能管理

2023-07-02 11:07:12 777人浏览 安东尼
摘要

本文小编为大家详细介绍“c++如何使用链表存储实现通讯录功能管理”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++如何使用链表存储实现通讯录功能管理”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。代码详情头文件

本文小编为大家详细介绍“c++如何使用链表存储实现通讯录功能管理”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++如何使用链表存储实现通讯录功能管理”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

代码详情

头文件

#include <iOStream>#include <string>#include<malloc.h> //system功能调用 #include <windows.h> //使用本地系统api获取插入时间 #include <sstream>

基本存储结构体

typedef struct info{    string number;    string date;    string name;    string adress;    string birthday; }A;typedef struct Lnode{    A data;     struct LNode *next;}LNode,*LinkList;

链表数据初始化
用前插法插入数据

int InitList(LinkList &L){ //初始化链表     L = new LNode;    L->next = NULL;    return OK;}int ListInsert(LinkList &L,string name,string adress,string birthday,string date,string number){ //考虑使用数组来赋值     LinkList p; p= new LNode;    p->data.name = name;    p->data.adress = adress;    p->data.date = date;    p->data.birthday = birthday;    p->data.number = number;    p->next = L->next;    L->next = p;    return OK;}

本地WindowsAPI调用插入时间

SYSTEMTIME sys; GetLocalTime( &sys );string y = doubleToString(sys.wYear);string m = doubleToString(sys.wMonth);string d = doubleToString(sys.wDay);string ymd = y+"-"+m+"-"+d;

因为获取的是一个double值,您得对其时间强制类型转换

string doubleToString(double num){ //强制类型转换 double强制转换为string类型     stringstream ss;    string str;    ss << num;    ss >> str;    return str;}

数据查询功能

LinkList SearchElemChar(LinkList L,int i,string e){ //思路,传递参数1,2,3,4,eg 1代表name,再分不同的方法在链表内循环查找操作  if (i == 1){ //查名字      while(L!= NULL){         if(L->data.name == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){             cout << "未查到数据!"<<endl;         } }else if(i == 2){//查生日      while(L!= NULL){         if(L->data.birthday == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){         cout <<"未查到数据!"<<endl;         } } else if(i == 3){//查地址      while(L!= NULL){         if(L->data.adress == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){         cout <<"未查到数据!"<<endl;         } }else if(i == 4){//查时间      while(L!= NULL){         if(L->data.date == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){         cout <<"未查到数据!"<<endl;         } } else if(i == 5){//查电话      while(L!= NULL){         if(L->data.number == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){         cout <<"未查到数据!"<<endl;         } } }

完整案例

//乐公第二周项目 实现基本通讯录存储结构 //基础链表存储数据#include <iostream>#include <string>#include<malloc.h> //system功能调用 #include <windows.h> //使用本地系统API获取插入时间 #include <sstream>#define ERROR 0#define OK 1using namespace std;typedef  int ElemType; //结构体文件typedef struct info{    string number;    string date;    string name;    string adress;    string birthday; }A;typedef struct LNode{    A data;     struct LNode *next;}LNode,*LinkList;int InitList(LinkList &L){ //初始化链表     L = new LNode;    L->next = NULL;    return OK;}int ListInsert(LinkList &L,string name,string adress,string birthday,string date,string number){ //考虑使用数组来赋值     LinkList p; p= new LNode;    p->data.name = name;    p->data.adress = adress;    p->data.date = date;    p->data.birthday = birthday;    p->data.number = number;    p->next = L->next;    L->next = p;    return OK;} //查找元素 (难题需要解决) LinkList SearchElemChar(LinkList L,int i,string e){ //思路,传递参数1,2,3,4,eg 1代表name,再分不同的方法在链表内循环查找操作  if (i == 1){ //查名字      while(L!= NULL){         if(L->data.name == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){             cout << "未查到数据!"<<endl;         } }else if(i == 2){//查生日      while(L!= NULL){         if(L->data.birthday == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){         cout <<"未查到数据!"<<endl;         } } else if(i == 3){//查地址      while(L!= NULL){         if(L->data.adress == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){         cout <<"未查到数据!"<<endl;         } }else if(i == 4){//查时间      while(L!= NULL){         if(L->data.date == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){         cout <<"未查到数据!"<<endl;         } } else if(i == 5){//查电话      while(L!= NULL){         if(L->data.number == e){             return L;          }else{         L = L->next;         }         }         if(L = NULL){         cout <<"未查到数据!"<<endl;         } } } LinkList SearchElemBefore(LinkList L,string e){ //删除结点必须返回前个结点的地址,这里查找前个结点      LinkList P;      while(L!= NULL){         if(L->data.name == e){             return P;          }else{         P = L;         L = L->next;         }         }         if(L = NULL){             return L;          }} int ShowMenu(){ //主菜单     int a;    cout<<"------欢迎您使用乐公通讯录系统!------"<< endl;    cout <<"-----请根据功能输入对应的序号--------" <<endl;     cout <<"-----------1.新建联系人--------------" <<endl;     cout <<"--------2.查看所有联系人-------------" <<endl;     cout <<"--------3.修改选定联系人-------------" <<endl;    cout <<"--------4.查询选定联系人-------------" <<endl;    cout <<"--------5.删除选定联系人-------------" <<endl;    cout <<"------------6.退出系统---------------" <<endl;     cout << "请您输入序号并按回车进入:" ;     cin >> a;    return a;}string doubleToString(double num){ //强制类型转换 double强制转换为string类型     stringstream ss;    string str;    ss << num;    ss >> str;    return str;}void foreachelem(LinkList L){    if(L->next == NULL){        cout<<"通讯录里还没有联系人,快去新建一下吧~"<<endl;     }else{    while(L->next!=NULL){        L=L->next;        cout<< "联系人姓名:" << L->data.name <<endl;        cout<< "联系人电话:" << L->data.number<<endl;        cout<< "联系人地址:" << L->data.adress <<endl;        cout<< "联系人生日:" << L->data.birthday <<endl;        cout<< "录入时间:" << L->data.date <<endl;    }    cout<< "\n";}//system("pause");}int serachsamename(LinkList L,string name){ //查找是否存在姓名相同的联系人     while(L->next!=NULL){        L=L->next;        if(L->data.name==name)return 0;    }    return 1;} int main(){    int i;    LinkList L;    InitList(L);    while(i!=6){        i = ShowMenu();        if(i ==1){            cout << "您选择了:新建联系人" <<endl;             string number;            string date;            string time;            string name;            string adress;            string birthday;             cout << "请输入联系人姓名:";             cin >> name;             SYSTEMTIME sys;              GetLocalTime( &sys );             string y = doubleToString(sys.wYear);             string m = doubleToString(sys.wMonth);             string d = doubleToString(sys.wDay);             string ymd = y+"-"+m+"-"+d;            int repeat = serachsamename(L,name);             if(repeat == 0){                cout << "联系人姓名重复,请删除旧联系人或更改姓名!" << endl;              }else{                 cout << "请输入联系人电话:";                 cin >> number;            if(number.size()!=11){                cout << "手机号输入有误,请大于11位!" << endl;                }else{                cout << "请输入联系人生日:";             cin >> birthday;            cout << "请输入联系人地址:";             cin >> adress;                cout << "联系人于" << ymd;                int ok;            ok =  ListInsert(L,name,adress,birthday,ymd,number);            if(ok == 1){                cout << "日新建成功!" << endl;             }else{             cout << "新建失败!" << endl;            }             }        }            system("pause");            system("cls");        }else if(i==2){            cout << "您选择了:遍历联系人" <<endl;             foreachelem(L);            system("pause");            system("cls");                    }else if(i==3){            cout << "您选择了:修改选定联系人" <<endl;             cout <<"请输入要修改的联系人姓名:" ;            string name;            cin >> name;            LinkList B;            B = SearchElemChar(L,1,name);             if(B){                 system("cls");                 cout << "联系人查找成功!姓名:" << B->data.name << endl;                  int select;                 cout <<"---------修改姓名请输入1---------" << endl;                cout <<"---------修改电话请输入2---------" << endl;                 cout <<"---------修改生日请输入3---------" << endl;                 cout <<"---------修改地址请输入4---------" << endl;                  cout <<"请根据序号输入对象的选项修改:" ;                 cin >> select;                 switch(select){                     case 1:                      {    string name;                    cout <<"请输入新姓名:";                     cin >> name;                    B->data.name = name;                    cout <<"修改完成!" << endl;                    break;                      }                    case 2: {                    string number;                    cout <<"请输入新电话:";                     cin >> number;                    if(number.size()!=11){                    cout << "手机号输入有误,请大于11位!" << endl;                        }else{                    B->data.number = number;                    cout <<"修改完成!" << endl;                    }                    break;                    }                     case 3:{                         string birthday;                         cout <<"请输入新生日:";                          cin >> birthday;                         B->data.birthday = birthday;                        cout <<"修改完成!" << endl;                        break;                     }                     case 4:{                         string adress;                         cout <<"请输入新地址:";                          cin >> adress;                         B->data.adress = adress;                        cout <<"修改完成!" << endl;                        break;                     }                     default:cout <<"序号输入错误,请重新输入!"<<endl;                  }             }else{                 cout << "未查找到联系人!请重新输入!" << endl;              }                          system("pause");            system("cls");        }else if(i==4){            system("cls");            cout << "您选择了:查询选定联系人" <<endl;                 cout <<"---------根据姓名查询请输入1---------" << endl;                cout <<"---------根据电话查询请输入2---------" << endl;                 cout <<"---------根据生日查询请输入3---------" << endl;                 cout <<"---------根据地址查询请输入4---------" << endl;                int select;                cout <<"请根据序号输入对象的进行查询:" ;                 cin >> select;                 switch(select){                     case 1:{                         cout <<"请输入要查询的联系人姓名:" ;                        string name;                        cin >> name;                        LinkList B;                        B = SearchElemChar(L,1,name);                        if(B){                            cout<<"查询成功!"<< endl;                             cout<<"联系人姓名:"<< B->data.name << endl;                            cout<<"联系人电话:"<< B->data.number << endl;                            cout<<"联系人生日:"<< B->data.birthday << endl;                            cout<<"联系人地址:"<< B->data.adress << endl;                            cout<<"插入日期:"<< B->data.date << endl;                         }else{                             cout<<"查询失败!请重新输入!"<< endl;                          }                        break;                     }                     case 2:                         {                         cout <<"请输入要查询的联系人电话:" ;                        string number;                        cin >> number;                        LinkList B;                        B = SearchElemChar(L,5,number);                        if(B){                            cout<<"查询成功!"<< endl;                             cout<<"联系人姓名:"<< B->data.name << endl;                            cout<<"联系人电话:"<< B->data.number << endl;                            cout<<"联系人生日:"<< B->data.birthday << endl;                            cout<<"联系人地址:"<< B->data.adress << endl;                            cout<<"插入日期:"<< B->data.date << endl;                         }else{                             cout<<"查询失败!请重新输入!"<< endl;                          }                        break;                         }                        case 3:{                            cout <<"请输入要查询的联系人生日:" ;                        string bd;                        cin >> bd;                        LinkList B;                        B = SearchElemChar(L,2,bd);                        if(B){                            cout<<"查询成功!"<< endl;                             cout<<"联系人姓名:"<< B->data.name << endl;                            cout<<"联系人电话:"<< B->data.number << endl;                            cout<<"联系人生日:"<< B->data.birthday << endl;                            cout<<"联系人地址:"<< B->data.adress << endl;                            cout<<"插入日期:"<< B->data.date << endl;                         }else{                             cout<<"查询失败!请重新输入!"<< endl;                          }                        break;                        }                        case 4:{                        cout <<"请输入要查询的联系人地址:" ;                        string ad;                        cin >> ad;                        LinkList B;                        B = SearchElemChar(L,3,ad);                        if(B){                            cout<<"查询成功!"<< endl;                             cout<<"联系人姓名:"<< B->data.name << endl;                            cout<<"联系人电话:"<< B->data.number << endl;                            cout<<"联系人生日:"<< B->data.birthday << endl;                            cout<<"联系人地址:"<< B->data.adress << endl;                            cout<<"插入日期:"<< B->data.date << endl;                         }else{                             cout<<"查询失败!请重新输入!"<< endl;                          }                        break;                            break;                        }                     default:cout <<"序号输入错误,请重新输入!"<<endl;                  }             system("pause");            system("cls");        }else if(i==5){            cout << "您选择了:删除联系人" <<endl;             string name;            cout << "请输入联系人姓名:" <<endl;             cin >> name;            LinkList D,P;            P = SearchElemBefore(L,name);             if(P){                D = P->next;            P->next = D->next;            delete D; //释放结点数据             cout << "删除成功!" <<endl;            }else{                cout<<"查询失败!未找到指定联系人!"<< endl;             }            system("pause");            system("cls");        }else if(i==6){            cout << "系统已退出,欢迎下次使用!" <<endl;        }        else{            cout <<"输入异常,请重新选择输入!" <<endl;            system("pause");            system("cls");        }    }     return 0;}

读到这里,这篇“C++如何使用链表存储实现通讯录功能管理”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。

--结束END--

本文标题: C++如何使用链表存储实现通讯录功能管理

本文链接: https://lsjlt.com/news/341537.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++如何使用链表存储实现通讯录功能管理
    本文小编为大家详细介绍“C++如何使用链表存储实现通讯录功能管理”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++如何使用链表存储实现通讯录功能管理”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。代码详情头文件...
    99+
    2023-07-02
  • C++使用链表存储实现通讯录功能管理
    本文实例为大家分享了C++使用链表存储实现通讯录功能管理的具体代码,供大家参考,具体内容如下 简介 这是第二周老师给的一个小项目要求实现基本通讯录功能,有数据的增删改查,包含插入时间...
    99+
    2024-04-02
  • C语言单链表如何实现通讯录管理系统
    这篇文章将为大家详细讲解有关C语言单链表如何实现通讯录管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。通讯录管理系统保存人的信息有: 名字   name电话 ...
    99+
    2023-06-15
  • C语言基于单链表实现通讯录功能
    本文实例为大家分享了C语言基于单链表实现通讯录功能的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h&...
    99+
    2024-04-02
  • C++如何实现通讯录功能
    这篇文章主要介绍“C++如何实现通讯录功能”,在日常操作中,相信很多人在C++如何实现通讯录功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现通讯录功能”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-02
  • C语言单链表实现通讯录管理系统
    本文实例为大家分享了C语言单链表实现通讯录管理系统的具体代码,供大家参考,具体内容如下 本人前几天刚刚自学了单链表,趁热打铁,赶紧写一个小小的项目练练手。 单链表的实现在本人之前的博...
    99+
    2024-04-02
  • C++如何实现通讯录小功能
    这篇文章主要介绍“C++如何实现通讯录小功能”,在日常操作中,相信很多人在C++如何实现通讯录小功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现通讯录小功能”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-02
  • C++如何实现简易通讯录功能
    这篇文章主要讲解了“C++如何实现简易通讯录功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++如何实现简易通讯录功能”吧!实现功能提示:这里可以添加本文要记录的大概内容:通过c++语法...
    99+
    2023-07-02
  • 如何使用C语言代码实现通讯录功能
    今天小编给大家分享一下如何使用C语言代码实现通讯录功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先创建一个test.c...
    99+
    2023-07-02
  • C++实现完整功能的通讯录管理系统详解
    目录一、确定结构体二、简易菜单三、为通讯录添加功能四、各功能与实现详解功能之添加联系人功能之显示联系人功能之查找联系人功能之修改联系人功能之删除联系人功能之清空通讯录四、源码五、运行...
    99+
    2024-04-02
  • C++如何实现简易通讯录管理系统
    这篇文章主要介绍“C++如何实现简易通讯录管理系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++如何实现简易通讯录管理系统”文章能帮助大家解决问题。前言建议收藏,亲手写一遍代码,感受指针神奇的...
    99+
    2023-07-02
  • C++如何实现通讯录管理系统项目
    这篇文章主要介绍“C++如何实现通讯录管理系统项目”,在日常操作中,相信很多人在C++如何实现通讯录管理系统项目问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现通讯录管理系统项目”的疑惑有所帮助!...
    99+
    2023-07-02
  • C++如何实现通讯录管理系统设计
    这篇“C++如何实现通讯录管理系统设计”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现通讯录管理系统设计”文章吧...
    99+
    2023-07-02
  • C++如何使用链表实现图书管理系统
    这篇文章主要为大家展示了“C++如何使用链表实现图书管理系统”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++如何使用链表实现图书管理系统”这篇文章吧。具体内容如下一、程序实现功能录入书籍:将...
    99+
    2023-06-29
  • 怎么用C++实现通讯录管理系统
    这篇“怎么用C++实现通讯录管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C++实现通讯录管理系统”文章吧。系...
    99+
    2023-07-02
  • python如何实现通讯录管理系统
    一. 项目要求我们可以使用函数来实现通讯录管理系统,该系统需要保存姓名、联系方式、微信号、电子邮件等联系人信息。至少要包含姓名和联系方式两种。该管理系统具备添加、删除、修改、查询、显示和保存信息的功能。二.项目步骤1.使用自定义函数实现每个...
    99+
    2023-05-22
    Python
  • C++使用链表实现图书管理系统
    本文实例为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考,具体内容如下 一、程序实现功能 1.录入书籍:将书籍录入图书管理系统 2.浏览书籍:查看图书管...
    99+
    2024-04-02
  • C语言中如何利用哈希表实现通讯录
    这篇“C语言中如何利用哈希表实现通讯录”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中如何利用哈希表实现通讯录”文章吧...
    99+
    2023-06-16
  • Java如何实现通讯录管理系统项目
    这篇文章主要介绍了Java如何实现通讯录管理系统项目,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言我们学了这么久的知识了,光学知识不会用是一件很悲伤的事情,所以我们应...
    99+
    2023-06-25
  • 如何用C语言链表实现工资管理系统
    本篇内容介绍了“如何用C语言链表实现工资管理系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!题目:建立工资管理系统,对职工工资的相关信息进...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作