142 lines
3.6 KiB
Markdown
142 lines
3.6 KiB
Markdown
# 🔧 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
|
|
|