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");

}

現在添加了一名聯繫人

刪除成功:

是不是真的刪除成功(當前記錄爲空):

 

 

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