C++学习笔记之-C++实现通讯管理系统


前言

最近在学习C++,跟着黑马程序员实现了一个通讯管理系统

一、功能

通过0~6个按键数字实现以下功能:

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

二、实现步骤

  1. 设计联系人结构体(姓名,年龄,性别,联系电话,家庭住址);
  2. 设计通讯录结构体(联系人,联系人所在位置)
  3. 封装功能函数:
    添加:需要判断通讯录列表是否已满;
    显示: 需要判断查找的联系人的位置,以及是否在通讯录中;
    删除:同样需要判断删除的联系人是否在通讯录中,和在通讯录中的位置,删除后,后面的通讯录信息需要前移;
    查找:
    修改:
    清空:将通讯录长度设置为0;
    **退出:**system(“pause”);

三、代码

/*
   通讯管理系统
   功能:
     1、添加联系人;
	 2、显示联系人;
	 3、删除联系人;
	 4、查找联系人;
	 5、修改联系人;
	 6、清空联系人
	 7、退出;
*/
#include"iostream"
#include"string"
#define MaxSize 1000
#define true 1
using namespace std;

//define connect struct
struct Connect
{
	string C_Name;
    int C_sex;
    int C_age;
	string C_Phone;
	string C_add;
};
struct ConnectPorson
{
	struct Connect Arr[MaxSize];
	int size=0;
};
//显示菜单
void ShowMuen();
void AddConnect(ConnectPorson *arr);
void ShowConnect(ConnectPorson* arr);
void DelConnect(ConnectPorson* arr);
void FindConnect(ConnectPorson* arr);
int isExist(ConnectPorson* arr, string name);
void ModifyConnect(ConnectPorson* arr);
void ClearConnect(ConnectPorson* arr);
int main(void)
{
	ConnectPorson arr;
	while (true)
	{
		ShowMuen();
		int select;
		cin >>select;
		
		switch (select)
		{
		case 1:
			AddConnect(&arr);
			break;
			//添加联系人
		case 2:
			ShowConnect(&arr);
			显示联系人
			break;
		case 3:
			DelConnect(&arr);//delect a connect
			break;
		case 4:
			//search a connect
			FindConnect(&arr);
			break;
		case 5:
			ModifyConnect(&arr);
			break;
			//modify a connect
		case 6:
			//clear all connects
			ClearConnect(&arr);
			break;
		case 0:
			cout << "欢迎下次使用!";
			system("pause");
		    return 0;
			//exit

		}
		
	}
	return 0;
}

