需求

通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:

  • 添加联系人∶向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人;
  • 显示联系人:显示通讯录中所有联系人信息;
  • 删除联系人:按照姓名进行删除指定联系人;
  • 查找联系人︰按照姓名查看指定联系人信息;
  • 修改联系人:按照姓名重新修改指定联系人;
  • 清空联系人:清空通讯录中所有信息;
  • 退出通讯录:退出当前使用的通讯录;

代码

#include <iostream>
#include <string>
#define MAX 1000
using namespace std;// 联系人结构体
struct Contacts
{string name;string sex;int age;string phone_number;string address;
};// 通讯录结构体
struct Address_Books
{struct Contacts contactsArray[MAX];int AB_size;
};// 显示菜单界面
void showMene()
{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 addContacts(Address_Books * ABs)
{// 先判断通讯录是否已满,如果满了不再添加if (ABs->AB_size == MAX){cout << "通讯录已满。" << endl;return;}else{cout << "姓名:" << endl;cin >> ABs->contactsArray[ABs->AB_size].name;cout << "性别:" << endl;cin >> ABs->contactsArray[ABs->AB_size].sex;cout << "年龄:" << endl;cin >> ABs->contactsArray[ABs->AB_size].age;cout << "联系方式:" << endl;cin >> ABs->contactsArray[ABs->AB_size].phone_number;cout << "家庭地址:" << endl;cin >> ABs->contactsArray[ABs->AB_size].address;ABs->AB_size += 1;cout << "添加成功!" << endl;system("pause");system("cls");}
}// 显示联系人
void printContacts(Address_Books *ABs)
{if (ABs->AB_size == 0){cout << "通讯录列表为空,请先添加联系人吧!" << endl;}else{for (int i = 0; i < ABs->AB_size; i++){cout << "姓名:" << ABs->contactsArray[i].name << "\t性别:" << ABs->contactsArray[i].sex<< "\t年龄:" << ABs->contactsArray[i].age << "\t联系方式:" << ABs->contactsArray[i].phone_number<< "\t家庭地址:" << ABs->contactsArray[i].address << endl;}}system("pause");system("cls");
}// 删除联系人
void delContacts(Address_Books *ABs, string del_name)
{int flag = 0;for (int i = 0; i < ABs->AB_size; i++){if (ABs->contactsArray[i].name == del_name){for (int j = i; j < ABs->AB_size; j++){ABs->contactsArray[j] = ABs->contactsArray[j + 1];}flag = 1;ABs->AB_size -= 1;cout << "删除成功!" << endl;break;}}if (flag == 0){cout << "查无此人!" << endl;}system("pause");system("cls");
}// 查找联系人
void serContacts(Address_Books *ABs, string ser_name)
{int flag = 0;for (int i = 0; i < ABs->AB_size; i++){if (ABs->contactsArray[i].name == ser_name){flag = 1;cout << "您查找的联系人信息如下:" << endl;cout << "姓名:" << ABs->contactsArray[i].name << "\t性别:" << ABs->contactsArray[i].sex<< "\t年龄:" << ABs->contactsArray[i].age << "\t联系方式:" << ABs->contactsArray[i].phone_number<< "\t家庭地址:" << ABs->contactsArray[i].address << endl;}}if (flag == 0){cout << "查无此人!" << endl;}system("pause");system("cls");
}// 修改联系人
void modifyContacts(Address_Books *ABs, string modify_name)
{int flag = 0;for (int i = 0; i < ABs->AB_size; i++){if (ABs->contactsArray[i].name == modify_name){flag = 1;cout << "请输入修改后的联系人信息:" << endl;cout << "姓名:" << endl;cin >> ABs->contactsArray[i].name;cout << "性别:" << endl;cin >> ABs->contactsArray[i].sex;cout << "年龄:" << endl;cin >> ABs->contactsArray[i].age;cout << "联系方式:" << endl;cin >> ABs->contactsArray[i].phone_number;cout << "家庭地址:" << endl;cin >> ABs->contactsArray[i].address;cout << "修改成功!" << endl;break;}}if (flag == 0){cout << "查无此人!" << endl;}system("pause");system("cls");
}// 清空联系人
void delallContacts(Address_Books *ABs, int del_select)
{if (del_select == 1){ABs->AB_size = 0;cout << "已清空所有联系人!" << endl;}else{cout << "已取消!" << endl;}system("pause");system("cls");
}int main()
{Address_Books ABs;ABs.AB_size = 0;int select = 0;int del_select = 0;string del_name;string ser_name;string modify_name;while (true){showMene();cin >> select;switch (select){case 1: // 1、添加联系人addContacts(&ABs); // 利用地址传递break;case 2: // 2、显示联系人printContacts(&ABs);break;case 3: // 3、删除联系人cout << "请输入要删除的联系人姓名:" << endl;cin >> del_name;delContacts(&ABs,del_name);break;case 4: //  4、查找联系人cout << "请输入要查找的联系人姓名:" << endl;cin >> ser_name;serContacts(&ABs, ser_name);break;case 5: // 5、修改联系人cout << "请输入要修改的联系人姓名:" << endl;cin >> modify_name;modifyContacts(&ABs, modify_name);break;case 6: // 6、清空联系人cout << "您确定要清空联系人吗?(1:仍要清空;其他数字:取消。)" << endl;cin >> del_select;delallContacts(&ABs, del_select);break;case 0: // 0、退出通讯录cout << "欢迎下次使用!" << endl;system("pause");return 0;}}system("pause");return 0;
}

总结

新手刚开始学C++做的第一个案例,也是第一次写CSDN博客,代码有什么改进的地方欢迎留言!

C++ 实现一个简单的通讯录管理系统相关推荐

  1. python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统

    原标题:Python小项目:快速开发出一个简单的学生管理系统 本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: ...

  2. python小项目案例-Python小项目:快速开发出一个简单的学生管理系统

    本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...

  3. 用结构体写一个简单的通讯录

    一个简单的通讯录 通讯录应该具备简单的一些功能 1 增添联系人 2 删除联系人 3 查找联系人 4 修改联系人 5 按名字给联系人排序 6 查看通讯录 除此之外,应该在实现上还应该具备一些其他的功能函 ...

  4. python项目开发实例-Python小项目:快速开发出一个简单的学生管理系统

    本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...

  5. 一个简单的物流管理系统

    一个简单的物流管理系统 演示 这是之前给一个客户定制的物流管理系统,功能比较简单,大家看看了. 暂不提供源代码 posted on 2007-04-25 12:27  阿慧南 阅读( ...) 评论( ...

  6. java开发一个简单的通讯录

    java开发一个简单的通讯录 ArrayList的综合应用 import java.util.*; public class ContactNote{static Scanner sc=new Sca ...

  7. 一个简单的宿舍管理系统

    一个简单的宿舍管理系统 #include <stdio.h> #include <stdlib.h> #include <string.h>struct sushe ...

  8. 用C++设计一个简单的学籍管理系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85930262 资源下载地址:https://download.csdn.net/downl ...

  9. 一个简单的问卷调查管理系统

    一个简单的问卷调查管理系统.包含从问卷题目分组.问卷发布.问卷填写.问卷结果分析等等功能. <问卷题目管理> <问卷发布> <问卷题目选择> <问卷调查填写& ...

最新文章

  1. NLP诗词生成模型数据准备及实战
  2. oracle导出超过100m的数据库,Oracle数据库的导出和导入
  3. 阿里巴巴Java开发规约的IDEA插件使用
  4. 台式计算机机箱都一样吗,别以为组装台式机很简单,机箱选择大有学问
  5. python中MySQLdb模块用法实例
  6. 运用枚举展示静态数据
  7. springBoot+springSecurity 数据库动态管理用户、角色、权限
  8. python批量查询ip归属地_利用python实现批量查询ip地址归属地址
  9. Postgresql的基本操作
  10. 关于JS跨域访问简述
  11. 西南大学计算机试题答案,17秋西南大学计算机组成原理【0013】机考答案
  12. 台式计算机如何自动开关机,联想电脑怎么设置定时开机|联想台式机自动开机设置方法...
  13. python解析库 爬虫_Python-爬虫-解析库(Beautiful Soup)的使用
  14. python 做网页_听过最近Python过气了?
  15. 使用python进行北京二手房信息数据分析及可视化展示
  16. Linux中的ps命令详解
  17. (翻译)稀缺模式(Scarcity)
  18. MAC下 Android签名生成keystore
  19. 个税继续教育证书有哪些 计算机,个税继续教育包括函授吗 个人所得税的继续教育主要包括哪些...
  20. ABP VNext学习日记17

热门文章

  1. Linux【第一篇总结】
  2. 我的算法基础实验代码-上篇
  3. 爱贝云计费服务端接入
  4. 学习高翔一起做rgbd-slam中关于g20部分的学习一
  5. 免校准的电量计量芯片_电量计量芯片HLW8110的前端电路设计与误差分析校正
  6. 超前 、滞后、超前滞后介绍
  7. 利用D3.js快速绘制力导向图
  8. mobl中title颜色的设置
  9. 七律:拜大年//作者:铁哥
  10. HUMAnN3的安装经验分享