用st语言杭州有一仓储中心,存放 A BC 三种货物,库存信息如下,该仓储中心收到多个客户的订单,每个订单信息包括:订单号(word ) 、地址(枚举体)、客户名称(Wstring)、货物型号及数量( A B C )(Uint) ; 1 .用以上数据类型标识每个订单信息(结构体); 2 .生成 FB ,并在主程序中调用,要求实现输入 A B C 任意一种货物即可查询仓储中心在完成订单后,对应类型的货物的余量,货物数量不足无法出库则输出:无法出库.否则输出:出库成功; 3 .生成FB,并在主程序中调用,要求实现输入对应城市即可查询该城市所有的货物订单数量;

时间: 2023-05-14 09:06:38 浏览: 50
1. 以下是用以上数据类型标识每个订单信息的结构体: struct OrderInfo { std::string orderNumber; enum Address { Hangzhou, Shanghai, Beijing } address; std::wstring customerName; struct Goods { uint32_t A; uint32_t B; uint32_t C; } goods; }; 2. 以下是生成FB,并在主程序中调用,实现输入 A B C 任意一种货物即可查询仓储中心在完成订单后,对应类型的货物的余量,货物数量不足无法出库则输出:无法出库.否则输出:出库成功: #include <iostream> #include <string> #include <vector> #include <flatbuffers/flatbuffers.h> #include "OrderInfo_generated.h" using namespace MyNamespace; int main() { // 初始化仓储中心的库存信息 uint32_t A_count = 100; uint32_t B_count = 200; uint32_t C_count = 300; // 生成订单信息 OrderInfo order; order.orderNumber = "20220101001"; order.address = OrderInfo::Hangzhou; order.customerName = L"张三"; order.goods.A = 10; order.goods.B = 20; order.goods.C = 30; // 序列化订单信息 flatbuffers::FlatBufferBuilder builder; auto order_offset = CreateOrderInfo(builder, builder.CreateString(order.orderNumber), order.address, builder.CreateString(order.customerName), CreateGoods(builder, order.goods.A, order.goods.B, order.goods.C)); builder.Finish(order_offset); // 反序列化订单信息 auto order_info = GetOrderInfo(builder.GetBufferPointer()); // 查询货物余量 uint32_t count = 0; if (order_info->goods()->A() > 0) { count = A_count; } else if (order_info->goods()->B() > 0) { count = B_count; } else if (order_info->goods()->C() > 0) { count = C_count; } // 出库 if (count >= order_info->goods()->A() && count >= order_info->goods()->B() && count >= order_info->goods()->C()) { A_count -= order_info->goods()->A(); B_count -= order_info->goods()->B(); C_count -= order_info->goods()->C(); std::cout << "出库成功" << std::endl; } else { std::cout << "无法出库" << std::endl; } return 0; } 3. 以下是生成FB,并在主程序中调用,实现输入对应城市即可查询该城市所有的货物订单数量: #include <iostream> #include <string> #include <vector> #include <flatbuffers/flatbuffers.h> #include "OrderInfo_generated.h" using namespace MyNamespace; int main() { // 初始化订单信息 std::vector<OrderInfo> orders; OrderInfo order1; order1.orderNumber = "20220101001"; order1.address = OrderInfo::Hangzhou; order1.customerName = L"张三"; order1.goods.A = 10; order1.goods.B = 20; order1.goods.C = 30; orders.push_back(order1); OrderInfo order2; order2.orderNumber = "20220101002"; order2.address = OrderInfo::Shanghai; order2.customerName = L"李四"; order2.goods.A = 5; order2.goods.B = 10; order2.goods.C = 15; orders.push_back(order2); OrderInfo order3; order3.orderNumber = "20220101003"; order3.address = OrderInfo::Hangzhou; order3.customerName = L"王五"; order3.goods.A = 15; order3.goods.B = 30; order3.goods.C = 45; orders.push_back(order3); // 序列化订单信息 flatbuffers::FlatBufferBuilder builder; std::vector<flatbuffers::Offset<OrderInfo>> order_offsets; for (auto& order : orders) { auto order_offset = CreateOrderInfo(builder, builder.CreateString(order.orderNumber), order.address, builder.CreateString(order.customerName), CreateGoods(builder, order.goods.A, order.goods.B, order.goods.C)); order_offsets.push_back(order_offset); } auto orders_offset = builder.CreateVector(order_offsets); builder.Finish(CreateOrderList(builder, orders_offset)); // 反序列化订单信息 auto order_list = GetOrderList(builder.GetBufferPointer()); // 查询城市所有货物订单数量 uint32_t A_count = 0; uint32_t B_count = 0; uint32_t C_count = 0; for (auto& order : *order_list->orders()) { if (order->address() == OrderInfo::Hangzhou) { A_count += order->goods()->A(); B_count += order->goods()->B(); C_count += order->goods()->C(); } } std::cout << "杭州的 A 货物订单数量为:" << A_count << std::endl; std::cout << "杭州的 B 货物订单数量为:" << B_count << std::endl; std::cout << "杭州的 C 货物订单数量为:" << C_count << std::endl; return 0; }

相关推荐

最新推荐

recommend-type

Quectel_BC35-G&BC28&BC95 R2.0_AT命令手册_V1.0.pdf

Quectel_BC35-G&BC28&BC95 R2.0_AT命令手册_V1.0(中文版) 详细信息请访问移远官网https://www.quectel.com/cn/product/bc28.htm
recommend-type

Quectel_BC25_AT命令手册_V1.0.pdf

移远的NBIOT模块BC25的AT指令手册,中文AT指令手册。方便查看,来源于官方代理,官网只有英文。
recommend-type

Quectel_BC26&BC20_OneNET_应用指导_V1.0.pdf

Quectel 移远 BC26 BC20 移动OneNet平台 NB平台 LWM2M 应用指导手册 中文版
recommend-type

Quectel_BC26&BC20_电信IoT平台_应用指导_V1.0.pdf

Quectel 移远 BC26 BC20 电信IoT平台 NB平台 LWM2M 应用指导手册 中文版
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB遗传算法自动优化指南:解放算法调优,提升效率

![MATLAB遗传算法自动优化指南:解放算法调优,提升效率](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8487939061/p208348.png) # 1. MATLAB遗传算法概述** 遗传算法是一种受生物进化启发的优化算法,它模拟了自然选择和遗传的过程。在MATLAB中,遗传算法工具箱提供了丰富的函数和类,用于创建和运行遗传算法。 **1.1 遗传算法的基本原理** 遗传算法的工作原理如下: - **初始化:**创建由随机个体组成的初始种群。 - **评估:**根据目标函数计算每个个体的适应度。 -
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依