返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C/C++实现通讯录管理系统(附源码)
  • 783
分享到

C/C++实现通讯录管理系统(附源码)

C++实现通讯录管理系统C++通讯录管理系统C++通讯录 2022-12-15 12:12:32 783人浏览 泡泡鱼
摘要

目录程序部分功能展示各个功能的代码实现菜单添加联系人显示联系人完整源码首先是程序的功能,该程序主要可以实现以下功能:一)添加联系人 二)显示联系人 三)删除联系人 四)查找联系人 五

首先是程序的功能,该程序主要可以实现以下功能:一)添加联系人 二)显示联系人 三)删除联系人 四)查找联系人 五)修改联系人 六)清空联系人 七)退出通讯录。

程序中用到的知识点主要有:结构体、结构体数组、指针、函数等。

程序部分功能展示

以下是部分程序功能演示:

各个功能的代码实现

菜单

我们首先制作一个程序的菜单,为后续功能的实现做铺垫。

我们先编写一个显示菜单的函数:

void showMenu(){
  cout<<"1.添加联系人:"<<endl;
  cout<<"2.显示联系人:"<<endl;
  cout<<"3.删除联系人:"<<endl;
  cout<<"4.查找联系人"<<endl;
  cout<<"5.修改联系人"<<endl;
  cout<<"6.清空联系人"<<endl;
  cout<<"0.退出通讯录"<<endl;
}

大家也可以在菜单显示时改变行距或者加入一些符号让它变的更美观~~~ 

然后,在主函数中定义一个int型的变量select,从键盘中输入select的值完成对于不同功能的选择,这里用switch case语句来实现。

    int select=0;//创建用户选择输入的变量
    while(1){
        showMenu();
        cin>>select;
 
    switch(select)
    {
case 1://添加联系人
    break;
case 2:
    break;//显示联系人
case 3:
    break;
    
case 4: 
        break;//查找联系人
case 5:
    break;//修改联系人 按照姓名重新修改指定联系人
case 6: 
    break;//清空联系人 
case 0: //退出通讯录
        break;
default: break;
    }}

主函数的主要框架就完成啦~!后续的功能我们慢慢添加补充。

添加联系人

实现该部分功能的步骤如下:

1.定义联系人结构体以及通讯录结构体

2.在主函数中创建通讯录

3.封装添加联系人函数

首先是定义联系人结构体和通讯录结构体 

//设计联系人结构体(添加联系人)
struct Person{
    string m_Name;//姓名
    int m_Sex;//性别 男1  女2
    int m_Age;//年龄
    string m_Phone;//电话
    string m_Addr;//住址
};
//设计通讯录结构体(添加联系人)
struct Addressbooks{
struct Person personArray[MAX];//通讯录中保存联系人数组
int m_Size;//记录当前联系人个数
};

联系人结构体中包含联系人的姓名、性别、年龄、电话和地址,这里不过多赘述。

通讯录结构体中包含了一个存储联系人信息的数组,以及记录当前联系人个数的变量。注意,数组的最大限度MAX也就是该通讯录能存储的联系人个数的最大值。这里为了方便,我们在程序前面加上 #define MAX 1000 ,方便修改MAX的值。

创建好结构体之后,我们需要在主函数中创建一个通讯录。即

Addressbooks abs;

好了,做完准备工作之后,我们就要开始编写添加联系人的函数了。注意,因为我们需要改变实参的 值,所以函数的参数需要为指针,进行地址传递。

该函数主要实现以下功能:判断通讯录是否已满,如果未满,添加联系人信息,如果已满,提醒用户,通讯录已满,无法添加!

以下是代码实现:

