סקירת הפרויקט
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 45 מתוך 68.
אתגר
קלאתה עומד לבנות בודק מלאי פשוט שיעזור לך לנהל את רמות המלאי של המוצרים.
הכן את הבסיס למערכת ניהול המלאי שלך על ידי יצירת מבני הנתונים המרכזיים והצגת נתוני המלאי הראשוניים. האתגר הזה מגדיר את המבנה Product ואת מפת המלאי שישמשו לאורך כל הפרויקט.
תקבל שני קלטים:
- מחרוזת המכילה מידע על החנות בפורמט
"store_name,location"(למשל,"TechStore,Downtown") - מחרוזת המכילה נתוני מוצרים ראשוניים בפורמט
"product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3"(למשל,"Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")
המשימה שלך היא:
- ליצור מבנה
Productעם שני שדות:Price(float64) - מחיר המוצרQuantity(int) - כמות המלאי הנוכחית
- לנתח את הקלט הראשון באמצעות פיצול לפי פסיקים כדי לקבל את שם החנות והמיקום
- לנתח את הקלט השני באמצעות פיצול לפי פסיקים כדי לקבל את רשומות המוצרים הבודדות
- עבור כל רשומת מוצר, לפצל לפי נקודתיים כדי לקבל את שם המוצר, המחיר והכמות
- להמיר את מחרוזת המחיר ל-float64 ואת מחרוזת הכמות ל-int
- ליצור מפה בשם
inventoryשבה המפתחות הם שמות המוצרים (מחרוזות) והערכים הם מבניProduct - לאכלס את מפת המלאי בנתוני המוצרים שפוענחו
- להציג את פרטי החנות:
"=== [store_name] Inventory System ===""Location: [location]""Inventory initialized with [number_of_products] products"
- להציג את המלאי הנוכחי בסדר אלפביתי לפי שם המוצר:
"Current Inventory:"- עבור כל מוצר:
"- [product_name]: $[price] (Stock: [quantity])"
- לחשב ולהציג סטטיסטיקות מלאי:
"Inventory Statistics:""Total Products: [total_number_of_products]""Total Items in Stock: [sum_of_all_quantities]""Total Inventory Value: $[sum_of_price_times_quantity_for_all_products]"
- להציג את מצב המערכת:
"System Status: Ready""Inventory management system initialized successfully"
השתמש בחבילה strings כדי לפצל את מחרוזות הקלט, בחבילה strconv כדי להמיר מחרוזות למספרים, בחבילה fmt לפלט מעוצב, ובחבילה sort כדי למיין את שמות המוצרים בסדר אלפביתי. עצב את הערך הכולל של המלאי עם 2 ספרות אחרי הנקודה העשרונית. האתגר הזה מניח את היסודות של מבני הנתונים שיורחבו בשיעורים הבאים בפרויקט ניהול המלאי.
נסו בעצמכם
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
// TODO: הגדירו כאן את ה-struct Product
func main() {
// קראו את הקלט באמצעות bufio.Scanner כדי לטפל ברווחים כראוי
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
storeInfo := scanner.Text()
scanner.Scan()
productData := scanner.Text()
// TODO: כתבו את הקוד שלכם למטה
// 1. נתחו את פרטי החנות (פצלו לפי פסיק ובדקו את האורך)
// 2. נתחו את נתוני המוצרים (פצלו לפי פסיק, ואז לפי נקודתיים עבור כל מוצר)
// 3. צרו מפת מלאי
// 4. המירו מחרוזות לטיפוסים המתאימים ומלאו את המלאי
// 5. הציגו את פרטי החנות
// 6. הציגו את המלאי הנוכחי (ממוין לפי סדר אלפביתי)
// 7. חשבו והציגו נתונים סטטיסטיים של המלאי
// 8. הציגו את מצב המערכת
}כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1בקרת זרימה מתקדמת
switch עם `fallthrough`יציאה מלולאות מקוננותהמשך לולאה מסוימתהצהרת `goto`סיכום – שליטה מתקדמת בלולאות4פרויקט: רשימת משימות פשוטה
הגדרת הפרויקטהוספת משימה2מבנים ושיטות
הגדרת שיטות במבניםמקבלי ערךמקבלי מצביעבחירת מקבליםשיטות לעומת פונקציותסיכום — התנהגות המבנים5מפות לעומק
מפות של Structsמצביעים כערכים במפהבדיקה אם מפות הן nilהשוואת מפותסיכום - מונה תדירות מילים8פרויקט: ניהול מלאי פשוט
סקירת הפרויקטבדיקת המלאיתרגלו בעצמכם: קומפיילר Go אונליין