通讯录管理系统(c/c++)含完整源码~

这篇具有很好参考价值的文章主要介绍了通讯录管理系统(c/c++)含完整源码~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

hello,大家好!今天小冉给大家分享一个通讯录管理系统。如果要了解细节上的东西大家可以去b站搜索”黑马程序员“的c++课程,老师讲的非常清晰细致,程序大体结构都和课程中的相同,我自己做了一点小小的修改,如果大家在该程序的编程实现上出现什么问题都可以在评论区提问。

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

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

通讯录管理系统(c/c++)含完整源码~

程序部分功能展示

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

通讯录管理系统(c/c++)含完整源码~ 通讯录管理系统(c/c++)含完整源码~

通讯录管理系统(c/c++)含完整源码~

通讯录管理系统(c/c++)含完整源码~

通讯录管理系统(c/c++)含完整源码~

各个功能的代码实现

菜单

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

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

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“)

二)显示联系人

 显示联系人的函数

完整源码

以下是完整的源码,关于程序有任何的问题都可以在评论区提问~文章来源地址https://www.toymoban.com/news/detail-489555.html

#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语句如果很长的话最好用括号括起来形成一个代码段
	/*{
	cout<<"请输入删除联系人的姓名:"<<endl;
	string name;
	cin>>name;
	if(isExist ==-1)cout<<"查无此人"<<endl;
	else cout<<"找到此人"<<endl;}*/ //检测练习人是否存在
	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++)含完整源码~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言课设计划】个人通讯录管理系统(C语言大作业 链表 结构体 运行截图 完整代码)

    hello 大家好呀 这里是布丁学姐~ 今天给大家带来的是《C语言课设计划》的第一篇,个人通讯录管理系统 通讯录是当前社会每个人不可缺少的信息系统,利用C语言和Dve c++制作个人通讯录管理系统,从根本上改变纸质通讯录难以长久保存、容易丢失的弊端,从而提高信息管理和

    2024年02月02日
    浏览(89)
  • 通讯录管理系统

    作者:狮子也疯狂 专栏:《项目集锦》 坚持做好每一步,幸运之神自然会驾凌在你的身上 该项目是用于日常生活中记录联系人信息的一款智能小工具。实现了对联系人的姓名、年龄、性别、电话号码、住址的添加及修改、查找、删除、排序等功能。该项目是以 Windows 控制台

    2024年02月05日
    浏览(50)
  • 通讯录管理系统 C++

    目录 一、前言 二、设计要求  三、概要设计 3.1 主界面设计 3.1.1 设计图 3.1.2设计代码 3.2 存储结构设计 3.3 系统功能设计 3.3.1 系统流程图​编辑 3.3.2 系统子程序及功能介绍  四、详细设计 4.1 头文件 4.2 数据定义 4.3 系统主要子程序详细设计 4.3.1 主函数 4.3.2 添加联系人 4.3

    2024年02月09日
    浏览(66)
  • 通讯录管理系统C++代码

    目录 通讯录管理系统(课程设计) 一、系统中需要实现的功能 二、创建项目 三、实现功能 1、菜单功能  2.添加联系人功能  3.显示联系人功能 4.删除联系人  5 .查找联系人功能  6.修改联系人功能  7.清空联系人功能  8.退出功能 对于通讯录管理系统而言,不需要太复杂的

    2024年02月09日
    浏览(49)
  • 简单通讯录管理系统(Java)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档     任务 : 在之前的练习任务中,我们已经实现了通讯录的增删改查等基本功能,主要实现一个通讯录的菜单管理功能。 仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现通讯录菜单管

    2024年02月09日
    浏览(61)
  • 【C语言】优化通讯录管理系统

    大家好,我是苏貝,本篇博客带大家优化上一篇的通讯录,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 在上一篇博文 实现通讯录管理系统 的最后,我们了解了那段代码的问题:通讯录的大小是固定的100个元素,如果想要存放1000个人的信息,那么空间就

    2024年02月06日
    浏览(43)
  • 数据结构--学生通讯录管理系统

    文章目录 一、问题描述 二、系统功能设计 三、各个代码部分 四、整体代码及其运行 五、总结 学生通讯录管理系统--C语言实现 在现实中,用学号和姓名来记录学生需要花费大量的纸质材料,并且出现容易丢失、查找困难等问题。 “学生通讯管理系统”是为了帮助老师、同

    2024年02月11日
    浏览(54)
  • 【C语言】实现通讯录管理系统

    大家好,我是苏貝,本篇博客带大家实现通讯录,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 本文将使用C语言来实现通讯录管理系统,该通讯录包括若干联系人,和每个联系人的姓名、年龄、性别、电话、地址。此通讯录的功能包括:增加联系人信息,

    2024年02月08日
    浏览(44)
  • Java--通讯录管理系统【课程设计】

    目录 1 设计任务 1.1需求分析 1.2任务分析 2 系统分析 2.1 总体设计分析 2.1.1设计要求 2.1.2设计任务 2.1.3设计思路 2.2 可行性分析 2.2.1 技术可行性分析 2.2.2 经济可行性分析 2.2.3 操作可行性分析 2.3 功能结构分析 3 系统设计 4 系统实现 5 系统测试 5.1新建联系人 5.2修改联系人

    2023年04月19日
    浏览(46)
  • c++手机通讯录管理系统280

    定制魏:QTWZPW,获取更多源码等 目录 软件达到的目的 功能分析说明图  各项功能说明  主要数据结构类型  各个模块之间的调用关系和数据储存格式说明  各软件模块之间的调用方式  软件中实现各项功能的函数与程序主要代码  软件使用结果  添加联系人 显示联系人 拨

    2024年04月12日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包