07 通讯录管理系统

通讯录管理系统

包含六大功能:

1、添加联系人

2、显示联系人

3、删除联系人

4、查找联系人

5、修改联系人

6、清空联系人

#include<iostream>
using namespace std;
# define MAX 1000
//通讯录管理系统 
//设计联系人结构体
struct Person
{
string m_Name; //姓名
int m_Sex; //性别 1男 2女
int 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) 
 	{
 		cout<<"通讯录已满,无法添加"<<endl;
		 return; 
	 }
	 else
	 {
	 	string name; //姓名
	 	cout<<"请输入姓名"<<endl;
	 	cin>>name; 
	 	abs->personArray[abs->m_Size].m_Name = name;//abs->m_Sizesh实际数字下的地址 
//性别 
		cout <<"请输入性别"<<endl;
		cout <<"1---男"<<endl;
		cout <<"2---女"<<endl;
		int sex = 0;
		while(true)
		{
			cin>>sex;
		if(sex == 1||sex == 2)
		{
			abs->personArray[abs->m_Size].m_Sex = sex;
			break;
		 } 
		 cout<<"输入有误,请重新输入"<<endl;
		 }

//年龄 
		cout<<"请输入年龄"<<endl;
		int age = 0;//年龄 
		while(true)
		{
			cin>>age;
		if(age>=0&&age<=150)
		{
			abs->personArray[abs->m_Size].age = age;
			break;
		 } 
		 cout<<"输入有误,请重新输入"<<endl;
	    }
	
		 
//电话
		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,提示为空 
	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].age <<"\t";
	 		cout<<"电话号码:"<<abs->personArray[i].m_Phone <<"\t";
		 	cout<<"家庭住址:"<<abs->personArray[i].m_Addr<<endl;
		 	}
	  } 
	   system("pause");
 	   system("cls");//清屏操作 
}
//检测(遍历)联系人是否存在,如果存在,返回下标标号,不存在返回-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;//遍历结束没找到,返回-1 
}
//3、删除联系人 
void deletePerson(Addressbooks *abs) 
{
cout<<"请输入您要删除的联系人"<<endl; 
string name;
cin>>name;
int ret = isExist(abs,name);
//ret=-1没查到; 
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].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 moifyPerson(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;
 	  	//修改性别
	 	  cout<<"请输入姓名:"<<endl;
	 	  cout<<"1---男"<<endl;
	      cout<<"2---女"<<endl;
	      int sex=0;
		  while(true)
		  {
    	   		 cin>>sex;
		   		 if(sex==1||sex==2)
		   		 {
		   	//输入正确,退出循环 
			 		 abs->personArray[ret].m_Sex=sex;
		   			 break;
   			     }
		   else
		   {cout<<"输入有误,重新输入"<< endl; }
			} 
			//修改年龄 
			cout<<"请输入年龄:"<<endl;
			int age = 0; 
		   cin >> age;
		   abs->personArray[ret].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、清空联系人,逻辑上情况 
  void cleanPerson(Addressbooks *abs)  
  {
  	cout<<"是否确定清空"<<endl; 
	  cout<<"1---是"<<endl;
  	  cout<<"0---否"<<endl;
  	int anwser;
  	cin>>anwser;
  	if(anwser==1)
  	{
	  abs->m_Size = 0;//逻辑上的清空,数量置为0 
  	  cout<<"联系人已清空"<<endl; 
  	  system("pause");
  	  system("cls");//清屏操作 
	  }
	  else
	  {
	  	cout<<"操作取消"<<endl;
	 	system("pause");
	  	system("cls");//清屏操作  
	  }
  }
//菜单界面
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;
 } 
int main()
{
	//创建通讯录结构体变量
	 Addressbooks abs;
	 abs.m_Size=0; 
int select=0; 
while(true)//为了使只输入0时候才退出系统 
{
showMenu();
cin>>select;
switch(select)
{
	case 1://添加联系人
		 addPerson(&abs);//地址传递 ,可以修改形参 
		 break;
	case 2://显示联系人
		 showPerson(&abs);//调用显示联系人函数 
		 break;
	case 3:// 删除联系人
		 deletePerson(&abs);
		 break;
	case 4: //查找联系人
		 findPerson(&abs);
		 break;
	case 5://修改联系人
		 moifyPerson(&abs);
		 break;
	case 6://清空联系人
		 cleanPerson(&abs); 
		 break;
	case 0://退出联系人
		 cout<<"欢迎下次使用"<<endl;
		 system("pause");
		  return 0;
		 break;
    default:
	 	 break;
		 }
}
system("pause");
return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

控制Mpc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值