# 🔧 Panduan Troubleshooting Pendaftaran ## 📋 Ringkasan Perbaikan Saya telah memperbaiki masalah pendaftaran dengan beberapa peningkatan: ### 1. **Perbaikan DatabaseHelper.kt** - ✅ Ditambahkan `try-catch` exception handling di semua method database - ✅ Ditambahkan logging untuk debugging error - ✅ Perbaikan cursor management (memastikan cursor selalu ditutup) - ✅ Method sekarang mengembalikan nilai yang konsisten ### 2. **Perbaikan RegisterScreen di MainActivity.kt** - ✅ Ditambahkan validasi input yang lebih ketat: - Nama lengkap tidak boleh kosong - NPM harus 8+ karakter dan hanya angka - Password minimal 6 karakter - ✅ Validasi NPM sebelum proses registrasi - ✅ Error messages yang lebih informatif ## 🐛 Kemungkinan Penyebab Pendaftaran Gagal ### **1. NPM Sudah Terdaftar** ``` Toast: "NPM sudah terdaftar! Gunakan NPM lain atau login" ``` **Solusi:** Gunakan NPM yang berbeda atau coba login dengan NPM tersebut ### **2. Database Error** Jika Anda melihat error di Logcat: ``` E/DatabaseHelper: Error adding user: ... ``` **Solusi:** - Cek format NPM (hanya angka, minimal 8 karakter) - Clear app data: Settings → Apps → Sistem Akademik → Storage → Clear All Data - Reinstall aplikasi ### **3. Validasi Input Gagal** Kemungkinan field belum terisi atau tidak sesuai kriteria: ``` ✗ Nama lengkap kosong ✗ NPM kurang dari 8 karakter ✗ NPM berisi karakter non-angka ✗ Password kurang dari 6 karakter ``` ## 📊 Contoh Data Testing ### ✅ Data Valid untuk Registrasi: ``` Nama Lengkap: Febby Dwiss NPM: 20231071513 (11 digit angka) Password: password123 ``` ### ❌ Data Invalid: ``` NPM: 2023-107 (mengandung "-") NPM: 2023107 (kurang dari 8 karakter) Password: 12345 (kurang dari 6 karakter) ``` ## 🔍 Cara Debugging di Android Studio ### 1. **Buka Logcat** - View → Tool Windows → Logcat - Filter: `DatabaseHelper` - Lakukan pendaftaran dan lihat error message ### 2. **Filter Tag Spesifik** ``` E/DatabaseHelper - untuk error database E/RegisterScreen - untuk error registration ``` ### 3. **Common Error Messages** | Error | Penyebab | Solusi | |-------|---------|--------| | `UNIQUE constraint failed` | NPM sudah ada | Gunakan NPM lain | | `null pointer exception` | Field kosong | Isi semua field | | `database is locked` | Concurrent access | Restart app | ## 💾 Cara Menghapus Database untuk Testing ```kotlin // Jalankan ini di MainActivity.onCreate() hanya untuk testing: val context = this context.deleteDatabase("Akademik.db") ``` **⚠️ Jangan lakukan di production!** ## 📱 Checklist Registrasi Sebelum registrasi, pastikan: - [ ] Nama Lengkap: Isi dengan nama - [ ] NPM: Minimal 8 angka, hanya karakter 0-9 - [ ] Password: Minimal 6 karakter - [ ] Internet Connection: Tidak diperlukan untuk registrasi lokal - [ ] Database accessible: App tidak crash ## 🚀 Cara Testing Manual 1. **Registrasi Pertama** ``` Nama: Test User 1 NPM: 12345678 Password: test123 ``` → Klik Daftar → Akan berhasil 2. **Registrasi Duplikasi** ``` Nama: Test User 2 NPM: 12345678 (sama dengan sebelumnya) Password: test456 ``` → Klik Daftar → Akan muncul pesan "NPM sudah terdaftar" 3. **Login dengan Data Terdaftar** ``` NPM: 12345678 Password: test123 ``` → Klik Login → Akan berhasil ## 🔐 Security Notes - Password disimpan sebagai plain text (untuk learning purpose) - Di production, gunakan hashing (bcrypt/SHA-256) - NPM di-enforce UNIQUE di database schema ## 📞 Support Jika masih error: 1. Lihat Logcat untuk error message spesifik 2. Share error message di chat 3. Coba clear app data dan reinstall