使用C++编写通讯录管理系统

注:源码在文末链接领取

一.题目介绍:

通讯录是一个可以记录亲人,好友信息的工具

本文主要利用C++来实现一个通讯录管理系统

需要完成的功能如下:

1.添加联系人:向通讯录中添加联系人,信息包括(姓名,性别,年龄,联系电话,家庭住址),最多包括1000人。

2.显示联系人:显示通讯录中所有联系人信息。

3.删除联系人:按照姓名进行删除指定联系人。

4.查找联系人:按照姓名查看指定联系人信息。

5.修改联系人:按照姓名重新修改指定联系人的某个或多个信息。

6.清空联系人:清空通讯录中所有信息。

7.更换联系人:按照姓名更换指定联系人的所有信息。

8.退出通讯录。

二.功能实现:

1.定义结构体

#include<iostream>
#include<string>

using namespace std;

#define MAX 1000//最大人数

//联系人结构体
struct contact
{
	string name;
	string sex;
	int age;
	long long phone;
	string address;
};

//通讯录结构体
struct Contacts
{
	contact people[MAX];
	int number;
};

2.显示菜单界面

void showmenu()
{
	cout << "\t\t\t" << "***********************" << "\n"
		 << "\t\t\t" << "***** " << "1.添加联系人" << "*****" << "\n"
		 << "\t\t\t" << "***** " << "2.显示联系人" << "*****" << "\n"
		 << "\t\t\t" << "***** " << "3.删除联系人" << "*****" << "\n"
		 << "\t\t\t" << "***** " << "4.查找联系人" << "*****" << "\n"
		 << "\t\t\t" << "***** " << "5.修改联系人" << "*****" << "\n"
		 << "\t\t\t" << "***** " << "6.清空联系人" << "*****" << "\n"
		 << "\t\t\t" << "***** " << "7.更换联系人" << "*****" << "\n"
		 << "\t\t\t" << "***** " << "0.推出通讯录" << "*****" << "\n"
		 << "\t\t\t" << "***********************" << endl;
	
}

3.添加联系人

void addcontact(Contacts * per)
{
	char flag = 'Y';
	//判断人数是否大于1000,超过一千不再添加
	if (per->number == MAX) 
	{
		cout << "通讯录已满,不能继续添加!" << endl;
		return;
	}
	else
	{
		while (flag=='Y')
		{

			//1.添加姓名
			string name;
			cout << "请输入姓名:" << endl;
			cin >> name;
			per->people[per->number].name = name;

			//2.添加性别
			int i = 0;
			string sex;
			cout << "请输入性别:" << endl;
			while (i == 0)
			{
				cin >> sex;
				if (sex != "男" && sex != "女") {
					cout << "输入有误,请重新输入!" << endl;
					continue;
				}
				per->people[per->number].sex = sex;
				i = 1;
			}
			//3.添加年龄
			int j = 0;
			int age;
			cout << "请输入年龄:" << endl;
			while (j == 0)
			{
				//超过int取值范围会出bug
				cin >> age;
				if(age<=0||age>120)
				{
					cout << "输入有误,请重新输入!" << endl;
					continue;
				}
				per->people[per->number].age = age;
				j = 1;
			}

			//4.添加电话
			int m = 0;
			long long phone;
			cout << "请输入电话号码:" << endl;
			while (m == 0)
			{
				cin >> phone;
				if (phone < 10000000000 || phone>99999999999)
				{
					cout << "输入有误,请重新输入!" << endl;
					continue;
				}
				per->people[per->number].phone = phone;
				m = 1;
			}

			//5.添加地址
			string address;
			cout << "请输入所住地址:" << endl;
			cin >> address;
			per->people[per->number].address = address;

			//更新通讯录
			per->number++;
			cout << "更新成功!" << endl;
			system("pause");
			system("cls");

			//继续输入下一个
			FLAG1:
			cout << "是否继续输入下一个?(Y或N)" << endl;
			cin >> flag;
			if (flag == 'Y') {
				system("cls");
				continue;
			}
			else if (flag == 'N'){
				system("cls");
				break;
			}
			else
			{
				cout << "输入有误,请重新输入!" << endl;
				system("cls");
				goto FLAG1;
			}
		}
	}

}

4.检测联系人是否存在

//如果存在返回联系人具体位置
//若不存在返回-1
int existcontact(Contacts* pee, string name)
{
	for (int i = 0; i < pee->number; i++)
	{
		if (pee->people[i].name == name)
		{
			//找到了,返回此人所在数组下标
			return i;
		}
	}
	//遍历整个数组,未找到
	return -1;
}

5.显示所有联系人

void showcontact(Contacts* peo)
{
	//判断通讯录中人数是否为0
	if (peo->number == 0)
	{
		cout << "当前记录为空!" << endl;
	}
	else
	{
	for (int i = 0; i < peo->number; i++)
	{
		cout << "姓名:" << peo->people[i].name << " "
			<< "性别:" << peo->people[i].sex << " "
			<< "年龄:" << peo->people[i].age << " "
			<< "电话:" << peo->people[i].phone << " "
			<< "地址:" << peo->people[i].address << endl;
	}
	cout << "所有记录的联系人输出完毕!" << endl;
	}
	system("pause");
	system("cls");
}

