C++ 个人通讯录管理系统(三)

现在开始第二、三个功能:显示联系人和删除联系人。

1、显示联系人

功能描述:显示通讯录中已有的联系人信息,显示联系人实现步骤:

  • 封装显示联系人函数

  • 测试显示联系人功能

1.1 封装显示联系人函数

思路:判断如果当前通讯录中没有人员,就提示记录为空,人数大于0,显示通讯录中信息。

显示联系人代码:

//2.显示联系人信息
void showPerson(Addressbooks *abs)
{
	//判断通讯录中人数为0,如果为0,提示记录为空
	//如果不为0,显示通讯录中联系人的信息
	if (abs->m_Size == 0)
	{
		cout << "当前记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < abs->m_Size; i++)
		{
			cout << "姓名:" << abs->personArray[i].m_Name << "\t";
			cout << "性别:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t";
			cout << "年龄:" << abs->personArray[i].m_Age << "\t";
			cout << "电话:" << abs->personArray[i].m_Phone << "\t";
			cout << "住址:" << abs->personArray[i].m_Addr << endl;
		}
	}

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

1.2 测试显示联系人功能

在switch case语句中,case 2 里添加:

#include <iostream>
#include <string>
 
using namespace std;
 
#define MAX 1000 //最大人数
 
int main() {
​
    int select = 0;
​
    while (true)
    {
        showMenu();
​
        cin >> select;
        
        switch (select)
        {
        case 1:  //添加联系人
            addPerson(&abs);
            break;
        case 2:  //显示联系人
            showPerson(&abs);
            break;
        case 3:  //删除联系人
            break;
        case 4:  //查找联系人
            break;
        case 5:  //修改联系人
            break;
        case 6:  //清空联系人
            break;
        case 0:  //退出通讯录
            cout << "欢迎下次使用" << endl;
            system("pause");
            return 0;
            break;
        default:
            break;
        }
    }
​
    system("pause");
​
    return 0;
}

实际测试效果:

2、删除联系人

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

删除联系人实现步骤:

  • 封装检测联系人是否存在

  • 封装删除联系人函数

  • 测试删除联系人功能

2.1 封装检测联系人是否存在

设计思路:删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在,则删除;不存在,则提示用户没有要删除的联系人。

因此我们可以把检测联系人是否存在封装成一个函数中,如果存在,返回联系人在通讯录中的位置,不存在返回-1。

检测联系人是否存在代码:

//判断是否存在查询的人员,存在返回在数组中索引位置,不存在返回-1
int isExist(Addressbooks * abs, string name)
{
	for (int i = 0; i < abs->m_Size; i++)
	{
		if (abs->personArray[i].m_Name == name)
		{
			return i;
		}
		else
		{
			//继续查找下一个联系人
		}
	}

	return -1;
}

2.2 封装删除联系人函数

根据用户输入的联系人,判断该通讯录中是否有此人。查找到进行删除,并提示删除成功;查不到提示查无此人。

//3、删除指定联系人信息
void deletePerson(Addressbooks * abs)
{
	cout << "请输入您要删除的联系人: ";
	string name;
	cin >> name;

	int ret = isExist(abs, name);
	if (ret != -1)
	{
		//找到此人,删除此人,并将其后的所有人依次前移
		for (int i = ret; i < abs->m_Size; i++)
		{
			abs->personArray[i] = abs->personArray[i + 1];
		}

		abs->m_Size--;   //通讯录人数减1
		cout << "删除成功!" << endl;
	}
	else
	{
		cout << "查无此人!" << endl;
	}

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

2.3  测试删除联系人功能

在switch case 语句中,case3里添加:

#include <iostream>
#include <string>
 
using namespace std;
 
#define MAX 1000 //最大人数
 
int main() {
​
    int select = 0;
​
    while (true)
    {
        showMenu();
​
        cin >> select;
        
        switch (select)
        {
        case 1:  //添加联系人
            addPerson(&abs);
            break;
        case 2:  //显示联系人
            showPerson(&abs);
            break;
        case 3:  //删除联系人
            deletePerson(&abs);	
            break;
        case 4:  //查找联系人
            break;
        case 5:  //修改联系人
            break;
        case 6:  //清空联系人
            break;
        case 0:  //退出通讯录
            cout << "欢迎下次使用" << endl;
            system("pause");
            return 0;
            break;
        default:
            break;
        }
    }
​
    system("pause");
​
    return 0;
}

实际测试效果:

转载:【C++零基础入门到实战就业教程|传智教育-哔哩哔哩】 https://b23.tv/joc5Gdb

猜你喜欢

转载自blog.csdn.net/duan19920101/article/details/126070831