Calculando o Custo Total
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 35 de 65.
Desafio
FácilCrie um programa que continue o projeto da calculadora de carrinho de compras, implementando a funcionalidade para calcular o custo total de todos os itens no carrinho. Com base no gerenciamento de carrinho da lição anterior, seu programa deve:
- Usar o Map do catálogo de produtos existente e a List do carrinho de compras preenchida da configuração anterior
- 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() - Calcular o custo total iterando pela lista do carrinho e buscando o preço de cada item no mapa de produtos
- Somar todos os preços para obter o custo total final
- Exibir o relatório de cálculo do carrinho no formato exato mostrado abaixo
Por exemplo, se a loja tem os produtos "Apple" a 1.50, "Banana" a 0.80, "Orange" a 2.00, "Milk" a 3.25, e os clientes desejam adicionar "Apple", "Banana", "Apple", "Milk", seu programa deve exibir:
Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Cart Contents: [Apple, Banana, Apple, Milk]
Cost Calculation:
Apple: $1.50
Banana: $0.80
Apple: $1.50
Milk: $3.25
Total Cost: $7.05
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Cart Status: Ready for checkoutSe a loja tem os produtos "Laptop" a 999.99, "Mouse" a 25.50, "Keyboard" a 75.00, e os clientes desejam adicionar "Mouse", "Keyboard", "Mouse", "Monitor", seu programa deve exibir:
Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Cart Contents: [Mouse, Keyboard, Mouse]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Mouse: $25.50
Total Cost: $126.00
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 a loja tem os produtos "Novel" a 12.99, "Magazine" a 4.50, "Textbook" a 89.00, e os clientes desejam adicionar "Novel", "Magazine", "Novel", "Textbook", "Dictionary", seu programa deve exibir:
Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Cart Contents: [Novel, General, Novel, Textbook]
Cost Calculation:
Novel: $12.99
Magazine: $4.50
Novel: $12.99
Textbook: $89.00
Total Cost: $119.48
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 1
Cart Status: Ready for checkoutSeu programa deve iterar por cada item na lista do carrinho de compras, buscar seu preço no mapa do catálogo de produtos e adicionar esse preço a um total acumulado. Use um loop para processar cada item do carrinho e acumular o custo total. Exiba o preço individual de cada item durante a fase de cálculo de custo. Formate todos os preços para mostrar exatamente 2 casas decimais. O formato de entrada será: nomes dos itens para adicionar ao carrinho, terminando com "cart_done".
Experimente você mesmo
import 'dart:io';
void main() {
// Product catalog with items and prices
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
};
// Shopping cart to store selected items
List<String> shoppingCart = [];
// Counters for tracking operations
int successfulAdditions = 0;
int itemsNotFound = 0;
print("Shopping Cart Operations:");
// Read items until "cart_done" is received
String? item;
while ((item = stdin.readLineSync()) != "cart_done") {
if (item != null) {
if (productCatalog.containsKey(item)) {
shoppingCart.add(item);
successfulAdditions++;
print("Adding '$item': Item added to cart successfully");
} else {
itemsNotFound++;
print("Adding '$item': Item not available in store");
}
}
}
// Display cart contents
print("Cart Contents: $shoppingCart");
// Calculate unique products
Set<String> uniqueProducts = shoppingCart.toSet();
// Display cart summary
print("Cart Summary:");
print("Total items in cart: ${shoppingCart.length}");
print("Unique products in cart: ${uniqueProducts.length}");
print("Items successfully added: $successfulAdditions");
print("Items not found: $itemsNotFound");
print("Cart Status: Ready for checkout");
}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