C++小作业——简单通讯录设计

2023-11-04

界面展示:

1,菜单界面

2,添加联系人

选择按钮1。

 3,显示联系人

选择按钮2,会显示当前通讯录里面的所有联系人信息 

#include<iostream>
using namespace std;
#include<string>

//设置最大容量
#define MAXSIZE 300


//联系人结构体
struct person {
	string name;
	string gender;
	int age;
	string tlenumber;
	string address;

};
通讯录结构体
struct comsys {
	struct person p_arry[MAXSIZE];
	int length;

};



//主函数
int main(void) {
	//初始化结构体数组
	comsys com;
	com.length = 0;


	//函数声明
	void showMenu();
	void  addPerson(comsys * p);
	void showPerson(comsys * p);
	void printInfoN(comsys * p, int n);
	void printInfoI(comsys * p, int i);
	int locatePerson(comsys * p, string name, string number);
	void serchPerson(comsys * p);
	void deletePerson(comsys * p);
	void modifyPerson(comsys * p);
	void clearPerson(comsys * p);



	//函数调用
	while (true) {
		showMenu();
		int select = 0;
		cin >> select;
		switch (select)
		{
		case 1://添加
			addPerson(&com);
			system("pause");
			system("cls");
			break;
		case 2://显示
			showPerson(&com);
			system("pause");
			system("cls");
			break;
		case 3://删除
			deletePerson(&com);


			system("pause");
			system("cls");
			break;
		case 4://查找
			serchPerson(&com);
				


			system("pause");
			system("cls");
			break;
		case 5://修改
			modifyPerson(&com);



			system("pause");
			system("cls");
			break;
		case 6://清空
			clearPerson(&com);



			system("pause");
			system("cls");
			break;

		case 0://退出
			cout << "欢迎使用,再见!" << endl;
			return 0;
			break;
		default:
			break;
		}
	}

	system("pause");
	return 0;
}

//菜单显示函数
void showMenu() {
	cout << "***********************" << endl;
	cout << "*        通讯录       *    " << endl;
	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(comsys *p) {
	string name;
	string gender;
	int age;
	string telnumber;
	string address;
	cout << "添加姓名:" << endl;
	cin >> name;
	p->p_arry[p->length].name = name;
	cout << "添加性别:" << endl;
	cin >> gender;
	p->p_arry[p->length].gender = gender;
	cout << "添加年龄:" << endl;
	cin >> age;
	p->p_arry[p->length].age = age;
	cout << "添加号码:" << endl;
	cin >> telnumber;
	p->p_arry[p->length].tlenumber = telnumber;
		cout << "添加地址:" << endl;
		cin >> address;
		p->p_arry[p->length].address = address;
		p->length++;
		cout << "添加成功!" << endl;


}

//显示联系人
void showPerson(comsys* p) {
	void printInfoN(comsys * p, int n);
	if (p->length == 0)
		cout << "当前没有联系人,请添加(选择1):" << endl;
	else
	{
		printInfoN(p, p->length);
	}
}

//打印连续n个联系人
void printInfoN(comsys* p, int n) {
	for (int i = 0; i < n; i++) {
		cout << "*****************************************************" << endl;
		cout << "\t\tname:" << p->p_arry[i].name << endl;
		cout << "\t\tgender:" << p->p_arry[i].gender << endl;
		cout << "\t\tage:" << p->p_arry[i].age << endl;
		cout << "\t\ttelnumber:" << p->p_arry[i].tlenumber<< endl;
		cout << "\t\taddress:" << p->p_arry[i].address << endl;
		cout << "*****************************************************" << endl;
	}
	cout << "共计:" << p->length << endl;
}
//打印某个人的信息
void printInfoI(comsys* p, int i) {
	
		cout << "*****************************************************" << endl;
		cout << "\t\tname:" << p->p_arry[i].name << endl;
		cout << "\t\tgender:" << p->p_arry[i].gender << endl;
		cout << "\t\tage:" << p->p_arry[i].age << endl;
		cout << "\t\ttelnumber:" << p->p_arry[i].tlenumber << endl;
		cout << "\t\taddress:" << p->p_arry[i].address << endl;
		cout << "*****************************************************" << endl;
	
}
//查找某个联系人返回通讯录中的位置
int locatePerson(comsys* p,string name,string number) {
	if(p->length==0)
	return -1;
	else {
	
		for (int i = 0; i < p->length; i++)
		
			if ((name == p->p_arry[i].name) && (number == p->p_arry[i].tlenumber))
				return i; 
		return -1;
		
	}
}
//查找联系人
void serchPerson(comsys* p) {
	string name, number;
	int locatePerson(comsys * p, string name, string number);
	void printInfoI(comsys * p, int i);
	if (p->length == 0)
		cout << "当前联系人为空,请添加(选择1)" << endl;
	else
	{
		cout << "请输入要查找的名字:" << endl;
		cin >> name;
		cout << "请输入要查找的号码:" << endl;
		cin >> number;
		int count = locatePerson(p, name, number);
		if (count == -1)
			cout << "无对应联系人,请确认后再输入!" << endl;
		else
			printInfoI(p, count);
	}


}
//删除联系人
void deletePerson(comsys*p) {
	int locatePerson(comsys * p, string name, string number);
	void printInfoI(comsys * p, int i);
	string deletename;
	string deletenumber;
	if (p->length == 0)
		cout << "当前联系人为空,请添加(选择1)" << endl;
	cout << "请输入要删除的名字:" << endl;
	cin >> deletename;
	cout << "请输入要删除的号码:" << endl;
	cin >> deletenumber;
	int count= locatePerson(p, deletename, deletenumber);
	if(count!=-1)
	{
		printInfoI(p, count);
		cout << "确认删除请按1,取消请按2:" << endl;
		int select1 = 0;
		cin >> select1;
		switch (select1)
		{
		case 1:
			for (int i = count; i < p->length; i++) 
				p->p_arry[i]= p->p_arry[i + 1];
				
			p->length--;
			cout << "删除成功!" << endl;
			break;
		case 2:
			system("pause");
			system("cls");
		default:
			break;
		}
	}
	
}

//修改联系人
void modifyPerson(comsys* p) {
	if (p->length == 0)
		cout << "当前联系人为空,请添加(选择1)" << endl;
	else {
		cout << "输入您要修改的联系人姓名:" << endl;
		string name;
		cin >> name;
		cout << "输入您要修改的联系人电话:" << endl;
		string number;
		cin >> number;
		int count = locatePerson(p, name, number);
		if (count == -1)
			cout << "无对应联系人,请确认后再输入!" << endl;
		else
		{
			printInfoI(p, count);
			cout << "---------------------------"<< endl;
			cout << "---修改选项---" << endl;
			cout << "---(1):姓名---" << endl;
			cout << "---(2):性别---" << endl;
			cout << "---(3):年龄---" << endl;
			cout << "---(4):电话---" << endl;
			cout << "---(5):地址---" << endl;
			cout << "---(0):取消---" << endl;
			cout << "---------------------------";
			int select2;
			string name;
			string gender;
			int age;
			string telnumber;
			string address;
			cin >> select2;
			while (select2) {
				
				switch (select2)
				{
				case 1:
					cout << "您正在修改姓名,请输入:" << endl;
					cin >> name;

					p->p_arry[count].name = name;
					cout << "修改成功!" << endl;
					cout << "请输入对应选项进行操作!" << endl;
					cin >> select2;
					break;
				case 2:
					cout << "您正在修改性别,请输入:" << endl;
					cin >> gender;

					p->p_arry[count].gender = gender;
					cout << "修改成功!" << endl;
					cout << "请输入对应选项进行操作!" << endl;
					cin >> select2;
					break;

				case 3:
					cout << "您正在修改年龄,请输入:" << endl;
					cin >> age;

					p->p_arry[count].age = age;
					cout << "修改成功!" << endl;
					cout << "请输入对应选项进行操作!" << endl;
					cin >> select2;
					break;

				case 4:
					cout << "您正在修改电话,请输入:" << endl;
					cin >> telnumber;

					p->p_arry[count].tlenumber = telnumber;
					cout << "修改成功!" << endl;
					cout << "请输入对应选项进行操作!" << endl;
					cin >> select2;
					break;



				case 5:
					cout << "您正在修改地址,请输入:" << endl;
					cin >> address;

					p->p_arry[count].address = address;
					cout << "修改成功!" << endl;
					cout << "请输入对应选项进行操作!" << endl;
					cin >> select2;
					break;
				case 0:
					system("pause");
					break;

				default:
					break;
				}
			}
		}
	}
}
//清空通讯录
void clearPerson(comsys* p) {
	cout << "你正在清空联系人,请注意!" << endl;
	cout << "确认删除请按1" << endl;
	int selectClear;
	cin >> selectClear;
	if (selectClear == 1)
	{
		p->length = 0;
		cout << "已清空!" << endl;
	
			 
	}


		

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++小作业——简单通讯录设计 的相关文章

随机推荐

  • AI与大数据的关系

    最近在忙着专业分流的事情 自己纠结的专业主要就是人工智能和大数据 找了很多资料 终于整理出二者的关系 原文地址 https www sohu com a 224177824 764294 更专业一些的分析可以看这篇文章 https blog
  • 校园网开热点显示无Internet连接和360免费WiFi猎豹WiFi冲突解决办法

    校园网开不了热点或者用360免费WiFi发生冲突 问题 校园网 连接后有网络显示无Internet连接 也开不了热点 解决方法 方法一 使用像360免费WiFi类的软件进行开热点 同时你需要开启校园网模式 开启校园网模式 校园网模式可以避免
  • 与fo论禅汇总

    与佛论禅网络上现在共包含三个版本 与佛论禅 与佛论禅 与佛论禅重制版 与佛论禅重制版 Takuron 新与佛论禅 新约佛论禅 佛曰加密 PcMoe 有几个注意点 1 别拿百度引擎 翻墙拿谷歌 2 三个网站的使用逻辑不同 加密解密的输入框不一
  • Zookeeper已经分布式环境中的假死脑裂

    Zookeeper简介 在上班之前都不知道有这样一个东西 在开始说假死脑裂之前先说说Zookeeper吧 Zookeeper zookeeper是一个分布式应用程序的协调服务 它是一个为分布式应用提供一致性服务的软件 提供的性能包括 配置维
  • 基本数据类型强制转换问题-值的截断和内存的截断

    1 double a1 22 32 int b1 int a1 2 double a2 2 5e20 int b2 int a2 按照浮点数到整数的转换语义 结果应该截去浮点数的小数部分 而保留整数部分 所以b1应该为22 而b2则超出了其
  • 刷脸支付可针对客户做二次营销活动

    随着智能手机和WIFI的普及 80 的顾客都不再拿钱包 而是掏出手机付款 大到商店小到早点摊菜市场 只要拿出手机轻轻一扫 便可以完成整个购买流程 而如今 支付4 0时代已经到来 基于生物识别技术 不用手机 万物可付 李嘉诚说 当一项新鲜事物
  • MySQL高级篇-第06章_索引的数据结构

    1 为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构 就好比一本数课书的目录部分 通过目录中找到对应文章的页码 便可快速定位到需要的文章 MySQL中也是一样的道理 进行数据查找时 首先查看查询条件是否命中某条索引 符合则通
  • 找第一个只出现一次的字符c++

    找第一个只出现一次的字符 提交数 3563 通过率 43 14 平均分 61 55 题目描述 给定一个只包含小写字母的字符串 请你找到第一个仅出现一次的字符 如果没有 输出no 输入格式 一个字符串 长度小于100000 输出格式 输出第一
  • rabbitmq初学之连接测试

    最近在搞接口 需要用到rabbitmq 在公司搞了一个下午还是连接不上 后来细看了英文说明 测试连接成功 得出如下报错几点 我用的安装包 otp win64 17 0 exe erlang vm 和rabbitmq server 3 3 1
  • 消息队列-kafka入门详解

    本文适用于初学者 学习kafka之前 应该都知道它是消息队列 但是和我们印象中数据结构的队列不同的是 它持久化到磁盘上 1 我们首先从定义来看 Kafka 一个分布式的 分区化 可复制提交的日志服务 我们先来想想什么是分区 好比图书馆的书
  • pcb过孔与电流对照一览表_PCB设计项目能不能成功,这个因素占了30%

    电源平面的处理 在PCB设计中占有很重要的地位 在一个完整的设计项目中 通常电源的处理决定项目的30 50 的成功率 本次给大家介绍在PCB设计过程中电源平面处理应该考虑的基本要素 1 做电源处理时 首先应该考虑其载流能力 其中包含2个方面
  • QT-通用的软件界面框架,好看且实用

    QT 通用的软件界面框架 好看且实用 前言 一 演示效果 二 配置说明 三 关键程序 四 程序下载 前言 常规软件开发 使用这种界面框架 基本是可以做很多个常规项目 比较有参考意义 本次软件使用开发的环境是QT5 13 2 VS2017 不
  • House Man 【HDU - 3440】【差分约束】

    题目链接 就是我们必须跳N 1次 从最小的房子跳到最高的房子 然后呢 求最小的房子和最高的房子之间的最长的可能距离 那么就是差分约束咯 我们可以这么推 首先 对于所有的点 a i a i 1 gt 1 那么转换一下 就是a i 1 a i
  • vue 从后端取图片返回发现是两张,但自己只要一张图片 怎么操作

    1 用JavaScript里边常用的分隔符去操作 item original status user profile image url split 0
  • Redis的hyperloglog

    互联网名词 什么是UV Unique Visitor 独立访客 一般理解为客户端IP 需要去重考虑 什么是PV Page View 页面浏览量 不用去重 什么是DAU Daily Active User 日活跃用户量 登录或者使用了某个产品
  • 【7】Docker中部署RabbitMQ

    1 拉取镜像 docker pull rabbitmq 3 8 5 根据我之前在VMware的Centos中装过的 rabbitmq 版本来拉取 3 8 5 的版本 拉取指定版本 3 8 5 的 rabbitmq 镜像 2 守护方式 创建容
  • 最大化参数 火车头_火车头多少吨

    展开全部 火车头的重量一般是126 132吨 最重的是韶山4型改进型车头 重量为184吨 车型62616964757a686964616fe58685e5aeb931333433623735不同而所用的火车头型号也不尽相同 重量也有所差异
  • 代码随想录算法训练营打卡第一天

    代码随想录算法训练营第1天 Leetcode704 二分查找 27 移除元素 704 二分查找 视频链接 https www bilibili com video BV1fA4y1o715 第一遍读题思考 五分钟内 如果没有思路就写暴力解法
  • [C++11]独占的智能指针unique_ptr的初始化和使用

    std unique ptr 是一个独占型的智能指针 它不允许其他的智能指针共享其内部的指针 可以通过它的构造函数初始化一个独占智能指针对象 但是不允许通过赋值将一个 unique ptr 赋值给另一个 unique ptr std uni
  • C++小作业——简单通讯录设计

    界面展示 1 菜单界面 2 添加联系人 选择按钮1 3 显示联系人 选择按钮2 会显示当前通讯录里面的所有联系人信息 include