使用C++实现超简单的通讯录管理系统

分析:

通讯录里边有联系人姓名,年龄,手机号,地址等,这些都要用结构体来创建。因此,在头文件之后便要创建联系人结构体。
另外,还需要有一个通讯录结构体,来记录联系人数量以及规定联系人上限。
简单的功能:添加联系人,显示联系人,删除联系人,查找联系人,修改联系人,清空联系人,退出系统。(限于笔者水平,系统不够完整,在这里笔者就抛砖引玉了。)

注意:

本代码没有对数据进行限制。比如 电话号码的位数。
笔者很懒,直接用 string 带过。

上代码:

#include<iostream>
#include<string>
using namespace std;
//定义常量:
#define MAX 500
//显示界面:
void showMeun()
{
	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 name;//名字
	int age;//年龄
	string gender;//性别
	string tel;//电话
	string addr;//地址
};
//创建通讯录结构体
struct Telep
{
	Person personArray[MAX];//给联系人提供一个上限数量。
	int personNum;//记录通讯录人数。
};
//添加:
void creat(struct Telep *init)
{
	if (init->personNum >= 1000)
	{
		cout << "满员了!" << endl;
		return;
	}
	else
	{
		cout << "请输入姓名:" << endl;
		string name1;
		cin >> name1;
		int age1;
		cout << "请输入年龄:" << endl;
		cin >> age1;
		string sex;
		cout << "请输入性别:" << endl;
		cout << " 男/女 " << endl;
		cin >> sex;
		string phone;
		cout << "请输入电话:" << endl;
		cin >> phone;
		string add1;
		cout << "请输入地址:" << endl;
		cin >> add1;
		Person exam = { name1,age1,sex,phone,add1 };
		init->personArray[init->personNum] = exam;
		cout << "添加成功!" << endl;
		init->personNum++;
		system("pause");//给自己反应时间。
		system("cls");//清屏操作。
	}
}
//输出:
void printfP(struct Telep *init)
{
	if (init->personNum == 0)
	{
		cout << "您的通讯录中未添加任何数据,请添加后再执行本次操作,谢谢您的配合!" << endl;
		return;
	}
	else
	{
		for (int i = 0; i < init->personNum; i++)
		{
			cout << "姓名:" << init->personArray[i].name << " 性别:" << init->personArray[i].gender <<
				" 年龄:" << init->personArray[i].age << " 手机号码:" << init->personArray[i].tel <<
				" 地址:" << init->personArray[i].addr << endl;
		}
	}
}
//删除:
int found(Telep*init, string name)
{
	int i;
	for (i = 0; i < init->personNum; i++)
	{
		if (name == init->personArray[i].name)
		{
			return i;
		}
	}
	return -1;
}
void deleteArr(Telep* init)
{
	string name2;
	cout << "请输入需要删除的联系人的名字:";
	cin >> name2;
	int ret = found(init, name2);
	if(ret==-1)
	{
		cout << "查无此人!" << endl;
		system("pause");
		system("cls");
		return;
	}
	else//物理删除:
		//将某个数据后面的数据前移一位即可。
	{
		for (int i = ret; i < init->personNum; i++)
		{
			init->personArray[i] = init->personArray[i + 1];//从被删除项开始,后一项覆盖前一项数据。
		}
		init->personNum--;
		cout << "删除成功!" << endl;
		system("pause");
		system("cls");
	}
}
void foundPrintf(Telep*init)
{
	cout << "请输入需要查询的名字:" << endl;
	string name3;
	cin >> name3;
	int ret1 = found(init, name3);
	if (ret1 == -1)
	{
		cout << "查无此人!" << endl;
		system("pause");
		system("cls");
		return;
	}
	else
	{
		cout << "姓名:" << init->personArray[ret1].name << " 性别:" << init->personArray[ret1].gender <<
			" 年龄:" << init->personArray[ret1].age << " 手机号码:" << init->personArray[ret1].tel <<
			" 地址:" << init->personArray[ret1].addr << endl;
		system("pause");
		system("cls");
		return;
	}
}
void change(Telep* init)
{
	string name4;
	cout << "请输入您需要修改信息的联系人的名字:" << endl;
	cin >> name4;
	int ret2 = found(init, name4);
	if (ret2 == -1)
	{
		cout << "查无此人!" << endl;
		system("pause");
		system("cls");
		return;
	}
	else
	{
		cout << "信息如下:" << endl;
		cout << "姓名:" << init->personArray[ret2].name << " 性别:" << init->personArray[ret2].gender <<
			" 年龄:" << init->personArray[ret2].age << " 手机号码:" << init->personArray[ret2].tel <<
			" 地址:" << init->personArray[ret2].addr << endl;
		cout << "修改:" << endl;
		cout << "请输入修改后姓名:" << endl;
		string name5;
		cin >> name5;
		int age2;
		cout << "请输入修改后年龄:" << endl;
		cin >> age2;
		string sex;
		cout << "请输入修改后性别:" << endl;
		cout << " 男/女 " << endl;
		cin >> sex;
		string phone;
		cout << "请输入修改后电话:" << endl;
		cin >> phone;
		string add1;
		cout << "请输入修改后地址:" << endl;
		cin >> add1;
		Person exam = { name5,age2,sex,phone,add1 };
		init->personArray[ret2] = exam;
		cout << "修改完毕!" << endl;
	}
}
void clear(Telep* init)
{
	cout << "确定要清空吗?千万别删库跑路啊!" << "\t";
	cout << "确定请按1,取消按0" << endl;
	int b;
	cin >> b;
	if (b == 1)
	{
		init->personNum = 0;
		cout << "清除完毕!" << endl;
		system("pause");
		system("cls");
	}
	else if(b == 0)
	{
		system("pause");
		system("cls");
		return;
	}
}
int main()
{
	Telep init;//创建通讯录变量
	init.personNum = 0;//将通讯录人数初始化为0
	int a;//接受按键,执行switch。
	while (true)
	{
		showMeun();
		cin >> a;
		switch (a)
		{
		case 1://添加:
			creat(&init);
			break;
		case 2://显示:
		{
			printfP(&init);
			system("pause");//给自己反应时间。
			system("cls");//清屏操作。
		}
			break;
		case 3://删除:
			deleteArr(&init);
			break;
		case 4://查找:
			foundPrintf(&init);
			break;
		case 5://修改:
			change(&init);
			system("pause");
			system("cls");
			break;
		case 6://清空:
			clear(&init);
			break;
		case 0://退出:
			cout << "感谢使用通讯录管理系统,期待下一次再会!" << endl;
			system("pause");
			return 0;
			break;
		}
	}
}

文章多有不足,欢迎大家批评指针。

程序由学习黑马程序员视频写出,内含个人理解,可能一些细节地方不能照顾到。

越努力越幸运 加油!!!

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值