C++通讯录管理系统(结构体、指针)

#include <iostream>
#include <string>
using namespace std;
#define  MAX 2000//联系人上限(可更改) 

//显示菜单: 
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 m_Name;
	string  m_Sex;
	string m_Age;
	string m_Phone;
	string m_Address;
};
//菜单结构体: 
struct Addressbooks{
	struct Person personArray[MAX];
	int m_Size;
};
//添加联系人函数: 
void addPerson (Addressbooks *abs)
{
	if(abs->m_Size ==MAX)
	{
		cout<<"通讯录已满,无法添加!"<<endl; 
		return ;
	}
    else
	{
		int len=0;
		cout<<"请输入你要添加的联系人个数:"<<endl;
		cin>> len;
		for(int i=0;i<len;i++)
		{
		cout<<"正在添加第"<<abs->m_Size+1<<"位联系人"<<endl;
       	string Name;
		cout<<"请输入姓名"<<endl; 
		cin>>Name;
		abs->personArray[abs->m_Size].m_Name=Name;
		
		string Sex;
		cout<<"请输入性别"<<endl;
		cin>>Sex;
		abs->personArray[abs->m_Size].m_Sex=Sex;
		
		string Age;
		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_Address=Address;
		abs->m_Size++;	
		cout<<"添加成功!"<<endl;
		cout<<" "<<endl;
		}
		system("pause");
		system("cls");
	}
 
}
//显示联系人函数: 
void showPerson(Addressbooks *abs)
{
	if(abs->m_Size==0)
	{
		cout<<"无联系人"<<endl;
		 return ; 
	}
	
	else
	{
		cout<<"当前联系人列表:"<<endl;
		cout<<" "<<endl;
		for(int i=0;i<abs->m_Size;i++)
		{
			cout<<"姓名: "<<abs->personArray[i].m_Name<<"\t";
			cout<<"性别: "<<abs->personArray[i].m_Sex<<"\t";
			cout<<"年龄: "<<abs->personArray[i].m_Age<<"\t";
			cout<<"电话: "<<abs->personArray[i].m_Phone<<"\t";
			cout<<"住址: "<<abs->personArray[i].m_Address<<"\t";
			cout<<" "<<endl;
		}
		//system("pause");
		//system("cls");
	}
}
//打印联系人: 
void showPerson_1(Addressbooks *abs,int num_1)
{
			cout<<"姓名: "<<abs->personArray[num_1].m_Name<<"\t";
			cout<<"性别: "<<abs->personArray[num_1].m_Sex<<"\t";
			cout<<"年龄: "<<abs->personArray[num_1].m_Age<<"\t";
			cout<<"电话: "<<abs->personArray[num_1].m_Phone<<"\t     ";
			cout<<"住址: "<<abs->personArray[num_1].m_Address<<"\t";
			cout<<" "<<endl;
}
//查找联系人函数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: 
Addressbooks* deleteperson_arr(Addressbooks *abs,int deleteperson_lacation)
{
	
	for(int i=deleteperson_lacation;i<abs->m_Size;i++)
	{
		abs->personArray[i]=abs->personArray[i+1];
	}
	abs->m_Size--;
	return abs;
}
//删除联系人函数2: 
void deletperson(Addressbooks *abs)
{
	    	if(abs->m_Size==0)
        	{
	          cout<<"通讯录为空,无法删除"<<endl;
			  return ;
	        }
		   	string name;
            restart_3recin:	cout<<"请输入你要删除的联系人名字"<<endl;
			cin>>name;
		    int recet=isExist(abs,name);
			if(recet==-1)
			{
			cout<<"查无此人,是否重新输入联系人名字?1--是、任意键--退出"<<endl;
			int recin_3=0;
			cin>>recin_3;
			if(recin_3==1)
			{
				goto restart_3recin;
			}
			else
			{
			return ;				
			}
			}
			else
		    {
		 	cout<<"查找成功!该联系人在第"<<recet+1<<"位"<<endl;
		 	showPerson_1(abs,recet);
		    }
		    cout<<"确定删除该联系人吗?1--删除、任意键--退出"<<endl;
		    int delete_1=0;
			cin>>delete_1;
			if(delete_1==1)
			{
				deleteperson_arr(abs,recet);//数组删除函数 
				cout<<"删除成功!"<<endl;
				showPerson(abs);
				showMenu();
			}
			else
			{
				return ;
			}			
}
//查找联系人函数2: 
void findPeron(Addressbooks *abs)
{
		   if(abs->m_Size==0)
         	{
		    cout<<"通讯录为空,无法查找"<<endl;
		    return ;
         	}
         	else
         	{
		restart_4:	cout<<"请输入你要查找的联系人名字"<<endl;
			string name;
			cin>>name;
		    int recet_4=isExist(abs, name); 
		    if(recet_4==-1)
		    {
                cout<<"查无此人,是否重新输入名字查找?1--是、任意键--否" <<endl;
                int recin_4=0;
                cin>>recin_4;
                if(recin_4==1)
                {
                	goto restart_4;
				}
				else
				{
						return ; 
				}
			}			
			else
			{
		    cout<<"查找成功!联系人在第"<<recet_4+1<<"位"<<endl;
		    showPerson_1(abs,recet_4);	
			}				
		    }
}
//修改联系人函数1: 
void changePerson_5(Addressbooks *abs,int changenum_5)
{
	     rechange_5:	 cout<<"请输入你要修改的类别:1--姓名、2--性别、3--年龄、4--电话、5--住址"<<endl; 
		 int change_5;
		 cin>>change_5; 
		 switch (change_5) 
		 {
			 		 	case 1:
			 		 	   {
						    cout<<"请输入姓名:"<<endl;
			 		 		string name_5;
			 		 		cin>>name_5;
			 		 		abs->personArray[changenum_5].m_Name=name_5;
							cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--否"<<endl;
							int recin_5=0;
							cin>>recin_5;
							if(recin_5==1)
							{
								goto rechange_5;
							 }	
							 else
							 {
							 	return ;
							  }		 		 	   	
						  }
			 break;
			 		 	case 2:
			 		 		{
			 		 		cout<<"请输入性别:"<<endl;
			 		 		string sex_5;
			 		 		cin>>sex_5;
			 		 		abs->personArray[changenum_5].m_Sex=sex_5;
							cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--否"<<endl;
							int recin_5=0;
							cin>>recin_5;
							if(recin_5==1)
							{
								goto rechange_5;
							 }	
							 else
							 {
							 	return ;
							  }				 		 			
						  }
			 break;
			 		 	case 3:
			 		 		{
			 		 		cout<<"请输入年龄:"<<endl;
			 		 		string age_5;
			 		 		cin>>age_5;
			 		 		abs->personArray[changenum_5].m_Age=age_5;
							cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--退出"<<endl;
							int recin_5=0;
							cin>>recin_5;
							if(recin_5==1)
							{
								goto rechange_5;
							 }	
							 else
							 {
							 	return ;
							  }								  			 		 			
				    	  }
			 break;
			 		 	case 4:
			 		 		{
			 		 		cout<<"请输入电话:"<<endl;
			 		 		string phone_5;
			 		 		cin>>phone_5;
			 		 		abs->personArray[changenum_5].m_Phone=phone_5;
							cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--否"<<endl;
							int recin_5=0;
							cin>>recin_5;
							if(recin_5==1)
							{
								goto rechange_5;
							 }	
							 else
							 {
							 	return ;
							  }								  			 		 			
						  }
			 break;
			 		 	case 5:
			 		 		{
			 		 		cout<<"请输入住址:"<<endl;
			 		 		string address_5;
			 		 		cin>>address_5;
			 		 		abs->personArray[changenum_5].m_Address=address_5;
							cout<<"修改成功!是否还需要修改其它内容?1--是、任意键--否"<<endl;
							int recin_5=0;
							cin>>recin_5;
							if(recin_5==1)
							{
								goto rechange_5;
							 }	
							 else
							 {
							 	return ;
							  }								  			 		 			
						  }
			 break;
			       		default:
		     break;
		 }			 		 
}
//修改联系人函数2: 
void changePerson(Addressbooks *abs)
{
        showPerson(abs);
        if(abs->m_Size==0)
         	{
		    return ;
         	}
        recin: cout<<"请输入你要修改的联系人的名字"<<endl;
        string name;
        cin>>name;
        int recet_5 = isExist(abs,name);
   	    if(recet_5==-1)
		    {
                cout<<"查无此人,是否重新输入名字?1--是、任意键--退出" <<endl;
				int recet_cin_5=0;
				cin>>recet_cin_5;
				if(recet_cin_5==1) 
				{
		           goto recin;	
				}
               else
               {
               	return ;
			   }
			}
        else 
        {
            cout<<"查找成功!联系人在第"<<recet_5+1<<"位"<<endl;
		    showPerson_1(abs,recet_5);
			changePerson_5(abs,recet_5);	
		}  
}
//清空联系人函数: 
void cleanPerson(Addressbooks *abs)
{	
    if(abs->m_Size==0)
      	{
         cout<<"无联系人"<<endl;
		 return ;
       	}
	cout<<"确定清空通讯录吗?1--确定、任意键--退出"<<endl;
	int cleanPerson_6=0;
	cin>>cleanPerson_6;
	if(cleanPerson_6==1) 
	{
	abs->m_Size=0;
	cout<<"清空成功!"<<endl;
	showPerson(abs);		
	}
    else
    {
    	return ;
	}	
}
//菜单选择、主要功能: 
void menuselet(	Addressbooks *abs)
{
	int select=0;	
	while(true)
	{
	showMenu();	
    select_recin: 	cout<<"请输入你想选择的功能"<<endl;
	cin>>select;	
	switch (select)
	{
		case 1:
			addPerson (abs);
			break;
		case 2:
			{
			showPerson(abs);
			goto select_recin;				
			}
			break;
		case 3:
			{
			showPerson(abs);
			deletperson(abs);
			goto select_recin;
			}
			break;
		case 4:
			{
	        findPeron(abs);
	        goto select_recin;				
			}
			break;
		case 5:
			{				
			changePerson(abs);
			goto select_recin;	
			}
			break;
		case 6:
			{
			cleanPerson(abs);
			goto select_recin;				
			}
			break;
		case 0:
			cout<<"欢迎下次使用"<<endl;
			return ;
			break;
		default:
		    break;		
	}	
	}	
}
//主函数: 
int main()
{		
	Addressbooks abs;
	abs.m_Size=0;	
    menuselet(&abs);
    return 0;
}

 软件:Dev-C++

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值