Menu
Coddy logo textTech

Recapitulação - Atualização de Inventário

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 32 de 65.

challenge icon

Desafio

Fácil

Crie um programa que gerencie um sistema de inventário de armazém, rastreando os níveis de estoque dos produtos, verificando itens existentes, adicionando novos produtos com segurança e atualizando as quantidades. Seu programa deve:

  1. Ler uma entrada de string representando o nome do armazém
  2. Ler múltiplos pares de entradas representando nomes de produtos e suas quantidades atuais em estoque (a entrada terminará quando você receber "inventory_done")
  3. Ler uma entrada de string representando um produto para verificar a existência
  4. Ler uma entrada de string representando um novo produto para adicionar com estoque padrão
  5. Ler uma entrada de string representando um produto para reabastecer
  6. Ler uma entrada de string representando a quantidade adicional a ser adicionada ao produto reabastecido
  7. Criar um Map para armazenar nomes de produtos como chaves e suas quantidades em estoque como valores
  8. Usar containsKey() para verificar se o produto especificado existe no inventário
  9. Usar putIfAbsent() para adicionar o novo produto com um estoque padrão de 50 unidades
  10. Atualizar a quantidade em estoque do produto reabastecido adicionando a quantidade adicional
  11. Imprimir o relatório de gestão de inventário no formato exato mostrado abaixo

Por exemplo, se o nome do armazém for "Central Warehouse", o inventário incluir "Laptops" com 25 unidades, "Mice" com 150 unidades, "Keyboards" com 75 unidades, o produto a ser verificado for "Laptops", o novo produto a ser adicionado for "Monitors", o produto a ser reabastecido for "Mice", e a quantidade adicional for 30, seu programa deve produzir:

Warehouse: Central Warehouse
Initial Inventory: {Laptops: 25, Mice: 150, Keyboards: 75}
Inventory Operations:
Checking for 'Laptops': Product found in inventory
Adding 'Monitors': New product added with default stock 50
Restocking 'Mice': Updated quantity from 150 to 180
Final Inventory: {Laptops: 25, Mice: 180, Keyboards: 75, Monitors: 50}
Inventory Summary:
Total products: 4
Total stock units: 330
Low stock items (below 30): 1
Products restocked: 1
Status: Inventory management completed

Se o nome do armazém for "North Storage", o inventário incluir "Tablets" com 40 unidades, "Headphones" com 80 unidades, o produto a ser verificado for "Smartphones", o novo produto a ser adicionado for "Tablets", o produto a ser reabastecido for "Headphones", e a quantidade adicional for 20, seu programa deve produzir:

Warehouse: North Storage
Initial Inventory: {Tablets: 40, Headphones: 80}
Inventory Operations:
Checking for 'Smartphones': Product not found in inventory
Adding 'Tablets': Product already exists, keeping stock 40
Restocking 'Headphones': Updated quantity from 80 to 100
Final Inventory: {Tablets: 40, Headphones: 100}
Inventory Summary:
Total products: 2
Total stock units: 140
Low stock items (below 30): 0
Products restocked: 1
Status: Inventory management completed

Se o nome do armazém for "South Depot", o inventário incluir "Printers" com 15 unidades, "Scanners" com 35 unidades, "Cables" com 200 unidades, o produto a ser verificado for "Scanners", o novo produto a ser adicionado for "Webcams", o produto a ser reabastecido for "Printers", e a quantidade adicional for 45, seu programa deve produzir:

Warehouse: South Depot
Initial Inventory: {Printers: 15, Scanners: 35, Cables: 200}
Inventory Operations:
Checking for 'Scanners': Product found in inventory
Adding 'Webcams': New product added with default stock 50
Restocking 'Printers': Updated quantity from 15 to 60
Final Inventory: {Printers: 60, Scanners: 35, Cables: 200, Webcams: 50}
Inventory Summary:
Total products: 4
Total stock units: 345
Low stock items (below 30): 0
Products restocked: 1
Status: Inventory management completed

Seu programa deve usar containsKey() para verificar se o produto existe no inventário, putIfAbsent() para adicionar novos produtos com segurança com um estoque padrão de 50 unidades, e atualizações diretas de valor no mapa para aumentar as quantidades de estoque. Conte itens com baixo estoque como aqueles com quantidades abaixo de 30 unidades. Calcule o total de unidades em estoque somando todas as quantidades no inventário final. O formato de entrada será: nome do armazém, depois nomes de produtos e quantidades de estoque alternados (como strings que precisam ser convertidas para inteiros), terminando com "inventory_done", seguido pelo produto a ser verificado, novo produto a ser adicionado, produto a ser reabastecido e quantidade adicional.

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler o nome do armazém
  String? warehouseName = stdin.readLineSync();
  
  // Ler itens do inventário até "inventory_done"
  Map<String, int> inventory = {};
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "inventory_done") break;
    
    String productName = input!;
    String? quantityStr = stdin.readLineSync();
    int quantity = int.parse(quantityStr!);
    inventory[productName] = quantity;
  }
  
  // Ler produto para verificar
  String? productToCheck = stdin.readLineSync();
  
  // Ler novo produto para adicionar
  String? newProduct = stdin.readLineSync();
  
  // Ler produto para reabastecer
  String? productToRestock = stdin.readLineSync();
  
  // Ler quantidade adicional
  String? additionalQuantityStr = stdin.readLineSync();
  int additionalQuantity = int.parse(additionalQuantityStr!);
  
  // TODO: Escreva seu código abaixo
  // Use containsKey() para verificar se os produtos existem
  // Use putIfAbsent() para adicionar novos produtos com estoque padrão 50
  // Atualize as quantidades de estoque e calcule as estatísticas do inventário
  
  // Imprimir o relatório de gestão de inventário
  print("Warehouse: $warehouseName");
  // Adicione suas instruções de saída aqui
}

Todas as lições de Lógica & Fluxo