Mochamad Kolbi Nuron_5025231183_PPB_Tugas Registrasi Mahasiswa
Nama: Mochamad Kolbi Nuron
NRP: 5025231183
PPB B
# Laporan Proyek: Pengembangan Aplikasi Registrasi Mahasiswa (Android)
Laporan ini disusun untuk mendokumentasikan pengembangan "Aplikasi Registrasi Mahasiswa" berbasis Android secara lokal dengan memanfaatkan teknologi modern seperti Jetpack Compose, Room Database, Kotlin Coroutines, serta menerapkan pola arsitektur MVVM (Model-View-ViewModel).
## 1. Pendahuluan
Pengelolaan data registrasi mahasiswa memerlukan sistem pencatatan digital yang efisien, aman, dan mudah digunakan. Aplikasi ini dirancang sebagai solusi penyimpanan data mahasiswa secara offline (lokal) pada perangkat Android. Dengan basis data lokal, admin kampus dapat mengelola data mahasiswa secara cepat tanpa memerlukan koneksi internet, menghilangkan risiko kehilangan data manual, serta meningkatkan efisiensi waktu kerja.
## 2. Arsitektur dan Desain Sistem
Aplikasi ini menggunakan pola arsitektur "MVVM (Model-View-ViewModel)" yang direkomendasikan oleh Google untuk memisahkan logika bisnis dari UI:
Penjelasan Komponen:
1. View (Jetpack Compose UI): Berfungsi menyajikan data ke pengguna dan menerima input form. Bersifat deklaratif, reaktif, dan otomatis terupdate saat state data berubah.
2. ViewModel: Menjaga state UI (seperti isi form, daftar mahasiswa, query pencarian), melakukan validasi input, serta menjembatani pemanggilan logika database secara asynchronous menggunakan Kotlin Coroutines.
3. Repository: Menyediakan abstraksi data layer untuk menyatukan sumber data (dalam proyek offline ini, langsung mengarah ke Room DAO).
4. Model/Data Layer (Room Database): Mengelola entitas database SQLite secara aman dan efisien di perangkat lokal.
### Struktur Direktori Proyek:
```text
com.example.registrasi
├── data
│ ├── Student.kt (Room Entity)
│ ├── StudentDao.kt (Data Access Object)
│ └── AppDatabase.kt (Room Database Singleton)
├── repository
│ └── StudentRepository.kt
├── viewmodel
│ └── StudentViewModel.kt
├── ui
│ ├── HomeScreen.kt (Dashboard & List Screen)
│ ├── AddStudentScreen.kt (Form Tambah/Edit Screen)
│ ├── DetailScreen.kt (Detail & Hapus Screen)
│ └── theme (Konfigurasi Tema Material Design 3)
└── MainActivity.kt (Rute Navigasi & Dependency Injection)
```
## 3. Desain Database (Room Entity)
Entitas data mahasiswa disimpan dalam tabel `mahasiswa` dengan skema atribut sebagai berikut:
| Field | Tipe Data | Deskripsi |
| :--- | :--- | :--- |
| `id` | `Int` | Primary Key (Auto-generate) |
| `nim` | `String` | Nomor Induk Mahasiswa (Unik) |
| `nama` | `String` | Nama Lengkap Mahasiswa |
| `jenisKelamin`| `String` | Jenis Kelamin (Laki-laki / Perempuan) |
| `prodi` | `String` | Program Studi |
| `fakultas` | `String` | Fakultas |
| `email` | `String` | Alamat Surat Elektronik |
| `telepon` | `String` | Nomor Telepon Aktif |
| `alamat` | `String` | Alamat Lengkap Domisili |
| `tahunMasuk` | `Int` | Tahun Masuk Angkatan |
## 4. Fitur Utama dan Implementasi
Aplikasi ini mengimplementasikan seluruh kebutuhan fungsional (FR-01 s.d FR-06) dengan spesifikasi berikut:
A. Dashboard & Statistik (FR-01, FR-03)
* Tampilan: Menampilkan kartu statistik total mahasiswa terdaftar dengan gradien warna modern yang premium, diikuti dengan list mahasiswa di bawahnya.
* Interaksi: Tiap item mahasiswa didesain menggunakan kartu Material 3 dengan avatar inisial nama, menampilkan Nama, NIM, dan Program Studi. Ketika di-klik, aplikasi akan berpindah ke layar detail.
### B. Input & Validasi Form (FR-02, FR-04)
* Input Field: Formulir lengkap mencakup NIM, Nama, Jenis Kelamin (menggunakan pilihan Radio Button yang responsif), Program Studi, Fakultas, Email, Nomor Telepon, Alamat, dan Tahun Masuk.
* Validasi Real-time:
* NIM tidak boleh kosong.
* Nama tidak boleh kosong.
* Email harus menggunakan format yang valid (diperiksa secara real-time dengan regex `EMAIL_ADDRESS`).
* Tombol "Simpan" hanya aktif jika seluruh input wajib telah terisi dengan benar.
* Dual Mode: Form ini digunakan baik untuk **Tambah Mahasiswa baru** maupun **Edit Data** dengan mem-passing parameter ID mahasiswa lewat rute navigasi.
### C. Pencarian Data Real-time (FR-06)
* Mekanisme: Pencarian diimplementasikan menggunakan operator `Flow.debounce(100)` dan `flatMapLatest`. Ketika admin mengetik kata kunci pada bilah pencarian, aplikasi memfilter data secara asynchronous di background thread.
* Kata Kunci: Pencarian mendukung penyaringan berdasarkan NIM, Nama, atau Program Studi.
### D. Detail & Konfirmasi Penghapusan (FR-05)
* Tampilan: Halaman detail membagi informasi menjadi 3 kategori: Identitas Diri, Informasi Akademik, dan Kontak & Alamat untuk estetika visual yang teratur.
* Konfirmasi Hapus: Ketika tombol hapus ditekan, aplikasi memunculkan `AlertDialog` konfirmasi terlebih dahulu guna menghindari terhapusnya data secara tidak sengaja.
## 5. Konfigurasi Teknis Utama
Beberapa penyesuaian teknis penting dilakukan selama proses pembuatan untuk memastikan aplikasi dapat dikompilasi dengan lancar:
1. Gradle Kotlin DSL & KSP: Menggunakan Kotlin Symbol Processing (KSP) kompatibel dengan Kotlin `2.2.10` untuk mempercepat pemrosesan anotasi Room DB.
2. Peningkatan compileSdk: Nilai `compileSdk` dinaikkan ke level `37` pada `app/build.gradle.kts` untuk mengakomodasi ketergantungan library `androidx.core:core:1.19.0`.
3. Experimental Flag: Menambahkan parameter `android.disallowKotlinSourceSets=false` pada `gradle.properties` agar folder hasil generate KSP dapat masuk ke source set utama tanpa konflik di AGP 9.x.
## 6. Panduan Instalasi dan Pengujian
1. Clone / Buka Proyek: Impor folder proyek ke dalam Android Studio.
2. Sinkronisasi Gradle: Klik *Sync Project with Gradle Files*. Android Studio akan mengunduh SDK API 37 secara otomatis apabila belum terinstal.
3. Menjalankan Aplikasi: Sambungkan perangkat Android fisik (aktifkan USB Debugging) atau gunakan Emulator Android, lalu klik tombol **Run** (`Shift + F10`).
4. Kompilasi Manual via Terminal:
```powershell
.\gradlew.bat compileDebugSources
```
## 7. Kesimpulan
Aplikasi Registrasi Mahasiswa lokal ini berhasil diselesaikan dengan baik sesuai target kriteria penerimaan (*Acceptance Criteria*). Pemanfaatan Room Database menjamin data tersimpan secara permanen pada memori internal perangkat. Desain UI yang bersih menggunakan komponen Material 3 modern memberikan kenyamanan interaksi bagi administrator kampus dalam mengelola administrasi data kemahasiswaan secara cepat, aman, dan efisien.
Komentar
Posting Komentar