通讯录管理系统

这是一个使用C++编写的简易通讯录管理系统,具备添加、显示、删除、查找和修改联系人信息的功能。系统限制最多记录1000位联系人,并提供了清空通讯录的选项。用户交互友好,通过菜单选择操作,实现了基本的通讯录管理需求。
摘要由CSDN通过智能技术生成
  • 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人

  • 显示联系人:显示通讯录中所有联系人信息

  • 删除联系人:按照姓名进行删除指定联系人

  • 查找联系人:按照姓名查看指定联系人信息

  • 修改联系人:按照姓名重新修改指定联系人

  • 清空联系人:清空通讯录中所有信息

  • 退出通讯录:退出当前使用的通讯录

#include <iostream>
using namespace std;
#include <string>
#include <cstdlib>
#define Max 1000

struct Person{	
	string name;
	int sex;
	int age;
	string phone;
	string addr;

};

struct addressbook{	
	struct Person personarray[Max];
	int number;
};

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;
}
void addPerson(addressbook *b){
	if(b->number>=Max){
		cout<<"通讯录已满,无法添加"<<endl;
		return;
	}else{	
		cout<<"请输入姓名:"<<endl;
		cin>>b->personarray[b->number].name;
		flag:
		cout<<"请输入性别:"<<endl;
		cout<<"1-----男"<<endl;
		cout<<"2-----女"<<endl;
		cin>>b->personarray[b->number].sex;
		while((b->personarray[b->number].sex!=1)&&(b->personarray[b->number].sex!=2))
		{
			cout<<"输入错误,请重新输入:"<<endl;
			goto flag;
		}
		cout<<"请输入年龄:"<<endl;
		cin>>b->personarray[b->number].age;
		cout<<"请输入电话:"<<endl;
		cin>>b->personarray[b->number].phone;
		cout<<"请输入地址:"<<endl;
		cin>>b->personarray[b->number].addr;
		cout<<"添加成功"<<endl;
		b->number++;
		system("pause");//先暂停再清空屏幕
		system("cls");//清空屏幕
	}

}
void showPerson(addressbook *s){
	if(s->number==0){
		cout<<"通讯录为空"<<endl;
	}else{
		for(int i=0;i<s->number;i++){
			cout<<i+1<<":\t";
			cout<<"姓名:"<<s->personarray[i].name<<"\t";
			cout<<"性别:"<<(s->personarray[i].sex==1?"男":"女")<<"\t";
			cout<<"年龄:"<<s->personarray[i].age<<"\t";
			cout<<"电话:"<<s->personarray[i].phone<<"\t";
			cout<<"地址:"<<s->personarray[i].addr<<endl;
		}

	}
	system("pause");
	system("cls");
}

void deletePerson(addressbook *s){
	string name;
	cout<<"请输入想删除的联系人:"<<endl;
	cin>>name;
	int ret=-1;
	for(int i=0;i<s->number;i++){
		if(name==s->personarray[i].name){
			ret=i;
			//break;
		}
	}
	if(ret==-1){
		cout<<"查无此人"<<endl;
	}else{
		for(int i=ret;i<s->number-1;i++){
			s->personarray[i]=s->personarray[i+1];
		}
		s->number--;
		cout<<"删除成功"<<endl;
	}

	
	system("pause");
	system("cls");
}

int isExist(addressbook *b,string name){
	int ret=-1;
	for(int i=0;i<b->number;i++){
		if(name==b->personarray[i].name){
			ret=i;
			return i;
			break;
		}
	}
	if(ret==-1){
			return -1;
	}


}

void findPerson(addressbook *b){
	string name;
	cout<<"请输入您想查找的联系人:"<<endl;
	cin>>name;
	int i=isExist(b,name);
	if(i==-1){
		cout<<"查无此人"<<endl;
	}else{

		cout<<"姓名:"<<b->personarray[i].name<<"\t";
		cout<<"性别:"<<(b->personarray[i].sex==1?"男":"女")<<"\t";
		cout<<"年龄:"<<b->personarray[i].age<<"\t";
		cout<<"电话:"<<b->personarray[i].phone<<"\t";
		cout<<"住址:"<<b->personarray[i].addr<<endl;
	}
	system("pause");
	system("cls");
}

void modifyPerson(addressbook *b){
	string name;
	cout<<"请输入你想修改的联系人:"<<endl;
	cin>>name;
	int ret;
	for(int i=0;i<b->number;i++){
		ret=isExist(b,name);
		if(ret!=-1){
			break;
		}
	}
	if(ret==-1){
		cout<<"查无此人"<<endl;
	}else{
		cout<<"请修改姓名:"<<endl;
		cin>>b->personarray[ret].name;
		flag:
		cout<<"请输入性别:"<<endl;
		cout<<"1-----男"<<endl;
		cout<<"2-----女"<<endl;
		cin>>b->personarray[ret].sex;
		while((b->personarray[ret].sex!=1)&&(b->personarray[ret].sex!=2))
		{
			cout<<"输入错误,请重新输入:"<<endl;
			goto flag;
		}
		cout<<"请输入年龄:"<<endl;
		cin>>b->personarray[ret].age;
		cout<<"请输入电话:"<<endl;
		cin>>b->personarray[ret].phone;
		cout<<"请输入地址:"<<endl;
		cin>>b->personarray[ret].addr;
		cout<<"修改成功"<<endl;
	}

	system("pause");
	system("cls");
}
void clearPerson(addressbook *b){
	int x;
	cout<<"确定是否要清空联系人?1--是,2--否"<<endl;
	cin>>x;
	if(x==1){
		b->number=0;
		cout<<"通讯录已清空"<<endl;
	}else{
		cout<<"通讯录未清空"<<endl;
	}
	system("pause");
	system("cls");
}

int main(){
	int select;
	addressbook book;
	book.number=0;
	while(true){
		showMenu();
		cin>>select;
		switch(select){
			case 1://添加联系人
				addPerson(&book);
				break;
			case 2://显示联系人
				showPerson(&book);
				break;
			case 3://删除联系人
				deletePerson(&book);
				break;
			case 4://查找联系人
				findPerson(&book);
				break;
			case 5://修改联系人
				modifyPerson(&book);
				break;
			case 6://清空联系人
				clearPerson(&book);
				break;
			case 0://退出通讯录
				cout<<"您已退出"<<endl;
				system("pause");
				return 0;
				break;
			default:
				break;
		}
	}
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值