通讯录管理系统 c++实现



前言

功能:
1.添加联系人:新建联系人信息(包括姓名,性别,电话,年龄,家庭住址)最多记录一千人
2.显示联系人:显示通讯录中所有联系人的信息
3.删除联系人:按照姓名直接指定删除联系人
4.查找联系人:按照姓名直接查找联系人信息
5.修改联系人:按照姓名重新修改指定联系人信息
6.清空联系人:格式化通信录
7.退出通讯录:退出当前通讯录


制作

1.菜单函数

代码如下(示例):

void show()
{                              //菜单页面 
	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;
	}

2.框架搭建

用 switch分支结构完成框架搭建。
用户选择0 是不会退出程序也不会有其他操作。
代码如下(示例):

int main()
{	
	show(); 
	int select = 0;
	while(1){
	
	cin>>select;
	switch(select)
	{
		case 1:             //1.添加联系人 
			break;
		case 2:             //2.显示联系人 
			break;
		case 3:             //3.删除联系人 
			break;
		case 4:             //4.查找联系人 
			break;
		case 5:             //5.修改联系人 
			break;
		case 6:             //6.清空联系人 
			break;
		case 0:             //0.退出通讯录 
		cout<<"***** 欢迎下次使用 *****"<<endl; 
			break;
	 } 
}
	system("pause");//防止闪退 
	return 0;
} 

3.添加联系人

上限为1000,包含姓名,性别,电话,年龄,家庭住址信息;
实现步骤:
1.设计联系人结构体
2.设计通讯录结构体
3.main函数中创建通讯录
4.封装添加联系人
5.测试添加联系人功能

代码如下(示例):

		//创建联系人结构体
	struct person
	{
		string name;//名字 
		int sex;    //性别 
		int age;    //年龄 
		string phone;//电话 
		string add;//地址 
	 };
	 //通讯录结构体 
	 struct addressbook
	 {
	 	struct person arr[max];
	 	int size;
	  }; 
		
	  

main函数创建通讯录

int main()
{	
	//创建通讯录变量
	 addressbook abs;
	 //初始化通讯录人数
	 abs.size =0;
	show(); 
	int select = 0;
	while(1){
	
	cin>>select;
	switch(select)
	{
		case 1:           //1.添加联系人 
		addpeson(&abs);
			break;
		case 2:           //2.显示联系人 
			break;
		case 3:           //3.删除联系人 
			break;
		case 4:           //4.查找联系人 
			break;
		case 5:           //5.修改联系人 
			break;
		case 6:           //6.清空联系人 
			break;
		case 0:           //0.退出通讯录 
		cout<<"***** 欢迎下次使用 *****"<<endl; 
			break;
	 } 
}
	system("pause");//防止闪退 
	return 0;
} 

封装添加联系人函数

	 //添加联系人的函数
	 void addpeson(addressbook * abs)
	 {
	 	//判断通讯录是否满了,满了不加
		  if(abs->size == 1000){
		  cout<<"通讯录已满,无法添加加"<<endl;
		   return; 
	    }
	    //未满则添加新人 
	    else{
	    	//添加人的姓名
	    	string name;
			cout<<"请输入姓名"<<endl;
			cin>>name; 
			abs->arr[abs->size].name =name;
			//性别
			string sex; 
			cout<<"请输入性别"<<endl;
			cin>>sex; 
			abs->arr[abs->size].sex =sex;
			int age;
			cout<<"请输入年龄"<<endl;
			cin>>age;
			abs->arr[abs->size].age =age;	  
			string phone; 
			cout<<"请输入电话"<<endl;
			cin>>phone;
			abs->arr[abs->size].phone =phone;
			string address;
			cout<<"请输入住址"<<endl;
			cin>>address;
			abs->arr[abs->size].address =address;
			 //更新通讯录人数
			 abs->size++;
			 cout<<"添加成功"<<endl;
			 system("pause"); 
			 system("cls");//清屏操作 
		}
	  } 

测试添加联系人
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.显示联系人

代码如下

 void showperson(addressbook * abs)
	   {
	   	//判断当前通讯录是不是空的 
	   	if(abs->size == 0){
		  cout<<"通讯录为空,请添加加"<<endl;
		   return; 
	    }
	    else{
	    	for(int i=0;i<abs->size;i++)
	    	cout<<"姓名:"<<abs->arr[i].name<<"   性别:"<<abs->arr[i].sex<<"   年龄:"<<abs->arr[i].age<<"   电话:"<<abs->arr[i].phone<<"   住址:"<<abs->arr[i].address<<endl;
		} 
	   }