6.删除联系人

void delcontact(Contacts* pel)
{
	cout << "请输入删除联系人姓名:" << endl;
	string name;
	cin >> name;
	if (existcontact(pel, name) == -1)
	{
		cout << "查无此人!" << endl;
		system("pause");
		system("cls");
	}
	else
	{
		cout << "成功找到此人!" << endl;

		for (int i = existcontact(pel, name); i < pel->number; i++)
		{
			//数据前移
			pel->people[i] = pel->people[i + 1];
		}

		pel->number--;//更新人员数
		cout << "删除成功!" << endl;

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

7.查找联系人

void findcontact(Contacts* pem)
{
	string name;
	cout << "请输入所要查找的联系人姓名:" << endl;
	cin >> name;
	int i = existcontact(pem, name);
	if (i == -1)
	{
		cout << "查无此人!" << endl;
		system("pause");
		system("cls");
	}
	else
	{
		cout << "成功找到此人!" << endl;

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

		cout << "姓名:" << pem->people[i].name << " "
			<< "性别:" << pem->people[i].sex << " "
			<< "年龄:" << pem->people[i].age << " "
			<< "电话:" << pem->people[i].phone << " "
			<< "地址:" << pem->people[i].address << endl;

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

8.清空联系人

void reset(Contacts* pec)
{
	cout << "是否确定清空联系人?" << endl;
	cout << "确定(请输入1)" << endl;
	cout << "不确定(请输入其他数字)" << endl;
	cout << "请输入你的选择:" << " ";
	int sel = 0;
	cin >> sel;
	if (sel == 1) 
	{
		cout << "确定清空!" << endl;
		pec->number = 0;
	    cout << "通讯录已清空!" << endl;
	}
	else
	{
		cout << "我选择不清空!" << endl;
	}
	system("pause");
	system("cls");
}

9.更换联系人

void replacement(Contacts* pef)
{
	string name1;
	cout << "请输入所要更换的联系人姓名:" << " ";
	cin >> name1;
	int k = existcontact(pef, name1);
	if (k == -1)
	{
		cout << "查无此人!" << endl;
		system("pause");
		system("cls");
	}
	else
	{
		cout << "成功找到此人!" << endl;

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

		cout << "姓名:" << pef->people[k].name << " "
			<< "性别:" << pef->people[k].sex << " "
			<< "年龄:" << pef->people[k].age << " "
			<< "电话:" << pef->people[k].phone << " "
			<< "地址:" << pef->people[k].address << endl;
		
		//修改姓名
		string name2;
		cout << "请输入修改后联系人的姓名:" << " ";
		cin >> name2;
		pef->people[k].name = name2;

		//修改性别
		int i = 0;
		string sex;
		cout << "请输入性别:" << endl;
		while (i == 0)
		{
			cin >> sex;
			if (sex != "男" && sex != "女")
			{
				cout << "输入有误,请重新输入!" << endl;
				continue;
			}
			pef->people[k].sex = sex;
			i = 1;
		}


		//修改年龄
		int j = 0;
		int age;
		cout << "请输入年龄:" << endl;
		while (j == 0)
		{
			cin >> age;
			if (age <= 0 || age > 120)
			{
				cout << "输入有误,请重新输入!" << endl;
				continue;
			}
			pef->people[k].age = age;
			j = 1;
		}


		//修改电话
		int m = 0;
		long long phone;
		cout << "请输入电话号码:" << endl;
		while (m == 0)
		{
			cin >> phone;
			if (phone < 10000000000 || phone>99999999999)
			{
				cout << "输入有误,请重新输入!" << endl;
				continue;
			}
			pef->people[k].phone = phone;
			m = 1;
		}


		//修改地址
		string address;
		cout << "请输入所住地址:" << endl;
		cin >> address;
		pef->people[k].address = address;
	}
	cout << "姓名:" << pef->people[k].name << " "
		<< "性别:" << pef->people[k].sex << " "
		<< "年龄:" << pef->people[k].age << " "
		<< "电话:" << pef->people[k].phone << " "
		<< "地址:" << pef->people[k].address << endl;
	system("pause");
	system("cls");
}

10.主函数编写

int main()
{
	Contacts peo;
	peo.number = 0;

	int select = 0;
	FLAG2:
	while(true){

	showmenu();
	cout << "请输入指令:" << endl;
	cin >> select;

	system("cls");//清屏

	switch (select)
	{
	case 1://1.添加联系人
		addcontact(&peo);
		break;
	case 2://2.显示联系人
		showcontact(&peo);
		break;
	case 3://3.删除联系人
		delcontact(&peo);
		break;
	case 4://4.查找联系人
		findcontact(&peo);
		break;
	case 5://5. 修改联系人
		revisecontact(&peo);
		break;
	case 6://6.清空联系人
		reset(&peo);
		break;
	case 7://7.更换联系人
		replacement(&peo);
		break;
	case 0://退出系统
		cout << "您已经退出该系统,欢迎下次使用!" << endl;
		system("pause");
		return 0;
	default:
		cout << "输入有误,请重新输入!" << endl;
		goto FLAG2;
	};
	}
}

三.源码领取:

Gitee链接:

study.c: 学习 (gitee.com)

四.谢谢观看。
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值