void ShowMuen() 
{
	cout << "1、添加联系人" << endl;
	cout << "2、显示联系人" << endl;
	cout << "3、删除联系人" << endl;
	cout << "4、查找联系人" << endl;
	cout << "5、修改联系人" << endl;
	cout << "6、清空联系人" << endl;
	cout << "0、退出通讯录" << endl;
	
}
//添加联系人:姓名,性别,年龄,联系电话,家庭住址
void AddConnect(ConnectPorson* arr)
{
	if (arr->size==MaxSize)
	{
		cout<< "通讯录已满,无法添加"<< endl;
		return;
	}
	else
	{
		cout << "请输入姓名:";
		cin >> arr->Arr[arr->size].C_Name;
		cout << "请输入性别(1-男,2-女):";
		while (true)
		{
			cin >> arr->Arr[arr->size].C_sex;
			if (arr->Arr[arr->size].C_sex == 1 || arr->Arr[arr->size].C_sex == 2)
			{
				break;
			}
			cout << "输入无效请重新输入:"<<endl;
		}

		cout << "请输入年龄(0~180):";
		while (true)
		{
			cin >> arr->Arr[arr->size].C_age;
			if (arr->Arr[arr->size].C_age>0 && arr->Arr[arr->size].C_age < 150)
			{
				break;
			}
			cout << "输入无效请重新输入" << endl;
		}
		
		cout << "请输入电话:";
		cin >> arr->Arr[arr->size].C_Phone;
		cout << "请输入家庭住址:";
		cin >> arr->Arr[arr->size].C_add;
		arr->size++;
		cout << "信息录入成功!\n";
	}
	
	

}
void ShowConnect(ConnectPorson* arr)
{
	if (arr->size == 0)
	{
		cout << "当前记录为空" << endl;
		return;
	}
	else
	{
		for (int i=0;i<arr->size;i++)
		{
			cout << "姓名:";
			cout<< arr->Arr[i].C_Name << endl;
			cout << "性别:" << (arr->Arr[i].C_sex==1?"男":"女") << "\n";
			cout << "年龄:" << arr->Arr[i].C_age << "\n";
			cout << "联系电话:"<< arr->Arr[i].C_Phone <<"\n";
			cout<<"家庭住址:"<< arr->Arr[i].C_add <<"\n";
		}
	}
}
//检测联系人是否存在,存在返回位置,不存在返回-1
int isExist(ConnectPorson* arr,string name)
{
	for (int i = 0; i < arr->size; i++)
	{
		if (arr->Arr[arr->size].C_Name == name)
			return i;
	}
	return -1;
}
//删除指定的联系人
void DelConnect(ConnectPorson* arr)
{
	string name;
	cout << "请输入需要删除联系人的名称:\n";
	cin >> name;
	int m = 0;
	m=isExist(arr, name);
	if (m == -1)
	{
		cout << "此人不在通讯录中,删除失败!" << endl;
		system("pause");
		system("clk");
	}	
	else
	{
		for (int i = m; i < arr->size-1; i--)
		{
			arr->Arr[m] = arr->Arr[m + 1];
		}
		arr->size = arr->size - 1;
		cout << "删除成功!" << endl;
		system("pause");
		system("clk");
	}
}
void FindConnect(ConnectPorson* arr)
{
	string FName;
	cout << "请输入搜索联系人的姓名:";
	cin >> FName;
	int m = 0;
	m = isExist(arr, FName);
	if (m == -1)
	{
		cout << "此人不在通讯录中" << endl;
		system("pause");
		system("clk");
	}
	else
	{
		cout << "姓名:" << arr->Arr[ m].C_Name << "\t";
		cout << "性别:" << (arr->Arr[m].C_sex == 1 ? "男" : "女") << "\t";
		cout << "年龄:" << arr->Arr[m].C_age << "\t";
		cout << "联系电话:" << arr->Arr[m].C_Phone << "\t";
		cout << "家庭住址:" << arr->Arr[m].C_add << "\n";
	}


}
//修改联系人信息 
void ModifyConnect(ConnectPorson* arr)
{
	string FName;
	cout << "请输入联系人的姓名:";
	cin >> FName;
	int m = 0;
	m = isExist(arr, FName);
	if (m == -1)
	{
		cout << "此人不在通讯录中" << endl;
		system("pause");
		system("clk");
	}
	else
	{
		cout << "姓名:" ;
		cin >> arr->Arr[m].C_Name; 
		cout << "性别:"  << "\ n";
		cin >> arr->Arr[m].C_sex;
		cout << "年龄:" << "\n";
		cin >> arr->Arr[m].C_age;
		cout << "联系电话:" << "\n";
		cin >> arr->Arr[m].C_Phone;
		cout << "家庭住址:" << "\n";
		cin >> arr->Arr[m].C_add;
		system("pause");
		system("clk");
	}
}
//清除联系人
void ClearConnect(ConnectPorson* arr)
{
	arr->size = 0;
	cout << "清除成功!"<<"\n"; 
	system("pause");
	system("clk");
}

总结

这是一个简单的通讯管理系统,但是其实有很多地方都不太到位。
比如在实际通讯录中可以只设置联系人姓名,其它信息不必要补充,在这个通讯录中不行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值