//1.添加联系人
void addPerson(Addressbooks * abs)
{ 
    //判断通讯录是否已满
    if(abs->m_Size==MAX){//参数中的一个项使用.,地址中的一个项使用->,这里的abs是一个地址,所以用->
        //指针要用->
        cout<<"通讯录已满,无法添加!"<<endl;
        return;}
    else{
        //添加具体联系人
        //姓名
        string name;
        cout<< "请输入姓名: "<<endl;
        cin >> name;
        abs->personArray[abs->m_Size].m_Name=name;
 
 
        //性别
        cout<<"请输入性别: "<<endl;
        cout<<"1---男"<<endl;
        cout<<"2---女"<<endl;
        int sex = 0;
        while(1){
            cin >> sex;
        if(sex==1||sex==2){
            abs->personArray[abs->m_Size].m_Sex=sex;
        break;
        }
        cout<<"输入有误,请重新输入"<<endl;
        }
        //年龄
        cout<<"请输入年龄:"<<endl;
        int age=0;
        cin>>age;
        abs->personArray [abs->m_Size].m_Age =age;
        //电话
        cout<<"请输入联系电话: "<<endl;
        string phone;
        cin>>phone;
        abs->personArray [abs->m_Size ].m_Phone =phone;
        //住址
        cout<<"请输入地址:"<<endl;
        string address;
        cin>>address;
        abs->personArray [abs->m_Size ].m_Addr =address ;
        //信息录入成功,通讯录人数加一
        abs->m_Size ++;
        cout<<"添加成功!"<<endl;
        system("pause");//按任意键继续
        system ("cls");//清屏
    }}

 为了使程序更加的美观易读,在完成添加之后,执行清屏操作,这里调用了c++中的系统函数即system(”cls“)

显示联系人

显示联系人的函数

完整源码

以下是完整的源码

#include<iOStream>
using namespace std;
#include<string>
 
#define MAX 1000
//显示菜单界面
 
//设计联系人结构体(添加联系人)
struct Person{
	string m_Name;//姓名
	int m_Sex;//性别 男1  女2
	int m_Age;//年龄
	string m_Phone;//电话
	string m_Addr;//住址
};
//设计通讯录结构体(添加联系人)
struct Addressbooks{
struct Person personArray[MAX];//通讯录中保存联系人数组
int m_Size;//记录当前联系人个数
};
 
 
//1.添加联系人
void addPerson(Addressbooks * abs)
{ 
	//判断通讯录是否已满
	if(abs->m_Size==MAX){//参数中的一个项使用.,地址中的一个项使用->,这里的abs是一个地址,所以用->
		//指针要用->
		cout<<"通讯录已满,无法添加!"<<endl;
		return;}
	else{
		//添加具体联系人
		//姓名
		string name;
		cout<< "请输入姓名: "<<endl;
		cin >> name;
		abs->personArray[abs->m_Size].m_Name=name;
 
 
		//性别
		cout<<"请输入性别: "<<endl;
		cout<<"1---男"<<endl;
		cout<<"2---女"<<endl;
		int sex = 0;
		while(1){
			cin >> sex;
		if(sex==1||sex==2){
			abs->personArray[abs->m_Size].m_Sex=sex;
		break;
		}
		cout<<"输入有误,请重新输入"<<endl;
		}
		//年龄
		cout<<"请输入年龄:"<<endl;
		int age=0;
		cin>>age;
		abs->personArray [abs->m_Size].m_Age =age;
		//电话
		cout<<"请输入联系电话: "<<endl;
		string phone;
		cin>>phone;
		abs->personArray [abs->m_Size ].m_Phone =phone;
		//住址
		cout<<"请输入地址:"<<endl;
		string address;
		cin>>address;
		abs->personArray [abs->m_Size ].m_Addr =address ;
		//信息录入成功,通讯录人数加一
		abs->m_Size ++;
		cout<<"添加成功!"<<endl;
		system("pause");//按任意键继续
		system ("cls");//清屏
	}}
