用C++做一个通讯录管理系统(适合新手)

757 阅读5分钟

1.前言

这个管理系统只是为了新手在熟悉了一些c++基本操作后如:循环,结构体。可以完全着手做的一个小系统,用于巩固知识点。

2.需求分析

  • [1] 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人。
  • [2] 显示联系人:显示通讯录中所有联系人信息
  • [3] 删除联系人:按照姓名进行删除指定联系人
  • [4] 查找联系人:按照姓名查看指定联系人信息
  • [5] 修改联系人:按照姓名重新修改指定联系人
  • [6] 清空联系人:清空通讯录中所有信息
  • [7] 退出通讯录:退出当前使用的通讯录

3.创建项目

3.1第一步:创建一个新项目

image.png

3.2第二步:空项目(真是手把手教了兄弟们~)

image.png

3.3第三步:设置通讯录名称为通讯录管理系统

image.png

3.4第四步:在源文件里创建一个.cpp文件,名称为通讯录管理系统

image.png

image.png 至此,项目创建完成。

4.菜单功能

功能描述:用户选择功能的界面。 如图:

image.png

using namespace std;
//1.显示菜单界面
void showMenu()
{
	cout << "            帅             " << endl;
	cout << "            **             " << endl;
	cout << "           ****            " << endl;
	cout << "          ******           " << endl;
	cout << "         ********          " << endl;
	cout << "        **********         " << endl;
	cout << "       ************        " << endl;
	cout << "      *1.添加联系人*       " << endl;
	cout << "     **2.显示联系人**      " << endl;
	cout << "    ***3.删除联系人***     " << endl;
	cout << "   ****4.查找联系人****    " << endl;
	cout << "  *****5.修改联系人*****   " << endl;
	cout << " ******6.清空通讯录******  " << endl;
	cout << "*******7.退出通讯录******* " << endl;
}
int main()
{
	showMenu();//菜单调用
	system("pause");
	return 0;
}

5.退出功能

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

	cin >> select;
	switch (select)
	{
	case 1:
		//1.添加联系人
		break;
	case 2:
		//2.显示联系人
		break;
	case 3:
		//3.删除联系人
		break;
	case 4:
		//4.查找联系人
		break;
	case 5:
		//5.修改联系人
		break;
	case 6:
		//6.清空通讯录
		break;
	case 7:
		//7.退出通讯录
		break;
	}

使用这种结构来进行用户功能的选择。而对于退出功能,只需要break来进行退出即可。此时代码为:

using namespace std;
void showMenu();
int main()
{
	showMenu();//调用菜单
	int select ;
	while (true)
	{
                cout << "请正确输入想选择服务的号码:" << endl;
		cin >> select;
		switch (select)
		{
		case 1:
			//1.添加联系人
			break;
		case 2:
			//2.显示联系人
			break;
		case 3:
			//3.删除联系人
			break;
		case 4:
			//4.查找联系人
			break;
		case 5:
			//5.修改联系人
			break;
		case 6:
			//6.清空通讯录
			break;
		case 7:
			//7.退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
			break;
		}
	}
	system("pause");
	return 0;
}
void showMenu()//1.显示菜单界面
{
	cout << "            帅             " << endl;
	cout << "            **             " << endl;
	cout << "           ****            " << endl;
	cout << "          ******           " << endl;
	cout << "         ********          " << endl;
	cout << "        **********         " << endl;
	cout << "       ************        " << endl;
	cout << "      *1.添加联系人*       " << endl;
	cout << "     **2.显示联系人**      " << endl;
	cout << "    ***3.删除联系人***     " << endl;
	cout << "   ****4.查找联系人****    " << endl;
	cout << "  *****5.修改联系人*****   " << endl;
	cout << " ******6.清空通讯录******  " << endl;
	cout << "*******7.退出通讯录******* " << endl;
}


6.添加联系人

功能描述:实现添加联系人功能,联系人上线为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址) 添加联系人步骤:

1.设计联系人结构体。

2.设计通讯录结构体。

3.main函数中创建通讯录。

4.封装添加联系人函数。

5.测试添加联系人功能。

6.1设计联系人结构体

联系人信息包括:姓名、性别、年龄、联系电话、家庭住址。

struct People//联系人结构体
{
	string pname;//联系人姓名
	string psex;//联系人性别,1为男,0为女
	int page;//联系人年龄
	int pnumber;//联系人电话号码
	string paddress;//联系人住址
};

6.2设计通讯录结构体

struct peoplebook//通讯录结构体
{
	struct People parray[max];//通讯录中保存的联系人的数组
	int psize;//通讯录中的人员个数
};

