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

*★,°*:.☆( ̄▽ ̄)/$:*.°★*
欢迎来到我的博文,文章主要记录我的学习过程,今天分享如何用C++实现通讯录管理系统,并非技术性文章,若有错误欢迎读者给予指正。


目录

、通讯录管理系统需求
二、程序代码
三、程序设计思路


 一、通讯录管理系统需求

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


二、程序代码


#include
#include
using namespace std;
#define  MAX 1000//通讯录储存最大人数



struct Person//联系人结构体
{
	string m_Name;//姓名
	int m_sex;//性别:1男  2女
	int m_age;//年龄
	string m_phone;//号码
	string m_Addr;//住址
};

struct Addressbook//通讯录结构体
{
	struct Person Addressbook[MAX];//联系人结构数组


	int m_size;//当前储存人数
};


//1添加联系人
void addPerson(struct Addressbook* abs)
{
	//判断通讯录是否满了 通讯录满了就不再添加  
	if (abs->m_size == MAX)
	{
		cout << "通讯录满了" << endl;
		return;
	}
	else
	{
		//abs->m_size> name;
		abs->Addressbook[abs->m_size].m_Name = name;

		//性别:1男  2女
		while (true)
		{
			cout << "请输入性别" << endl;
			cout << "1----男" << endl;
			cout << "2----女" << endl;
			int sex = 0;
			cin >> sex;

			if (sex == 1 || sex == 2)
			{
				abs->Addressbook[abs->m_size].m_sex = sex;
				break;
			}
			cout << "输入有误请重新请输入" << endl;

		}
		

		//年龄
		while (true)
		{
			cout << "请输入年龄" << endl;
			int age = 0;
			cin >> age;
			if (age < 0)
			{
				cout << "输入有误请重新请输入" << endl;
			}

			else
			{
				abs->Addressbook[abs->m_size].m_age = age;
				break;
			}
		}

		//号码
		cout << "请输入联系号码" << endl;
		string Phone;
		cin >> Phone;
		abs->Addressbook[abs->m_size].m_phone = Phone;


		//住址
		string Addr;
		cout << "请输入联系住址" << endl;
		cin >> Addr;
		abs->Addressbook[abs->m_size].m_Addr = Addr;
	}
	cout << "成功添加联系人成功" << endl;

	//更新通讯录人数

	abs->m_size++;


	system("pause");//请按任意键继续

	system("cls");//清屏操作
}

void showPerson(Addressbook* abs)
{
	if (abs->m_size ==0)
	{
		cout << "无联系人" << endl;

	}
	else
	{
		for (int i = 0; i < abs->m_size; i++)
		{
			cout << "  姓名:" << abs->Addressbook[i].m_Name << "\t";
			cout << "  性别:" << (abs->Addressbook[i].m_sex==1 ? "男" : "女") << "\t";
			cout << "  年龄:" << abs->Addressbook[i].m_age    << "\t";
			cout << "  号码:" << abs->Addressbook[i].m_phone << "\t";
			cout << "  住址:" << abs->Addressbook[i].m_Addr << endl;
		}
	}

	system("pause");//请按任意键继续

	system("cls");//清屏操作
}


			//1 检测联系人是否存在
			//如果联系人不存在则提示无联系人
			//如果存在存在则返回联系人在通讯录中的位置
int isExist(Addressbook* abs,string name)//参数1通讯录//参数2对比姓名
{


	for (int i = 0; i < abs->m_size; i++)
	{
		//如果通讯录有和对比姓名相等则返回位置
		if (abs->Addressbook[i].m_Name == name)
		{
			return i;
		}
	}
	return -1;//对比完没有一样的名字则返回-1;

}

