小森动画回忆录(一)-功能实现(3)-迪迦篇

优化用户输入处理的C++代码示例
该代码段展示了如何在C++中处理用户输入的选择,包括输入验证、错误处理和选择菜单的实现。当用户输入无效或超出范围时,程序会提示错误并要求重新输入。此外,代码还包含了主菜单和子菜单的结构,如迪迦奥特曼的角色管理功能。

修改代码

//用户输入选择
int inputUseSelect() {

	//定义了一个选择变量接收用户的输入
	int Select;

	//输入用户的选择
	(std::cin >> Select);
	
	return Select;
}

//输入有误
bool isInputIncorrect(int Select, int MaxSelectRange = 7) {
	if (Select >= 0 && Select < MaxSelectRange) {
		return false;
	}
	else {
		std::cout << "输入有误!没有  " << Select << " 选项...." << std::endl;
		return true;
	}
}

//判断用户输入是否合法
bool isInputValid(void) {


	if (!std::cin){

		//请除错误标志
		std::cin.clear();

		//刷新缓冲区
		std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
		std::cout << "输入有误,不是整数! 请重新输入...." << std::endl;

		cin.get();
		return true;
	}
	return false;
}

修改后的代码分析更加可读性 啥时候干什么事情都一目了然
修改后的main函数

int main(void) {

	//定义了一个选择变量接收用户的输入
	int Select;

	//是否退出
	bool IsExit = false;
	

	while (!IsExit) {

		system("cls");
		//调用菜单显示函数
		ShowMainMenu();

		//输入用户的选择 并且判断用户输入是否合法
		Select = inputUseSelect();
		if (isInputValid()  || isInputIncorrect(Select)) {
			continue;
		}
		//刷新缓冲区
		std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
		// 用户的选择
		IsExit = UseSelect(Select);

	}

	std::cout << "欢迎━(*`∀´*)ノ亻! 下次再来 ━(*`∀´*)ノ亻! " << std::endl;
	system("pause");
	return 0;
}

用户的选择 这个地方小小的改动

// 用户的选择
bool  UseSelect(int Select) {

	bool IsExit = false;

	//选择动画片名
	const char SelectName[7][64] = { "","迪迦奥特曼","哆啦A梦","大耳朵图图","果宝特攻","喜羊羊与灰太狼","熊出没 " };
	std::string Welcome = std::string("欢迎━(*`∀´*)ノ亻! 选择:") + SelectName[Select];

	switch (Select) {

	case 1://1. 迪迦奥特曼
		Ultraman(Welcome);
		break;

	case 2://2. 哆啦A梦
		Doraemon(Welcome);
		break;
	case 3:	//3. 大耳朵图图
		BigEarTutu(Welcome);
		break;
	case 4:
		//4. 果宝特攻
		TransformersRobotsInDisguise(Welcome);
		break;
	case 5:
		//5. 喜羊羊与灰太狼
		PleasantGoatandBigBigWolf(Welcome);
		break;
	case 6://6. 熊出没
		WhereAreWeGoingDad(Welcome);
		break;
	case 0:
		IsExit = true;
		break;

	default:
	//	std::cout << "输入有误!没有  " << Select << " 选项...." << std::endl;
		break;
	}

	return IsExit;

}

修改后的迪迦奥特曼主框架函数

void Ultraman(std::string Welcome){


	std::cout << Welcome << std::endl;

	//动画片名
	std::string  Cartoontitle;

	//截取动画片名
	Cartoontitle = InterceptSubString(Welcome);
	//休眠:1.5s
	sleep_for(1500ms);

	int Select;
	bool IsExit = false;

	while (!IsExit) {

		system("cls");
		std::cout << "\t\t 动画片名:" << Cartoontitle << std::endl;

		UltramanMainMenu();

		Select = inputUseSelect();
										//参数菜单的数量
		if (isInputValid() || isInputIncorrect(Select,4)) {
			continue;
		}
		
		IsExit = UltramanSelectMenu(Select);

	}


	system("cls");
	return;
}

小改 迪迦选择菜单

//迪迦选择菜单
bool UltramanSelectMenu(int Select){

	bool IsExit = false;
	switch (Select) {

	case 1://1.添加新角色 
				
		break;

	case 2://2.浏览角色
		
		break;

	case 3://3.浏览角色的关系  

		break;
	case 4://3.浏览角色的关系  

		break;

	case 0:
		IsExit = true;
		break;

	default:
		//std::cout << "输入有误!没有  " << Select << " 选项...." << std::endl;
		break;
	}
	return IsExit;
}

