B站黑马c++学习笔记 —— 通讯录案例

通讯录案例

1.1 add.h

1.2 add.cpp

1.3 通讯录.cpp

B站黑马c++学习笔记 —— 通讯录案例

1.1 add.h

#include<iostream>
#include<string>
using namespace std;

struct person {
	string name;
	string sex;
	int age;
	string tele;
	string addr;
};

void title();
void print2(int a);
void search(bool * a);
void con(bool * a, bool * b);
void clean(struct person per_arr[], int * num_add);
void print(struct person per_arr[], int * num_add);
void add_per(struct person per_arr[],int * num_add);
void seek(struct person per_arr[], int * num_add, bool * a);
void delet(struct person per_arr[], int * num_add, bool * a);
void revise(struct person per_arr[], int * num_add, bool * a);

1.2 add.cpp

#include"add.h"

//添加联系人
void add_per(struct person per_arr[],int * num_add) {
	cout << "输入联系人的名字:" << endl;
	cin >> per_arr[(*num_add)].name;
	cout << "输入联系人的电话:" << endl;
	cin >> per_arr[(*num_add)].tele;
	(*num_add)++;
}

//功能表
void title() {
	system("cls");
	cout << endl;
	cout << "\t*****************" << endl;
	cout << "\t添加联系人 —— 1" << endl;
	cout << "\t显示联系人 —— 2" << endl;
	cout << "\t删除联系人 —— 3" << endl;
	cout << "\t查找联系人 —— 4" << endl;
	cout << "\t修改联系人 —— 5" << endl;
	cout << "\t清空联系人 —— 6" << endl;
	cout << "\t退出通讯录 —— 7" << endl;
	cout << "\t*****************" << endl;
	cout << endl;
}

//打印通讯录
void print(struct person per_arr[], int * num_add) {
	for (int i = 0; i < (*num_add); i++) {
		cout << "\n\t序号:" << i + 1 << "\t名字:" << per_arr[i].name << "\t电话:" << per_arr[i].tele << endl;
	}
}


//查找联系人
void seek(struct person per_arr[], int * num_add, bool * a) {
	struct person temp[1];
	cin >> temp[0].name;
	for (int i = 0; i < (*num_add); i++) {
		if (temp[0].name == per_arr[i].name) {
			cout << "查询到此人:" << "\n\n\t名字:" << per_arr[i].name << "\t电话:" << per_arr[i].tele << endl;
			(*a) = false;
		}
	}
}

//修改联系人
void revise(struct person per_arr[], int * num_add, bool * a) {
	struct person temp[1];
	cin >> temp[0].name;
	for (int i = 0; i < (*num_add); i++) {
		if (temp[0].name == per_arr[i].name) {
			cout << "查询到此人,联系人信息如下:\n\n\t" << "名字:" << per_arr[i].name << "\t电话:" << per_arr[i].tele << endl;
			cout << "\n输入联系人新的电话号码:" << endl;
			cin >> per_arr[i].tele;
			cout << "\n修改成功" << endl;
			(*a) = false;
		}
	}
}

//删除联系人
void delet(struct person per_arr[], int * num_add, bool * a) {
	struct person temp[1];
	cin >> temp[0].name;
	for (int i = 0; i < (*num_add); i++) {
		if (temp[0].name == per_arr[i].name) {
			for (int j = i; j < (*num_add); j++) {
				per_arr[j] = per_arr[j + 1];
			}
			(*num_add)--;
			(*a) = false;
			cout << "删除成功!!!" << endl;
		}
	}
}

//未查询反馈
void search(bool * a) {
	while ((*a)) {
		cout << "未查询到此人" << endl;
		system("pause");
		break;
	}
}

//继续操作
void con(bool * a, bool * b) {
	string select = "n";//清空使用
	cin >> select;
	if (select == "y") {
		cout << "\n请继续" << endl;
		(*a) = true;
	}
	else {
		(*b) = false;
	}
}

//清空通讯录
void clean(struct person per_arr[], int * num_add) {
	string select = "n";//清空使用
	struct person temp[1];
	cin >> select;
	if (select == "y") {
		for (int i = 0; i < (*num_add); i++) {
			per_arr[i] = temp[0];
		}
		(*num_add) = 0;
		cout << endl << "成功清空通讯录!!!" << endl;
	}
	else {
		cout << endl << "已取消" << endl;
	}
}

//打印输出
void print2(int a) {
	switch (a)
	{
		case 1:
		cout << "\n是否继续添加联系人,继续添加请输入 y ,返回菜单请按任意键继续 ..." << endl;
		break;
		
		case 3:
		cout << "\n是否继续删除联系人,继续删除请输入 y ,返回菜单请按任意键继续 ..." << endl;
		break;

		case 4:
		cout << "\n是否继续查找联系人,继续查找请输入 y ,返回菜单请按任意键继续 ..." << endl;
		break;
		
		case 5:
		cout << "\n是否继续修改联系人,继续修改请输入 y ,返回菜单请按任意键继续 ..." << endl;
		break;

		case 6:
		cout << "是否清空通讯录,确认请输入 y ,退出请按任意键继续 ..." << endl;
		break;
	}
}

1.3 通讯录.cpp

#include"add.h"

int num_add = 0;

int main() {
	bool b = true;//判断是否循环
	struct person per_arr[1000];
	struct person temp[1];//删除使用

	while (b) {
		title();
		bool a = true;//判断是否查询到此人
		string select = "n";//清空使用
		int fun = 0;//功能选择

		cout << "请选择功能:" << endl;
		cin >> fun;
		cout << endl;

		switch (fun) {

			case 1://添加联系人
				while (b) {
					if (num_add <= 1000) {
						add_per(per_arr, &num_add);
					}
					print2(1);
					con(&a, &b);
				}
				b = true;
				break;

			case 2://显示联系人
				cout << "联系人列表:" << endl;
				print(per_arr, &num_add);
				cout << endl;
				system("pause");
				break;
				
			case 3://删除联系人
				while (b) {
					cout << "输入要删除联系人的姓名:" << endl;
					delet(per_arr, &num_add, &a);
					search(&a);
					print2(3);
					con(&a, &b);
				}
				b = true;
				break;

			case 4://查找联系人
				while (b) {
					cout << "输入要查找联系人的姓名:" << endl;
					seek(per_arr, &num_add, &a);
					search(&a);
					print2(4);
					con(&a,&b);
				}
				b = true;
				break;

			case 5://修改联系人
				while (b) {
					cout << "输入要修改联系人的姓名:" << endl;
					revise(per_arr, &num_add, &a);
					search(&a);
					print2(5);
					con(&a, &b);
				}
				b = true;
				break;

			case 6://清空联系人
				print2(6);
				clean(per_arr, &num_add);
				system("pause");
				break;

			case 7://退出通讯录
				b = false;
				break;

			default:
				cout << "没有此项功能\n" << endl;
				system("pause");
				break;
			}
	}
	system("pause");
	return 0;
}
上一篇:python分页查询数据处理方法


下一篇:B. Long Number--读题的重要性--Codeforces Round #555 (Div. 3)