C++实现简易通讯录管理系统

目录

前言

结构体

联系人结构体

通讯录结构体

函数模块

菜单

添加联系人

显示联系人

判断联系人

删除联系人

查找联系人

清空所有联系人

main函数

源代码

运行结果

本文实例为大家分享了C++实现简易通讯录管理系统的具体代码,供大家参考,具体内容如下

前言

建议收藏,亲手写一遍代码,感受指针神奇的魅力;
可以帮助你更好的巩固知识体系,熟悉指针,结构体与函数一起使用时的妙处

完成通讯录管理系统所需知识体系

1.结构体
2.指针
3.函数的封装
4.指针与函数的结合使用
5.指针与结构体的结合使用

结构体 联系人结构体 struct person {     string name;//姓名     string sex; //性别     int age;  //年龄     string phone;//手机号     string home;//地址 }; 通讯录结构体 struct addressbook {     struct person personArray[MAX]; //通讯录扩展到100;     int size=0;  //当前联系人个数(后面就相当于i++) }; 函数模块 void menu();//菜单 void putit(addressbook* add);//添加联系人 void showperson(addressbook* add);// 显示联系人 int if_include(addressbook* add, string name);//判断联系人 void deleteperson(addressbook* add, int i);//删除联系人 void findPerson( addressbook* add);//查找联系人 void cleanperson(struct addressbook* add);//清空所有联系人 菜单 void menu() {     cout << endl;     cout << "**********【主菜单】************" << endl;     cout << "---------1.添加联系人:----------" << endl;     cout << "---------2.显示联系人:---------" << endl;     cout << "---------3.删除联系人:---------" << endl;     cout << "---------4.查找联系人:---------" << endl;     cout << "---------5.修改联系人:---------" << endl;     cout << "---------6.清空联系人:---------" << endl;     cout << "---------0.退出通讯录:---------" << endl;     cout << "*******************************" << endl; } 添加联系人 void putit(addressbook* add)//添加联系人功能 {     if (add->size == MAX)         cout << "通讯录已满" << endl;     else     {         string name;         string sex;         int age;         string phone;         string home;         cout << "请输入姓名" << endl;         cin >> name;         add->personArray[add->size].name = name;         cout << "请输入姓别" << endl;         cin >> sex;         add->personArray[add->size].sex = sex;         cout << "请输入年龄" << endl;         cin >> age;         add->personArray[add->size].age = age;         cout << "请输入电话号码" << endl;         cin >> phone;         add->personArray[add->size].phone = phone;         cout << "请输入家庭住址" << endl;         cin >> home;         add->personArray[add->size].home = home;         add->size++;         cout << "添加联系人成功" << endl;     }     system("pause");     system("cls");     menu(); }

有人问添加联系人函数中为什么要使用指针?
因为值传递中形参无法改变实参;
而利用指针的地址传递可以通过函数中的形参改变实参;
具体原理可以参考博主之前的指针基础和指针进阶内容]