//删除指定联系人
void deletPerson(Addressbook* abs)
{
	cout << "请输入您要删除联系人的姓名" << endl;
		string name;
		cin >> name;

		int ret = isExist(abs, name);
		if (ret != -1)
		{
			//将后面联系人的信息覆盖到前面一个人的信息就实现删除
			for (int i = ret; i < abs->m_size; i++)
			{
				//覆盖
				abs->Addressbook[i] = abs->Addressbook[i + 1];
			}
			cout << "删除成功" << endl;
			abs->m_size--;
		}
		else
		{
			cout << "查无此人" << endl;
		}
		abs->m_size--;

		system("pause");//请按任意键继续

		system("cls");//清屏操作
}
//4查找指定联系人
void findPerson(Addressbook* abs)
{
	cout << "请输入您要查找联系人的姓名" << endl;
	string name;
	cin >> name;
	int ret = isExist(abs, name);
	if (ret != -1)
	{
		cout << "  姓名:" << abs->Addressbook[ret].m_Name << "\t";
		cout << "  性别:" << (abs->Addressbook[ret].m_sex == 1 ? "男" : "女") << "\t";
		cout << "  年龄:" << abs->Addressbook[ret].m_age << "\t";
		cout << "  号码:" << abs->Addressbook[ret].m_phone << "\t";
		cout << "  住址:" << abs->Addressbook[ret].m_Addr << endl;
	}
	else
	{
		cout << "无联系人" << endl;
	}
	system("pause");//请按任意键继续
	system("cls");//清屏操作
}
//修改指定联系人信息
void modifPerson(Addressbook* abs)
{
	cout << "请输入您要修改联系人的姓名" << endl;
	string name;
	cin >> name;
	int ret = isExist(abs, name);
	if (ret != -1)
	{
		while (true)
		{
			cout << "请输入您要修改信息" << endl;
			cout << "*********************************" << endl;
			cout << "*********1:姓名************"      << endl;
			cout << "*********2: 性别***********"       << endl;
			cout << "*********3: 年龄***********"       << endl;
			cout << "*********4: 号码***********"       << endl;
			cout << "*********5: 住址***********"       << endl;
			cout << "*********************************" << endl;
			cout << "请输入您要修改信息" << endl;
			int a = 0;
			cin >> a;
			switch (a)
			{//修改姓名
			case 1:
			{
				string name;
				cout << "请输入姓名" << endl;
				cin >> name;
				abs->Addressbook[ret].m_Name = name;
				cout << "修改成功" << endl;
				system("pause");//请按任意键继续
				system("cls");//清屏操作
				return;
			}

			//性别:1男  2女

			case 2:
			{
				while (true)
				{
					cout << "请输入性别" << endl;
					cout << "1----男"    << endl;
					cout << "2----女"    << endl;
					int sex = 0;
					cin >> sex;
					while (true)
					{
						if (sex == 1 || sex == 2)
						{
							abs->Addressbook[ret].m_sex = sex;
							system("cls");//清屏操作
							cout << "修改成功" << endl;
							system("pause");//请按任意键继续
							return;
						}
						else
						{
							cout << "输入有误请重新请输入" << endl;

							break;
							system("cls");//清屏操作
						}
					}
				}
			}
			break;

			//年龄
			case 3:
			{
				while (true)
				{
					cout << "请输入年龄" << endl;
					int age = 0;
					cin >> age;
					if (age < 0)
					{
						cout << "输入有误请重新请输入" << endl;
					}

					else
					{
						abs->Addressbook[ret].m_age = age;
						cout << "修改成功" << endl;

						system("pause");//请按任意键继续

						system("cls");//清屏操作
					}
					return;

				}
			}
			case 4:
			{

				//号码
				cout << "请输入联系号码" << endl;
				string Phone;
				cin >> Phone;
				abs->Addressbook[ret].m_phone = Phone;
				cout << "修改成功" << endl;
				system("pause");//请按任意键继续

				system("cls");//清屏操作

			}
			return;

			case 5:
			{
				//住址
				string Addr;
				cout << "请输入联系住址" << endl;
				cin >> Addr;
				abs->Addressbook[ret].m_Addr = Addr;
				cout << "修改成功" << endl;
				system("pause");//请按任意键继续

				system("cls");//清屏操作

			}
			return;


		define:
			break;
			cout << "选择错误请重新选择" << endl;
			}
		}
		cout << "修改成功" << endl;
		system("pause");//请按任意键继续

		system("cls");//清屏操作
	}
	else
	{
		cout << "未找到联系人" << endl;
	}
	system("pause");//请按任意键继续

	system("cls");//清屏操作



}

