C++ 函数 addItemToOrder():向订单添加菜品
该函数 addItemToOrder() 用于向正在进行中的订单中添加菜品。
首先,函数要求用户输入要添加的菜品的 ID 和数量:
int itemId, quantity;
cout << '请输入要添加的菜品的 ID:';
cin >> itemId;
cout << '请输入需要的数量: ';
cin >> quantity;
然后,函数通过遍历菜单,查找用户输入的 ID 对应的菜品信息:
MenuItem item;
for (auto& menuItem : menu) {
if (menuItem.id == itemId) {
item = menuItem;
break;
}
}
如果该菜品的数量不足以满足用户的需求,则提示用户数量不足并退出函数:
if (quantity > item.quantity) {
cout << '数量不足,请重试。' << endl;
return;
}
接下来,函数遍历正在进行中的订单,查找与该顾客相关且未确认且未完成的订单:
for (auto& order : orders) {
if (order.customerId == customer.id && !order.fulfilled && !order.confirmed) {
// ...
}
}
如果找到了这样的订单,则在订单中查找是否已经有该菜品,如果有,则将数量增加;如果没有,则添加该菜品到订单中:
for (auto& itemInOrder : order.items) {
if (itemInOrder.id == itemId) {
itemInOrder.quantity += quantity;
item.quantity -= quantity;
cout << '已成功将菜品添加到订单中。' << endl;
return;
}
}
order.items.push_back(MenuItem{ item.name, item.price, quantity,item.id});
item.quantity -= quantity;
cout << '已成功将菜品添加到订单中。' << endl;
return;
如果没有找到符合条件的订单,则创建一个新的订单,并将该菜品添加到订单中:
int orderId = orders.empty() ? 1 : orders.back().id + 1;
orders.push_back(Order{orderId, customer.id, {MenuItem{ item.name, item.price, quantity,item.id}}, getCurrentTime()});
item.quantity -= quantity;
cout << '已成功将菜品添加到订单中。' << endl;
最后,函数更新菜品的数量并提示用户操作成功。
该函数旨在实现一个简单实用的订单管理功能,通过清晰的代码结构和注释,帮助开发者理解函数的逻辑和实现细节。
原文地址: https://www.cveoy.top/t/topic/oJYQ 著作权归作者所有。请勿转载和采集!