Özet - Envanter Güncelleme
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 32 / 65.
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:
- Depo adını temsil eden bir dize (string) girdisi okuyun
- Ü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) - Varlığı kontrol edilecek bir ürünü temsil eden bir dize girdisi okuyun
- Varsayılan stokla eklenecek yeni bir ürünü temsil eden bir dize girdisi okuyun
- Yeniden stoklanacak bir ürünü temsil eden bir dize girdisi okuyun
- Yeniden stoklanan ürüne eklenecek ek miktarı temsil eden bir dize girdisi okuyun
- Ürün adlarını anahtar (key) ve stok miktarlarını değer (value) olarak saklamak için bir Map oluşturun
- Belirtilen ürünün envanterde olup olmadığını kontrol etmek için
containsKey()kullanın - Yeni ürünü 50 birimlik varsayılan stokla eklemek için
putIfAbsent()kullanın - Ek miktarı ekleyerek yeniden stoklanan ürünün stok miktarını güncelleyin
- 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 completedEğ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 completedEğ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 completedProgramı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
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi