通讯录管理系统

通讯录管理系统功能

设计一个通讯录,实现的功能如下:

            1、添加联系人

            2、显示联系人

            3、删除联系人

            4、查找联系人

            5、修改联系人

            6、清空联系人

            0、退出通讯录

一、创建菜单界面

  1. 封装一个菜单界面函数,显示通讯录要实现的具体功能
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;
}
  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;			
};

​

二、添加联系人

  1. 封装一个添加联系人的函数
    首先检测通讯录已有联系人数量是否达到内存上线,未达到即可添加联系人,达到提示无法添加。
//1、添加联系人
void addPerson(Addressbooks * abs)
{
	//判断通讯录是否满了
	if(abs->m_size ==MAX )
	{
		cout<<"通讯录已满,无法添加!"<<endl;
		return ;
	}
	else 
	{
		//添加姓名
		string name;
		cout<<"请输入姓名:"<<endl;
		cin>>name;
		abs->personArray[abs->m_size ].m_name =name ;
		//添加性别
		int sex=0;
		cout<<"请输入性别:1、男   2、女"<<endl;
		while(true)
		{
			cin>>sex ;
			
			if(sex ==1||sex==2)
			{
				abs->personArray[abs->m_size ].m_sex  =sex ;
				break;
			}
			
			cout<<"输入有误,请重新输入!"<<endl;
			
		}
		//添加年龄
		int age=0;
		cout<<"请输入年龄:"<<endl;
		cin>>age;
		abs->personArray[abs->m_size ].m_age =age  ;
		//添加电话
		string phone;
		cout<<"请输入电话:"<<endl;
		cin>>phone ;
		abs->personArray[abs->m_size ].m_phone =phone  ;
		//添加住址
		string address;
		cout<<"请输入地址:"<<endl;
		cin>>address ;
		abs->personArray[abs->m_size ].m_addr =address  ;
		//更新通讯录人数
		abs->m_size ++;
		cout<<"添加成功"<<endl;
		system ("pause");
		system ("cls");
	}
}
  1. 检查添加联系人函数功能

三、显示联系人

  1. 封装一个显示联系人的函数
    判断通讯录中是否有成员,如果有,显示所有成员,如果没有,提示通讯录为空。
void showPerson(struct Addressbooks *abs )
{
	//判断通讯录人员是否为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					   ;
			cout<<"\t联系人的性别为:"<<(abs->personArray[i].m_sex == 1 ?"男":"女"  )  ;
			cout<<"\t联系人的年龄为:"<<abs->personArray[i].m_age					   ;
			cout<<"\t联系人的电话为:"<<abs->personArray[i].m_phone					   ;
			cout<<"\t联系人的地址为:"<<abs->personArray[i].m_addr<<endl			   ;
		}
	}


	system ("pause");
	system ("cls");
}
  1. 检查显示联系人函数功能

四、删除联系人

  1. 封装一个检测联系人是否存在的代码
//检测联系人是否存在,如果存在返回联系人所在数组中的具体位置,不存在返回:-1
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;
	
}
  1. 检测代码
  2. 封装一个删除联系人的函数
void deletePerson(struct Addressbooks *abs)
{
	cout<<"请输入要删除的联系人:";
	string name;
	cin>>name ;
	//ret==-1	未查到
	//ret!=-1	查到了
	int ret=isExist (abs,name);
	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");
}

  1. 检查删除联系人函数功能

五、查找联系人

  1. 封装一个查找联系人的函数
void findPerson(Addressbooks *abs)
{
	cout<<"请输入要查找的联系人:";
	string name;
	cin>>name ;
	//ret==-1	未查到
	//ret!=-1	查到了
	int ret=isExist (abs,name);
	if(ret!=-1)
	{
		cout<<"联系人的姓名为:"  <<abs->personArray [ret].m_name					   ;
		cout<<"\t联系人的性别为:"<<(abs->personArray[ret].m_sex == 1 ?"男":"女"  )    ;
		cout<<"\t联系人的年龄为:"<<abs->personArray [ret].m_age					   ;
		cout<<"\t联系人的电话为:"<<abs->personArray [ret].m_phone					   ;
		cout<<"\t联系人的地址为:"<<abs->personArray [ret].m_addr<<endl			       ;
		
	}
	else
	{
		cout<<"查无此人"<<endl;
	}
	system ("pause");
	system ("cls");

}

  1. 检查查找联系人函数功能

六、修改联系人

  1. 封装一个修改联系人的函数
void modifyPerson(Addressbooks *abs  )
{
	cout<<"请输入要修改的联系人:";
	string name;
	cin>>name ;
	//ret==-1	未查到
	//ret!=-1	查到了
	int ret=isExist (abs,name);
	if(ret!=-1)
	{
		//添加姓名
		string name;
		cout<<"请输入姓名:"<<endl;
		cin>>name;
		abs->personArray[ret  ].m_name =name ;
		//添加性别
		int sex=0;
		cout<<"请输入性别:1、男   2、女"<<endl;
		while(true)
		{
			cin>>sex ;
			
			if(sex ==1||sex==2)
			{
				abs->personArray[ret ].m_sex  =sex ;
				break;
			}
			
			cout<<"输入有误,请重新输入!"<<endl;
			
		}

		//添加年龄
		int age=0;
		cout<<"请输入年龄:"<<endl;
		cin>>age;
		abs->personArray[ret ].m_age =age  ;
		//添加电话
		string phone;
		cout<<"请输入电话:"<<endl;
		cin>>phone ;
		abs->personArray[ret ].m_phone =phone  ;
		//添加住址
		string address;
		cout<<"请输入地址:"<<endl;
		cin>>address ;
		abs->personArray[ret ].m_addr =address  ;

		cout<<"修改成功!"<<endl;
		
	}
	else
	{
		cout<<"查无此人"<<endl;
	}
	system ("pause");
	system ("cls");
}

  1. 检查修改联系人函数功能

七、清空联系人

  1. 封装一个清空联系人的函数
//6、清空联系人
void clearPerson(Addressbooks * abs )
{
	int select=0;
	cout<<"你是否要继续清空通讯录:1、继续   2、取消"<<endl;
	while(true)
	{
		cin>>select  ;
		
		if(select ==1||select  ==2)
		{
			if (select ==1)
			{
				abs->m_size =0;
				cout<<"通讯录已清空"<<endl;
			}
			else
			{
				cout<<"取消成功!"<<endl;
			}
			break;
		}
		
		cout<<"输入有误,请重新输入!"<<endl;
		
	}
	
	system ("pause");
	system ("cls");

}
  1. 检查清空联系人函数功能

主函数代码

主函数中使用switch语句根据用户选择不同选项,分别实现不同功能。
int main()
{
	//创建通讯录变量
	Addressbooks abs;
	//初始化通讯录当前人员个数
	abs.m_size =0; 

	int select=0;
	while(true)
	{
		showmenu ();
		cin>>select ;
		switch(select)
		{
		
			case 1:			//1、添加联系人
				addPerson (&abs);//利用地址传递可以修饰实参
				break;
			case 2:			//2、显示联系人
				showPerson(&abs);

				break;
			case 3:			//3、删除联系人
				deletePerson  (&abs);

				break;
			case 4:			//4、查找联系人
				findPerson (&abs);

				break;
			case 5:			//5、修改联系人
				 modifyPerson(&abs );


				break;
			case 6:			//6、清空联系人
				clearPerson(&abs);


				break;
			case 0:			//0、退出通讯录
				cout<<"欢迎下次使用"<<endl;
				system("pause");
				return 0;
				break;
				
			default:
				break;

		}
	};
	

	system("pause");
	return 0;
}
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值