目录

一. 实现添加联系人效果

1.1 大致步骤:

1. 创建联系人结构体(Person结构体)

2. 创建通讯录结构体(Addressbooks结构体)

3. main函数中创建通讯录

3.1  在switch函数用指针abs链接Preson结构体

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

4.1 添加各种内容

4.1.1 姓名:

4.1.2 性别:

4. 1.3 年龄:

4. 1.4 电话:

4.1.5 学校信息:

4.2 填充封装信息:

5. 测试并完善添加联系人功能

二. 结合昨日代码进行汇总(可运行)


一. 实现添加联系人效果

1.1 大致步骤:
 

1. 设计联系人结构体
2. 设计通讯录结构体
3. main函数中创建通讯录
4. 封装添加联系人函数
5. 测试添加联系人功能

1. 创建联系人结构体(Person结构体)

Person结构体内层(相较于Addressbooks结构体而言)

struct Person
{
	string n_Name;
	int m_Sex;//性别【男1,女2】
	int m_Age;
	string m_Phone;
	string m_QQ;
	string m_School;
};

注意结构体中【定义各量】

2. 创建通讯录结构体(Addressbooks结构体

//2. 设计通讯录结构体【上限是1000人,方便后续维护】
#define MAX 1000
//通讯录结构体
struct Addressbooks
{
	struct Person personArray[MAX];//通讯录中保存的联系人数组
		int m_Size;//通讯录中人员个数
};

细读结构体Addressbooks代码学习:【结构体如何嵌套】,【结构体如何定义】

3. main函数中创建通讯录


//【放在main函数主体里面】
	Addressbooks abs;
	//初始化通讯录中当前人员个数
	abs.m_Size = 0;//初始化通讯录中人员个数为0

学习【如何调用结构体】

3.1  在switch函数用指针abs链接Preson结构体

switch函数中部分代码

		case 1:						//添加联系人
			addPerson(&abs);//要使用地址传递(可以修饰实参)  (因为值传递修饰不了数据)
			break;

主函数内完整代码

int main()
{
	int select = 0;
	

	Addressbooks abs;	//初始化通讯录中当前人员个数
	abs.m_Size = 0;//初始化通讯录中人员个数为0

	while (true)
	{
		showMenu();
		cin >> select;
		switch (select)
		{
		case 1:						//添加联系人
			addPerson(&abs);//要使用地址传递(可以修饰实参)  (因为值传递修饰不了数据)
			break;
		case 2://显示联系人
			break;
		case 3://删除联系人
			break;
		case 4://查找联系人
			break;
		case 5://修改联系人
			break;
		case 6://清空联系人
			break;
		case 0://退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");
			break;
		default:
			break;
		}
	}

	return 0;
}

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

//1.添加联系人
void addPerson()
{
	//添加后续内容
}

定义函数(将需要添加的各个内容都写到函数体里,方便后续使用)

4.1 添加各种内容

//姓名://性别://年龄://电话://学校信息:

4.1.1 姓名:
		string name;
		cout << "请输入您的姓名" << endl;
		cin >> name;
		abs->personArray[abs->m_Size].n_Name = name;
4.1.2 性别:

:性别这一栏比较特殊(填1或2判断男女)

		//性别:
		int sex;
		cout << "请输入性别(男:1;女:2)" << endl;
		while (true)
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				abs->personArray[abs->m_Size].m_Sex = sex;
				break;
			}
			cout << "请重新输入:" << endl;			
		}

注: 学习【嵌套使用函数(在输出有误时如何重启函数)

4. 1.3 年龄:
		//年龄:
		cout << "请输入年龄:" << endl;
		int age;
		cin >> age;
		abs->personArray[abs->m_Size].m_Age = age;
4. 1.4 电话:
/电话:
		cout << "请输入您的电话号码:" << endl;
		string phone;
		cin >> phone;
		abs->personArray[abs->m_Size].m_Phone = phone;
