通讯录c++基础版

这是一个使用C++编写的简易通讯录管理程序,包括添加、显示、删除、查找和修改联系人功能。程序定义了`person`结构体来存储联系人信息,并通过`addressbooks`结构体管理通讯录。用户可以交互式地操作通讯录,系统还提供了清屏和暂停功能。
摘要由CSDN通过智能技术生成
#include<iostream>
#include<string>

using namespace std;
//输出菜单函数
void printf()
{
	cout << "****************" << endl;
	cout << "*1.添加联系人***" << endl;
	cout << "*2.显示联系人***" << endl;
	cout << "*3.删除联系人***" << endl;
	cout << "*4.查找联系人***" << endl;
	cout << "*5.修改联系人***" << endl;
	cout << "*6.清空联系人***" << endl;
	cout << "*7.***退出******" << endl;
	cout << "****************" << endl;
    //liguoxian.com
}

struct person//联系人结构体
{
	string m_name;
	int m_phone;
	int m_age;
	int m_sex;
	string m_addr;
    //武汉华夏理工学院
};
#define max 1000
struct addressbooks//通讯录结构体
{
	struct person addressarr[max];
	int m_size;
};


//功能1函数(添加联系人)
void addperson(struct addressbooks* abs)
{
	//判断通讯录是否已满
	if (abs->m_size==max)
	{
		cout << "抱歉通讯录已满" << endl;
		return;
	}
	else {
		string name;
		cout << "请输入姓名" << endl;
		cin >> name;
		abs->addressarr[abs->m_size].m_name = name;

		int sex;
		cout << "请输入性别" << endl;
		cout << "1-------男" << endl << "2-------女";
		while (true)
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				abs->addressarr[abs->m_size].m_sex = sex;
				break;
			}
			cout << "输入有误请重新输入" << endl;
		}

		int age;
		cout << "请输入年龄" << endl;
		cin >> age;
		abs->addressarr[abs->m_size].m_age = age;

		int phone;
		cout << "请输入电话号码" << endl;
		cin >> phone;
		abs->addressarr[abs->m_size].m_phone = phone;

		string addr;
		cout << "请输入联系人地址" << endl;
		cin >> addr;
		abs->addressarr[abs->m_size].m_addr = addr;
		abs->m_size++;
		cout << "恭喜您录入成功" << endl;
		system("pause");//请按任意键继续 
		system("cls");//清屏
	}
}

//展示通讯录函数
void showperson(struct addressbooks* abs)
{

	if (abs->m_size == 0)
	{
		cout << "联系人名单为空" << endl;
	}
	else
	{
		for (int i = 0; i < abs->m_size; i++)
		{
			cout <<"名字" << abs->addressarr[i].m_name << endl;
			cout <<"性别" << abs->addressarr[i].m_sex << endl;
			cout << "年龄" << abs->addressarr[i].m_age << endl;
			cout << "电话号码" << abs->addressarr[i].m_phone << endl;
			cout << "家庭住址" << abs->addressarr[i].m_addr << endl;
		}
	}
	system("pause");//请按任意键继续 
	system("cls");//清屏
}

//联系人是否存在如果存在返回联系人数组下标编号,不存在返回-1;
int isexist(addressbooks* abs,string name)//参数1通讯录,参数2对比的名字
{
	for (int i = 0; i < abs->m_size; i++)
	{
		if (abs->addressarr[i].m_name == name)
		{
			return i;
            //计算机1212班
		}
	}
	return -1;
}

//删除联系人函数封装
void delet(addressbooks* abs)
{
	cout << "请输入您要删除的联系人姓名" << endl;
	string name;
    cin >> name;
	int ren=isexist(abs, name);
	if (ren == -1)
	cout << "查无此人" << endl;
	else
	{
		for (int i = ren; i < abs->m_size; i++)
		{
			abs->addressarr[i] = abs->addressarr[i+1];
		}
		abs->m_size--;
		cout << "删除成功" << endl;
	}
	system("pause");
	system("cls");
}

//查找联系人函数
void find(addressbooks* abs)
{
	cout << "输入您要查找的联系人" << endl;
	string name;
	cin >> name;
	//判断联系人是否存在
	   if (isexist(abs, name) == -1)
		cout << "查无此人" << endl;
	   else
	   {
		  
		   cout <<"名字:" << abs->addressarr->m_name << "\t";
		   cout <<"性别:" << abs->addressarr->m_sex << "\t";
		   cout <<"年龄:" << abs->addressarr->m_age << "\t";
		   cout <<"电话:" << abs->addressarr->m_phone << "\t";
		   cout <<"住址:" << abs->addressarr->m_addr << endl;
	   }
	   system("pause");
	   system("cls");
}

//修改联系人函数
void change(addressbooks* abs)
{
	cout << "请输入您要修改的联系人" << endl;
	string name;
	cin >> name;
	int ren = isexist(abs, name);
	if (ren == -1)
		cout << "查无此人" << endl;
	else
	{
		string name;
		cout << "请输入姓名" << endl;
		cin >> name;
		abs->addressarr[ren].m_name = name;

		int age;
		cout << "请输入年龄" << endl;
		cin >> age;
		abs->addressarr[ren].m_age = age;

		int phone;
		cout << "请输入电话号码" << endl;
		cin >> phone;
		abs->addressarr[ren].m_phone = phone;

		string addr;
		cout << "请输入联系人地址" << endl;
		cin >> addr;
		abs->addressarr[ren].m_addr = addr;

		int sex;
		cout<<"请输入性别"<<endl; 
		while (true)
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				abs->addressarr[ren].m_sex = sex;
				break;
			}
			cout << "输入有误请重新输入" << endl;
		}
	}
	system("pause");
	system("cls");
}

void clear(addressbooks*abs)
{
	abs->m_size = 0;
	cout << "联系人以清空" << endl;
	system("pause");
	system("cls");
}

int main()
{

	struct addressbooks abs;
	abs.m_size = 0;
	while (true)
	{
		printf();
		int a = 0;
		cin >> a;
		switch (a) {
		case 1:     addperson(&abs);                               //添加联系人
			break;

		case 2:           showperson(&abs);                         //显示联系人 
			break;

		case 3:                      //删除联系人
			delet(&abs);
		//{cout << "请输入您要删除的联系人姓名" << endl;
		//string name;
		//cin >> name;
		//if (isexist(&abs, name) == -1)
		//	cout << "查无此人" << endl;
		//else
		//	cout << "找到此人" << endl;
		//}
			break;

		case 4:                                    //查找联系人
			find(&abs);
			break;

		case 5:                                    //修改联系人
			change(&abs);
			break;

		case 6:                                    //清空联系人
			clear(&abs);
			break;

		case 0:                                   //返回
			cout << "欢迎下次使用" << endl;
			system("pause");
			return 0;
			break;

		default:
			break;
		}
	}
	system("pause");
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值