【C++】通信录管理系统

“1.添加联系人”
“2.显示联系人”
“3.删除联系人”
“4.查找联系人”
“5.修改联系人”
“6.清空联系人”
“7.退出通信录”

#include<iostream>
#include<string>
#define Max 1000
using  namespace std;

//联系人结构体
struct Person
{
    //姓名
	string   H_Name;
	//性别
	int H_Sex;//采用整形为防止输入出男性女性外的词
	//年龄
	int H_age;
	//手机号
	string H_phone;
	//家庭住址
	string H_addr;                  
};

//通信录结构体
struct AdressBook
{
	//通讯录中保存的联系人数组
	struct Person personArray[Max];
	
	//通讯录中保存的联系人个数
	int H_size;
};
//1.添加联系人
void addPerson(AdressBook *abs) {
	//判断通讯录是否加满
	if (abs->H_size == 1000) {
		cout << "通讯录已满" << endl;
		return;
	}
	else {
		//添加具体联系人
		//姓名
		string name;
		cout << "输入姓名" << endl;
		cin >> name;
		abs->personArray[abs->H_size].H_Name = name;

		//性别
		cout << "输入性别" << endl;
		cout << "1----男" << endl;
		cout << "2----女" << endl;
		int sex = 0;
		while (true)
		{
			cin >> sex;//如果输入1或2可以退出循环
			if (sex == 1 || sex == 2) {
				abs->personArray[abs->H_size].H_Sex = sex;
				break;
			}
			cout << "输入错误" << endl;
		}

		//年龄
		cout << "输入年龄" << endl;
		int age = 0;
		cin >> age;
		abs->personArray[abs->H_size].H_age = age;

		//电话
		cout << "输入联系电话" << endl;
		string phone;
		cin >> phone;
		abs->personArray[abs->H_size].H_phone = phone;

		//住址
		cout << "输入家庭住址" << endl;
		string address;
		cin >> address;
		abs->personArray[abs->H_size].H_addr = address;

		//更新通信录人数
		abs->H_size++;
		cout << "添加成功" << endl;
		system("pause");
		system("cls");
	}
}

//2.显示联系人
void showPerson(AdressBook *abs){
	//判断通讯录人数是否为0
	if (abs->H_size == 0) {
		cout << "当前记录为空" <<endl;
	}
	else {
		for (int i = 0; i < abs->H_size; i++)
		{
			cout << "姓名:  " << abs->personArray[i].H_Name << "\t";
			cout << "性别:  " <<( abs->personArray[i].H_Sex ==1?"男":"女") << "\t";
			cout << "年龄:  " << abs->personArray[i].H_age << "\t";
			cout << "电话:  " << abs->personArray[i].H_phone << "\t";
			cout << "家庭地址:  " << abs->personArray[i].H_addr << endl;
		}
	}
	system("pause");
	system("cls");
}

//检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1
//参数一:通讯录 参数二:对比人名,进行判断
int isExit(AdressBook* abs,string name) {
	for (int i = 0; i < abs->H_size; i++) {
		if (abs->personArray[i].H_Name == name) {
			return i;
		}
	}
	return -1;//如果未找到,返回-1
}

//3.删除指定联系人
void deletePerson(AdressBook *abs) {
	cout << "输入需要删除联系人" << endl;
	string name;
	cin >> name;
	//right=-1:未查到联系人
	int right=isExit(abs, name);//删除人名,让其后面的数组做前移操作,并让通信录中的记录人员减1即可
	if (right != -1) {
		for (int i = right; i < abs->H_size; i++) {
			abs->personArray[i] = abs->personArray[i + 1];//数据前移
		}
		abs->H_size--;//更新人员数
		cout << "删除成功" << endl;
	}
	else
	{
		cout << "查无此人" << endl;
	}
	system("pause");
	system("cls");
}

//4.查找联系人
void findPerson(AdressBook* abs) {
	cout << "输入要查找的联系人" << endl;
	string name;
	cin >> name;
  //判断联系人是否存在
	int right = isExit(abs, name);
	if (right != -1) {
		cout << "找到联系人" << endl;
		cout << "姓名:  " << abs->personArray[right].H_Name << "/t";
		cout << "性别:  " << (abs->personArray[right].H_Sex == 1 ? "男" : "女") << "\t";
		cout << "年龄:  " << abs->personArray[right].H_age << "\t";
		cout << "电话:  " << abs->personArray[right].H_phone << "\t";
		cout << "家庭地址:  " << abs->personArray[right].H_addr << endl;
	}
	else
	{
		cout << "查无此人" << endl;
	}

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

//5.修改指定联系人信息
void changePerson(AdressBook *abs) {
	cout << "输入联系人" << endl;
	string name;
	cin >> name;
	int right=isExit(abs, name);
	if (right!=-1)//联系人存在
	{
		string name;//姓名
		cout << "请输入姓名" << endl;
		cin >> name;
		abs->personArray[right].H_Name = name;

		cout << "请输入性别" << endl;//性别
		cout << "1-----男" << endl;
		cout << "2-----女" << endl;
		int  sex;
		while (true)
		{
			cin >> sex;
			if (sex == 1 || sex == 2) {
				abs->personArray[right].H_Sex = sex;//输入正确,退出循环
				break;
			}
			cout << "输入错误,请重新输入" << endl;
		}
		
		int age;//年龄
		cout << "请输入年龄" << endl;
		cin >> age;
		abs->personArray[right].H_age = age;

		string phone;//电话
		cout << "请输入电话" << endl;
		cin >> phone;
		abs->personArray[right].H_phone = phone;

		string address;//家庭住址
		cout << "请输入家庭住址" << endl;
		cin >> address;
		abs->personArray[right].H_addr = address;

		cout << "修改成功" << endl;
	}
	else
	{
		cout << "查无此人" << endl;
	}

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

//6.清空联系人
void cleanPerson(AdressBook* abs) {
	int set = 0;
	cout << "确认清空-----按1" << endl;
	cin >> set;
	if (set == 1) {
		abs->H_size = 0;//将当前记录的联系人数量记为0;达到清空目的
		cout << "通信录已清空" << endl;
	}
	system("pause");
	system("cls");
}
//菜单界面显示
void showmenu() {
	cout << "1.添加联系人" << endl;
	cout << "2.显示联系人" << endl;
	cout << "3.删除联系人" << endl;
	cout << "4.查找联系人" << endl;
	cout << "5.修改联系人" << endl;
	cout << "6.清空联系人" << endl;
	cout << "7.退出通信录" << endl;

}
int main() {
	//创建通讯录结构体变量
	AdressBook abs;
	abs.H_size = 0;

	int  select = 0;//创建用户选择输入
	while (true)
	{
		showmenu();
		cin >> select;
		switch (select)
		{
		case 1: //添加联系人
			addPerson(&abs);
			break;
		case 2: //显示联系人
			showPerson(&abs);
			break;
		case 3://删除联系人
			deletePerson(&abs);
		///*{
		//	cout << "请输入删除联系人姓名" << endl;
		//string name;
		//cin >> name;
		//if (isExit(&abs, name) == -1) {
		//	cout << "查无此人" << endl;
		//}
		//else {
		//	cout << "找到了" << endl;
		//}*/
		//}
			break;
		case 4://查找联系人
			findPerson(&abs);
			break;
		case 5://修改联系人
			changePerson(&abs);
			break;
		case 6://清空联系人
			cleanPerson(&abs);
			break;
		case 7://退出通信录
			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
			break;
		default:
			break;
		}
	}
	system("pause");
	return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢唱跳有错吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值