Adicionando Itens ao Carrinho
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 34 de 65.
Desafio
FácilCrie um programa que implemente a funcionalidade de adicionar itens a um carrinho de compras. Seu programa deve usar um Map de catálogo de produtos fixo no código e uma List de carrinho de compras vazia, e então processar as entradas de itens do usuário.
Defina o seguinte catálogo de produtos diretamente em seu 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
};Seu programa deve:
- Usar o Map de catálogo de produtos definido acima e uma List de carrinho de compras vazia
- Ler múltiplas entradas de string representando itens que os clientes desejam adicionar ao carrinho (a entrada terminará quando você receber
"cart_done") - Para cada item, verificar se ele existe no catálogo de produtos usando
containsKey() - Se o item existir, adicioná-lo à List do carrinho de compras usando o método
add() - Se o item não existir, ignorá-lo e continuar o processamento
- Rastrear adições bem-sucedidas e tentativas falhas
- Exibir o relatório de gerenciamento do carrinho no formato exato mostrado abaixo
Por exemplo, se os clientes quiserem adicionar "Apple", "Bread", "Banana", "Apple", "Juice", seu programa deve exibir:
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 checkoutSe os clientes quiserem adicionar "Mouse", "Monitor", "Keyboard", "Mouse", seu programa deve exibir:
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 checkoutSe os clientes quiserem adicionar "Novel", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", seu programa deve exibir:
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 checkoutSeu programa deve usar containsKey() para verificar se cada item existe no catálogo de produtos antes de adicioná-lo ao carrinho. Use o método add() para anexar itens válidos à List do carrinho de compras. Conte o total de itens no carrinho usando a propriedade length e determine os produtos únicos convertendo o carrinho para um Set e verificando seu tamanho. Rastreie tanto as adições bem-sucedidas quanto os itens que não foram encontrados no catálogo. O formato de entrada será: nomes de itens para adicionar ao carrinho, terminando com "cart_done".
Experimente você mesmo
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 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