//2.显示所有联系人
void showPerson(Addressbooks * abs){
//判断通讯录中人数是否为0,如果为0,提示记录为空
	//如果不为0,显示记录的联系人信息
	if(abs->m_Size==0)
	{
		cout<<"当前记录为空"<<endl;
	}
	else{
		for(int i=0;i<abs->m_Size ;i++){
			cout<<"姓名:"<<abs->personArray [i].m_Name <<"\t";
			cout<<"性别:"<<(abs->personArray [i].m_Sex ==1?"男":"女")<<"\t";
			cout<<"年龄:"<<abs->personArray [i].m_Age <<"\t";
			cout<<"电话:"<<abs->personArray [i].m_Phone <<"\t";
			cout<<"住址:"<<abs->personArray [i].m_Addr <<endl;
		}
	}
	system("pause");//按任意键继续
	system ("cls");//清屏
}
//显示菜单
void showMenu(){
  cout<<"1.添加联系人:"<<endl;
  cout<<"2.显示联系人:"<<endl;
  cout<<"3.删除联系人:"<<endl;
  cout<<"4.查找联系人"<<endl;
  cout<<"5.修改联系人"<<endl;
  cout<<"6.清空联系人"<<endl;
  cout<<"0.退出通讯录"<<endl;
}
 
//3.检测联系人是否存在,如果存在,返回联系人在数组中的具体位置,不存在返回-1
//参数1 通讯录 参数2 姓名
int isExist(Addressbooks *abs, string name){
for(int i=0;i<abs->m_Size ;i++){
	if(abs->personArray [i].m_Name ==name)
	{return i;}
}//寻找联系人
return -1;//遍历结束仍然没有找到
}
 
//3.删除指定联系人
void deletePerson(Addressbooks *abs ){
	cout<<"请输入您要删除的联系人"<<endl;
	string name;
	cin>>name;
	int ret=isExist(abs,name);//if ret=-1.未查到该人 else 查到了
	if(ret!=-1){
		//查到此人,要进行删除操作
		for(int i=ret;i<abs->m_Size;i++){
			// 使数据前移,实现逻辑上的删除功能
			abs->personArray [i]=abs->personArray [i+1];
	}
		abs->m_Size --;
		cout<<"删除成功!"<<endl;
	}
	else{
		cout<<"未查到此人!"<<endl;
	}
	system ("pause");
	system ("cls");
	}
 
//4.查找指定联系人信息
void findPerson(Addressbooks  *abs)
{
	cout<<"请输入您要查找的联系人"<<endl;
	string name;
	cin>>name;//判断指定的联系人是否存在于通讯录中
	int ret= isExist(abs,name);
	if(ret!=-1){//找到联系人
		cout<<"姓名:"<<abs->personArray [ret ].m_Name <<"\t";
	cout<<"性别:"<<(abs->personArray [ret ].m_Sex ==1?"男":"女")<<"\t";
			cout<<"年龄:"<<abs->personArray [ret ].m_Age <<"\t";
			cout<<"电话:"<<abs->personArray [ret ].m_Phone <<"\t";
			cout<<"住址:"<<abs->personArray [ret ].m_Addr <<endl;
 
}
else{//未找到联系人
	cout<<"查无此人!"<<endl;
}
system ("pause");//按任意键继续
	system ("cls");//清屏
}
 
//5.修改指定联系人信息
void  modifyPerson(Addressbooks *abs){
	cout<<"请输入您要修改的联系人"<<endl;
	string name;
	cin>>name;
	int ret=isExist (abs,name);
	if(ret!=-1){//找到了指定的联系人
		//姓名
		string name;
		cout<<"请输入修改后的姓名: "<<endl;
		cin>>name;
		abs->personArray [ret].m_Name =name;
		//性别
		int sex=0; 
			cout<<"请输入性别:"<<endl;
		cout<<"1---男"<<endl<<"2---女"<<endl;
		while(1){
			cin>>sex;
		if(sex==1||sex==2){
			abs->personArray [ret].m_Sex =sex;
			break;
		}
		cout<<"输入有误,请重新输入"<<endl;
		}
		//年龄
		cout<<"请输入年龄 "<<endl;
		int age=0;
		cin>>age;
		abs->personArray [ret ].m_Age =age;
		//电话
		cout<<"请输入联系电话:"<<endl;
		string phone;
		cin>>phone;
		abs->personArray [ret].m_Phone =phone;
 
		//住址
		cout<<"请输入住址:"<<endl;
		string address;
		cin>>address;
		abs->personArray [ret].m_Addr =address;
		cout<<"修改成功!"<<endl;
	}
	else{//未找到指定的联系人
		cout<<"查无此人!"<<endl;
	}
	system("pause");
		system("cls");//按任意键后清屏
}
 
