Hari 29: Mini Project — Sistem Manajemen Siswa
60 min
Last updated 09 Apr 2026
Sistem Manajemen Siswa
Proyek ini menggabungkan semua konsep: OOP, generics, collection, dan functional programming.
enum Grade { A, B, C, D, E }
class Nilai {
final String mataPelajaran;
final double nilai;
Nilai(this.mataPelajaran, this.nilai);
Grade get grade {
if (nilai >= 90) return Grade.A;
if (nilai >= 80) return Grade.B;
if (nilai >= 70) return Grade.C;
if (nilai >= 60) return Grade.D;
return Grade.E;
}
}
class Siswa {
final int id;
final String nama;
final String kelas;
List _nilaiList = [];
Siswa(this.id, this.nama, this.kelas);
void tambahNilai(String mapel, double nilai) {
_nilaiList.add(Nilai(mapel, nilai));
}
double get rataRata {
if (_nilaiList.isEmpty) return 0;
return _nilaiList.map((n) => n.nilai).reduce((a, b) => a + b) / _nilaiList.length;
}
Grade get gradeAkhir {
double rata = rataRata;
if (rata >= 90) return Grade.A;
if (rata >= 80) return Grade.B;
if (rata >= 70) return Grade.C;
if (rata >= 60) return Grade.D;
return Grade.E;
}
bool get lulus => rataRata >= 60;
}
💡
Notice: padRight() berguna untuk memformat teks agar rata kanan di console output.
Assignment
Buat sistem manajemen siswa dengan rapor, grade, dan statistik kelas.
Expected output:
=== RAPOR KELAS ===
Cika | Rata: 91.7 | Grade: A | LULUS
Andi | Rata: 84.3 | Grade: B | LULUS
Budi | Rata: 55.0 | Grade: E | TIDAK LULUS
---
Lulus: 2/3
Terbaik: Cika (91.7)
Dart
main.dart
Solution
Output