C++入门day07(通讯录)

2023-11-02

[C++语句真的好长啊,Python确实更简洁。老师带着我们理解逻辑,所以用的是面条版]

通讯录管理系统

系统需求
通讯录是一个可以记录亲人、好友信息的工具。
系统中需要实现的功能如下:

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

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

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

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

修改联系人:按照姓名重新修改指定联系人

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

退出通讯录:退出当前使用的通讯录
#include <iostream>
#include <string>
#define MAX 1000
using namespace std;

// 设计联系人结构体
struct Person
{
	string m_Name;
	int m_Sex;
	int m_Age;
	string m_Phone;
	string m_Addr;
};

// 设计通讯录结构体
struct Addressbooks
{
	// 通讯录中保存的联系人数组
	struct Person personArray[MAX];
	// 通讯录中当前记录联系人个数
	int m_Size; 
};

// 显示所有联系人
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;
		}
	}
	system("pause");
	system("cls");
} 
// 菜单界面
void showMenu()
{
	cout<<"*************************"<<endl;
	cout<<"***** 1、添加联系人 *****"<<endl;
	cout<<"***** 2、显示联系人 *****"<<endl;
	cout<<"***** 3、删除联系人 *****"<<endl;
	cout<<"***** 4、查找联系人 *****"<<endl;
	cout<<"***** 5、修改联系人 *****"<<endl;
	cout<<"***** 6、清空联系人 *****"<<endl;
	cout<<"***** 0、退出通讯录 *****"<<endl;
	cout<<"*************************"<<endl;
} 

// 添加联系人
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;
		
		cout<<"请输入性别:"<<endl;
		cout<<"1 -- 男"<<endl;
		cout<<"2 -- 女"<<endl;
		int sex = 0;
		
		while(true)
		{
			cin>>sex;
			if(sex==1|| sex==2)
			{
				abs->personArray[abs->m_Size].m_Sex = sex;
				break;
			}
			cout<<"输入有误,请重新输入"<<endl;
		}
		
		cout<<"请输入年龄:"<<endl;
		int age = 0;
		cin>>age;
		abs->personArray[abs->m_Size].m_Age = age;
		
		cout<<"请输入联系电话:"<<endl;
		string phone;
		cin>>phone;
		abs->personArray[abs->m_Size].m_Phone = phone;
		
		cout<<"请输入家庭住址:"<<endl;
		string address;
		cin>>address;
		abs->personArray[abs->m_Size].m_Addr = address;
		
		// 更新通讯录人数
		abs->m_Size++;
		cout<<"添加成功"<<endl; 
		system("pause");
		system("cls");  // 清屏 
	}
} 

// 检测;联系人是否存在,如果存在就显示具体位置,不存在就返回-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 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");
} 

// 查找指定联系人信息
void findPerson(Addressbooks * abs)
{
	cout<<"请输入您要查找的联系人"<<endl;
	string name;
	cin>>name;
	int ret=isExist(abs,name);
	
	if(ret!=-1)
	{
		cout<<"姓名:"<<abs->personArray[ret].m_Name<<"\t";
		cout<<"性别:"<<(abs->personArray[ret].m_Sex == 1?"男":"女")<<"\t";
		cout<<"年龄:"<<abs->personArray[ret].m_Age<<"\t";
		cout<<"电话:"<<abs->personArray[ret].m_Phone<<"\t";
		cout<<"住址:"<<abs->personArray[ret].m_Addr<<endl;
	}
	else
	{
		cout<<"查无此人"<<endl;
	}	
	system("pause");
	system("cls");
} 