void cleanPerson(Addressbook* abs)
{
	abs->m_size = 0;

	cout << "屏幕已清空" << endl;

	system("pause");//请按任意键继续

	system("cls");//清屏操作
}



//1 封装显示页面函数
void showmenu()
{
	cout << "*********************************" << endl;
	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;


}



int main()
{
	struct Addressbook abs;
	abs.m_size = 0;
	int select = 0;
	while(true)
	{

		showmenu();
		cin >> select;
		switch (select)
		{
		case 1://添加联系人
				/*添加联系人实现步骤:
				设计联系人结构体
				设计通讯录结构体
				main函数中创建通讯录
				封装添加联系人函数
				测试添加联系人功能
				5.1设计联系人结构体
				联系人信息包括:姓名、性别、年龄、联系电话、家庭住址
				*/

			addPerson(&abs);//利用地址传递,可以修饰实际参数

			break;
		case 2://显示联系人
			//封装显示联系人函数
			showPerson(&abs);


			//测试显示联系人功能

			break;
		case 3://按照姓名删除联系人

		//{
		//	//1 检测联系人是否存在
		//	//如果联系人不存在则提示无联系人
		//	//如果存在存在则返回联系人在通讯录中的位置
		//	cout << "请输入要删除联系人的姓名" << endl;
		//	string name;
		//	cin >> name;
		//	if (isExist(&abs, name) == -1)
		//		cout << "查无此人" << endl;


		//	else
		//		cout << "找到了" << endl;

		//	//2 封装删除联系人函数

		//	//3 测试删除联系人功能

		//}
			deletPerson(&abs);
			break;
		
		case 4://查找联系人
			findPerson(&abs);
			//封装查找联系人函数
			
			//测试查找指定联系人

			break;

		case 5://修改联系人
			modifPerson(&abs);
			// 1 封装修改联系人函数

				//	//2测试修改联系人功能

			break;

		case 6://清空联系人

			cleanPerson(&abs);


			break;
		case 0://退出通讯录

			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
		default:
			cout << "选择错误,请重新选择" << endl;
			system("pause");

			system("cls");
			break;

		}
	}
	
	system("pause");
	return 0;
}

三、程序设计思路

目录

、通讯录管理系统需求
二、程序代码
三、程序设计思路

1:菜单功能
 功能描述:用户选择功能界面


界面如下:

C++实现通讯录管理系统_第1张图片
步骤:
封装界面函数 如void showMenu( )

在main中调用showMenul)
代码:

//1 封装显示页面函数
void showmenu()
{
	cout << "*********************************" << endl;
	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;
}

int main()
{
	struct Addressbook abs;
	abs.m_size = 0;
	int select = 0;
	while(true)
	{

		showmenu();
		cin >> select;
		switch (select)
		{
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;

		case 5:
			break;
		case 6:

			break;
		case 0:
		default:
			cout << "选择错误,请重新选择" << endl;
			system("pause");

			system("cls");
			break;

		}
	}
	
	system("pause");
	return 0;
}

2:退出功能
功能描述:退出通讯录系统
思路:根据用户的不同选择,进入不同功能,可以选择switch分支结构,将整个架构进行搭建当用户选择0时,执行退出功能。


代码
 