运行后

*************************************************
[*************** 1. 迪迦奥特曼 *****************]
[*************** 2. 哆啦A梦 ********************]
[*************** 3. 大耳朵图图 *****************]
[*************** 4. 果宝特攻 *******************]
[*************** 5. 喜羊羊与灰太狼 *************]
[*************** 6. 熊出没 *********************]
[*************** 0.退出 ************************]
*************************************************
请输入你的选择:1
欢迎━(*`??*)ノ亻! 选择:迪迦奥特曼
                 动画片名:迪迦奥特曼
*************************************************
[*************** 1.添加新角色 ******************]
[*************** 2.浏览角色 ********************]
[*************** 3.浏览角色的关系 **************]
[*************** 4.浏览角色的所有属性 **********]
[*************** 0.返回主系统 ******************]
*************************************************
请输入你的选择:1
                 动画片名:迪迦奥特曼
*************************************************
[*************** 1.添加新角色 ******************]
[*************** 2.浏览角色 ********************]
[*************** 3.浏览角色的关系 **************]
[*************** 4.浏览角色的所有属性 **********]
[*************** 0.返回主系统 ******************]
*************************************************
请输入你的选择:ahh
输入有误,不是整数! 请重新输入....
                 动画片名:迪迦奥特曼
*************************************************
[*************** 1.添加新角色 ******************]
[*************** 2.浏览角色 ********************]
[*************** 3.浏览角色的关系 **************]
[*************** 4.浏览角色的所有属性 **********]
[*************** 0.返回主系统 ******************]
*************************************************
请输入你的选择:9
输入有误!没有  9 选项....
                 动画片名:迪迦奥特曼
*************************************************
[*************** 1.添加新角色 ******************]
[*************** 2.浏览角色 ********************]
[*************** 3.浏览角色的关系 **************]
[*************** 4.浏览角色的所有属性 **********]
[*************** 0.返回主系统 ******************]
*************************************************
请输入你的选择:0
*************************************************
[*************** 1. 迪迦奥特曼 *****************]
[*************** 2. 哆啦A梦 ********************]
[*************** 3. 大耳朵图图 *****************]
[*************** 4. 果宝特攻 *******************]
[*************** 5. 喜羊羊与灰太狼 *************]
[*************** 6. 熊出没 *********************]
[*************** 0.退出 ************************]
*************************************************
请输入你的选择:0
欢迎━(*`??*)ノ亻! 下次再来 ━(*`??*)ノ亻!
请按任意键继续. . .
Security-feature-detection-system 安全检测系统 简介 安全检测系统-多目标识别(YOLOv5)和人脸识别(Facenet)快速部署系统。 功能上:本项目使用YOLOv5实现多目标识别,使用Facenet实现人脸识别,最终需要人脸和此人应具备的多目标同时满足才能通过安全检测,部署上:使用pyqt5实现前端可视化,在前端页面运行YOLOv5多目标识别系统(将模型运行封装到Qt中),使用Docker封装人脸识别后端系统,使用网络请求等包实现前后端交互 案例:进行多目标识别的同时,进行人脸识别,前端系统发送请求,携带参数到后端进行人脸识别,最终返回人脸识别结果,获取人脸识别结果后,检索该成员应具备的多目标特征,与YOLOv5多目标识别的实际结果进行比对,若无误则通过安全检测。 根据原作 https://pan.quark.cn/s/9784cdf4abfd 的源码改编 项目背景 出于些比赛的需要,以及逃离懵懂状态开始探索,我于2023.12~2024.1(大二上)开始些CV、LLM项目究,苦于能力有限,当时大部分的项目都是依托开源搭建而来,诸如本项目就是依托开源的Compreface和Yolov5搭建,我只不过做了缝合的工作,所以在此必须提及这两个项目的巨大贡献:https://.com/exadel-inc/CompreFace https://.com/ultralytics/yolov5 今天是2024.7.11(大二下暑假),时隔半年我才开始这个项目的开源工作是因为,半年前的水平有限,虽然自己能实现项目的运作,但是恐很多细节介绍不好,当然本文自发出,后续我还会跟进,欢迎指正:22012100039@stu.xidian.edu.c...
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小森程序员

若能帮助到你,小费自愿付费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值