Menu
Coddy logo textTech

Özet - Envanter Güncelleme

Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 32 / 65.

challenge icon

Görev

Kolay

Ürün stok seviyelerini takip ederek, mevcut öğeleri kontrol ederek, yeni ürünleri güvenli bir şekilde ekleyerek ve miktarları güncelleyerek bir depo envanter sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:

  1. Depo adını temsil eden bir dize (string) girdisi okuyun
  2. Ürün adlarını ve mevcut stok miktarlarını temsil eden birden fazla girdi çifti okuyun (girdi "inventory_done" değerini aldığınızda sona erecektir)
  3. Varlığı kontrol edilecek bir ürünü temsil eden bir dize girdisi okuyun
  4. Varsayılan stokla eklenecek yeni bir ürünü temsil eden bir dize girdisi okuyun
  5. Yeniden stoklanacak bir ürünü temsil eden bir dize girdisi okuyun
  6. Yeniden stoklanan ürüne eklenecek ek miktarı temsil eden bir dize girdisi okuyun
  7. Ürün adlarını anahtar (key) ve stok miktarlarını değer (value) olarak saklamak için bir Map oluşturun
  8. Belirtilen ürünün envanterde olup olmadığını kontrol etmek için containsKey() kullanın
  9. Yeni ürünü 50 birimlik varsayılan stokla eklemek için putIfAbsent() kullanın
  10. Ek miktarı ekleyerek yeniden stoklanan ürünün stok miktarını güncelleyin
  11. Envanter yönetim raporunu tam olarak aşağıda gösterilen formatta yazdırın

Örneğin, depo adı "Central Warehouse" ise, envanter 25 birimle "Laptops", 150 birimle "Mice", 75 birimle "Keyboards" içeriyorsa, kontrol edilecek ürün "Laptops", eklenecek yeni ürün "Monitors", yeniden stoklanacak ürün "Mice" ve ek miktar 30 ise, programınız şu çıktıyı vermelidir:

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 completed

Eğer depo adı "North Storage" ise, envanter 40 birimle "Tablets", 80 birimle "Headphones" içeriyorsa, kontrol edilecek ürün "Smartphones", eklenecek yeni ürün "Tablets", yeniden stoklanacak ürün "Headphones" ve ek miktar 20 ise, programınız şu çıktıyı vermelidir:

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 completed

Eğer depo adı "South Depot" ise, envanter 15 birimle "Printers", 35 birimle "Scanners", 200 birimle "Cables" içeriyorsa, kontrol edilecek ürün "Scanners", eklenecek yeni ürün "Webcams", yeniden stoklanacak ürün "Printers" ve ek miktar 45 ise, programınız şu çıktıyı vermelidir:

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 completed

Programınız, ürünün envanterde olup olmadığını doğrulamak için containsKey(), yeni ürünleri 50 birimlik varsayılan stokla güvenli bir şekilde eklemek için putIfAbsent() ve stok miktarlarını artırmak için doğrudan map değeri güncellemelerini kullanmalıdır. Düşük stoklu öğeleri, miktarı 30 birimin altında olanlar olarak sayın. Toplam stok birimlerini, nihai envanterdeki tüm miktarları toplayarak hesaplayın. Giriş formatı şu şekilde olacaktır: depo adı, ardından dönüşümlü olarak ürün adları ve stok miktarları (tam sayıya dönüştürülmesi gereken dizeler olarak), "inventory_done" ile biten, ardından kontrol edilecek ürün, eklenecek yeni ürün, yeniden stoklanacak ürün ve ek miktar.

Kendin dene

import 'dart:io';

void main() {
  // Depo adını oku
  String? warehouseName = stdin.readLineSync();
  
  // "inventory_done" gelene kadar envanter öğelerini oku
  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;
  }
  
  // Kontrol edilecek ürünü oku
  String? productToCheck = stdin.readLineSync();
  
  // Eklenecek yeni ürünü oku
  String? newProduct = stdin.readLineSync();
  
  // Stok yenilenecek ürünü oku
  String? productToRestock = stdin.readLineSync();
  
  // Ek miktarı oku
  String? additionalQuantityStr = stdin.readLineSync();
  int additionalQuantity = int.parse(additionalQuantityStr!);
  
  // TODO: Kodunuzu aşağıya yazın
  // Ürünlerin var olup olmadığını kontrol etmek için containsKey() kullanın
  // Yeni ürünleri varsayılan 50 stokla eklemek için putIfAbsent() kullanın
  // Stok miktarlarını güncelleyin ve envanter istatistiklerini hesaplayın
  
  // Envanter yönetim raporunu yazdırın
  print("Warehouse: $warehouseName");
  // Çıktı ifadelerinizi buraya ekleyin
}

Mantık & Akış bölümündeki tüm dersler