إنشاء تقرير
جزء من قسم المنطق وتدفّق التنفيذ في رحلة GDScript على Coddy. الدرس 75 من 78.
التحدي
صعبأخيرًا، أضف الأمر sell، الذي يبيع عدة عناصر دفعةً واحدة ويعرض الإيرادات. احتفظ بكل ما كتبته في الخطوات السابقة.
سطر مثل sell Apple:30 Banana:20 يبيع 30 تفاحة و20 موزة. كل جزء يأتي بعد sell يتكوّن من اسم عنصر ونقطتين وكمية، ولا يظهر العنصر أكثر من مرة في السطر الواحد.
اكتب الدالة sales_report(inventory, sales) فوق _ready(). sales قاموس يربط كل اسم عنصر بالكمية المبيعة. عالج كل عنصر بالترتيب:
- إذا لم يكن العنصر موجودًا في
inventory، اطبعError: Item 'Orange' not found.وانتقل إلى العنصر التالي - إذا كان مخزونه أقل من الكمية، اطبع
Error: Insufficient stock for 'Apple'.وانتقل إلى العنصر التالي - وإلا، اطرح الكمية من المخزون وأضف حاصل ضرب الكمية في السعر إلى الإيرادات
تعيد الدالة النص Total revenue: $ متبوعًا بالإيرادات مع منزلتين عشريتين.
في الحلقة، ينشئ فرع sell قاموس sales من الأجزاء التي تأتي بعد الأمر. الجزء الذي لا يتكوّن بالضبط من اسم وعدد صحيح مفصولين بـ : يطبع Error: Invalid sale 'Apple-3'. (مع ذلك الجزء) ويُتجاوز. ثم اطبع ما تعيده sales_report().
بالنسبة إلى الأوامر add Apple 0.5 50 وadd Banana 0.2 60 وsell Apple:30 Banana:20 Orange:10 وshow وexit، يكون الناتج:
Inventory Management System
Item 'Apple' added successfully.
Item 'Banana' added successfully.
Error: Item 'Orange' not found.
Total revenue: $19.00
{ "Apple": { "price": 0.5, "stock": 20 }, "Banana": { "price": 0.2, "stock": 40 } }
Goodbye!جرّب بنفسك
extends Node
func add_item(inventory: Dictionary, item: String, price: float, stock: int) -> void:
if inventory.has(item):
print("Error: Item '%s' already exists." % item)
return
inventory[item] = {"price": price, "stock": stock}
print("Item '%s' added successfully." % item)
func update_stock(inventory: Dictionary, item: String, quantity: int) -> void:
if not inventory.has(item):
print("Error: Item '%s' not found." % item)
return
var new_stock: int = inventory[item]["stock"] + quantity
if new_stock < 0:
print("Error: Insufficient stock for '%s'." % item)
return
inventory[item]["stock"] = new_stock
print("Stock for '%s' updated successfully." % item)
func check_availability(inventory: Dictionary, item: String) -> int:
if not inventory.has(item):
return -1
return inventory[item]["stock"]
func _ready():
# المخزون: اسم العنصر -> {"price": float, "stock": int}
var inventory := {}
print("Inventory Management System")
while true:
var line := OS.read_string_from_stdin()
var parts := line.split(" ")
var command := parts[0]
if command == "exit":
print("Goodbye!")
break
elif command == "show":
print(inventory)
elif command == "add":
if parts.size() != 4:
print("Error: Use add ITEM PRICE STOCK")
elif not parts[2].is_valid_float() or not parts[3].is_valid_int():
print("Error: Price and stock must be numeric.")
else:
add_item(inventory, parts[1], float(parts[2]), int(parts[3]))
elif command == "update":
if parts.size() != 3:
print("Error: Use update ITEM QUANTITY")
elif not parts[2].is_valid_int():
print("Error: Quantity must be an integer.")
else:
update_stock(inventory, parts[1], int(parts[2]))
elif command == "check":
if parts.size() != 2:
print("Error: Use check ITEM")
else:
var stock := check_availability(inventory, parts[1])
if stock == -1:
print("Item not found")
else:
print(parts[1], ": ", stock, " in stock")
else:
print("Unknown command")
جميع دروس المنطق وتدفّق التنفيذ
1السلاسل النصية بالتفصيل
أساليب السلاسل النصيةالبحث داخل السلاسل النصيةالاستبدال وإزالة المسافات الطرفيةالتقسيم والدمجمراجعة - التحقق من اسم المستخدم4القواميس، الجزء الثاني
القواميس المتداخلةمصفوفات من القواميسدمج القواميسنسخ القواميسمراجعة - عدّ التكرارات2اتخاذ القرارات المتقدم
المطابقة باستخدام المتغيراتشروط المطابقةأنماط المصفوفاتأنماط القواميسالتحقق من العضويةمراجعة - محلل الأوامر5تطبيق دفتر جهات الاتصال
عرض القائمةإضافة جهة اتصال8مدير سجلات الطلاب
نظرة عامة على المشروعإضافة طالب3المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادالمصفوفات المتعرجةأنماط شائعة للمصفوفات ثنائية الأبعادمراجعة - لوحة اللعبة6المجموعات باستخدام القواميس
ما هي المجموعة؟القاموس كمجموعةالإضافة والإزالةالاتحاد والتقاطعفرق المجموعاتمراجعة - إزالة العناصر المكررة9تجميع البيانات المتقدم
جمع القيمإيجاد الحد الأدنى والحد الأقصىالترتيب المخصصمراجعة - أداة ترتيب القواميستدرّب بنفسك: مترجم GDScript عبر الإنترنت