Menu
Coddy logo textTech

Resumen - Actualización de inventario

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy. Lección 32 de 65.

challenge icon

Desafío

Fácil

Crea un programa que gestione un sistema de inventario de almacén mediante el seguimiento de los niveles de existencias de los productos, la comprobación de artículos existentes, la adición segura de nuevos productos y la actualización de cantidades. Tu programa debe:

  1. Leer una entrada de tipo cadena que represente el nombre del almacén
  2. Leer varios pares de entradas que representen los nombres de los productos y sus cantidades actuales en stock (la entrada finalizará cuando recibas "inventory_done")
  3. Leer una entrada de tipo cadena que represente un producto cuya existencia se quiere comprobar
  4. Leer una entrada de tipo cadena que represente un nuevo producto que se añadirá con stock predeterminado
  5. Leer una entrada de tipo cadena que represente un producto que se repondrá
  6. Leer una entrada de tipo cadena que represente la cantidad adicional que se añadirá al producto repuesto
  7. Crear un Map para almacenar los nombres de los productos como claves y sus cantidades en stock como valores
  8. Usar containsKey() para comprobar si el producto especificado existe en el inventario
  9. Usar putIfAbsent() para añadir el nuevo producto con un stock predeterminado de 50 unidades
  10. Actualizar la cantidad en stock del producto repuesto añadiendo la cantidad adicional
  11. Imprimir el informe de gestión del inventario en el formato exacto que se muestra a continuación

Por ejemplo, si el nombre del almacén es "Central Warehouse", el inventario incluye "Laptops" con 25 unidades, "Mice" con 150 unidades, "Keyboards" con 75 unidades, el producto que se comprobará es "Laptops", el nuevo producto que se añadirá es "Monitors", el producto que se repondrá es "Mice" y la cantidad adicional es 30, tu programa debe mostrar:

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

Si el nombre del almacén es "North Storage", el inventario incluye "Tablets" con 40 unidades, "Headphones" con 80 unidades, el producto que se comprobará es "Smartphones", el nuevo producto que se añadirá es "Tablets", el producto que se repondrá es "Headphones" y la cantidad adicional es 20, tu programa debe mostrar:

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

Si el nombre del almacén es "South Depot", el inventario incluye "Printers" con 15 unidades, "Scanners" con 35 unidades, "Cables" con 200 unidades, el producto que se comprobará es "Scanners", el nuevo producto que se añadirá es "Webcams", el producto que se repondrá es "Printers" y la cantidad adicional es 45, tu programa debe mostrar:

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

Tu programa debe usar containsKey() para verificar si el producto existe en el inventario, putIfAbsent() para añadir de forma segura nuevos productos con un stock predeterminado de 50 unidades y actualizaciones directas de los valores del mapa para aumentar las cantidades en stock. Cuenta como artículos con poco stock aquellos cuyas cantidades sean inferiores a 30 unidades. Calcula el total de unidades en stock sumando todas las cantidades del inventario final. El formato de entrada será: nombre del almacén, después nombres de productos y cantidades en stock alternados (como cadenas que deben convertirse a enteros), finalizando con "inventory_done", seguido del producto que se comprobará, el nuevo producto que se añadirá, el producto que se repondrá y la cantidad adicional.

FORMATO DE SALIDA REQUERIDO:

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Leer el nombre del almacén
  String? warehouseName = stdin.readLineSync();
  
  // Leer artículos del inventario hasta "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;
  }
  
  // Leer producto para verificar
  String? productToCheck = stdin.readLineSync();
  
  // Leer nuevo producto para añadir
  String? newProduct = stdin.readLineSync();
  
  // Leer producto para reabastecer
  String? productToRestock = stdin.readLineSync();
  
  // Leer cantidad adicional
  String? additionalQuantityStr = stdin.readLineSync();
  int additionalQuantity = int.parse(additionalQuantityStr!);
  
  // TODO: Escribe tu código a continuación
  // Usa containsKey() para verificar si los productos existen
  // Usa putIfAbsent() para añadir nuevos productos con un stock predeterminado de 50
  // Actualiza las cantidades de stock y calcula las estadísticas del inventario
  
  // Imprimir el informe de gestión de inventario
  print("Warehouse: $warehouseName");
  // Añade tus declaraciones de salida aquí
}

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Dart online