4.删除联系人

找到要删除的联系人在数组的坐标,让后面的信息把他覆盖达到删除的目的

代码如下

 void deleteperson(addressbook * abs) 
	   {
	   	cout<<"请输入要删除的联系人"<<endl;
	   	int j;
	   	string name;
	   	cin>>name;
	   	j=isexist(abs,name);
		   if(j==-1)
		   {
		   	cout<<"查无此人"<<endl; 
		   }
		   else//查到了,数据迁移进行覆盖,实现删除操作 
		   {
		   	
			  		 for (int i = j; i < abs->size; i++)
					   {
        				abs->arr[i] = abs->arr[i + 1];
						}
					
 
			abs->size--;
		   }
		    
	   }

5.查找联系人

代码如下

 //查找联系人 
	   int isexist(addressbook * abs)
	   {
	    
	   	string name;
		cin>>name;
	   	for(int i=0;i<abs->size;i++)
	   	{
	   		if(abs->arr[i].name==name){
	   			//找到用户了
				   return i;//返回在数组中的坐标 
			   }
			   
		   }
		   
			   return -1;
		   
	   }

6.修改联系人

找到要修改的联系人在数组的坐标,把信息在输入一遍达到修改的目的

 //修改联系人
	    
	    void modifyperson(addressbook * abs) 
	    {
	    	cout<<"请输入要修改的联系人"<<endl;
		   int j; 
	   	j=isexist(abs);
		   if(j==-1)
		   {
		   	cout<<"查无此人"<<endl; 
		   }
		   else//查到了,进行修改
		   {
		   	string name;
			cout<<"请输入姓名"<<endl;
			cin>>name; 
			abs->arr[j].name =name;
			//性别
			string sex; 
			cout<<"请输入性别"<<endl;
			cin>>sex; 
			abs->arr[j].sex =sex;
			int age;
			cout<<"请输入年龄"<<endl;
			cin>>age;
			abs->arr[j].age =age;	  
			string phone; 
			cout<<"请输入电话"<<endl;
			cin>>phone;
			abs->arr[j].phone =phone;
			string address;
			cout<<"请输入住址"<<endl;
			cin>>address;
			abs->arr[j].address =address;
			cout<<"已修改"<<endl; 
		   }
		    
		}


6.清空通讯录

	void clean(addressbook * abs)
		{
			abs->size=0;
		}

总结

完整代码:

#include<bits/stdc++.h>
#define max 1000 
using namespace std;
void showmenu()
{                              //菜单页面 
	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;
	}
	//创建联系人结构体
	struct person
	{
		string name;//名字 
		string sex;    //性别 
		int age;    //年龄 
		string phone;//电话 
		string address;//地址 
	 };
	 //通讯录结构体 
	 struct addressbook
	 {
	 	struct person arr[max];
	 	int size;
	  };
	 //添加联系人的函数
	 void addpeson(addressbook * abs)
	 {
	 	//判断通讯录是否满了,满了不加
		  if(abs->size == 1000){
		  cout<<"通讯录已满,无法添加加"<<endl;
		   return; 
	    }
	    //未满则添加新人 
	    else{
	    	//添加人的姓名
	    	string name;
			cout<<"请输入姓名"<<endl;
			cin>>name; 
			abs->arr[abs->size].name =name;
			//性别
			string sex; 
			cout<<"请输入性别"<<endl;
			cin>>sex; 
			abs->arr[abs->size].sex =sex;
			int age;
			cout<<"请输入年龄"<<endl;
			cin>>age;
			abs->arr[abs->size].age =age;	  
			string phone; 
			cout<<"请输入电话"<<endl;
			cin>>phone;
			abs->arr[abs->size].phone =phone;
			string address;
			cout<<"请输入住址"<<endl;
			cin>>address;
			abs->arr[abs->size].address =address;
			 //更新通讯录人数
			 abs->size++;
			 cout<<"添加成功"<<endl;
			 system("pause"); 
			
		}
	  } 
	  //显示联系人 
	   void showperson(addressbook * abs)//把地址给了指针,就能用->了 
	   {
	   	//判断当前通讯录是不是空的 
	   	if(abs->size == 0){
		  cout<<"通讯录为空,请添加加"<<endl;
		   return; 
	    }
	    else{
	    	for(int i=0;i<abs->size;i++)
	    	cout<<"姓名:"<<abs->arr[i].name<<"   性别:"<<abs->arr[i].sex<<"   年龄:"<<abs->arr[i].age<<"   电话:"<<abs->arr[i].phone<<"   住址:"<<abs->arr[i].address<<endl; 
		} 
	   }
	   //查找联系人 
	   int isexist(addressbook * abs)
	   {
	    
	   	string name;
		cin>>name;
	   	for(int i=0;i<abs->size;i++)
	   	{
	   		if(abs->arr[i].name==name){
	   			//找到用户了
				   return i;//返回在数组中的坐标 
			   }
			   
		   }
		   
			   return -1;
		   
	   }
	   //删除指定联系人
	   void deleteperson(addressbook * abs) 
	   {
	   	cout<<"请输入要删除的联系人"<<endl;
		   int j; 
	   	j=isexist(abs);
		   if(j==-1)
		   {
		   	cout<<"查无此人"<<endl; 
		   }
		   else//查到了,数据迁移进行覆盖,实现删除操作 
		   {
		   	
			  		 for (int i = j; i < abs->size; i++)
					   {
        				abs->arr[i] = abs->arr[i + 1];
						}
					
 
			abs->size--;
			cout<<"已删除"<<endl; 
		   }
		    
	   }
	   //修改联系人
	    
	    void modifyperson(addressbook * abs) 
	    {
	    	cout<<"请输入要修改的联系人"<<endl;
		   int j; 
	   	j=isexist(abs);
		   if(j==-1)
		   {
		   	cout<<"查无此人"<<endl; 
		   }
		   else//查到了,进行修改
		   {
		   	string name;
			cout<<"请输入姓名"<<endl;
			cin>>name; 
			abs->arr[j].name =name;
			//性别
			string sex; 
			cout<<"请输入性别"<<endl;
			cin>>sex; 
			abs->arr[j].sex =sex;
			int age;
			cout<<"请输入年龄"<<endl;
			cin>>age;
			abs->arr[j].age =age;	  
			string phone; 
			cout<<"请输入电话"<<endl;
			cin>>phone;
			abs->arr[j].phone =phone;
			string address;
			cout<<"请输入住址"<<endl;
			cin>>address;
			abs->arr[j].address =address;
			cout<<"已修改"<<endl; 
		   }
		    
		}
		void clean(addressbook * abs)
		{
			abs->size=0;
		}
int main()
{	
	showmenu();
	//创建通讯录变量
	addressbook abs;//abs是对象,不是指针哦 
	 //初始化通讯录人数
	abs.size =0; 
	int select = 0;
	while(1){
	cout<<"请输入你的选项"<<endl;
	cin>>select;
	cin.clear();
	cin.ignore();
	switch(select)
	{
		
		case 1:           //1.添加联系人 
		{addpeson(&abs);
			break;
		}
		case 2:           //2.显示联系人 
		{showperson(&abs);
			break;
		}
		case 3:           //3.删除联系人 
		{deleteperson(&abs);
			break;
		}
		case 4:           //4.查找联系人 
		{
		cout<<"请输入需要查找的联系人"<<endl;
		int i;
		i=isexist(&abs);
		if(i==-1){
			cout<<"查无此人"<<endl;
		}
		else{
			cout<<"姓名:"<<abs.arr[i].name<<"   性别:"<<abs.arr[i].sex<<"   年龄:"<<abs.arr[i].age<<"   电话:"<<abs.arr[i].phone<<"   住址:"<<abs.arr[i].address<<endl;//不是指针不能用-> 

		}
		break;
		}
			
		case 5:           //5.修改联系人 
			{
				modifyperson(&abs);
				 
			break;
			}
		case 6:           //6.清空联系人 
			{
			clean(&abs);
			break;
			}
		case 0:        //0.退出通讯录 
		{cout<<"***** 欢迎下次使用 *****"<<endl; 
			break;
		}
	 } 
}
	system("pause");//防止闪退 
	return 0;
} 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值