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.
Desafío
FácilCrea un programa que gestione un sistema de inventario de almacén mediante el seguimiento de los niveles de stock 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:
- Leer una entrada de cadena que represente el nombre del almacén
- Leer múltiples pares de entradas que representen nombres de productos y sus cantidades de stock actuales (la entrada terminará cuando recibas
"inventory_done") - Leer una entrada de cadena que represente un producto para verificar su existencia
- Leer una entrada de cadena que represente un nuevo producto para agregar con stock predeterminado
- Leer una entrada de cadena que represente un producto para reabastecer
- Leer una entrada de cadena que represente la cantidad adicional para agregar al producto reabastecido
- Crear un Map para almacenar nombres de productos como claves y sus cantidades de stock como valores
- Usar
containsKey()para verificar si el producto especificado existe en el inventario - Usar
putIfAbsent()para agregar el nuevo producto con un stock predeterminado de 50 unidades - Actualizar la cantidad de stock del producto reabastecido sumando la cantidad adicional
- Imprimir el informe de gestión de 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 a verificar es "Laptops", el nuevo producto a agregar es "Monitors", el producto a reabastecer es "Mice", y la cantidad adicional es 30, tu programa debería 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 completedSi el nombre del almacén es "North Storage", el inventario incluye "Tablets" con 40 unidades, "Headphones" con 80 unidades, el producto a verificar es "Smartphones", el nuevo producto a agregar es "Tablets", el producto a reabastecer es "Headphones", y la cantidad adicional es 20, tu programa debería 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 completedSi 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 a verificar es "Scanners", el nuevo producto a agregar es "Webcams", el producto a reabastecer es "Printers", y la cantidad adicional es 45, tu programa debería 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 completedTu programa debe usar containsKey() para verificar si el producto existe en el inventario, putIfAbsent() para agregar de forma segura nuevos productos con un stock predeterminado de 50 unidades, y actualizaciones directas de los valores del mapa para aumentar las cantidades de stock. Cuenta los artículos con poco stock como aquellos con cantidades inferiores a 30 unidades. Calcula el total de unidades de stock sumando todas las cantidades en el inventario final. El formato de entrada será: nombre del almacén, luego nombres de productos y cantidades de stock alternados (como cadenas que deben convertirse a enteros), terminando con "inventory_done", seguido del producto a verificar, el nuevo producto a agregar, el producto a reabastecer y la cantidad adicional.
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
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única