C++实现通讯录管理系统(完整代码)课设或实验

2023-11-14

好久没写文章了,终于结束了满课的前三周以及烦人的考试,可以有多余的时间来自己学习。
今天学习了利用C++实现通讯录管理系统,自己手敲了一遍。
可以用来当实验题的答案或课设哦!
具体的解释在代码注释当中。

#include <iostream>
using namespace std;
#include <string>
#define max 1000
//菜单界面
void showMenu()
{
	cout<<"*****************************"<<endl;
	cout<<"*****\t 1.添加联系人 \t*****"<<endl;
	cout<<"*****\t 2.显示联系人 \t*****"<<endl;
	cout<<"*****\t 3.删除联系人 \t*****"<<endl;
	cout<<"*****\t 4.查找联系人 \t*****"<<endl;
	cout<<"*****\t 5.修改联系人 \t*****"<<endl;
	cout<<"*****\t 6.清空联系人 \t*****"<<endl;
	cout<<"*****\t 0.退出通讯录 \t*****"<<endl;
	cout<<"*****************************"<<endl;
 }
 
//联系人结构体
struct Person{
	string name;
	int sex;
	int age;
	string phone;
	string addr;
}; 

//通讯录结构体
struct Addressbooks{
	struct Person personarr[max];
	int size;
};

//1.添加联系人 
void addPerson(Addressbooks *abs){
	//判断通讯录是否已满
	if(abs->size==max){
		cout<<"通讯录已满,无法添加!"<<endl;
		return;
	}else{
		//添加具体的联系人
		 
		//姓名
		string name;
		cout<<"请输入姓名:"<<endl;
		cin>>name;
		abs->personarr[abs->size].name=name;
		 
		//性别
		cout<<"请输入性别"<<endl;
		cout<<"1-------男"<<endl;
		cout<<"2-------女"<<endl;
		int sex=0;
		while(true){
			//如果输入是1或2,则可以退出循环 
			cin>>sex;
			if(sex==1||sex==2){
				abs->personarr[abs->size].sex=sex;
				break;
			}
			cout<<"输入有误,请重新输入!"<<endl; 
		}
		
		//年龄
		cout<<"请输入年龄:"<<endl;
		int age=0;
		while(true){
			//输入正确的年龄才可以退出循环
			cin>>age;
			if(age>=0&&age<=150){
				abs->personarr[abs->size].age=age;
				break;
			} 
			cout<<"您输入的年龄有误,请重新输入!"<<endl;
		}
		
		//电话 
		cout<<"请输入联系电话:"<<endl;
		string phone;
		cin>>phone;
		abs->personarr[abs->size].phone=phone;
		
		//住址
		cout<<"请输入家庭住址:"<<endl;
		string address;
		cin>>address;
		abs->personarr[abs->size].addr=address;
		
		//更新通讯录人数
		abs->size++;
		cout<<"添加成功!"<<endl; 
		
		system("pause");   //按任意键继续 
		system("cls");  //清屏操作 
		 
	}
}


//显示联系人
void showperson(Addressbooks *abs){
	//判断通讯录中人数是否为0 
	if(abs->size==0){
		cout<<"通讯录为空!"<<endl;
	} 
	else{
		for(int i=0;i<abs->size;i++){
			cout<<"姓名:"<<abs->personarr[i].name<<"\t";
			cout<<"性别:"<<(abs->personarr[i].sex==1?"男":"女")<<"\t";
			cout<<"年龄:"<<abs->personarr[i].age<<"\t";
			cout<<"电话:"<<abs->personarr[i].phone<<"\t";
			cout<<"住址:"<<abs->personarr[i].addr<<endl;
		}
	}
	system("pause");
	system("cls");
} 

//检测联系人是否存在
int isexist(Addressbooks *abs,string name){
	for(int i=0;i<abs->size;i++){
		if(abs->personarr[i].name==name){
			return i;  //如果找到则返回联系人的序号 
		}
	}
	return -1;
} 