// 修改指定联系人信息
void modifyPerson(Addressbooks * abs)
{
	cout<<"请输入您要修改的联系人"<<endl;
	string name;
	cin>>name;
	
	int ret = isExist(abs, name);
	if (ret!=-1)
	{
		string name;
		cout<<"请输入姓名:"<<endl;
		cin>>name;
		abs->personArray[ret].m_Name = name;
		
		cout<<"请输入性别:"<<endl;
		cout<<"1 -- 男"<<endl;
		cout<<"2 -- 女"<<endl;
		int sex = 0;
		
		while(true)
		{
			cin>>sex;
			if(sex==1|| sex==2)
			{
				abs->personArray[ret].m_Sex = sex;
				break;
			}
			cout<<"输入有误,请重新输入"<<endl;
		}
		
		cout<<"请输入年龄:"<<endl;
		int age = 0;
		cin>>age;
		abs->personArray[ret].m_Age = age;
		
		cout<<"请输入联系电话:"<<endl;
		string phone;
		cin>>phone;
		abs->personArray[ret].m_Phone = phone;
		
		cout<<"请输入家庭住址:"<<endl;
		string address;
		cin>>address;
		abs->personArray[ret].m_Addr = address;
		

		cout<<"修改成功"<<endl; 
	}
	else
	{
		cout<<"查无此人"<<endl; 
	} 
	system("pause");
	system("cls");  
}