4.1.5 学校信息:
		//学校信息:
		cout << "请输入学校名称:" << endl;
		string school;
		cin >> school;
		abs->personArray[abs->m_Size].m_School = school;

4.2 填充封装信息:

将各种内容填充到定义函数addPerson

//1.添加联系人
void addPerson(Addressbooks* abs)
{

		//姓名:
		string name;
		cout << "请输入您的姓名" << endl;
		cin >> name;
		abs->personArray[abs->m_Size].n_Name = name;
		//添加具体联系人
		//添加姓名,性别,年龄,电话..

		//性别:
		int sex;
		cout << "请输入性别(男:1;女:2)" << endl;
		while (true)
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				abs->personArray[abs->m_Size].m_Sex = sex;
				break;
			}
			cout << "请重新输入:" << endl;			
		}

		//年龄:
		cout << "请输入年龄:" << endl;
		int age;
		cin >> age;
		abs->personArray[abs->m_Size].m_Age = age;

		//电话:
		cout << "请输入您的电话号码:" << endl;
		string phone;
		cin >> phone;
		abs->personArray[abs->m_Size].m_Phone = phone;

		//学校信息:
		cout << "请输入学校名称:" << endl;
		string school;
		cin >> school;
		abs->personArray[abs->m_Size].m_School = school;

}

注意:【函数创建使用的指针】,【函数体的调用与指针】

4.2.1 补充函数addPerson的一些功能

  为了方便后期维护,需要设置最大存储用户数量

  使用if_else语句来实现此操作:

//判断通讯录是否已满,如果已满就不再添加
if (abs->m_Size == MAX)
{
	cout << "通讯录已满,无法添加" << endl;
	return;
}
else
{
//...上述部部分代码
}

    扩充完整:

//1.添加联系人
void addPerson(Addressbooks* abs)
{
	//判断通讯录是否已满,如果已满就不再添加
	if (abs->m_Size == MAX)
	{
		cout << "通讯录已满,无法添加" << endl;
		return;
	}
	else
	{
		//姓名:
		string name;
		cout << "请输入您的姓名" << endl;
		cin >> name;
		abs->personArray[abs->m_Size].n_Name = name;
		//添加具体联系人
		//添加姓名,性别,年龄,电话..

		//性别:
		int sex;
		cout << "请输入性别(男:1;女:2)" << endl;
		while (true)
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				abs->personArray[abs->m_Size].m_Sex = sex;
				break;
			}
			cout << "请重新输入:" << endl;			
		}

		//年龄:
		cout << "请输入年龄:" << endl;
		int age;
		cin >> age;
		abs->personArray[abs->m_Size].m_Age = age;

		//电话:
		cout << "请输入您的电话号码:" << endl;
		string phone;
		cin >> phone;
		abs->personArray[abs->m_Size].m_Phone = phone;

		//学校信息:
		cout << "请输入学校名称:" << endl;
		string school;
		cin >> school;
		abs->personArray[abs->m_Size].m_School = school;

	}
}

5. 测试并完善添加联系人功能

经过测试发现不能循环添加联系人,添加新的代码(添加到addPerson函数中):

		//更新通讯录里的数据【保存通讯录输入信息】
		abs->m_Size++;//【执行数据更新操作】
		cout << "数据添加成功" << endl;
		system("pause");//【请按任意键继续】
		system("cls");//清屏操作

添加后代码:

