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 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:
- Leer una entrada de tipo cadena que represente el nombre del almacén
- 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") - Leer una entrada de tipo cadena que represente un producto cuya existencia se quiere comprobar
- Leer una entrada de tipo cadena que represente un nuevo producto que se añadirá con stock predeterminado
- Leer una entrada de tipo cadena que represente un producto que se repondrá
- Leer una entrada de tipo cadena que represente la cantidad adicional que se añadirá al producto repuesto
- Crear un Map para almacenar los nombres de los productos como claves y sus cantidades en stock como valores
- Usar
containsKey()para comprobar si el producto especificado existe en el inventario - Usar
putIfAbsent()para añadir el nuevo producto con un stock predeterminado de 50 unidades - Actualizar la cantidad en stock del producto repuesto añadiendo la cantidad adicional
- 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 completedSi 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 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 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 completedTu 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.
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 únicaPractica por tu cuenta: Compilador de Dart online