// 清空联系人
void cleanPerson(Addressbooks * abs)
{
	abs->m_Size=0;
	cout<<"通讯录已清空"<<endl;
	system("pause");
	system("cls");
} 

 
int main()
{
	// 创建通讯录结构体变量
	Addressbooks abs;
	// 初始化通讯录中当前人员个数
	abs.m_Size = 0;
	
	 
	int select = 0;
	showMenu();
	
	while (true)
	{
		cin>>select;
		switch(select)
		{
			case 1:
				addPerson(&abs);
				break;
			case 2:
				showPerson(&abs);
				break;
			case 3:
				deletePerson(&abs);
				break;
			case 4:
				findPerson(&abs);
				break;
			case 5:
				modifyPerson(&abs);
				break;
			case 6:
				cleanPerson(&abs);
				break;
			case 0:
				cout<<"欢迎下次使用"<<endl;
				system("pause");
				return 0;
				break;
			default:
				break;
		}
	}
	
	system("pause");
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++入门day07(通讯录) 的相关文章

随机推荐

  • unity--01 个人实践安装与搭建环境

    首先按照网络上的去访问http www unity3d com 但 查找资料 应该访问https unity cn unity分为个人免费版和企业商用收费版 不过我点击下载的时候 并没有发现网络上所说要选择 个人版 压根没这个选项 试试看吧
  • 计算机二级C语言笔记(持续更新)

    C语言二级 第一章 1 1 1 1 1 C程序 程序 连续执行的一条条指令集合 机器语言 由0和1代码够成的二级制指令 源程序 高级语言编写的程序 目标程序 由二级制代码表示的程序 可执行程序 可以直接在操作系统上运行的程序 源程序 c 编
  • Java API

    目录 1 API 1 1API概述 2 String类 2 1String类概述 2 2String类的特点 2 3 String是什么 可以做什么 2 4String是不可变字符串的原因 2 5String类的构造方法 2 6字符串的比较
  • GreenPlum on K8s

    https pgconf in files presentations 2019 01 0103 Greenplum for Kubernetes PGConf India 2019 pdf About the Greenplum Oper
  • React 函数组件中使用hooks中得useState

    useState让函数组件有state 状态 并进行数据的读写操作 1 import React useState from react 引入useState 在函数中使用 const count setCount useState 0 数
  • RabbitMQ 同样的操作一次成功一次失败

    RabbitMQ 是一个功能强大的消息队列系统 广泛应用于分布式系统中 然而 我遇到这样的情况 执行同样的操作 一次成功 一次失败 在本篇博文中 我将探讨这个问题的原因 并提供解决方法 我是在表导出的时候发现的这个问题 因为我的某个设置的值
  • 影像维修工程师专项技能培训

    最近遇到很多咨询的人员都在对医疗行业产生疑惑 新闻报道说很多医院 公司的领导都被查 这样会不会影响设备维修方面 对后期找工作等有没有影响 总不能学好了技术却没有发挥的余地 最近确实是国家整体在对医疗方面做整改 7月21日 国家卫生健康委会同
  • 可重入函数与不可重入函数介绍

    不可重入函数的定义 在实时系统的设计中 经常会出现多个任务调用同一个函数的情况 如果有一个函数不幸被设计成为这样 那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据 从而导致不可预料的后果 这样的函数是不安全的函数 也叫不可重入函
  • python collections.OrderedDict() 用法

    Python中的字典对象可以以 键 值 的方式存取数据 OrderedDict是它的一个子类 实现了对字典对象中元素的排序 注意 OrderedDict的 Key 会按照插入的顺序排列 不是Key本身排序 比如下面比较了两种方式的不同 im
  • 使用HBuilderX将vue或H5项目打包app

    好久没有搞过将vue项目打包成app了 这两天刚好项目需要将vue开发的H5项目打包成APP 那就简单记录一次呗 之前也写过一篇打包app 是将项目使用hbuilder打开 转为webapp什么的 就可以直接打包了 现在不一样了 现在使用H
  • wstring 未定义的标识符,include

    wstring str L abcd VS2010提示 wstring未定义的标识符 include
  • 消息队列 RocketMQ:(九)消息重试

    文章目录 消息队列 RocketMQ 一 概述 消息队列 RocketMQ 二 系统架构 消息队列 RocketMQ 三 发送普通消息 三种方式 消息队列 RocketMQ 四 顺序消息 消息队列 RocketMQ 五 延时消息 消息队列
  • 聚类算法应用场景实例十则

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 基于用户位置信息的商业选址 随着信息技术的快速发展 移动设备和移动互联网已经普及到千家万户 在用户使用移动网络时 会自然的留下用户的位置信息 随着近年来GIS地理信息技
  • vue3 webpack打包流程及安装 (1)

    npm run build 也可以打包 如果没有特殊需求 可以使用 效果其实是差不多的 webpack网址 起步 webpack 中文文档 docschina org 报错 跟着安装报错 后来查了才知道 是因为 webpack 版本有问题
  • 多相机坐标转换_使用KITTI数据集实现坐标转换

    本文的主要内容 是讨论如何将KITTI激光雷达的点云数据 映射到图像中去 KITTI数据集是怎么采集的 下面这幅图是车的俯视图 可以看到 用到了2个彩色相机 2个灰度相机 1个激光雷达 1个GPS IMU 图1 KITTI车俯视图 KITT
  • UiBot RPA:电商决胜双11的秘密武器

    近年来 中国网络零售市场规模持续扩大 数据显示 2019年前三季度 全国网上零售额73237亿元 同比增长16 8 其中 实物商品网上零售额57777亿元 增长20 5 占社会消费品零售总额比重的19 5 然而 在规模增长的同时 中国网购交
  • 关于图像处理中的卷积运算——sobel边缘检测

    一 卷积的概念以及计算 1 一维卷积 在泛函分析中 卷积是通过两个函数 f 和 g 生成第三个函数的数学运算 表征函数 f 和经过翻转 平移的g 的乘积函数围成的曲边梯形的面积 连续函数卷积 设 f x g x 是 R 上两个可积函数 作积
  • 查询和设置服务器最小最大内存

    exec sp configure show advanced option 1 reconfigure exec sp configure max server memory MB 显示服务器最大内存 exec sp configure
  • 2021年浙大考研计算机专业录取分数线,浙江大学2021年计算机考研拟录取数据分析...

    导语 中公浙江研招网提醒大家关注浙江专业解析 浙江大学2021年计算机考研拟录取数据分析 浙江大学计算机科学与技术399分的分数线堪称恐怖 这仅仅是进入复试的条件 复试录取比一般要求不低于1 2 1 也就是说 必然会有400分以上的高分考生
  • C++入门day07(通讯录)

    C 语句真的好长啊 Python确实更简洁 老师带着我们理解逻辑 所以用的是面条版 通讯录管理系统 系统需求 通讯录是一个可以记录亲人 好友信息的工具 系统中需要实现的功能如下 添加联系人 向通讯录中添加新人 信息包括 姓名 性别 年龄 联