//1.添加联系人
void addPerson(Addressbooks* abs)
{
	//判断通讯录是否已满,如果已满就不再添加
	if (abs->m_Size == MAX)
	{
		cout << "通讯录已满,无法添加" << endl;
		return;
	}
	else
	{
		//姓名:
		string name;
		cout << "请输入您的姓名" << endl;
		cin >> name;
		abs->personArray[abs->m_Size].n_Name = name;
		//添加具体联系人
		//添加姓名,性别,年龄,电话..

		//性别:
		int sex;
		cout << "请输入性别(男:1;女:2)" << endl;
		while (true)
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				abs->personArray[abs->m_Size].m_Sex = sex;
				break;
			}
			cout << "请重新输入:" << endl;			
		}

		//年龄:
		cout << "请输入年龄:" << endl;
		int age;
		cin >> age;
		abs->personArray[abs->m_Size].m_Age = age;

		//电话:
		cout << "请输入您的电话号码:" << endl;
		string phone;
		cin >> phone;
		abs->personArray[abs->m_Size].m_Phone = phone;

		//学校信息:
		cout << "请输入学校名称:" << endl;
		string school;
		cin >> school;
		abs->personArray[abs->m_Size].m_School = school;

		//更新通讯录里的数据【保存通讯录输入信息】
		abs->m_Size++;//【执行数据更新操作】
		cout << "数据添加成功" << endl;
		system("pause");//【请按任意键继续】
		system("cls");//清屏操作
	}
}

二. 结合昨日代码进行汇总(可运行)

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

void showMenu()
{
	cout << "        菜单:           " << endl;
	cout << "**********************" << endl;
	cout << "*****1.添加联系人*****" << endl;
	cout << "*****2.显示联系人*****" << endl;
	cout << "*****3.删除联系人*****" << endl;
	cout << "*****4.查找联系人*****" << endl;
	cout << "*****5.修改联系人*****" << endl;
	cout << "*****6.清空联系人*****" << endl;
	cout << "*****0.退出通讯录*****" << endl;
	cout << "**********************" << endl;
}

struct Person
{
	string n_Name;
	int m_Sex;//性别【男1,女2】
	int m_Age;
	string m_Phone;
	string m_School;
};

#define MAX 1000
struct Addressbooks
{
	struct Person personArray[MAX];//通讯录中保存的联系人数组
	int m_Size;//通讯录中人员个数
};

//1.添加联系人
void addPerson(Addressbooks* abs)
{
	//判断通讯录是否已满,如果已满就不再添加
	if (abs->m_Size == MAX)
	{
		cout << "通讯录已满,无法添加" << endl;
		return;
	}
	else
	{
		//姓名:
		string name;
		cout << "请输入您的姓名" << endl;
		cin >> name;
		abs->personArray[abs->m_Size].n_Name = name;
		//添加具体联系人
		//添加姓名,性别,年龄,电话..

		//性别:
		int sex;
		cout << "请输入性别(男:1;女:2)" << endl;
		while (true)
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				abs->personArray[abs->m_Size].m_Sex = sex;
				break;
			}
			cout << "请重新输入:" << endl;			
		}

		//年龄:
		cout << "请输入年龄:" << endl;
		int age;
		cin >> age;
		abs->personArray[abs->m_Size].m_Age = age;

		//电话:
		cout << "请输入您的电话号码:" << endl;
		string phone;
		cin >> phone;
		abs->personArray[abs->m_Size].m_Phone = phone;

		//学校信息:
		cout << "请输入学校名称:" << endl;
		string school;
		cin >> school;
		abs->personArray[abs->m_Size].m_School = school;

		//更新通讯录里的数据【保存通讯录输入信息】
		abs->m_Size++;//【执行数据更新操作】
		cout << "数据添加成功" << endl;
		system("pause");//【请按任意键继续】
		system("cls");//清屏操作
	}
}



int main()
{
	int select = 0;
	

	Addressbooks abs;	//初始化通讯录中当前人员个数
	abs.m_Size = 0;//初始化通讯录中人员个数为0

	while (true)
	{
		showMenu();
		cin >> select;
		switch (select)
		{
		case 1:						//添加联系人
			addPerson(&abs);//要使用地址传递(可以修饰实参)  (因为值传递修饰不了数据)
			break;
		case 2://显示联系人
			break;
		case 3://删除联系人
			break;
		case 4://查找联系人
			break;
		case 5://修改联系人
			break;
		case 6://清空联系人
			break;
		case 0://退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");
			break;
		default:
			break;
		}
	}

	return 0;
}

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