البرمجة

تطوير نظام حجز تذاكر الطيران باستخدام Java

في محاولتك لكتابة برنامج لمحاكاة نظام حجز تذاكر الطيران، يظهر أنك على الطريق الصحيح. لكن هناك بعض الأمور التي يمكن تحسينها وإكمال البرنامج بشكل كامل. سأقدم لك توجيهات وأفكاراً لتطوير وتحسين برنامجك.

أولاً، فيما يتعلق بتعريف المصفوفة seats، يجب عليك تعيين حجمها والتأكد من أن لديك عدد كافٍ من المقاعد للفئة الأولى والاقتصاد. على سبيل المثال، يمكنك استخدام المصفوفة التالية:

java
private boolean[] seats = new boolean[10]; // 5 for first class, 5 for economy

ثم، فيما يتعلق بتعداد المقاعد المتاحة، يمكنك إنشاء طريقة countAvailableSeats لحساب عدد المقاعد المتاحة في كل فئة، حيث تعيد القيمة إلى الدالة الرئيسية. يمكن أن تبدو الطريقة كما يلي:

java
public int countAvailableSeats(boolean isFirstClass) { int count = 0; int startIndex = isFirstClass ? 0 : seats.length / 2; int endIndex = isFirstClass ? seats.length / 2 : seats.length; for (int i = startIndex; i < endIndex; i++) { if (!seats[i]) { count++; } } return count; }

ثم يمكنك استخدام هذه الطريقة في الدالة processUserRequest لعرض عدد المقاعد المتاحة في كل فئة.

بالنسبة للدالة choice، يجب أن تقوم بإعادة قراءة قيمة اختيار المستخدم كـ int بدلاً من boolean، حيث يمكن للمستخدم إدخال 0 للاختيار الأول (الفئة الأولى) أو 1 للاختيار الثاني (الاقتصاد).

فيما يخص الدالة availability، يمكنك استخدام القيمة المُسترجعة من choice لتحديد إذا كان المستخدم اختار الفئة الأولى أم الفئة الاقتصادية، وبناءً على ذلك، تعيين المقعد بشكل صحيح.

أيضاً، يمكنك إضافة دورة تكرار لتحديد المقعد المتاح في الفئة المختارة. يمكن أن يكون ذلك مفيدًا لتحديد أول مقعد فارغ.

إليك نموذج للتغييرات المقترحة:

java
// في داخل الدالة processUserRequest int firstClassSeatsAvailable = countAvailableSeats(true); int economySeatsAvailable = countAvailableSeats(false); System.out.printf("\n%s %d:\n%s %d:\n\n", "Number of available seats in First class category is:", firstClassSeatsAvailable, "Number of available seats in Economy is", economySeatsAvailable); int userChoice = choice(); if (userChoice == 0) { // المستخدم اختار الفئة الأولى assignSeat(true); } else { // المستخدم اختار الاقتصاد assignSeat(false); } // دالة تعيين المقعد public void assignSeat(boolean isFirstClass) { int startIndex = isFirstClass ? 0 : seats.length / 2; int endIndex = isFirstClass ? seats.length / 2 : seats.length; for (int i = startIndex; i < endIndex; i++) { if (!seats[i]) { seats[i] = true; System.out.printf("You have been assigned seat number %d in %s class.\n", i + 1, isFirstClass ? "First" : "Economy"); break; } } }

تذكير: يمكن أن تكون هذه إشارات لتحسين البرنامج، ولا يزال هناك العديد من التعديلات والتحسينات التي يمكن إجراؤها حسب متطلبات محددة.

المزيد من المعلومات

بالطبع، دعونا نقوم بتوسيع المعلومات حول البرنامج الذي تقوم بتطويره لمحاكاة نظام حجز تذاكر الطيران.

في البداية، يمكنك تحسين بنية البرنامج بإضافة المزيد من الميزات والتحسينات. على سبيل المثال، يمكنك تضمين متغيرات إضافية لتعقب معلومات الرحلة مثل وجهة الرحلة ووقت الإقلاع. يمكنك أيضاً توسيع البرنامج ليدعم المزيد من الخيارات مثل حجز مقعد معين أو حجز تذكرة ذهاب وإياب.

فيما يتعلق بتحسين الكود، يمكنك استخدام الحلقات لتجنب تكرار الكود. على سبيل المثال، يمكنك استخدام حلقة لعرض عدد المقاعد المتاحة بدلاً من تكرار كود الطباعة. كما يمكنك استخدام حلقة أخرى لتحديد مقعد متاح في الفئة المختارة بدلاً من كتابة نفس الكود مرتين.

هذا مثال على كيفية تحسين جزء من الكود باستخدام حلقة:

java
// دالة لعرض عدد المقاعد المتاحة في الفئة المختارة public void displayAvailableSeats(boolean isFirstClass) { int availableSeats = countAvailableSeats(isFirstClass); String className = isFirstClass ? "First" : "Economy"; System.out.printf("Number of available seats in %s class is: %d\n", className, availableSeats); } // في داخل الدالة processUserRequest displayAvailableSeats(true); // عرض عدد المقاعد المتاحة في الفئة الأولى displayAvailableSeats(false); // عرض عدد المقاعد المتاحة في الاقتصاد // دالة لتحديد مقعد متاح في الفئة المختارة public void assignSeat(boolean isFirstClass) { int startIndex = isFirstClass ? 0 : seats.length / 2; int endIndex = isFirstClass ? seats.length / 2 : seats.length; for (int i = startIndex; i < endIndex; i++) { if (!seats[i]) { seats[i] = true; System.out.printf("You have been assigned seat number %d in %s class.\n", i + 1, isFirstClass ? "First" : "Economy"); break; } } } // في داخل الدالة processUserRequest بعد الخيار المستخدم assignSeat(userChoice == 0); // تحديد مقعد في الفئة المختارة

هذه بعض الأفكار لتحسين البرنامج. يمكنك أيضًا استكشاف مفاهيم جديدة مثل الاستثناءات والتعامل معها لتعزيز قدرة البرنامج على التعامل مع حالات الخطأ.

زر الذهاب إلى الأعلى