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.
Desafio
FácilCrie 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:
- Ler uma entrada de string representando o nome do armazém
- Ler múltiplos pares de entradas representando nomes de produtos e suas quantidades atuais em estoque (a entrada terminará quando você receber
"inventory_done") - Ler uma entrada de string representando um produto para verificar a existência
- Ler uma entrada de string representando um novo produto para adicionar com estoque padrão
- Ler uma entrada de string representando um produto para reabastecer
- Ler uma entrada de string representando a quantidade adicional a ser adicionada ao produto reabastecido
- Criar um Map para armazenar nomes de produtos como chaves e suas quantidades em estoque como valores
- Usar
containsKey()para verificar se o produto especificado existe no inventário - Usar
putIfAbsent()para adicionar o novo produto com um estoque padrão de 50 unidades - Atualizar a quantidade em estoque do produto reabastecido adicionando a quantidade adicional
- 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 completedSe 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 completedSe 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 completedSeu 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
1Manipulação Avançada de Listas
Propriedades de Lista: first & lastEstado da Lista: isEmpty & isNotEmptyInvertendo uma ListaAdicionando a uma Lista: insertRemoção em Listas: removeWhereBuscando em uma Lista: indexOfOrdenando uma ListaEmbaralhando uma ListaRecapitulação - Organizador de Listas4Manipulação Avançada de Mapas
Iterando sobre um MapVerificando Chaves e ValoresPropriedades do Map: keys & valuesAdição Condicional: putIfAbsentRemovendo Entradas de um MapMaps AninhadosRecapitulação - Atualização de Inventário2Operações Funcionais em Listas
Transformando com 'map'Filtrando com 'where'Usando '.toList()'Verificando Condições com 'any'Condições com 'every'Encontrando com 'firstWhere'Recapitulação - Filtragem de Dados5Projeto: Cálculo de Carrinho de Compras
Configuração do ProjetoAdicionando Itens ao Carrinho3Conjuntos
O que é um Conjunto?Criando um ConjuntoAdicionando e Removendo de ConjuntosVerificando Elementos em um ConjuntoConvertendo uma Lista para um ConjuntoUnião de ConjuntosInterseção de ConjuntosDiferença de ConjuntosRecapitulação - Lista de Convidados Únicos