Pertemuan 13 - Registrasi Siswa
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 databaseAppDatabase. - ViewModel (Business Logic): Menggunakan
StudentViewModeluntuk menjembatani data layer dengan antarmuka UI secara asinkron dengan memanfaatkanStateFlow. - View (UI Layer): Terdiri dari komponen Jetpack Compose seperti
MainScreen,FormInput, danStudentItemyang responsif dan mengikuti panduan desain Material 3.
4. Fitur-Fitur Utama
-
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.
-
Validasi Input Form:
- Nama tidak boleh kosong (blank).
- Email tidak boleh kosong (blank).
- Format email harus mengandung karakter "@".
-
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.
-
Manajemen State Responsif: Menggunakan API Compose seperti
remember,mutableStateOf, dancollectAsState()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.
Comments
Post a Comment