//删除联系人
void deletep(Addressbooks *abs){
	cout<<"请输入您要删除的联系人:"<<endl;
	
	string name;
	cin>>name; 
	
	int ret=isexist(abs,name);
	if(ret!=-1){
		for(int i=ret;i<abs->size;i++)
		{
			abs->personarr[i]=abs->personarr[i+1];
		}
		cout<<"删除成功!"<<endl;
		abs->size--;
	}else{
		cout<<"查无此人!"<<endl;
	}
	
} 

//查找指定的联系人信息
void  findperson(Addressbooks *abs)
{
	cout<<"输入您要查找的联系人:"<<endl;
	string name;
	cin>>name;
	
	int ret=isexist(abs,name);
	if(ret!=-1){
		cout<<"姓名:"<<abs->personarr[ret].name<<"\t";
		cout<<"性别:"<<abs->personarr[ret].sex<<"\t";
		cout<<"年龄:"<<abs->personarr[ret].age<<"\t";
		cout<<"电话:"<<abs->personarr[ret].phone<<"\t";
		cout<<"地址:"<<abs->personarr[ret].addr<<endl;
	}else{
		cout<<"查无此人!"<<endl;
	}
	system("pause");
	system("cls");
}

//修改联系人信息 
void modifyperson(Addressbooks *abs){
	cout<<"请输入您要修改的联系人:"<<endl;
	string name;
	cin>>name;
	
	int ret=isexist(abs,name);
	if(ret!=-1){
		string name;
		cout<<"请输入姓名:"<<endl;
		cin>>name;
		abs->personarr[ret].name=name;
		
		cout<<"请输入性别:"<<endl;
		cout<<"1---------男"<<endl;
		cout<<"2---------女"<<endl; 
		int sex=0;
		
		while(true){
			cin>>sex;
			if(sex==1||sex==2){
				abs->personarr[ret].sex=sex;
				break;
			}else{
				cout<<"输入有误,请重新输入:"<<endl;
			}
		}
		
		cout<<"请输入年龄:"<<endl;
		int age=0;
		while(true){
			//符合条件则退出循环 
			cin>>age;
			if(age>=0&&age<=150){
				abs->personarr[ret].age=age;
				break;
			}
			cout<<"输入有误,请重新输入:"<<endl;
		}
		
		cout<<"请输入电话:"<<endl;
		string phone;
		cin>>phone;
		abs->personarr[ret].phone=phone;
		
		cout<<"请输入地址:"<<endl;
		string addr;
		cin>>addr;
		abs->personarr[ret].addr=addr;
		 
		
		 
		 
	}else{
		cout<<"未找到联系人!"<<endl;
	}
	// 按任意键清屏
	system("pause");
	system("cls"); 
} 

//清空联系人
void clearp(Addressbooks *abs){
	cout<<"确定清空?"<<endl;
	cout<<"1-----确定"<<endl;
	cout<<"2-----取消"<<endl; 
	int sel=0;
	while(true){
		cin>>sel;
		if(sel==1){
			abs->size=0;
			cout<<"通讯录已清空!"<<endl;
			system("pause");
			system("cls");
			break;
		}else if(sel==2) {
			return;
			break;
		}
		else {
			cout<<"输入有误,请重新输入:"<<endl;
		} 
	}
	
}

int main()
{
	//创建通讯录结构体变量
	Addressbooks abs;
	//初始化通讯录当中当前的人数个数
	abs.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.删除联系人
					deletep(&abs);
					break;
				case 4:		//4.查找联系人
					findperson(&abs);
					break;
				case 5:		//5.修改联系人
					modifyperson(&abs);
					break;
				case 6:		//6.清空联系人
					clearp(&abs);
					break;
				case 0:		//0.退出通讯录
					cout<<"欢迎下次使用!"<<endl;
					system("pause");
					return 0;
					break;
				default:
					cout<<"输入有误,请重新输入!"<<endl;
					break;
			}
	}

	system("pause");
	return 0;
 } 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++实现通讯录管理系统(完整代码)课设或实验 的相关文章

随机推荐