تحدي: فرز الدرجات
جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 63 من 65.
التحدي
سهلقم بإنشاء نظام شامل لإدارة درجات الطلاب يقوم بمعالجة بيانات الطلاب من خريطة (map)، وتصفية الطلاب الناجحين، وتنظيمهم أبجدياً. يجمع هذا التحدي بين تكرار الخريطة (map iteration)، والتصفية الشرطية، وعمليات القوائم، والفرز.
يتم تزويدك بالمدخلات التالية:
- سلسلة JSON تمثل خريطة لأسماء الطلاب (مفاتيح) ودرجات اختباراتهم (قيم)
ستبدو سلسلة JSON بهذا الشكل: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}
مهمتك هي:
- تحليل سلسلة JSON إلى Map باستخدام طرق Dart المناسبة
- إنشاء قائمة فارغة تسمى
passingStudentsلتخزين أسماء الطلاب الذين نجحوا - التكرار عبر الخريطة وإضافة أسماء الطلاب الذين حصلوا على 60 درجة أو أكثر إلى قائمة
passingStudents - فرز قائمة
passingStudentsأبجدياً باستخدام طريقةsort() - طباعة العدد الإجمالي للطلاب الذين خضعوا للامتحان بالتنسيق الدقيق:
Total students: X - طباعة عدد الطلاب الذين نجحوا بالتنسيق الدقيق:
Students who passed: X - طباعة عدد الطلاب الذين رسبوا بالتنسيق الدقيق:
Students who failed: X - طباعة الطلاب الناجحين بترتيب أبجدي، كل واحد في سطر جديد، بالتنسيق الدقيق:
Passing student: [name] - إذا لم ينجح أي طالب، اطبع:
No students passed the exam
يجب أن يوضح برنامجك التكرار الصحيح للخريطة، والمنطق الشرطي لتصفية البيانات بناءً على عتبة النجاح 60، ومعالجة القوائم، وعمليات الفرز. يجب أن يتطابق المخرج مع التنسيق الدقيق المحدد أعلاه، مع إدراج الطلاب الناجحين بترتيب أبجدي.
جرّب بنفسك
import 'dart:io';
import 'dart:convert';
void main() {
// قراءة مدخلات سلسلة JSON
String? jsonString = stdin.readLineSync();
// تحليل سلسلة JSON إلى خريطة (Map)
Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
// إنشاء قائمة فارغة لتخزين الطلاب الناجحين
List<String> passingStudents = [];
// TODO: اكتب الكود الخاص بك أدناه
// 1. قم بالمرور عبر الخريطة وتصفية الطلاب الذين حصلوا على 60 درجة أو أكثر
// 2. أضف أسماء الطلاب الناجحين إلى قائمة passingStudents
// 3. قم بفرز قائمة passingStudents أبجدياً
// 4. قم بحساب وطباعة الإحصائيات المطلوبة
// 5. قم بطباعة الطلاب الناجحين بالتنسيق المحدد
// إخراج النتائج (استبدلها بتنفيذك الخاص)
print("Total students: ");
print("Students who passed: ");
print("Students who failed: ");
// طباعة الطلاب الناجحين أو رسالة "No students passed the exam"
}جميع دروس Logic & Flow
1التعامل المتقدم مع القوائم
خصائص القائمة: first و lastحالة القائمة: isEmpty و isNotEmptyعكس القائمةالإضافة إلى القائمة: insertالحذف من القائمة: removeWhereالبحث في القائمة: indexOfفرز القائمةخلط القائمةملخص - منظم القوائم4معالجة الـ Map المتقدمة
التكرار عبر الـ Mapالتحقق من المفاتيح والقيمخصائص الـ Map: keys و valuesإضافة مشروطة: putIfAbsentإزالة العناصر من الـ Mapالـ Maps المتداخلةمراجعة - تحديث المخزون2عمليات القوائم الوظيفية
التحويل باستخدام 'map'التصفية باستخدام 'where'استخدام '.toList()'التحقق من الشروط باستخدام 'any'الشروط باستخدام 'every'البحث باستخدام 'firstWhere'مراجعة - تصفية البيانات5مشروع: حاسبة عربة التسوق
إعداد المشروعإضافة العناصر إلى العربة3المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدة