يوضح هذا المقال طريقة كتابة برنامج Java لحساب الوزن الزائد للحقائب اعتماداً على الحد المسموح به لكل فئة من فئات التذاكر. الفكرة مناسبة للمبتدئين لأنها تجمع بين إدخال البيانات من المستخدم، والشروط، واستخدام الدوال، والتحقق من القيم قبل إجراء الحساب.
ما المقصود بالوزن الزائد؟
تحدد شركة الطيران وزناً مسموحاً للأمتعة، وقد يختلف هذا الحد حسب الوجهة ونوع التذكرة والبرنامج الخاص بالمسافر. إذا تجاوز وزن الحقيبة الحد المسموح، فقد تفرض الشركة رسوماً إضافية. لذلك سنبني المثال بطريقة تجعل الحدود وسعر الكيلو قيماً توضيحية قابلة للتعديل، ولا تمثل سياسة شركة طيران بعينها. قبل السفر يجب مراجعة الشروط الرسمية لشركة الطيران.
خطوات بناء البرنامج
يطلب البرنامج رمز الفئة ووزن الحقيبة، ثم يحدد الحد الأقصى المناسب. في هذا المثال الحد التوضيحي للفئة F هو 30 كجم، وللفئة B هو 25 كجم، وللفئة E هو 20 كجم. إذا كان الوزن ضمن الحد تكون الرسوم صفراً. أما إذا تجاوزه، فيحسب البرنامج الفرق ويضربه في رسم افتراضي قدره 10 وحدات نقدية لكل كيلوجرام زائد.
استخدام متغير واحد للحد الأقصى يجعل منطق الحساب واضحاً. كما أن استعمال switch مع break يمنع الانتقال غير المقصود إلى فئة أخرى، بينما يعالج default رمز الفئة غير المعروف برسالة مفهومة.
كود Java كامل لحساب الوزن الزائد
import java.util.Scanner;
public class BaggageCalculator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter ticket class (F, B, E): ");
String ticketClass = input.next().trim().toUpperCase();
System.out.print("Enter baggage weight in kg: ");
double weight = input.nextDouble();
if (weight < 0) {
System.out.println("Weight cannot be negative.");
input.close();
return;
}
double allowance;
switch (ticketClass) {
case "F": allowance = 30; break;
case "B": allowance = 25; break;
case "E": allowance = 20; break;
default:
System.out.println("Unknown ticket class.");
input.close();
return;
}
double feePerKg = 10; // Example value; check the airline policy.
double excess = Math.max(0, weight - allowance);
double fee = excess * feePerKg;
System.out.printf("Allowed weight: %.1f kg%n", allowance);
System.out.printf("Excess weight: %.1f kg%n", excess);
System.out.printf("Example extra fee: %.2f%n", fee);
input.close();
}
}شرح أجزاء الكود
تتولى Scanner قراءة البيانات من لوحة المفاتيح. يحول trim وtoUpperCase الرمز إلى صيغة موحدة، لذلك يقبل البرنامج الحرف الصغير أو الكبير. بعد قراءة الوزن، يفحص البرنامج أن القيمة ليست سالبة؛ فالوزن السالب إدخال غير منطقي ولا ينبغي أن ينتج عنه رسم.
تعين جملة switch قيمة allowance حسب الفئة. إذا أدخل المستخدم رمزاً غير F أو B أو E، تنفذ default وينتهي البرنامج بدلاً من إجراء حساب مضلل. بعد ذلك تحسب Math.max الفرق بين الوزن والحد، وتعيد صفراً عندما تكون الحقيبة ضمن الوزن المسموح. هذه الخطوة تمنع ظهور وزن زائد سالب.
أمثلة على النتائج
إذا اختيرت الفئة E وكان وزن الحقيبة 23 كجم، فالحد في المثال 20 كجم، والوزن الزائد 3 كجم، والرسم التوضيحي 30 وحدة. إذا كان الوزن 18 كجم، فالوزن الزائد والرسم يساويان صفراً. أما إدخال وزن سالب أو رمز فئة غير معروف فيؤدي إلى رسالة تحقق، ولا يطبع البرنامج رسماً.
يمكن تجربة الحالات الثلاث في بيئة تطوير مثل IntelliJ IDEA أو Eclipse أو عبر مترجم Java متاح. عند التجربة تأكد من تسمية الملف BaggageCalculator.java لأن اسم الملف يطابق اسم الصنف العام. ثم شغّل البرنامج وأدخل الفئة والوزن عند ظهور المطالبات.
تحسينات ممكنة
يمكن تطوير المثال ليقرأ سعر الكيلو والحدود من ملف إعدادات بدلاً من تثبيتها داخل الكود. ويمكن إضافة أكثر من حقيبة، أو دعم الأوزان العشرية، أو عرض العملة المناسبة. في تطبيق حقيقي ينبغي أيضاً تحديد طريقة تقريب الرسوم، والحد الأعلى للوزن، وما إذا كانت الرسوم تحسب لكل حقيبة أو لكل رحلة.
وللتعلم خطوة أخرى، راجع دروس Java للمبتدئين وتعرّف على خوارزمية Selection Sort في Java. تساعدك الأمثلة العملية على فهم المتغيرات والشروط والدوال تدريجياً.
الخلاصة
يعرض البرنامج طريقة منظمة لحساب الوزن الزائد ورسومه باستخدام Java: قراءة المدخلات، اختيار الحد بحسب الفئة، التحقق من صحة البيانات، ثم حساب الفرق. القيم هنا تعليمية فقط، ويجب استبدالها بالقيم الفعلية المنشورة من شركة الطيران قبل استخدام الفكرة في نظام حقيقي.





