Pertemuan 13 - Registrasi Siswa

Nama                : Ahmad Fadhilah Mappisara
NRP                  : 5025221195
Mata Kuliah      : Pemrograman Perangkat Bergerak (C)

Student Registration App

1. Deskripsi Proyek

Student Registration App adalah aplikasi Android modern berbasis Kotlin dan Jetpack Compose yang menerapkan konsep CRUD (Create, Read, Update, Delete) menggunakan Room Database sebagai penyimpanan data lokal. Aplikasi ini dikembangkan untuk memudahkan proses pendaftaran, pembaruan, dan penghapusan data siswa secara responsif dan aman secara lokal di perangkat pengguna.

2. Teknologi yang Digunakan

  • Bahasa Pemrograman: Kotlin
  • UI Framework: Jetpack Compose (Material Design 3)
  • Penyimpanan Lokal: Room Database (SQLite abstraction)
  • Arsitektur: Model-View-ViewModel (MVVM)
  • Concurrency: Kotlin Coroutines & Flow (untuk reaktivitas data secara real-time)
  • Dependency Injection / Management: Gradle Version Catalogs (libs.versions.toml)

3. Arsitektur dan Struktur Proyek

Aplikasi ini menggunakan pola arsitektur MVVM (Model-View-ViewModel) untuk memisahkan logika bisnis dari UI:

  • Model (Data Layer): Terdiri dari entitas data Siswa, objek akses data (DAO) SiswaDao, dan kelas database AppDatabase.
  • ViewModel (Business Logic): Menggunakan StudentViewModel untuk menjembatani data layer dengan antarmuka UI secara asinkron dengan memanfaatkan StateFlow.
  • View (UI Layer): Terdiri dari komponen Jetpack Compose seperti MainScreen, FormInput, dan StudentItem yang responsif dan mengikuti panduan desain Material 3.

4. Fitur-Fitur Utama

  1. Operasi CRUD Lengkap:
    • Create (Tambah Siswa): Pengguna dapat menambahkan nama dan email siswa baru ke dalam database lokal.
    • Read (Tampilkan Daftar Siswa): Daftar siswa dimuat secara real-time dari database menggunakan Flow dan ditampilkan dalam bentuk list/kartu modern.
    • Update (Edit Siswa): Mengetuk tombol edit akan memuat data siswa kembali ke form input untuk diperbarui namanya atau emailnya.
    • Delete (Hapus Siswa): Pengguna dapat menghapus data siswa tertentu secara instan dari database.
  2. Validasi Input Form:
    • Nama tidak boleh kosong (blank).
    • Email tidak boleh kosong (blank).
    • Format email harus mengandung karakter "@".
  3. Desain Antarmuka Modern & Responsif (Material 3):
    • Kartu daftar siswa dengan sudut melingkar (rounded corners 20.dp) dan bayangan halus (elevation).
    • Inisial nama otomatis diubah menjadi badge visual lingkaran dengan warna pastel dinamis berbasis karakter pertama nama siswa.
    • Kompatibilitas penuh dengan mode Terang (Light Theme) dan mode Gelap (Dark Theme) sistem operasi.
  4. Manajemen State Responsif: Menggunakan API Compose seperti remember, mutableStateOf, dan collectAsState() untuk memperbarui tampilan secara langsung saat data berubah.

5. Daftar Berkas Proyek

Nama Berkas Paket (Package) Peran / Deskripsi
MainActivity.kt com.aflabs.registrasisiswa Titik masuk utama aplikasi (Entry point) yang menginisialisasi database, ViewModel, dan memasang tema Compose.
Siswa.kt com.aflabs.registrasisiswa.data Entity class Room yang mendefinisikan skema tabel "siswa" dalam database SQLite.
SiswaDao.kt com.aflabs.registrasisiswa.data Data Access Object (DAO) yang mendefinisikan query SQL dan fungsi manipulasi data CRUD Room.
AppDatabase.kt com.aflabs.registrasisiswa.data Penyedia database Room menggunakan pola Singleton untuk menjamin efisiensi alokasi thread database.
StudentViewModel.kt com.aflabs.registrasisiswa.viewmodel ViewModel yang menangani pemrosesan logika bisnis, transisi state, serta memaparkan data flow ke UI.
Theme.kt com.aflabs.registrasisiswa.ui Mengonfigurasi tema warna Material 3 untuk mendukung mode gelap dan terang aplikasi secara dinamis.
FormInput.kt com.aflabs.registrasisiswa.ui Komponen input form (OutlinedTextField) beserta tombol aksi tambah/edit.
StudentItem.kt com.aflabs.registrasisiswa.ui Representasi kartu (Card) data siswa individual di dalam daftar, lengkap dengan tombol edit, hapus, dan inisial avatar.
MainScreen.kt com.aflabs.registrasisiswa.ui Komposisi utama UI yang merakit FormInput, judul halaman, dan LazyColumn daftar siswa.

6. Kesimpulan

Aplikasi ini berhasil mengintegrasikan aspek-aspek pengembangan aplikasi Android modern: pemisahan peran yang bersih menggunakan pola MVVM, performa input-output asinkron berkat Coroutines/Flow, penyimpanan lokal yang tangguh menggunakan Room Database, serta penampilan UI deklaratif berbasis Material Design 3 melalui Jetpack Compose.


Hasil Preview

Link Repository:

Comments

Trending This Week

EAS - CoffeeBliss

ETS - PPB

Pertemuan 11 - Skoola Marketplace