C++实现通讯录管理系统

功能:1)添加联系人;
2)显示联系人;3)查找联系人;4)删除联系人;5)修改联系人;6)清空联系人;7)退出系统

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

struct person
{
	//联系人姓名
	string name;
	//年龄
	int age;
	//性别 男、女
	string sex;
	//电话
	string m_phone;
	//住址
	string m_addr;
};

struct addressbooks
{
	// 通讯录中保存的联系人个数
	int m_size;
	// 通讯录中保存的联系人数组
	person arry[MAX];
};

// 菜单显示函数
void showmanue()
{
	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(addressbooks * A)
{
	//先判断通讯录是否存满
	if (A->m_size == MAX)
	{
		cout << "通讯录已存满,无法存入!" << endl;
		return;
	}
	else
	{
		//姓名
		string name;
		cout << "请输入姓名:";
		cin >> name;
		A->arry[A->m_size].name = name;
		//性别
		cout << "请输入性别:";
		string sex;
		while (true)
		{
			cin >> sex;
			if (sex=="男"||sex=="女")
			{
				A->arry[A->m_size].sex = sex;
				break;
			}
			cout << "你输入有误,请重新输入!" << endl;
		}
		//年龄
		int age = 0;
		cout << "请输入年龄:";
		cin >> age;
		A->arry[A->m_size].age = age;
		//电话
		string phone;
		cout << "请输入电话号码:";
		cin >> phone;
		A->arry[A->m_size].m_phone = phone;
		//住址
		string addr;
		cout << "请输入住址:";
		cin >> addr;
		A->arry[A->m_size].m_addr = addr;

		A->m_size++;

		cout << "添加成功!" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏继续
	}
	
}

//输入选择函数
int shuruxuanze()
{
	int select = 0;
	cout << "请输入选择:";
	cin >> select;
	return select;
}

//显示联系人
void show(addressbooks A)
{
	//判断通讯录是否为空
	if (A.m_size == 0)
	{
		cout << "通讯录为空!" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏继续
		return;
	}
	for (int i = 0; i < A.m_size; i++)
	{
		cout << "姓名:"<< A.arry[i].name << "\t";
		cout << "年龄:" << A.arry[i].age << "\t";
		cout << "性别:" << A.arry[i].sex << "\t";
		cout << "电话:" << A.arry[i].m_phone << "\t";
		cout << "住址:" << A.arry[i].m_addr << endl;
	}
	
	system("pause");//请按任意键继续
	system("cls");//清屏继续
}

//检测联系人是否存在,如果存在,返回联系人在数组中的具体位置,否则返回-1
int isexist(addressbooks A, string name)
{
	for (int i = 0; i < A.m_size; i++)
	{
		if (A.arry[i].name == name)
		{
			cout << "找到了" << endl;
			return i; //找到了,返回这个人所在位置的下标
		}
	}
	cout << "您查找的人不存在" << endl;
	return -1;//不存在,返回-1
}

//删除联系人
void deleteperson(addressbooks *A,string name)
{
	int i = isexist(*A, name);
	//先判断所要删除的联系人是否存在
	if (i == -1)
	{
		cout << "所要删除的联系人不存在!" << endl;
	}
	else
	{
		for (int j = i+1; j < A->m_size; j++)//将要删除的元素后面的元素依次往前移一位
		{
			A->arry[i] = A->arry[j];
			i++;
		}
		A->m_size -= 1;    //通讯录元素个数减一
		cout << "删除成功!" << endl;
	}
	system("pause");//请按任意键继续
	system("cls");//清屏继续
}

//修改联系人
void amendperson(addressbooks * A)
{
	while (true)
	{
		string name;
		cout << "请输入要修改的人的姓名:";
		cin >> name;
		int i = isexist(*A, name);
		//先判断所要删除的联系人是否存在
		if (i == -1)
		{
			cout << "所要删除的联系人不存在!请重新输入!" << endl;
		}
		else
		{
			cout << "请修改联系人" << endl;
			//姓名
			cout << "请输入姓名:";
			cin >> name;
			A->arry[i].name = name;
			//性别
			cout << "请输入性别:";
			string sex;
			while (true)
			{
				cin >> sex;
				if (sex == "男" || sex == "女")
				{
					A->arry[i].sex = sex;
					break;
				}
				cout << "你输入有误,请重新输入!" << endl;
			}
			//年龄
			int age = 0;
			cout << "请输入年龄:";
			cin >> age;
			A->arry[i].age = age;
			//电话
			string phone;
			cout << "请输入电话号码:";
			cin >> phone;
			A->arry[i].m_phone = phone;
			//住址
			string addr;
			cout << "请输入住址:";
			cin >> addr;
			A->arry[i].m_addr = addr;
			cout << "修改成功!" << endl;
		}
		break;
	}
}

//清空联系人
void emptyperson(addressbooks * A)
{
	A->m_size = 0;
	cout << "通讯录已经清空!" << endl;
}

//主函数
int main()
{
	//创建通讯录结构体变量
	addressbooks A;
	//初始化通讯录保存的个数
	A.m_size = 0;
	while (true)
	{
		showmanue();
		int select = shuruxuanze();
		if (select==1 || select==2||select==3||select==4||select==5||select==6||select==0)
		{
			switch (select)
			{
				case 1:				//添加联系人
					addperson(&A);  //利用地址传递,可以修饰实参
					break;
				case 2:             //显示联系人
					show(A);
					break;
				case 3://删除联系人
				{
					cout << "请输入要删除的联系人姓名:";
					string name;
					cin >> name;
					deleteperson(&A, name);
					break;
				}
				case 4://查找联系人
				{
					string name;
					cout << "请输入要查找的人的姓名:";
					cin >> name;
					int i = isexist(A, name);
					if (i == -1)
						cout << "查无此人" << endl;
					else
					{
						cout << "姓名:" << A.arry[i].name << "\t";
						cout << "年龄:" << A.arry[i].age << "\t";
						cout << "性别:" << A.arry[i].sex << "\t";
						cout << "电话:" << A.arry[i].m_phone << "\t";
						cout << "住址:" << A.arry[i].m_addr << endl;
					}
					system("pause");//请按任意键继续
					system("cls");//清屏继续
					break;
				}
				case 5://修改联系人
				{
					amendperson(&A);
					system("pause");//请按任意键继续
					system("cls");//清屏继续
					break;
				}
				case 6://清空通讯录
				{
					emptyperson(&A);
					system("pause");//请按任意键继续
					system("cls");//清屏继续
					break;
				}
				case 0:
				{
					cout << "退出系统,欢迎下次使用!" << endl;  //退出通讯录
					system("pause");
					return 0;
					break;
				}
			}
		}
		else
		{
				cout << "你的输入有误,请重新输入!" << endl;
				system("pause");//请按任意键继续
				system("cls");//清屏继续
		}

	}
		
	
	system("pause");
	return 0;
}
  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值