Menu
CoddyTech

减少库存

本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 33 课,共 56 课。

challenge icon

挑战

简单

通过实现从现有商品中扣除库存的功能,完成你的库存跟踪系统。本课将演示如何安全地减少库存数量,避免库存量降至零以下,并处理库存中不存在的商品。

从以下初始库存开始:

  • apples:50
  • bananas:30
  • oranges:25

将提供以下输入:

  • 一个整数 n,表示要执行的库存扣除操作次数
  • 接下来是 n 对输入:
    • 一个表示商品名称的字符串
    • 一个表示要扣除数量的整数

你的程序应该:

  1. 以以上列出的初始库存开始
  2. 读取库存扣除操作的次数
  3. 对于每次操作,读取商品名称和要扣除的数量
  4. 使用 .count() 方法检查库存映射中是否存在该商品
  5. 如果商品不存在,打印错误消息
  6. 如果商品存在,检查扣除该数量是否会导致库存变为负数
  7. 如果扣除后库存会变为负数,打印错误消息
  8. 如果扣除有效,从当前库存中减去相应数量,并打印确认消息
  9. 完成所有操作后,打印最终库存,显示所有商品及其更新后的数量

请使用以下准确的输出格式:

成功扣除库存时:

Removed [quantity] [item_name]. New total: [new_total]

未找到商品时:

Error: [item_name] not found in inventory

库存不足时:

Error: Cannot remove [quantity] [item_name]. Only [current_stock] in stock

最终库存:

Final Inventory:
[item1]: [quantity1]
[item2]: [quantity2]
[item3]: [quantity3]
...

最终库存应按商品名称的字母顺序打印。在尝试扣除库存前,使用 inventory.count(itemName) 检查商品是否存在。只有当商品存在且当前库存大于或等于要扣除的数量时,才从库存中扣除。使用 inventory[itemName] -= quantity 从现有库存中扣除相应数量。

亲手试试

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

int main() {
    // Initialize inventory with existing items
    map<string, int> inventory;
    inventory["apples"] = 50;
    inventory["bananas"] = 30;
    inventory["oranges"] = 25;
    inventory["grapes"] = 40;
    
    int n;
    cin >> n;
    
    for (int i = 0; i < n; i++) {
        string itemName;
        cin >> itemName;
        
        if (inventory.count(itemName)) {
            cout << itemName << ": " << inventory[itemName] << " in stock" << endl;
        } else {
            cout << itemName << ": Item not found" << endl;
        }
    }
    
    cout << "Total items in inventory: " << inventory.size() << endl;
    
    return 0;
}

逻辑与流程中的所有课

自己练习: C++ 在线编译器