C++结构体—通讯录系统

系统需求:


通讯录是一个可以记录亲人、好友信息的工具。
下面的代码实现主要利用C++来实现一个通讯录管理系统
系统中需要实现的功能如下:
添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
●显示联系人:显示通讯录中所有联系人信息
●删除联系人:按照姓名进行删除指定联系人
●查找联系人:按照姓名查看指定联系人信息
●修改联系人:按照姓名重新修改指定联系人
●清空联系人:清空通讯录中所有信息
●退出通讯录:退出当前使用的通讯录

联系人结构体:

 typedef struct {
    
    
    	string name;//姓名
    	int sex;//性别 1男 2女
    	int age;//年龄
    	string phone;//电话 
    	string add;//地址 
    }Person; 

通讯录结构体

 typedef struct {
    
    
    	Person pArrs[MAX];
    	int size;//联系人个数 
    }Addbooks;

检测联系人是否存在,如果存在返回下标位置,不存在返回-1

 int isExit(Addbooks *abs,string name) {
    
    
    	for(int i=0;i<abs->size;i++) {
    
    
    		if(abs->pArrs[i].name==name)
    			return i;//找到了返回在结构体数组中的下标 
    	}	
    	return -1;//没找到返回-1 
    }

显示联系人代码实现:

 void showPerson(Addbooks *abs){
    
    
    	if(abs->size==0){
    
    
    		cout<<"当前通讯录的记录为空,请输入联系人"<<endl; 
    		system("pause");//请按任意键继续
    		system("cls") ;//清屏操作 
    		return ;
    	}
    	for(int i=0;i<abs->size;i++){
    
    
    		cout<<"姓名: "<<abs->pArrs[i].name<<"\t";
    		cout<<"性别: "<<(abs->pArrs[i].sex==1 ?"男":"女")<<"\t";
    		cout<<"年龄: "<<abs->pArrs[i].age<<"\t";
    		cout<<"电话 "<<abs->pArrs[i].phone<<"\t";
    		cout<<"地址: "<<abs->pArrs[i].add<<endl;
    	}
    	system("pause");//请按任意键继续
    	system("cls") ;//清屏操作 
    }

删除联系人代码实现:

void deletePerson(Addbooks *abs){
    
    
    	cout<<"请输入您需要删除的联系人:";
    	string name;
    	cin>>name;
    	int flag=isExit(abs,name);
    	if(flag==-1){
    
    
    		cout<<"查无此人!"<<endl;
    	}else{
    
    
    		//cout<<"找到此人"<<endl;
    		for(int i=flag;i<abs->size;i++){
    
    
    			abs->pArrs[i]=abs->pArrs[i+1];
    		}
    		//更新通讯录的人数 
    		abs->size--;
    		cout<<"删除成功!"<<endl;
    	}
    	system("pause");//请按任意键继续
    	system("cls") ;//清屏操作 
    }

查找联系人代码实现:

void findPerson(Addbooks *abs){
    
    
    	cout<<"请输入您需要查找的联系人:";
    	string name;
    	cin>>name;
    	int flag=isExit(abs,name);
    	if(flag!=-1) {
    
    
    		cout<<"姓名: "<<abs->pArrs[flag].name<<"\t";
    		cout<<"性别: "<<abs->pArrs[flag].sex<<"\t";
    		cout<<"年龄: "<<abs->pArrs[flag].age<<"\t";
    		cout<<"电话 "<<abs->pArrs[flag].phone<<"\t";
    		cout<<"地址: "<<abs->pArrs[flag].add<<endl;
    	}else{
    
    
    		cout<<"查无此人!"<<endl;
    	}
    	system("pause");//请按任意键继续
    	system("cls") ;//清屏操作 
    }

修改联系人代码实现:

 void modifyPerson(Addbooks *abs){
    
    
    	cout<<"请输入您需要修改的联系人:";
    	string name;
    	cin>>name;
    	int flag=isExit(abs,name);
    	if(flag!=-1){
    
    
    		string name;
    	int sex;
    	int age;
    	string phone;
    	string add;
    	//输入姓名 
    	cout<<"请输入姓名:";
    	cin>>name;
    	abs->pArrs[flag].name=name;
    	//输入性别
    	 
    	cout<<"请输入性别(提示:1代表男,2代表女):";
    	while(true){
    
    
    		cin>>sex;
    		if(sex==1||sex==2){
    
    	abs->pArrs[flag].sex=sex; break;}
    		cout<<"输入有误,请重新输入!"<<endl;
    	}
    	
    	//输入年龄
    	cout<<"请输入年龄:"; 
    	cin>>age;
    	abs->pArrs[flag].age=age;
    	
    	//输入电话
    	cout<<"请输入电话:"; 
    	cin>>phone;
    	abs->pArrs[flag].phone=phone; 
    	
    	//输入地址 
    	cout<<"请输入地址:"; 
    	cin>>add;
    	abs->pArrs[flag].add=add; 
    	cout<<"修改成功!"<<endl;
    	}else{
    
    
    		cout<<"查无此人!"<<endl;
    	}
    	system("pause");//请按任意键继续
    	system("cls") ;//清屏操作 
    }

清空联系人代码实现:

 void cleanPerson(Addbooks *abs){
    
    
    	abs->size=0;
    	cout<<"通讯录已清空"<<endl;
    	system("pause");//请按任意键继续
    	system("cls") ;//清屏操作 
    }

主函数:

int main(){
    
    
	Addbooks abs;
	//初始化通讯录人员个数
	abs.size=0; 
	int select=0;
	while(true){
    
    
			//菜单调用 
	showMenu();
	//system("pause");
	cout<<"请选择你的操作:";
	
	cin>>select;
	switch(select){
    
    
		case 1://1、添加联系人
			addPerson(&abs);//利用地址传递,可以修改形参 
			break;
		case 2://2、显示联系人
			showPerson(&abs) ;
			break;
		case 3://3、删除联系人
		{
    
    /*
			cout<<"请输入需要删除联系人的姓名:";
			string name;
			cin>>name;
			if(isExit(&abs,name)==-1){
				cout<<"查无此人!"<<endl;
			}else{
				cout<<"找到此人"<<endl;
				
			}	
			*/
			deletePerson(&abs);
			break;
		}
		case 4://4、查找联系人
		findPerson( &abs);
			break;
		case 5://5、修改联系人
		modifyPerson(&abs);
			break;
		case 6://6、清空联系人
		cleanPerson(&abs);
			break;
		case 0://7、退出通讯录
			cout<<"欢迎下次使用"<<endl;
			system("pause");
			break;
			
	}
	}
	return 0;
}

总结

1.void ClearList(LinkList &L)
2.void ClearList(LinkList *L)
1是传递引用。她对应的主函数中的形式是ClearList(LinkList L)
就是变量的别名,可以当作原变量使用。
2是传递指针。她对应的主函数中的形式是ClearList(LinkList &L)
针对你的代码,应该是传递指针。

猜你喜欢

转载自blog.csdn.net/qq_42242452/article/details/124621218
今日推荐