int main()
{
	struct Addressbook abs;
	abs.m_size = 0;
	int select = 0;
	while(true)
	{

		showmenu();
		cin >> select;
		switch (select)
		{
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;

		case 5:
			break;
		case 6:

			break;
		case 0:
            cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
		default:
			cout << "选择错误,请重新选择" << endl;
			system("pause");

			system("cls");
			break;

		}
	}
	
	system("pause");
	return 0;
}

3:添加联系人功能
功能描述:实现添加联系人信息,上限为1000人实现

步骤:
设计联系人结构体
设计通讯录结构体
main函数中创建通讯录;
封装联系人函数
测试功能

代码

//1添加联系人
void addPerson(struct Addressbook* abs)
{
	//判断通讯录是否满了 通讯录满了就不再添加  
	if (abs->m_size == MAX)
	{
		cout << "通讯录满了" << endl;
		return;
	}
	else
	{
		//abs->m_size> name;
		abs->Addressbook[abs->m_size].m_Name = name;

		//性别:1男  2女
		while (true)
		{
			cout << "请输入性别" << endl;
			cout << "1----男" << endl;
			cout << "2----女" << endl;
			int sex = 0;
			cin >> sex;

			if (sex == 1 || sex == 2)
			{
				abs->Addressbook[abs->m_size].m_sex = sex;
				break;
			}
			cout << "输入有误请重新请输入" << endl;

		}
		

		//年龄
		while (true)
		{
			cout << "请输入年龄" << endl;
			int age = 0;
			cin >> age;
			if (age < 0)
			{
				cout << "输入有误请重新请输入" << endl;
			}

			else
			{
				abs->Addressbook[abs->m_size].m_age = age;
				break;
			}
		}

		//号码
		cout << "请输入联系号码" << endl;
		string Phone;
		cin >> Phone;
		abs->Addressbook[abs->m_size].m_phone = Phone;


		//住址
		string Addr;
		cout << "请输入联系住址" << endl;
		cin >> Addr;
		abs->Addressbook[abs->m_size].m_Addr = Addr;
	}
	cout << "成功添加联系人成功" << endl;

	//更新通讯录人数

	abs->m_size++;


	system("pause");//请按任意键继续

	system("cls");//清屏操作
}


void showmenu()
{
	cout << "*********************************" << endl;
	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;


}
int main()
{
	struct Addressbook abs;
	abs.m_size = 0;
	int select = 0;
	while(true)
	{

		showmenu();
		cin >> select;
		switch (select)
		{
		case 1:
        addPerson(&abs);//利用地址传递,可以修饰实际参数
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;

		case 5:
			break;
		case 6:

			break;
		case 0:
            
		default:
			cout << "选择错误,请重新选择" << endl;
			system("pause");

			system("cls");
			break;

		}
	}
	
	system("pause");
	return 0;
}


4:显示联系人
功能描述:显示通讯录中已有联系人的信息封装显示联系人函数
测示该函数。


思路:判断通讯录中的人数若人数为0则提记录为0
若人数大于0,则显示通迅录中联系人的信息。
 

代码

void showPerson(Addressbook* abs)
{
	if (abs->m_size ==0)
	{
		cout << "无联系人" << endl;

	}
	else
	{
		for (int i = 0; i < abs->m_size; i++)
		{
			cout << "  姓名:" << abs->Addressbook[i].m_Name << "\t";
			cout << "  性别:" << (abs->Addressbook[i].m_sex==1 ? "男" : "女") << "\t";
			cout << "  年龄:" << abs->Addressbook[i].m_age    << "\t";
			cout << "  号码:" << abs->Addressbook[i].m_phone << "\t";
			cout << "  住址:" << abs->Addressbook[i].m_Addr << endl;
		}
	}

	system("pause");//请按任意键继续

	system("cls");//清屏操作
}



void showmenu()
{
	cout << "*********************************" << endl;
	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;


}

