当前位置: 首页 > news >正文

c++通讯录管理系统

在这里插入图片描述

结构体1,知识点(结构体),存放人员详情,名字,性别,年龄等

struct person
{
string m_name;
int m_sex;
int m_age;
string m_phone;
string m_addr;
};

结构体2,知识点 (结构体数组),存放人员数量和人员数组

struct addressbooks
{
struct person personarray[MAX];
int m_size;
};

上面两个结构体存放我们的数据,我们基于这两个结构体操作

菜单界面,用于输入提示

void showMenu()
{
	cout << "*****1.添加联系人*****" << endl;
	cout << "*****2.显示联系人*****" << endl;
	cout << "*****3.删除联系人*****" << endl;
	cout << "*****4.查找联系人*****" << endl;
	cout << "*****5.修改联系人*****" << endl;
	cout << "*****6.清空联系人*****" << endl;
	cout << "*****7.退出通讯录*****" << endl;
}

主函数循环测试输入并跳转函数

知识点,cin输入,switch选择

在这里插入图片描述

增删改查之添加

判断人数是否满,满了直接退出

人数没有满通过结构体2抽象出人员表进行添加操作

知识点->结构体指针访问 .结构体访问

a->b[人员数量].具体参数

完了之后人员数要+1防止数据覆盖

void addperson(addressbooks *abs)
{
	if(abs->m_size==MAX)
	{
		cout <<"通讯录已满,不能再添加!" <<endl;
		return;
	}
	else
	{
		//姓名输入
		string name;
		cout << "请输入姓名"<< endl;
		cin >>name;
		abs->personarray[abs->m_size].m_name=name;
		//性别输入
		int sex=0;
		cout << "请输入性别"<< endl;
		cout << "输入1为男"<< endl;
		cout << "输入2为女"<< endl;
		while (true)
		{
        cin >> sex;
		if(sex==1||sex==2)
		{
		abs->personarray[abs->m_size].m_sex=sex;
		break;
		}
		else
		{
		cout <<"输入错误,请重新输入" << endl;
		break;		
		}

		}
		
		//年龄输入
		int age=0;
		cout << "请输入年龄"<< endl;
		cin >>age;
		if( age>=0 && age<=150 )
		abs->personarray[abs->m_size].m_age=age;
		else
        cout << "你不是地球人"<< endl;

		//电话输入
		string phone;
		cout << "请输你的电话号码"<< endl;
		cin >> phone;
		abs->personarray[abs->m_size].m_phone=phone;

		//地址输入
		string address;
		cout << "请输你的住址"<< endl;
		cin >> address;
		abs->personarray[abs->m_size].m_addr=address;

		//更新通讯录人数
		abs->m_size++;

		cout << "添加成功" << endl;
		system("pause");
        system("cls");		
	}
}

增删改查之删除

输入字符串通过isExist查找返回结构体数组下标

然后把结构体数组地址全部前移

人员总数减去1

isExist函数本体在下面

//删除指定联系人
void deletePerson(addressbooks *abs)
{

	cout << "请输入您要删除的联系人"  << endl;
	string name;
	cin >> name;
	int ret =isExist(abs,name);
	if(ret!=-1)
	{
		for(int i=ret;i<abs->m_size;i++)
		{
			abs->personarray[i]=abs->personarray[i+1];
		}
		abs->m_size--;//更新人员数
		cout << "删除成功" << endl;
	}
	else
	{
		cout << "查无此人" << endl;
	}
	system("pause");
	system("cls");

}

isExist函数本体

遍历数组,对照结构体1的名字成员,返回下标

int isExist(addressbooks * abs,string name)
{
	for(int i=0; i <abs->m_size; i++)
	{
		if(abs->personarray[i].m_name==name)
		{
			return i;
		}
	}
	return -1;
}

增删改查之修改(看源码理解,没有新知识点)

