C++ 通讯录设计(四)

1、删除联系人
功能描述:按照姓名进行删除指定联系人
删除联系人实现步骤:
●封装检测联系人是否存在
●封装删除联系人函数
●测试删除联系人功能
1.1封装检测联系人是否存在
设计思路:
删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在删除,不存在提示用户没有要删除的联系人
因此我们可以把检测联系人是否存在封装成一个函数中, 如果存在,返回联系人在通讯录中的位置,不存在返回-1

//检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1
//参数1 通讯录参数2 对比姓名
int isExist(Addressbooks * abs, string name) {
	for (int i = 0; i < abs ->m_Size; i++){
		//找到了
		if (abs->personArray[i].m_Name == name){
			return i;

		}
	}
	//没有找到返回-1
	return -1;
}
int main() {

	//创建通讯录结构体变量
	Addressbooks abs;
	//初始化通讯录中当前人员个数
	abs.m_Size = 0;

	int select = 0;//创建用户选择输入菜单的变量

	while (true){
		showMenu();
		cin >> select;

		switch (select){
		case 1:            //1、添加联系人
			addPerson(&abs);  //利用地址传递可以修饰形参
			break;
		case 2:            //2、显示联系人
			showPerson(&abs);
			break;
		case 3:            //3、删除联系人
		{
			cout << "请输入删除联系人姓名 : " << endl;
			string name;
			cin >> name;

			if (isExist(&abs, name) == -1){
				cout << " 查无此人" << endl;
			}else{
				
				cout << "找到此人" << endl;

			}
		}
			break;
		case 4:            //4、查找联系人
			break;
		case 5:            //5、修改联系人
			break;
		case 6:            //6、清空联系人
			break;
		case 0:            //0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
			break;
		default:
			break;
		}
	}

	system("pause");

}

测试

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

//3、删除指定联系人
void deletePerson(Addressbooks * abs){
	cout << " 请输入您要删除的联系人" << endl;
	string name;
	cin >> name;
	//ret == -1未查到 .
	//ret != -1查到 了

	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--; //更新通讯录中的人员数
		cout << "删除成功" <<endl;

	}else {
		cout << "未找到此人" << endl;
	}

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

}
int main() {

	//创建通讯录结构体变量
	Addressbooks abs;
	//初始化通讯录中当前人员个数
	abs.m_Size = 0;

	int select = 0;//创建用户选择输入菜单的变量

	while (true){
		showMenu();
		cin >> select;

		switch (select){
		case 1:            //1、添加联系人
			addPerson(&abs);  //利用地址传递可以修饰形参
			break;
		case 2:            //2、显示联系人
			showPerson(&abs);
			break;
		case 3:            //3、删除联系人
		/**
		{
			cout << "请输入删除联系人姓名 : " << endl;
			string name;
			cin >> name;

			if (isExist(&abs, name) == -1){
				cout << " 查无此人" << endl;
			}else{		
				cout << "找到此人" << endl;
			}
		}
		*/

		deletePerson(&abs);

			break;
		case 4:            //4、查找联系人
			break;
		case 5:            //5、修改联系人
			break;
		case 6:            //6、清空联系人
			break;
		case 0:            //0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
			break;
		default:
			break;
		}
	}

	system("pause");

}

现在添加了一名联系人

删除成功:

是不是真的删除成功(当前记录为空):

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章