int main()
{
	struct Addressbook abs;
	abs.m_size = 0;
	int select = 0;
	while(true)
	{

		showmenu();
		cin >> select;
		switch (select)
		{
		case 1:
			break;
		case 2:
            showPerson(&abs);
			break;
		case 3:
			break;
		case 4:
			break;

		case 5:
			break;
		case 6:

			break;
		case 0:
            
		default:
			cout << "选择错误,请重新选择" << endl;
			system("pause");

			system("cls");
			break;

		}
	}
	
	system("pause");
	return 0;
}

5:删除联系人
功能描述:按照姓名删除指定联系人

实现步骤聚:
检测联系人是否存在
封装删除联系人函数
测试函数功能
 

int isExist(Addressbook* abs,string name)//参数1通讯录//参数2对比姓名
{


	for (int i = 0; i < abs->m_size; i++)
	{
		//如果通讯录有和对比姓名相等则返回位置
		if (abs->Addressbook[i].m_Name == name)
		{
			return i;
		}
	}
	return -1;//对比完没有一样的名字则返回-1;

}


void deletPerson(Addressbook* abs)
{
	cout << "请输入您要删除联系人的姓名" << endl;
		string name;
		cin >> name;

		int ret = isExist(abs, name);
		if (ret != -1)
		{
			//将后面联系人的信息覆盖到前面一个人的信息就实现删除
			for (int i = ret; i < abs->m_size; i++)
			{
				//覆盖
				abs->Addressbook[i] = abs->Addressbook[i + 1];
			}
			cout << "删除成功" << endl;
			abs->m_size--;
		}
		else
		{
			cout << "查无此人" << endl;
		}
		abs->m_size--;

		system("pause");//请按任意键继续

		system("cls");//清屏操作
}

void showmenu()
{
	cout << "*********************************" << endl;
	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;


}

int main()
{
	struct Addressbook abs;
	abs.m_size = 0;
	int select = 0;
	while(true)
	{

		showmenu();
		cin >> select;
		switch (select)
		{
		case 1:
			break;
		case 2:
            
			break;
		case 3:
			break;
		case 4:
			break;

		case 5:
			break;
		case 6:

			break;
		case 0:
            
		default:
			cout << "选择错误,请重新选择" << endl;
			system("pause");

			system("cls");
			break;

		}
	}
	
	system("pause");
	return 0;
}

6:查找联系人
功能描述按照用户输入的姓名查看指定联系人信息步骤蔡:
封装查找函数.
测试函数
思路:判断用户输入的名字是否存在

//查找指定联系人
void findPerson(Addressbook* abs)
{
	cout << "请输入您要查找联系人的姓名" << endl;
	string name;
	cin >> name;
	int ret = isExist(abs, name);
	if (ret != -1)
	{
		cout << "  姓名:" << abs->Addressbook[ret].m_Name << "\t";
		cout << "  性别:" << (abs->Addressbook[ret].m_sex == 1 ? "男" : "女") << "\t";
		cout << "  年龄:" << abs->Addressbook[ret].m_age << "\t";
		cout << "  号码:" << abs->Addressbook[ret].m_phone << "\t";
		cout << "  住址:" << abs->Addressbook[ret].m_Addr << endl;
	}
	else
	{
		cout << "无联系人" << endl;
	}
	system("pause");//请按任意键继续
	system("cls");//清屏操作
}

void showmenu()
{
	cout << "*********************************" << endl;
	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;


}

int main()
{
	struct Addressbook abs;
	abs.m_size = 0;
	int select = 0;
	while(true)
	{

		showmenu();
		cin >> select;
		switch (select)
		{
		case 1:
			break;
		case 2:
            
			break;
		case 3:
			break;
		case 4:
            findPerson(&abs);
			break;

		case 5:
			break;
		case 6:

			break;
		case 0:
            
		default:
			cout << "选择错误,请重新选择" << endl;
			system("pause");

			system("cls");
			break;

		}
	}
	
	system("pause");
	return 0;
}

你可能感兴趣的:(c,C++++,java,开发语言)