//6.清空联系人 //实现思路:只要将记录的联系人数重置为0,就可以实现逻辑情空
void cleanPerson(Addressbooks *abs){
	abs->m_Size =0;
	cout<<"通讯录已清空"<<endl;
	system("pause");
	system("cls");
}
//主函数
int main(){
	char qingkong;
	system ("color F1");
	//创建通讯录结构体变量
	Addressbooks abs;
	//初始化通讯录当中当前人员个数
 
	//调用菜单
	abs.m_Size=0;
	int select=0;//创建用户选择输入的变量
	while(1){
		showMenu();
	    cin>>select;
 
	switch(select)
	{
case 1://添加联系人
	addPerson(& abs);
	break;//添加联系人//功能:设置上限1000人 
	//步骤:设置联系人结构体和通讯录结构体 main函数中创建通讯录 封装添加联系人函数 测试添加联系人功能
case 2:
	showPerson (& abs);//地址传递,可以改变实参的值
	break;//显示联系人
case 3://case语句如果很长的话最好用括号括起来形成一个代码段
	 //检测练习人是否存在
	deletePerson(&abs);
	break;//删除联系人 1.判断联系人是否存在 2.删除联系人函数
	
case 4: 
	findPerson (&abs);
		break;//查找联系人
case 5:
	modifyPerson (&abs);
	break;//修改联系人 按照姓名重新修改指定联系人
case 6: 
    cout<<"你确定要清空通讯录吗?(Y or N)" <<endl; 
    cin>>qingkong;
    if(qingkong=='Y'||qingkong=='y'){
	cleanPerson (&abs);}
	else system("pause");//按任意键继续
	system ("cls");//清屏
	break;//清空联系人 
case 0: //退出通讯录
		cout<<"欢迎下次使用"<<endl;
		system ("pause");//暂停,等待用户输入
		return 0;
		break;
default: break;
	}}}

到此这篇关于C/C++实现通讯录管理系统(附源码)的文章就介绍到这了,更多相关C++通讯录管理系内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C/C++实现通讯录管理系统(附源码)

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

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