显示联系人 void showperson(addressbook* add) {     for (int i = 0; i <add->size; i++)     {         cout << "姓名:  " << add->personArray[i].name;         cout << "\t姓别:  " << add->personArray[i].sex;         cout << "\t年龄:  " << add->personArray[i].age;         cout << "\t电话号码:  " << add->personArray[i].phone;         cout << "\t家庭住址:  " << add->personArray[i].home << endl;     }     system("pause");     system("cls");     menu(); } 判断联系人 int if_include(addressbook* add, string name) {     for (int i = 0; i < add->size; i++)     {         if (name == add->personArray[i].name)         {             return i;         }         else         {             return -1;         }     } } 删除联系人 void deleteperson(addressbook* add, int i) {     for (; i < add->size; i++)     {         add->personArray[i] = add->personArray[i + 1];     }     system("pause");     system("cls"); } 查找联系人 void findPerson( addressbook* add) {     cout << "请输入您想要查找的联系人:" << endl;     string name;     cin >> name;     int ret = if_include(add, name);     if (ret == -1)     {         cout << "查无此人" << endl;     }     else     {   //查到此人,进行显示操作         int i = ret;         cout << "姓名:" << add->personArray[i].name << "\t";         cout << "性别:" << add->personArray[i].sex << "\t";         cout << "年龄:" << add->personArray[i].age << "\t";         cout << "联系方式:" << add->personArray[i].phone << "\t";         cout << "地址:" << add->personArray[i].home << endl;     }     //按任意键清屏     system("pause");     system("cls"); } 清空所有联系人 void cleanperson(struct addressbook* add)//清空所有联系人 {     cout << "是否确认清空?" << endl;     cout << "1 --- 是" << endl;     cout << "2 --- 否" << endl;     int a;     cin >> a;     if (a == 1)     {         add->size = 0;//将当前记录联系人数量置为0,做逻辑上的清空操作         cout << "通讯录已清空" << endl;     }     system("pause");     system("cls"); } main函数 int main() {     menu();     addressbook add;//定义一个通讯录     int choice=1;     while (choice != 0)     {         cin >> choice;         switch (choice)//选择         {         case 1: putit(&add);             break;         case 2: showperson(&add);             break;         case 3: {cout << "请输入你要删除的人的名字" << endl;             string aname;             cin >> aname;             if (if_include(&add, aname) == -1)             {                 cout << "查无此人" << endl;                 break;             }             if (if_include(&add, aname))             {                 deleteperson(&add, if_include(&add, aname));             }         }             break;          case 4:             break;         case 5:             break;         case 6:             break;         case 0: cout << "欢迎下次使用" << endl;             return 0;             break;         default: {cout << "输入不合法,请重新输入" << endl;             break; }         }     } } 源代码 #include<iostream> using namespace std; #include<string> #define MAX 100 struct person {     string name;//姓名     string sex; //性别     int age;  //年龄     string phone;//手机号     string home;//地址 }; struct addressbook {     struct person personArray[MAX]; //通讯录扩展到100;     int size=0;  //当前联系人个数(后面就相当于i++) }; void menu();//菜单 void putit(addressbook* add); void showperson(addressbook* add);  int if_include(addressbook* add, string name); void deleteperson(addressbook* add, int i); void findPerson(struct addressbooks* add);//查找联系人 void cleanperson(struct addressbook* add);//清空所有联系人 int main() {     menu();     addressbook add;     int choice=1;     while (choice != 0)     {         cin >> choice;         switch (choice)         {         case 1: putit(&add);             break;         case 2: showperson(&add);             break;         case 3: {             cout << "请输入你要删除的人的名字" << endl;             string aname;             cin >> aname;             if (if_include(&add, aname) == -1)             {                 cout << "查无此人" << endl;                 break;             }             if (if_include(&add, aname))             {                 deleteperson(&add, if_include(&add, aname));             }         }             break;          case 4:             break;         case 5:             break;         case 6:             break;         case 0: cout << "欢迎下次使用" << endl;             return 0;             break;         default: {cout << "输入不合法,请重新输入" << endl;             break; }         }     } } void menu() {     cout << endl;     cout << "***********【主菜单】***********" << endl;     cout << "---------1.添加联系人:----------" << endl;     cout << "---------2.显示联系人:---------" << endl;     cout << "---------3.删除联系人:---------" << endl;     cout << "---------4.查找联系人:---------" << endl;     cout << "---------5.修改联系人:---------" << endl;     cout << "---------6.清空联系人:---------" << endl;     cout << "---------0.退出通讯录:---------" << endl;     cout << "********************************" << endl; } void putit(addressbook* add)//添加联系人功能 {     if (add->size == MAX)         cout << "通讯录已满" << endl;     else     {         string name;         string sex;         int age;         string phone;         string home;         cout << "请输入姓名" << endl;         cin >> name;         add->personArray[add->size].name = name;         cout << "请输入姓别" << endl;         cin >> sex;         add->personArray[add->size].sex = sex;         cout << "请输入年龄" << endl;         cin >> age;         add->personArray[add->size].age = age;         cout << "请输入电话号码" << endl;         cin >> phone;         add->personArray[add->size].phone = phone;         cout << "请输入家庭住址" << endl;         cin >> home;         add->personArray[add->size].home = home;         add->size++;         cout << "添加联系人成功" << endl;     }     system("pause");     system("cls");     menu(); } void showperson(addressbook* add) {     for (int i = 0; i <add->size; i++)     {         cout << "姓名:  " << add->personArray[i].name;         cout << "\t姓别:  " << add->personArray[i].sex;         cout << "\t年龄:  " << add->personArray[i].age;         cout << "\t电话号码:  " << add->personArray[i].phone;         cout << "\t家庭住址:  " << add->personArray[i].home << endl;     }     system("pause");     system("cls");     menu(); } int if_include(addressbook* add, string name) {     for (int i = 0; i < add->size; i++)     {         if (name == add->personArray[i].name)         {             return i;         }         else         {             return -1;         }     } } void deleteperson(addressbook* add, int i) {     for (; i < add->size; i++)     {         add->personArray[i] = add->personArray[i + 1];     }     system("pause");     system("cls"); } void findPerson( addressbook* add) {     cout << "请输入您想要查找的联系人:" << endl;     string name;     cin >> name;     int ret = if_include(add, name);     if (ret == -1)     {         cout << "查无此人" << endl;     }     else     {   //查到此人,进行显示操作         int i = ret;         cout << "姓名:" << add->personArray[i].name << "\t";         cout << "性别:" << add->personArray[i].sex << "\t";         cout << "年龄:" << add->personArray[i].age << "\t";         cout << "联系方式:" << add->personArray[i].phone << "\t";         cout << "地址:" << add->personArray[i].home << endl;     }     //按任意键清屏     system("pause");     system("cls"); } void cleanperson(struct addressbook* add)//清空所有联系人 {     cout << "是否确认清空?" << endl;     cout << "1 --- 是" << endl;     cout << "2 --- 否" << endl;     int a;     cin >> a;     if (a == 1)     {         add->size = 0;//将当前记录联系人数量置为0,做逻辑上的清空操作         cout << "通讯录已清空" << endl;     }     system("pause");     system("cls"); }

由于代码量过大,建议大家可以试着分文件编写代码,也可以方便查看

运行结果

推荐阅读

    excel怎么用乘法函数

    excel怎么用乘法函数,乘法,函数,哪个,excel乘法函数怎么用?1、首先用鼠标选中要计算的单元格。2、然后选中单元格后点击左上方工具栏的fx公

    金蝶担保机构业务管理系统

    金蝶担保机构业务管理系统,,1.金蝶财务软件怎么使用?软件使用方法 使用需要先登陆到数据库,可只导出V3数据或只导出最新年度数据。功能介绍

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    excel中乘法函数是什么?

    excel中乘法函数是什么?,乘法,函数,什么,打开表格,在C1单元格中输入“=A1*B1”乘法公式。以此类推到多个单元。1、A1*B1=C1的Excel乘法公式

    标准差excel用什么函数?

    标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输入l标准差公式函数公式“=STDEVPA(C2:C6)”。按下回车,求出标准公差值。详细

    excel常用函数都有哪些?

    excel常用函数都有哪些?,函数,哪些,常用,1、SUM函数:SUM函数的作用是求和。函数公式为=sum()例如:统计一个单元格区域:=sum(A1:A10)  统计多个

    论竞技比赛结构中的十种常见误区

    论竞技比赛结构中的十种常见误区,,近年来,在中国电子竞技的发展得到了迅速的发展。虽然网络游戏市场正在进一步扩大,但我们也看到CS和魔兽争

    01- 第一天 spring boot2.3.1 +vue3.0 后台管理系统的研发

    01- 第一天 spring boot2.3.1 +vue3.0 后台管理系统的研发,自己的,后台,后台框架一直想开发一套完全属于自己的后台,但是18年的时候,曾经答