סיכום – עדכון מלאי
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 32 מתוך 65.
אתגר
קלצרו תוכנית שמנהלת מערכת מלאי של מחסן באמצעות מעקב אחר רמות המלאי של מוצרים, בדיקה אם פריטים כבר קיימים, הוספה בטוחה של מוצרים חדשים ועדכון כמויות. התוכנית שלכם צריכה:
- לקרוא קלט מסוג מחרוזת שמייצג את שם המחסן
- לקרוא כמה זוגות של קלטים שמייצגים שמות מוצרים וכמויות המלאי הנוכחיות שלהם (הקלט יסתיים כשתקבלו
"inventory_done") - לקרוא קלט מסוג מחרוזת שמייצג מוצר שאותו יש לבדוק אם הוא קיים
- לקרוא קלט מסוג מחרוזת שמייצג מוצר חדש להוספה עם מלאי ברירת מחדל
- לקרוא קלט מסוג מחרוזת שמייצג מוצר שיש לחדש את מלאיו
- לקרוא קלט מסוג מחרוזת שמייצג את הכמות הנוספת שיש להוסיף למלאי המוצר
- ליצור Map לאחסון שמות המוצרים כמפתחות וכמויות המלאי שלהם כערכים
- להשתמש ב-
containsKey()כדי לבדוק אם המוצר שצוין קיים במלאי - להשתמש ב-
putIfAbsent()כדי להוסיף את המוצר החדש עם מלאי ברירת מחדל של 50 יחידות - לעדכן את כמות המלאי של המוצר שמחדשים את מלאיו על ידי הוספת הכמות הנוספת
- להדפיס את דוח ניהול המלאי בדיוק בפורמט שמוצג להלן
לדוגמה, אם שם המחסן הוא "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 יחידות, ובעדכון ישיר של ערכי המפה כדי להגדיל את כמויות המלאי. ספרו פריטים בעלי מלאי נמוך אם הכמות שלהם קטנה מ-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");
// הוסף כאן את פקודות הפלט שלך
}כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1מניפולציות מתקדמות ברשימות
מאפייני רשימה: ראשון ואחרוןמצב הרשימה: isEmpty ו-isNotEmpהיפוך רשימההוספה לרשימה: insertהסרת פריטים מרשימה: removeWhereחיפוש ברשימה: indexOfמיון רשימהערבוב רשימהסיכום – מארגן רשימות4מניפולציה מתקדמת של Map
מעבר על Mapבדיקה אם מפתחות וערכים קיימיםמאפייני Map: מפתחות וערכיםהוספה מותנית: putIfAbsentהסרת רשומות מ־MapMaps מקונניםסיכום – עדכון מלאי2פעולות פונקציונליות על רשימות
טרנספורמציה באמצעות 'map'סינון באמצעות 'where'שימוש ב-'.toList()'בדיקת תנאים באמצעות 'any'תנאים באמצעות 'every'איתור באמצעות 'firstWhere'סיכום – סינון נתונים5פרויקט: חישוב עגלת קניות
הגדרת הפרויקטהוספת פריטים לעגלה3קבוצות
מהי קבוצה?יצירת קבוצההוספה והסרה מקבוצותבדיקת נוכחות של איברים בקבוצההמרת רשימה לקבוצהאיחוד קבוצותחיתוך קבוצותהפרש קבוצותסיכום – רשימת אורחים ייחודית6טיפול בסיסי בשגיאות
מהן חריגות?בלוק ה-try-catchתפיסת חריגות באמצעות onבלוק ה-finallyהשלכת חריגהסיכום – חלוקה בטוחה9טיפוסי מנייה (Enums)
מה הם Enums?הגדרת Enum פשוטשימוש ב-Enums במשתניםEnums במשפטי 'switch'סיכום – רמזורתרגלו בעצמכם: קומפיילר Dart אונליין