6.3定义添加功能

void addPeople(peoplebook* abs)
{
	//判断通讯录是否满了,满了就不再添加
	if (abs->psize == max)
	{
		cout << "通讯录已满!!!,无法添加" << endl;
		return;
	}
	else
	{
		//添加联系人

		//姓名
		string name;
		cout << "请输入姓名: " << endl;
		cin >> name;
		abs->parray[abs->psize].pname = name;
		//性别
		int sex;
		string male;
		cout << "请输入联系人性别1为男,0为女: " << endl;
		while (true)
		{
			cin >> sex;
			if (sex == 0||sex==1)
			{
				if (sex == 0)
				{
					male = "女";
					abs->parray[abs->psize].psex = male;
					break;
				}
				else
				{
					male = "男";
					abs->parray[abs->psize].psex = male;
					break;
				}
			}
			cout << "输入错误,请重新输入:" << endl;
		}
		//年龄
		int age;
		cout << "请输入联系人年龄: " << endl;
		cin >> age;
		abs->parray[abs->psize].page = age;
		//电话
		int number;
		cout << "请输入联系人电话号码: " << endl;
		cin >> number;
		abs->parray[abs->psize].pnumber = number;
		//住址
		string address;
		cout << "请输入联系人住址: " << endl;
		cin >> address;
		abs->parray[abs->psize].paddress = address;
		abs->psize++;
		cout << "添加成功!" << endl;
		system("pause");
		system("cls");//清屏操作
	}
}

7.显示联系人

功能描述:显示通讯录中已有的联系人信息

显示联系人实现步骤:

1.封装显示联系人函数

2.测试显示联系人功能

7.1封装显示联系人函数

void showpeople(peoplebook *abs)//显示联系人
{
	if (abs->psize == 0)//如果通讯录为0则输出空
	{
		cout << "通讯录空!" << endl;
	}
	else//不为空则全部输出
	{
		for (int i = 0; i < abs->psize; i++)
		{
			cout	<< "姓名:" << abs->parray[i].pname <<"\t"
					<< "性别:" << abs->parray[i].psex << "\t"
					<< "年龄:" << abs->parray[i].page << "\t"
					<< "电话号码:" << abs->parray[i].pnumber << "\t"
					<< "住址:" << abs->parray[i].paddress << endl;
		}
		system("pause");//按任意键继续
		system("cls");//清屏
	}
}

然后在switch中调用一下就可以了。

8.删除联系人

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

删除联系人实现步骤:

1.封装检测联系人是否存在

2.封装删除联系人函数

3.测试删除联系人功能

8.1封装检测联系人是否存在,并实现删除功能

设计思路: 删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在就删除,不存在就提示用户没有要删除的联系人。因此我们可以把检测联系人是否存在封装成一个函数中,如果存在,返回联系人在通讯录中的位置,并删除。

void deletepeople(peoplebook* abs)
{
	cout << "请输入要删除联系人的姓名:" << endl;
	string name;
	cin >> name;
	for (int i = 0; i <= abs->psize; i++)
	{
		if (abs->parray[i].pname == name)
		{
			cout << "在通讯录中,开始删除" << endl;
			for (i; i < abs->psize; i++)//数据前移进行删除
			{
				abs->parray[i] = abs->parray[i + 1];
			}
			abs->psize--;//更新通讯录中人数
			cout << "删除成功!!!" << endl;
			break;
		}
		else
		{
			cout << "不在通讯录中" << endl;
			break;
		}
	}
	system("pause");//任意键继续
	system("cls");//清屏
}

9.查找联系人

功能描述:按照姓名查看指定联系人信息 查找联系人实现步骤 1.封装查找联系人函数 2.测试查找指定联系人

9.1封装查找联系人函数

实现思路:判断用户指定的联系人是否存在,存在就输出信息,不存在就不存在。

{
	cout << "请输入您要查找的联系人:" << endl;
	string name;
	cin >> name;
	//判断是否存在通讯录中
	for (int i = 0; i <= abs->psize; i++)
	{
		if (abs->parray[i].pname == name)
		{
			cout << "姓名:" << abs->parray[i].pname << "\t"
				<< "性别:" << abs->parray[i].psex << "\t"
				<< "年龄:" << abs->parray[i].page << "\t"
				<< "电话号码:" << abs->parray[i].pnumber << "\t"
				<< "住址:" << abs->parray[i].paddress << endl;
			break;
		}
		else
		{
			cout << "不在通讯录中" << endl;
			break;
		}
	}
	system("pause");//任意键继续
	system("cls");//清屏
}

