Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - تحديث المخزون

جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 32 من 65.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يدير نظام جرد المستودعات من خلال تتبع مستويات مخزون المنتجات، والتحقق من العناصر الموجودة، وإضافة منتجات جديدة بأمان، وتحديث الكميات. يجب أن يقوم برنامجك بما يلي:

  1. قراءة مدخل نصي (string) يمثل اسم المستودع
  2. قراءة أزواج متعددة من المدخلات تمثل أسماء المنتجات وكميات مخزونها الحالية (سينتهي الإدخال عندما تتلقى "inventory_done")
  3. قراءة مدخل نصي يمثل منتجاً للتحقق من وجوده
  4. قراءة مدخل نصي يمثل منتجاً جديداً لإضافته بمخزون افتراضي
  5. قراءة مدخل نصي يمثل منتجاً لإعادة تزويد مخزونه
  6. قراءة مدخل نصي يمثل الكمية الإضافية المراد إضافتها للمنتج الذي تمت إعادة تزويده
  7. إنشاء Map لتخزين أسماء المنتجات كمفاتيح (keys) وكميات مخزونها كقيم (values)
  8. استخدام containsKey() للتحقق مما إذا كان المنتج المحدد موجوداً في الجرد
  9. استخدام putIfAbsent() لإضافة المنتج الجديد بمخزون افتراضي قدره 50 وحدة
  10. تحديث كمية المخزون للمنتج المعاد تزويده عن طريق إضافة الكمية الإضافية
  11. طباعة تقرير إدارة الجرد بالتنسيق الدقيق الموضح أدناه

على سبيل المثال، إذا كان اسم المستودع هو "Central Warehouse"، والجرد يتضمن "Laptops" بـ 25 وحدة، و "Mice" بـ 150 وحدة، و "Keyboards" بـ 75 وحدة، والمنتج المراد التحقق منه هو "Laptops"، والمنتج الجديد المراد إضافته هو "Monitors"، والمنتج المراد إعادة تزويده هو "Mice"، والكمية الإضافية هي 30، فيجب أن يخرج برنامجك ما يلي:

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

إذا كان اسم المستودع هو "North Storage"، والجرد يتضمن "Tablets" بـ 40 وحدة، و "Headphones" بـ 80 وحدة، والمنتج المراد التحقق منه هو "Smartphones"، والمنتج الجديد المراد إضافته هو "Tablets"، والمنتج المراد إعادة تزويده هو "Headphones"، والكمية الإضافية هي 20، فيجب أن يخرج برنامجك ما يلي:

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

إذا كان اسم المستودع هو "South Depot"، والجرد يتضمن "Printers" بـ 15 وحدة، و "Scanners" بـ 35 وحدة، و "Cables" بـ 200 وحدة، والمنتج المراد التحقق منه هو "Scanners"، والمنتج الجديد المراد إضافته هو "Webcams"، والمنتج المراد إعادة تزويده هو "Printers"، والكمية الإضافية هي 45، فيجب أن يخرج برنامجك ما يلي:

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

يجب أن يستخدم برنامجك containsKey() للتحقق مما إذا كان المنتج موجوداً في الجرد، و putIfAbsent() لإضافة منتجات جديدة بأمان بمخزون افتراضي قدره 50 وحدة، وتحديثات قيم الخريطة (map) المباشرة لزيادة كميات المخزون. قم بعدّ عناصر المخزون المنخفض كعناصر ذات كميات أقل من 30 وحدة. احسب إجمالي وحدات المخزون عن طريق جمع كل الكميات في الجرد النهائي. سيكون تنسيق الإدخال: اسم المستودع، ثم أسماء المنتجات وكميات المخزون بالتناوب (كسلاسل نصية تحتاج إلى تحويلها إلى أعداد صحيحة)، وتنتهي بـ "inventory_done"، متبوعة بالمنتج المراد التحقق منه، والمنتج الجديد المراد إضافته، والمنتج المراد إعادة تزويده، والكمية الإضافية.

جرّب بنفسك

import 'dart:io';

void main() {
  // قراءة اسم المستودع
  String? warehouseName = stdin.readLineSync();
  
  // قراءة عناصر المخزون حتى "inventory_done"
  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;
  }
  
  // قراءة المنتج للتحقق منه
  String? productToCheck = stdin.readLineSync();
  
  // قراءة منتج جديد لإضافته
  String? newProduct = stdin.readLineSync();
  
  // قراءة المنتج لإعادة التخزين
  String? productToRestock = stdin.readLineSync();
  
  // قراءة الكمية الإضافية
  String? additionalQuantityStr = stdin.readLineSync();
  int additionalQuantity = int.parse(additionalQuantityStr!);
  
  // TODO: اكتب الكود الخاص بك أدناه
  // استخدم containsKey() للتحقق مما إذا كانت المنتجات موجودة
  // استخدم putIfAbsent() لإضافة منتجات جديدة بمخزون افتراضي 50
  // تحديث كميات المخزون وحساب إحصائيات المخزون
  
  // طباعة تقرير إدارة المخزون
  print("Warehouse: $warehouseName");
  // أضف بيانات الإخراج الخاصة بك هنا
}

جميع دروس Logic & Flow