草庐IT

【C++实战小项目】通讯录(三)数组模拟实现通讯录三大功能

iecne 2023-11-07 原文



🧛‍♂️iecne个人主页:iecne的学习日志
💡每天关注iecne的作品,一起进步
💪学C++必看iecne
本文专栏【实战小项目】
🐳希望大家多多支持🥰一起进步呀!


✨前言

哈喽大家好,我是iecne,本期为大家带来的是CPP/C++【C++实战小项目】实现基本通讯录模拟详解分析。包教包会,快来看看吧!

任务描述

如何根据据C++基础入门编写一款不可视化通讯录,我们这次就来讲讲并且写一写添加用户


文章目录


一.分析通讯录

首先制作一款通讯录我们可以将它分为以下部分

增加联系人
删除联系人
查找联系人
修改联系人
打印通讯录
排序通讯录

这一期我们就来实现准备删除查找与修改


二.删除

删除是string2_函数,我们就来看看

2.1 Flowchat流程图

Created with Raphaël 2.2.0 进入函数 提取数据 确认? 操作删除 回到开始页面 通知错误 yes no

2.2 string2_

void string2_()
{
	string name1 = "请输入名字:>\n";
	out06(name1);
	string chaname;
	input_string(chaname);
	chaname = stringaaaa;
	int s = 0;
	int ss = 0;
	cout << " 姓名";
	for (int j = 1; j <= 12; j++)
	{
		cout << " ";
	}
	cout << "性别";
	for (int j = 1; j <= 10; j++)
	{
		cout << " ";
	}
	cout << "年龄";
	for (int j = 1; j <= 20 - 1; j++)
	{
		cout << " ";
	}
	cout << "电话";
	for (int j = 1; j <= 20; j++)
	{
		cout << " ";
	}
	cout << "地址";
	cout << "\n";
	for (int i = 1; i <= z - 1; i++)
	{
		if (namez[i] == chaname)
		{
			s++;
			ss = i;
			cout << " ";
			cout << namez[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << bgz[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << agez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << phonez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << homez[i];
			cout << "\n";
		}
	}
	if (s == 0)
	{
		cout << "没有找到这个人";
	}
	cout << "确认删除该联系人吗";
	cout << endl;
	cout << "1.yes";
	cout << endl << "2.no" << endl;
	int yesno1;
	cin >> yesno1;
	if (yesno1 == 1)
	{
		over(ss);
	}
	else
	{
		system("pause");
		playfirst();
	}
}

基本如图所示


三.查找

删除是string3_函数,我们来看看

3.1 Flowchart流程图

Created with Raphaël 2.2.0 进入函数 询问查找方式 提取数据 符合查找方式 输出 回到开始页面 通知错误 yes yes no

3.2 三千字代码实现

然后我们再看看code

void string3_()
{
	string string0 = "=====================================\n";
	string string1 = "============1.通过名字查=============\n";
	string string2 = "============2.通过性别查=============\n";
	string string3 = "============3.通过年龄查=============\n";
	string string4 = "============4.通过地址查=============\n";
	out06(string0);
	out06(string1);
	out06(string2);
	out06(string3);
	out06(string4);
	out06(string0);
	int string7 = 0;
	string7 = input(string7);
	switch (string7)
	{
	case 1:
		cha1_();
	case 2:
		cha2_();
	case 3:
		cha3_();
	case 4:
		cha4_();
	}
}

通过switch来分别到cha1_ ~ cha4_

void cha1_()
{
	string name1 = "请输入名字:>\n";
	out06(name1);
	string chaname;
	input_string(chaname);
	chaname = stringaaaa;
	int s = 0;
	cout << " 姓名";
	for (int j = 1; j <= 12; j++)
	{
		cout << " ";
	}
	cout << "性别";
	for (int j = 1; j <= 10; j++)
	{
		cout << " ";
	}
	cout << "年龄";
	for (int j = 1; j <= 20 - 1; j++)
	{
		cout << " ";
	}
	cout << "电话";
	for (int j = 1; j <= 20; j++)
	{
		cout << " ";
	}
	cout << "地址";
	cout << "\n";
	for (int i = 1; i <= z - 1; i++)
	{
		if (namez[i] == chaname)
		{
			s++;
			
			cout << " ";
			cout << namez[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << bgz[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << agez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << phonez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << homez[i];
			cout << "\n";
		}
	}
	if (s == 0)
	{
		cout << "没有找到这个人";
	}
	system("pause");
	playfirst();
}

void cha2_()
{
	string name1 = "请输入性别:>\n";
	out06(name1);
	string chaname;
	input_string(chaname);
	chaname = stringaaaa;
	if (chaname == "男")chaname = "男";
	else if (chaname == "女") chaname = "女";
	else chaname = "不男不女";
	cout << " 姓名";
	for (int j = 1; j <= 12; j++)
	{
		cout << " ";
	}
	cout << "性别";
	for (int j = 1; j <= 10; j++)
	{
		cout << " ";
	}
	cout << "年龄";
	for (int j = 1; j <= 20 - 1; j++)
	{
		cout << " ";
	}
	cout << "电话";
	for (int j = 1; j <= 20; j++)
	{
		cout << " ";
	}
	cout << "地址";
	cout << "\n";
	int s = 0;
	for (int i = 1; i <= z - 1; i++)
	{
		if (bgz[i] == chaname)
		{
			s++;
			cout << " ";
			cout << namez[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << bgz[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << agez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << phonez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << homez[i];
			cout << "\n";
		}
	}
	if (s == 0)
	{
		cout << "没有找到这个人";
	}
	system("pause");
	playfirst();
}

void cha3_()
{
	string name1 = "请输入年龄:>\n";
	out06(name1);
	int chaage;
	int s = 0;
	cin >> chaage;
	cout << " 姓名";
	for (int j = 1; j <= 12; j++)
	{
		cout << " ";
	}
	cout << "性别";
	for (int j = 1; j <= 10; j++)
	{
		cout << " ";
	}
	cout << "年龄";
	for (int j = 1; j <= 20 - 1; j++)
	{
		cout << " ";
	}
	cout << "电话";
	for (int j = 1; j <= 20; j++)
	{
		cout << " ";
	}
	cout << "地址";
	cout << "\n";
	cout << " ";
	for (int i = 1; i <= z - 1; i++)
	{
		if (agez[i] == chaage)
		{
			s++;
			cout << " 姓名";
			for (int j = 1; j <= 12; j++)
			{
				cout << " ";
			}
			cout << "性别";
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << "年龄";
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << "电话";
			for (int j = 1; j <= 20; j++)
			{
				cout << " ";
			}
			cout << "地址";
			cout << "\n";
			cout << " ";
			cout << namez[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << bgz[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << agez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << phonez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << homez[i];
			cout << "\n";
		}
	}
	if (s == 0)
	{
		cout << "没有找到这个人";
	}
	system("pause");
	playfirst();
}

void cha4_()
{
	string name1 = "请输入地址:>\n";
	out06(name1);
	string chaname;
	input_string(chaname);
	chaname = stringaaaa;
	int s = 0;
	cout << " 姓名";
	for (int j = 1; j <= 12; j++)
	{
		cout << " ";
	}
	cout << "性别";
	for (int j = 1; j <= 10; j++)
	{
		cout << " ";
	}
	cout << "年龄";
	for (int j = 1; j <= 20 - 1; j++)
	{
		cout << " ";
	}
	cout << "电话";
	for (int j = 1; j <= 20; j++)
	{
		cout << " ";
	}
	cout << "地址";
	cout << "\n";
	cout << " ";
	for (int i = 1; i <= z - 1; i++)
	{
		if (homez[i] == chaname)
		{
			s++;
			
			cout << namez[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << bgz[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << agez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << phonez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << homez[i];
			cout << "\n";
		}
	}
	if (s == 0)
	{
		cout << "没有找到这个人";
	}
	system("pause");
	playfirst();
}

四.修改

4.1 Flowchart流程图

Created with Raphaël 2.2.0 进入函数 输入名字 判断 修改各项值 回到开始页面 通知错误 yes no

4.2 代码实现

void string4_()
{
	printf("请输入需要修改信息用户的名字:>\n");
	string chaname;
	input_string(chaname);
	chaname = stringaaaa;
	int s = 0;
	cout << " 姓名";
	for (int j = 1; j <= 12; j++)
	{
		cout << " ";
	}
	cout << "性别";
	for (int j = 1; j <= 10; j++)
	{
		cout << " ";
	}
	cout << "年龄";
	for (int j = 1; j <= 20 - 1; j++)
	{
		cout << " ";
	}
	cout << "电话";
	for (int j = 1; j <= 20; j++)
	{
		cout << " ";
	}
	cout << "地址";
	cout << "\n";
	cout << " ";
	int ss = 0;
	for (int i = 1; i <= z - 1; i++)
	{
		if (namez[i] == chaname)
		{
			s++;
			ss = i;
			cout << namez[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << bgz[i];
			for (int j = 1; j <= 10; j++)
			{
				cout << " ";
			}
			cout << agez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << phonez[i];
			for (int j = 1; j <= 20 - 1; j++)
			{
				cout << " ";
			}
			cout << homez[i];
			cout << "\n";
		}
	}
	if (s == 0)
	{
		cout << "没有找到这个人";
		system("pause");
		playfirst();
	}
	printf(" \n0.退出 1.姓名 2.性别 3.年龄 4.电话 5.地址:>\n");
	int num;
	cin >> num;
	switch (num)
	{
	case 1:
		printf("请输入你想修改的姓名:>\n");
		cin >> namez[ss];
		break;
	case 2:
		printf("请输入你想修改的性别:>\n");
		cin >> bgz[ss];
		break;
	case 3:
		printf("请输入你想修改的年龄:>\n");
		cin >> agez[ss];
		break;
	case 4:
		printf("请输入你想修改的电话:>\n");
		cin >> phonez[ss];
		break;
	case 5:
		printf("请输入你想修改的地址:>\n");
		cin >> homez[ss];
		break;
	case 0:
		printf("不修改退回界面\n");
		break;
	default:printf("无效操作数!\n");
	}
	system("pause");
	playfirst();
}

总结

今天我们实现了通讯录的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!


感谢每一个观看本篇文章的朋友,更多精彩敬请期待~( ̄▽ ̄~)~:
iecne的博客
若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

有关【C++实战小项目】通讯录(三)数组模拟实现通讯录三大功能的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  3. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  4. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  5. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  6. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  7. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  8. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  9. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  10. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

随机推荐