C++——通讯录管理系统(指针,结构体,函数)

文章描述了一个用C++编写的通讯录管理程序,包括添加、显示、删除、查找、修改和清空联系人功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
#include<cstring>
#define SIZE 1005//可以改成自己喜欢的大小
using namespace std;
struct person
{
	string name;
	int age;
	string sex;
	string number;
	string address;
};
struct addressbook
{
	struct person contacts[SIZE];//contacts为联系人
	int size=0;
};
//清屏操作
void cls()
{
	system("pause");//按任意键继续
	system("cls");//清屏操作
}
//菜单
void showmenu()
{
	cout<<"******************"<<"\n";
	cout<<"***1.添加联系人***"<<"\n";
	cout<<"***2.显示联系人***"<<"\n";
	cout<<"***3.删除联系人***"<<"\n";
	cout<<"***4.查找联系人***"<<"\n";
	cout<<"***5.修改联系人***"<<"\n";
	cout<<"***6.清空联系人***"<<"\n";
	cout<<"***0.退出通讯录***"<<"\n";
	cout<<"******************"<<"\n";
}
//添加联系人
void addperson(struct addressbook * personarry)
{
	if(personarry->size==SIZE)
	{
		cout<<"通讯录已满,无法添加!"<<"\n";
		return ;
	}
	cout<<"请输入姓名:";
	cin>>personarry->contacts[personarry->size].name;
	cout<<"\n";
	cout<<"请输入年龄:";
	cin>>personarry->contacts[personarry->size].age;
	cout<<"\n";
	cout<<"请输入性别:";
	cin>>personarry->contacts[personarry->size].sex;
	cout<<"\n";
	cout<<"请输入电话号:";
	cin>>personarry->contacts[personarry->size].number;
	cout<<"\n";
	cout<<"请输入地址:";
	cin>>personarry->contacts[personarry->size].address;
	cout<<"\n";

	personarry->size++;

	cout<<"添加成功"<<"\n";

	cls();
}
//显示所有联系人
void showperson(struct addressbook *personarry)
{
	if(personarry->size==0)
	{
		cout<<"当前通讯录为空"<<"\n";
		return;
	}

	int len=personarry->size;

	for(int i=0;i<len;i++)
	{
		cout<<personarry->contacts[i].name<<"\t";
		cout<<personarry->contacts[i].age<<"\t";
		cout<<personarry->contacts[i].sex<<"\t";
		cout<<personarry->contacts[i].number<<"\t";
		cout<<personarry->contacts[i].address<<"\n";
	}

	cls();
}
//判断用户是否存在
int checkperson(addressbook *personarry,string name)
{
	for(int i=0;i<personarry->size;i++)
	{
		if(personarry->contacts[i].name==name)
		{
			return i;
		}
	}
	return -1;
}
//删除用户
void deleteperson(addressbook *personarry,int m)
{
	for(int i=m;i<personarry->size-1;i++)
	{
		personarry->contacts[i]=personarry->contacts[i+1];
	}
	personarry->size--;

	cout<<"删除成功!"<<"\n";

	cls();
}
//修改联系人
void modifyperson(addressbook *personarry)
{
	cout<<"请输入要修改人姓名:";
	string name;
	cin>>name;
	int m=checkperson(personarry,name);
	if(m==-1)cout<<"查无此人";
	else
	{
		cout<<"请输入姓名:";
		cin>>personarry->contacts[m].name;
		cout<<"\n";
		cout<<"请输入年龄:";
		cin>>personarry->contacts[m].age;
		cout<<"\n";
		cout<<"请输入性别:";
		cin>>personarry->contacts[m].sex;
		cout<<"\n";
		cout<<"请输入电话号:";
		cin>>personarry->contacts[m].number;
		cout<<"\n";
		cout<<"请输入地址:";
		cin>>personarry->contacts[m].address;
		cout<<"\n";
	}

	cls();
}
//清空联系人
void cleanperson(addressbook * personarry)
{
	personarry->size=0;
}
int main()
{
	struct addressbook personarry;

	while(1)
	{
		//菜单调用
		showmenu();

		int select;
		cin>>select;

		switch(select)
		{
		case 1:
			addperson(&personarry);//添加联系人
			break;
		case 2:
			showperson(&personarry);//显示联系人
			break;
		case 3:
		{
			cout<<"输入删除人姓名:";
			string name;
			cin>>name;
			int m=checkperson(&personarry,name);//判断用户是否存在
			if(m==-1)
			{
				cout<<"该用户不存在"<<"\n";
			}
			else
			{
				deleteperson(&personarry,m);//删除用户
			}
		}//当为一大段代码时,封装起来,否则容易产生错误
		break;
		case 4://查找联系人
		{
			cout<<"请输入要查找人的姓名:";
			string name;
			cin>>name;
			int m=checkperson(&personarry,name);
			if(m==-1)cout<<"查无此人"<<"\n";
			else
			{
				cout<<personarry.contacts[m].name<<"\t";
				cout<<personarry.contacts[m].age<<"\t";
				cout<<personarry.contacts[m].sex<<"\t";
				cout<<personarry.contacts[m].number<<"\t";
				cout<<personarry.contacts[m].address<<"\n";
			}
			cls();
		}
		break;
		case 5://修改联系人
			modifyperson(&personarry);
			break;
		case 6://清空联系人
			cleanperson(&personarry);
			break;
		case 0:
			printf("欢迎下次使用\n");
			return 0;
		default:
			break;

		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值