Learn
← Previous Next →

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