10.修改联系人

功能描述:按照姓名重新修改指定联系人

修改联系人步骤:

1.封装修改联系人函数

2.测试修改联系人功能

10.1封装修改联系人函数

思路:查找用户输入的联系人,如果查找成功进行修改操作,查找失败提示就失败

void changepeople(peoplebook* abs)
{
	cout << "请输入您要修改联系人的姓名:" << endl;
	string name;
	cin >> name;
	for (int i = 0; i < abs->psize; i++)
	{
		if (abs->parray[i].pname == name)
		{
			cout << "请您对"<<name<<"进行修改!" << endl;
			//修改姓名
			cout << "姓名:" << endl;
			cin >> name;
			abs->parray[i].pname = name;
			//修改性别
			string sex;
			cout << "性别:请输入男或者女" << endl;
			cin >> sex;
			abs->parray[i].psex = sex;
			//修改年龄
			int age;
			cout << "年龄:" << endl;
			cin >> age;
			abs->parray[i].page = age;
			//修改电话号码
			long long number;
			cout << "电话号码:" << endl;
			cin >> number;
			abs->parray[i].pnumber = number;
			//修改住址
			string address;
			cout << "住址:" << endl;
			cin >> address;
			abs->parray[i].paddress = address;
			cout << "修改完成!" << endl;
			break;
		}
		else
		{
			cout << "查无此人!" << endl;
		}
	}
	system("pause");
	system("cls");
}

11.清空联系人

功能描述:清空通讯录中所有的信息

清空联系人实现步骤:

1.封装清空联系人函数

2.测试清空联系人

11.1封装清空联系人函数

实现思路:将通讯录所有联系人信息清除掉,只要将通讯录记录的联系人数量置为0,做逻辑清空即可。

void cleanpeople(peoplebook* abs)
{
	abs->psize = 0;
	cout << "通讯录已清空!" << endl;
	system("pause");//按任意键继续
	system("cls");//清屏
}

12.总结

完整代码:

#include<iostream>
using namespace std;
#define max 1000
void showMenu();//菜单界面
struct People//联系人结构体
{
	string pname;//联系人姓名
	string psex;//联系人性别,1为男,0为女
	int page;//联系人年龄
	long long pnumber;//联系人电话号码
	string paddress;//联系人住址
};
struct peoplebook//通讯录结构体
{
	struct People parray[max];//通讯录中保存的联系人的数组
	int psize;//通讯录中的人员个数
};
//添加联系人
void addPeople(peoplebook* abs)
{
	//判断通讯录是否满了,满了就不再添加
	if (abs->psize == max)
	{
		cout << "通讯录已满!!!,无法添加" << endl;
		return;
	}
	else
	{
		//添加联系人

		//姓名
		string name;
		cout << "请输入姓名: " << endl;
		cin >> name;
		abs->parray[abs->psize].pname = name;
		//性别
		int sex;
		string male;
		cout << "请输入联系人性别1为男,0为女: " << endl;
		while (true)
		{
			cin >> sex;
			if (sex == 0||sex==1)
			{
				if (sex == 0)
				{
					male = "女";
					abs->parray[abs->psize].psex = male;
					break;
				}
				else
				{
					male = "男";
					abs->parray[abs->psize].psex = male;
					break;
				}
			}
			cout << "输入错误,请重新输入:" << endl;
		}
		//年龄
		int age;
		cout << "请输入联系人年龄: " << endl;
		cin >> age;
		abs->parray[abs->psize].page = age;
		//电话
		long long number;
		cout << "请输入联系人电话号码: " << endl;
		cin >> number;
		abs->parray[abs->psize].pnumber = number;
		//住址
		string address;
		cout << "请输入联系人住址: " << endl;
		cin >> address;
		abs->parray[abs->psize].paddress = address;
		abs->psize++;
		cout << "添加成功!" << endl;
		system("pause");
		system("cls");//清屏操作
	}
}
//显示联系人
void showpeople(peoplebook *abs)
{
	if (abs->psize == 0)//如果通讯录为0则输出空
	{
		cout << "通讯录空!" << endl;
	}
	else//不为空则全部输出
	{
		for (int i = 0; i < abs->psize; i++)
		{
			cout	<< "姓名:" << abs->parray[i].pname <<"\t"
					<< "性别:" << abs->parray[i].psex << "\t"
					<< "年龄:" << abs->parray[i].page << "\t"
					<< "电话号码:" << abs->parray[i].pnumber << "\t"
					<< "住址:" << abs->parray[i].paddress << endl;
		}
	}
	system("pause");//按任意键继续
	system("cls");//清屏
}
//删除联系人
void deletepeople(peoplebook* abs)
{
	cout << "请输入要删除联系人的姓名:" << endl;
	string name;
	cin >> name;
	for (int i = 0; i <= abs->psize; i++)
	{
		if (abs->parray[i].pname == name)
		{
			cout << "在通讯录中,开始删除" << endl;
			for (i; i < abs->psize; i++)//数据前移进行删除
			{
				abs->parray[i] = abs->parray[i + 1];
			}
			abs->psize--;//更新通讯录中人数
			cout << "删除成功!!!" << endl;
			break;
		}
		else
		{
			cout << "不在通讯录中" << endl;
			break;
		}
	}
	system("pause");//任意键继续
	system("cls");//清屏
}
//查找联系人
void findpeople(peoplebook* abs)
{
	cout << "请输入您要查找的联系人:" << endl;
	string name;
	cin >> name;
	//判断是否存在通讯录中
	for (int i = 0; i <= abs->psize; i++)
	{
		if (abs->parray[i].pname == name)
		{
			cout << "姓名:" << abs->parray[i].pname << "\t"
				<< "性别:" << abs->parray[i].psex << "\t"
				<< "年龄:" << abs->parray[i].page << "\t"
				<< "电话号码:" << abs->parray[i].pnumber << "\t"
				<< "住址:" << abs->parray[i].paddress << endl;
			break;
		}
		else
		{
			cout << "不在通讯录中" << endl;
			break;
		}
	}
	system("pause");//任意键继续
	system("cls");//清屏
}
//修改联系人
void changepeople(peoplebook* abs)
{
	cout << "请输入您要修改联系人的姓名:" << endl;
	string name;
	cin >> name;
	for (int i = 0; i < abs->psize; i++)
	{
		if (abs->parray[i].pname == name)
		{
			cout << "请您对"<<name<<"进行修改!" << endl;
			//修改姓名
			cout << "姓名:" << endl;
			cin >> name;
			abs->parray[i].pname = name;
			//修改性别
			string sex;
			cout << "性别:请输入男或者女" << endl;
			cin >> sex;
			abs->parray[i].psex = sex;
			//修改年龄
			int age;
			cout << "年龄:" << endl;
			cin >> age;
			abs->parray[i].page = age;
			//修改电话号码
			long long number;
			cout << "电话号码:" << endl;
			cin >> number;
			abs->parray[i].pnumber = number;
			//修改住址
			string address;
			cout << "住址:" << endl;
			cin >> address;
			abs->parray[i].paddress = address;
			cout << "修改完成!" << endl;
			break;
		}
		else
		{
			cout << "查无此人!" << endl;
		}
	}
	system("pause");
	system("cls");
}
//清空联系人
void cleanpeople(peoplebook* abs)
{
	abs->psize = 0;
	cout << "通讯录已清空!" << endl;
	system("pause");//按任意键继续
	system("cls");//清屏
}
int main()
{
	peoplebook abs;//创建通讯录变量
	abs.psize = 0;//初始化人数为0
	cout << "请输入想选择服务的号码:" << endl;
	while (true)
	{
		showMenu();
		int select;
		cin >> select;
		switch (select)
		{
		case 1:
			//1.添加联系人
			addPeople(&abs);//利用地址传递来改变实参
			break;
		case 2:
			showpeople(&abs);
			//2.显示联系人
			break;
		case 3:
			//3.删除联系人
			deletepeople(&abs);
			break;
		case 4:
			//4.查找联系人
			findpeople(&abs);
			break;
		case 5:
			//5.修改联系人
			changepeople(&abs);
			break;
		case 6:
			//6.清空通讯录
			cleanpeople(&abs);
			break;
		case 7:
			//7.退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
			break;
		default:
			break;
		}
	}
	system("pause");
	return 0;
}
void showMenu()//1.显示菜单界面
{
	cout << "            帅             " << endl;
	cout << "            **             " << endl;
	cout << "           ****            " << endl;
	cout << "          ******           " << endl;
	cout << "         ********          " << endl;
	cout << "        **********         " << endl;
	cout << "       ************        " << endl;
	cout << "      *1.添加联系人*       " << endl;
	cout << "     **2.显示联系人**      " << endl;
	cout << "    ***3.删除联系人***     " << endl;
	cout << "   ****4.查找联系人****    " << endl;
	cout << "  *****5.修改联系人*****   " << endl;
	cout << " ******6.清空通讯录******  " << endl;
	cout << "*******7.退出通讯录******* " << endl;
}

其实这只是一个入门的小案例,后续会继续学习更多的案例给大家。