猜你喜欢
  • C/C++实现通讯录管理系统(附源码)
    目录程序部分功能展示各个功能的代码实现菜单添加联系人显示联系人完整源码首先是程序的功能,该程序主要可以实现以下功能:一)添加联系人 二)显示联系人 三)删除联系人 四)查找联系人 五...
    99+
    2022-12-15
    C++实现通讯录管理系统 C++通讯录管理系统 C++通讯录
  • C语言代码实现通讯录管理系统
    目录一、需求分析二、程序结构三、头文件内容的介绍四、模块化实现各个功能(1)主函数实现(2)初始化通讯录(3)添加联系人信息(4)删除联系人信息(5)查找联系人信息(6)更改联系人信...
    99+
    2024-04-02
  • C++实现简单通讯录管理系统
    本文实例为大家分享了C++实现简单的通讯录管理系统的具体代码,供大家参考,具体内容如下 一、代码 #include <iostream> #include <str...
    99+
    2024-04-02
  • C++实现简易通讯录管理系统
    目录前言结构体联系人结构体通讯录结构体函数模块菜单添加联系人显示联系人判断联系人删除联系人查找联系人清空所有联系人main函数源代码运行结果本文实例为大家分享了C++实现简易通讯录管...
    99+
    2024-04-02
  • C++实现通讯录管理系统设计
    本文实例为大家分享了C++实现通讯录管理系统的具体代码,供大家参考,具体内容如下 最核心的内容是结构体,结构体数组与指针 主要功能包括:添加联系人 ;显示联系人;删除联系人 ;查找联...
    99+
    2024-04-02
  • C++实现通讯录管理系统项目
    本文实例为大家分享了C++实现通讯录管理系统的具体代码,供大家参考,具体内容如下 1、通讯录设计要点 1:添加联系人:向通讯录中添加新人(包括:性别,年龄,联系电话,家庭住址),并且...
    99+
    2024-04-02
  • C++实现简单的通讯录管理系统
    本文实例为大家分享了C++实现简单的通讯录管理系统的具体代码,供大家参考,具体内容如下 案例描述: 通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理...
    99+
    2024-04-02
  • C++实现简单版通讯录管理系统
    这个通讯录管理系统是我听课后做的笔记,都是很基础的逻辑实现,第一次动手写了一个小案例感觉找到了一点方向,也希望能帮到一点忙! 1、系统需求 通讯录是一个可以记录亲人、好友信息的工具。...
    99+
    2024-04-02
  • C++ 实现的通讯录管理系统详解
    代码如下: #include<iostream> #include <sstream> using namespace std; #define Max ...
    99+
    2024-04-02
  • C++实现简易的通讯录管理系统
    本文实例为大家分享了C++实现简易通讯录管理系统的具体代码,供大家参考,具体内容如下 1. 效果图 2. 需要的知识 C++基础知识(包括变量,运算符,顺序,分支,循环)数组函数指...
    99+
    2024-04-02
  • 怎么用C++实现通讯录管理系统
    这篇“怎么用C++实现通讯录管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C++实现通讯录管理系统”文章吧。系...
    99+
    2023-07-02
  • C语言实现简单通讯录管理系统
    C语言实现的通讯录管理系统,供大家参考,具体内容如下 设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:学号、姓名、电话号码、所在班级、寝室地址等),通信录数据类型定义为...
    99+
    2024-04-02
  • C++怎么实现简单通讯录管理系统
    本篇内容介绍了“C++怎么实现简单通讯录管理系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、代码#include <i...
    99+
    2023-06-29
  • C++如何实现简易通讯录管理系统
    这篇文章主要介绍“C++如何实现简易通讯录管理系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++如何实现简易通讯录管理系统”文章能帮助大家解决问题。前言建议收藏,亲手写一遍代码,感受指针神奇的...
    99+
    2023-07-02
  • C++如何实现通讯录管理系统项目
    这篇文章主要介绍“C++如何实现通讯录管理系统项目”,在日常操作中,相信很多人在C++如何实现通讯录管理系统项目问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现通讯录管理系统项目”的疑惑有所帮助!...
    99+
    2023-07-02
  • C++如何实现通讯录管理系统设计
    这篇“C++如何实现通讯录管理系统设计”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现通讯录管理系统设计”文章吧...
    99+
    2023-07-02
  • C语言开发实现通讯录管理系统
    本文实例为大家分享了C语言通讯录管理系统开发的具体代码,供大家参考,具体内容如下 程序介绍 通讯录管理系统主要是实现对联系人的增、删、查以及显示的基本操作。用户可以根据自己的需要在功...
    99+
    2022-11-13
    C语言通讯录管理系统 C语言通讯录系统 C语言通讯录管理
  • 利用C++实现通讯录管理系统的完整代码
    目录学习目标:案例描述:实现代码:总结通讯录管理系统 学习目标: 对C++的基础进行复习,为后续深入学习打好基础 案例描述: 通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利...
    99+
    2024-04-02
  • C语言单链表实现通讯录管理系统
    本文实例为大家分享了C语言单链表实现通讯录管理系统的具体代码,供大家参考,具体内容如下 本人前几天刚刚自学了单链表,趁热打铁,赶紧写一个小小的项目练练手。 单链表的实现在本人之前的博...
    99+
    2024-04-02
  • C语言实现简单的通讯录管理系统
    本文实例为大家分享了C语言实现通讯录管理系统的具体代码,供大家参考,具体内容如下 要实现一个通讯录管理系统,需要用到结构体、指针、文件操作、动态管理等内容。 效果展示: 实现思路 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作