void revampPerson(addressbooks* abs)
{
cout << "请输入您要修改的联系人"  << endl;
string name;
cin >> name;
int ret =isExist(abs,name);
if(ret!=-1)
{       
	    cout <<"新名字修改为"<< endl;
	    string new_name;
        cin >> new_name;
		abs->personarray[ret].m_name=new_name;

	    cout <<"性别修改为"<< endl;
		int new_sex;
        cin >> new_sex;
		abs->personarray[ret].m_sex=new_sex;

	    cout <<"年龄修改为"<< endl;
		int new_age;
        cin >> new_age;
		abs->personarray[ret].m_age=new_age;

	    cout <<"家庭住址修改为"<< endl;
		string new_addr;
        cin >> new_addr;
		abs->personarray[ret].m_addr=new_addr;

	    cout <<"电话修改为"<< endl;
		string new_phone;
        cin >> new_phone;
		abs->personarray[ret].m_phone=new_phone;		
}
else
{
		cout << "查无此人" << endl;
}
	    system("pause");
	    system("cls");
}

增删改查之总体查询(看源码理解,没有新知识点)

void showPerson(addressbooks * abs)
{
	if(abs->m_size==0)
	{
	 cout << "记录为空" << endl;
	}	
	else
		for(int i=0;i<abs->m_size;i++)
		{
			cout <<"姓名"<<abs->personarray[i].m_name<<"\t";
			cout <<"性别"<<(abs->personarray[i].m_sex==1 ? "男":"女")<<"\t";
			cout <<"年龄"<<abs->personarray[i].m_age<<"\t";
			cout <<"电话"<<abs->personarray[i].m_phone<<"\t";
			cout <<"住址"<<abs->personarray[i].m_addr<<endl;
			cout<<endl;
			cout<<endl;
		}
		system("pause");
		system("cls");
}

增删改查之单独查询(看源码理解,没有新知识点)

void findPerson(addressbooks* abs)
{
	string name;
	cout <<"请输入你要查找的联系人名字"<<endl;
	cin >> name;
    int ret =isExist(abs,name);
    if(ret!=-1)
	{
		cout<<"名字 : "<<abs->personarray[ret].m_name<<"\t";
		cout<<"年龄 : "<<abs->personarray[ret].m_age<<"\t";
		cout<<"住址 : "<<abs->personarray[ret].m_addr<<"\t";
		cout<<"电话 : "<<abs->personarray[ret].m_phone<<"\t";
		cout<<"性别 : "<<(abs->personarray[ret].m_sex==1?"男":"女")<<endl;
	}
else
{
	 cout << "查无此人" << endl;
}
	 system("pause");
	 system("cls");

}

学习记录,源码评论区获取

相关文章:

  • jvm系列(1)--JVM和Java体系架构
  • 线程池ThreadPoolExecutor源码解析
  • 如何减少频繁创建数据库连接的性能损耗?
  • WebSocket长连接接入支付宝消息服务,实现消息通知
  • 数组常用方法总结 (6) :includes / indexOf / lastIndexOf / valueOf / toString / isArray
  • 系统分析师案例必备知识点汇总---2023系列文章一
  • java springboot 项目构建报错解决办法
  • SMT32串口使用中断 和使用 RTOS的对比
  • 【MySQL进阶教程】MySQL管理
  • 狗厂的N+1+2毕业,我觉得还是挺良心的
  • SAP ABAP——SAP包(一)【包概要简述及创建】
  • 【Redis】Redis实现分布式锁
  • 普通土万象
  • 蛇形矩阵(简单明了的方法)
  • linux环境安装mysql5.7版本
  • Vue过滤器
  • linux系统中利用QT实现串口通信的方法
  • ESP32蓝牙+EC11旋转编码器实现对电脑音量控制
  • 57 mac 中 SIGINFO 信号, jdk8 支持, 但是 jdk9 不支持?
  • 【Linux】在Linux上写一个进度条小程序
  • “今日海上”对话“今日维也纳”,东西方艺术在上海碰撞
  • 贵州赤水被指“整改复耕”存形式主义,当地部署耕地流出整改“回头看”
  • 韩国对华中厚板征收临时反倾销税
  • 百台新车首秀上海车展,跨国车企联手中国技术开启智能化下半场
  • 北京顺义:做好潮白河大桥事故善后处置,举一反三排查风险
  • 最高法典型案例:学生在校受伤,学校并非必然担责