Agregar artículos al carrito
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy. Lección 34 de 65.
Desafío
FácilCrea un programa que implemente la funcionalidad para añadir artículos a un carrito de compras. Tu programa debe usar un Map de catálogo de productos definido directamente en el código y un List de carrito de compras vacío; después, debe procesar las entradas de artículos del usuario.
Define el siguiente catálogo de productos directamente en tu código:
Map<String, double> productCatalog = {
'Apple': 1.50,
'Banana': 0.80,
'Orange': 2.00,
'Milk': 3.25,
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00,
'Novel': 12.99,
'Magazine': 4.50,
'Textbook': 89.00
};Tu programa debe:
- Usar el Map del catálogo de productos definido anteriormente y un List de carrito de compras vacío
- Leer múltiples entradas de tipo string que representen los artículos que los clientes desean añadir a su carrito (la entrada terminará cuando recibas
"cart_done") - Para cada artículo, comprobar si existe en el catálogo de productos usando
containsKey() - Si el artículo existe, añadirlo al List del carrito de compras usando el método
add() - Si el artículo no existe, omitirlo y continuar con el procesamiento
- Registrar las adiciones correctas y los intentos fallidos
- Mostrar el informe de gestión del carrito exactamente en el formato que se muestra a continuación
Por ejemplo, si los clientes desean añadir "Apple", "Bread", "Banana", "Apple", "Juice", tu programa debe mostrar:
Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Bread': Item not available in store
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Juice': Item not available in store
Cart Contents: [Apple, Banana, Apple]
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 2
Cart Status: Ready for checkoutSi los clientes desean añadir "Mouse", "Monitor", "Keyboard", "Mouse", tu programa debe mostrar:
Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Cart Contents: [Mouse, Keyboard, Mouse]
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 1
Cart Status: Ready for checkoutSi los clientes desean añadir "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", tu programa debe mostrar:
Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Comic': Item not available in store
Adding 'Textbook': Item added to cart successfully
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 2
Cart Status: Ready for checkoutTu programa debe usar containsKey() para verificar que cada artículo existe en el catálogo de productos antes de añadirlo al carrito. Usa el método add() para agregar artículos válidos al List del carrito de compras. Cuenta el total de artículos en el carrito usando la propiedad length y determina los productos únicos convirtiendo el carrito en un Set y comprobando su longitud. Registra tanto las adiciones correctas como los artículos que no se encontraron en el catálogo. El formato de entrada será: nombres de artículos que se añadirán al carrito, terminando con "cart_done".
Pruébalo tú mismo
import 'dart:io';
void main() {
// Read store name
String? storeName = stdin.readLineSync();
// Initialize data structures
Map<String, double> products = {};
List<String> shoppingCart = [];
// Read products until "products_done"
while (true) {
String? input = stdin.readLineSync();
if (input == "products_done") {
break;
}
String productName = input!;
String? priceInput = stdin.readLineSync();
double price = double.parse(priceInput!);
// Add product to map
products[productName] = price;
}
// Calculate statistics
double totalPrice = 0;
double maxPrice = 0;
double minPrice = double.infinity;
String mostExpensiveItem = '';
String cheapestItem = '';
for (String productName in products.keys) {
double price = products[productName]!;
totalPrice += price;
if (price > maxPrice) {
maxPrice = price;
mostExpensiveItem = productName;
}
if (price < minPrice) {
minPrice = price;
cheapestItem = productName;
}
}
double averagePrice = totalPrice / products.length;
// Print the store setup report
print('Store: $storeName');
print('Product Catalog Setup:');
print('Available Products: $products');
print('Shopping Cart Initialized: $shoppingCart');
print('System Status:');
print('Total products available: ${products.length}');
print('Cart status: Empty');
print('Most expensive item: $mostExpensiveItem (\$${maxPrice.toStringAsFixed(2)})');
print('Cheapest item: $cheapestItem (\$${minPrice.toStringAsFixed(2)})');
print('Average product price: \$${averagePrice.toStringAsFixed(2)}');
print('Setup Status: Shopping cart system ready for customers');
}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