Perancangan dan Dokumentasi Teknis Sistem Informasi
Sistem Penyewaan Lapangan Voli adalah aplikasi berbasis web yang dirancang untuk memudahkan pengelolaan penyewaan lapangan voli. Sistem ini memungkinkan admin untuk mengelola data lapangan, pelanggan, dan transaksi pemesanan secara efisien dan terintegrasi.
Berikut adalah fitur dan kemampuan yang dimiliki oleh user Admin dalam sistem:
Sistem menggunakan 3 tabel utama: 2 tabel master (Pelanggan dan Lapangan) dan 1 tabel transaksi (Pemesanan).
βββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ
β PELANGGAN β β LAPANGAN β
βββββββββββββββββββββββββββββββ€ βββββββββββββββββββββββββββββββ€
β PK id VARCHAR(10) β β PK id VARCHAR(10) β
β nama VARCHAR(100)β β nama VARCHAR(100)β
β email VARCHAR(100)β β tipe ENUM β
β telepon VARCHAR(15) β β harga_per_jam DECIMAL β
β alamat TEXT β β status ENUM β
β tanggal_daftar DATE β β fasilitas JSON β
βββββββββββββββ¬ββββββββββββββββ β deskripsi TEXT β
β ββββββββββββββββ¬βββββββββββββββ
β 1 β 1
β β
β M β M
βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PEMESANAN β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β PK id VARCHAR(10) β
β FK pelanggan_id VARCHAR(10) βββββββΊ References PELANGGAN(id) β
β FK lapangan_id VARCHAR(10) βββββββΊ References LAPANGAN(id) β
β tanggal DATE β
β jam_mulai TIME β
β jam_selesai TIME β
β durasi INT β
β total_harga DECIMAL(12,2) β
β status ENUM('Pending','Dikonfirmasi','Selesai','Dibatalkan')β
β metode_pembayaran ENUM('Transfer','Cash','E-Wallet') β
β created_at TIMESTAMP β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β KETERANGAN RELASI: β
β β’ 1 Pelanggan dapat memiliki M (Many/Banyak) Pemesanan β
β β’ 1 Lapangan dapat memiliki M (Many/Banyak) Pemesanan β
β β’ 1 Pemesanan hanya untuk 1 Pelanggan dan 1 Lapangan β
β β’ Relasi: Pelanggan (1) ββββ (M) Pemesanan (M) ββββ (1) Lapangan β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SISTEM PENYEWAAN LAPANGAN VOLI β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β KELOLA LAPANGAN β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Tambah Lapangan β β β
β β β β Edit Lapangan β β β
β β β β Hapus Lapangan β β β
β β β β Lihat Daftar Lapangan β β β
β β β β Ubah Status Lapangan β β β
βββββββββββββββ β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β ADMIN ββββββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β KELOLA PELANGGAN β β
βββββββββββββββ β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Tambah Pelanggan β β β
β β β β Edit Pelanggan β β β
β β β β Hapus Pelanggan β β β
β β β β Lihat Daftar Pelanggan β β β
β β β β Cari Pelanggan β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β KELOLA PEMESANAN β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Buat Pemesanan Baru β β β
β β β β Konfirmasi Pemesanan β β β
β β β β Batalkan Pemesanan β β β
β β β β Lihat Jadwal Pemesanan β β β
β β β β Kelola Pembayaran β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β LIHAT DASHBOARD β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Lihat Statistik Pemesanan β β β
β β β β Lihat Total Pendapatan β β β
β β β β Lihat Laporan Harian β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Admin UI Interface Controller Database
β β β β
β 1. Klik "Buat β β β
β Pemesanan Baru" β β β
βββββββββββββββββββββ>β β β
β β β β
β β 2. Tampilkan β β
β β Form β β
β<βββββββββββββββββββββ β β
β β β β
β 3. Isi Data: β β β
β - Pelanggan β β β
β - Lapangan β β β
β - Tanggal/Jam β β β
β - Durasi β β β
βββββββββββββββββββββ>β β β
β β β β
β β 4. Submit Data β β
β βββββββββββββββββββββ> β
β β β β
β β β 5. Cek β
β β β Ketersediaan β
β β ββββββββββββββββββββ>β
β β β β
β β β 6. Return: OK β
β β β<ββββββββββββββββββββ
β β β β
β β β 7. Hitung Total β
β β β Harga β
β β ββββββ β
β β β β β
β β β<ββββ β
β β β β
β β β 8. Simpan β
β β β Pemesanan β
β β ββββββββββββββββββββ>β
β β β β
β β β 9. Return: β
β β β ID Pemesanan β
β β β<ββββββββββββββββββββ
β β β β
β β 10. Tampilkan β β
β β Notifikasi β β
β β Sukses β β
β β<βββββββββββββββββββ β
β β β β
β 11. Lihat β β β
β Konfirmasi β β β
β<βββββββββββββββββββββ β β
β β β β
βββββββββββββββββ
β START β
βββββββββ¬ββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Admin Login ke β
β Sistem β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Pilih Menu β
β "Pemesanan Baru" β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Pilih Pelanggan β
β dari Daftar β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Pilih Lapangan β
β yang Diinginkan β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β Input Tanggal & β
β Waktu Sewa β
βββββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββ
β± β²
β± Lapangan β²
β± Tersedia? β²
β² β±
β² β±
β² β±
Tidak βββββββββββββββββ Ya
β β
βΌ βΌ
βββββββββββββββββββββ βββββββββββββββββββββββββ
β Tampilkan β β Hitung Total β
β Pesan Error β β Harga Sewa β
β "Tidak Tersedia"β βββββββββββββ¬ββββββββββββ
βββββββββββ¬ββββββββββ β
β βΌ
β βββββββββββββββββββββββββ
β β Pilih Metode β
β β Pembayaran β
β βββββββββββββ¬ββββββββββββ
β β
β βΌ
β βββββββββββββββββββββββββ
β β Konfirmasi Data β
β β Pemesanan β
β βββββββββββββ¬ββββββββββββ
β β
β βΌ
β βββββββββββββββββ
β β± β²
β β± Data Benar? β²
β β² β±
β β² β±
β Tidak βββββββββββββββββ Ya
β β β
β β βΌ
β β βββββββββββββββββββββββββ
β β β Simpan Data ke β
β β β Database β
β β βββββββββββββ¬ββββββββββββ
β β β
β β βΌ
β β βββββββββββββββββββββββββ
β β β Tampilkan Notifikasiβ
β β β "Pemesanan Berhasil"β
β β βββββββββββββ¬ββββββββββββ
β β β
βββββββββββββββββ΄ββββββββββββββββ
β
βΌ
βββββββββββββββββ
β END β
βββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββ
β Pelanggan β β Lapangan β
βββββββββββββββββββββββββββββββββββββββ€ βββββββββββββββββββββββββββββββββββββββ€
β - id: string β β - id: string β
β - nama: string β β - nama: string β
β - email: string β β - tipe: TipeLapangan β
β - telepon: string β β - hargaPerJam: number β
β - alamat: string β β - status: StatusLapangan β
β - tanggalDaftar: Date β β - fasilitas: string[] β
β - totalPemesanan: number β β - deskripsi: string β
βββββββββββββββββββββββββββββββββββββββ€ βββββββββββββββββββββββββββββββββββββββ€
β + getId(): string β β + getId(): string β
β + getNama(): string β β + getNama(): string β
β + getEmail(): string β β + getHarga(): number β
β + getTelepon(): string β β + getStatus(): StatusLapangan β
β + setNama(nama: string): void β β + setStatus(s: StatusLapangan): voidβ
β + setEmail(email: string): void β β + getTipe(): TipeLapangan β
β + setTelepon(tel: string): void β β + isAvailable(): boolean β
ββββββββββββββββββββ¬βββββββββββββββββββ ββββββββββββββββββββ¬βββββββββββββββββββ
β β
β 1 β 1
β β
β * β *
βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Pemesanan β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β - id: string β
β - pelanggan: Pelanggan β
β - lapangan: Lapangan β
β - tanggal: Date β
β - jamMulai: string β
β - jamSelesai: string β
β - durasi: number β
β - totalHarga: number β
β - status: StatusPemesanan β
β - metodePembayaran: MetodePembayaran β
β - createdAt: Date β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β + getId(): string β
β + getPelanggan(): Pelanggan β
β + getLapangan(): Lapangan β
β + hitungTotal(): number β
β + konfirmasi(): void β
β + batalkan(): void β
β + selesai(): void β
β + getStatus(): StatusPemesanan β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
β <> β β <> β β <> β
β TipeLapangan β β StatusLapangan β β StatusPemesanan β
ββββββββββββββββββββββββββββββββ€ ββββββββββββββββββββββββββββββββ€ ββββββββββββββββββββββββββββββββ€
β INDOOR β β TERSEDIA β β PENDING β
β OUTDOOR β β DIPESAN β β DIKONFIRMASI β
β β β MAINTENANCE β β SELESAI β
β β β β β DIBATALKAN β
ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββ
β <> β
β MetodePembayaran β
ββββββββββββββββββββββββββββββββ€
β TRANSFER β
β CASH β
β E_WALLET β
ββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β <> β β CLOUD HOSTING SERVER β β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β < > β β β β APPLICATION SERVER β β β β β β β β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ β β β β β < > β β < > β β β β β β REACT FRONTEND β β API BACKEND β β β β β β β β (Edge Functions) β β β β β β βββββββββββββββββββ β β β β β β β β β Dashboard.tsx β β β βββββββββββββββββββ β β β β β β β Lapangan.tsx β β HTTP β β auth.ts β β β β β β β β Pemesanan.tsx ββββββββββββββββ lapangan.ts β β β β β β β β Pelanggan.tsx β β β β pemesanan.ts β β β β β β β β Components/ β β β β pelanggan.ts β β β β β β β βββββββββββββββββββ β β ββββββββββ¬βββββββββ β β β β β β β β β β β β β β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ β β β β β β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β < > β β β β β PostgreSQL β β β β β βΌ β β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β β β TABLES: β β β β β β βββ pelanggan (Master) β β β β β β βββ lapangan (Master) β β β β β β βββ pemesanan (Transaksi) β β β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β β β β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β² β HTTPS β βββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ β β βΌ βΌ βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ β < > β β < > β β ADMIN COMPUTER β β ADMIN MOBILE β β β β β β βββββββββββββββββββββ β β βββββββββββββββββββββ β β β WEB BROWSER β β β β WEB BROWSER β β β β β β β β β β β β Chrome / Edge / β β β β Safari / Chrome β β β β Firefox β β β β Mobile β β β βββββββββββββββββββββ β β βββββββββββββββββββββ β β β β β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ
| No | Skenario Pengujian | Test Case | Hasil yang Diharapkan | Status |
|---|---|---|---|---|
| 1 | Menampilkan daftar lapangan | Akses halaman /lapangan | Semua lapangan ditampilkan dalam bentuk card dengan informasi nama, tipe, harga, dan status | β Berhasil |
| 2 | Menambah lapangan baru dengan data valid | Klik tombol "Tambah Lapangan", isi semua field dengan data valid (nama, tipe, harga, deskripsi), klik Simpan | Muncul notifikasi sukses "Lapangan berhasil ditambahkan", lapangan baru muncul di daftar | β Berhasil |
| 3 | Menambah lapangan dengan field kosong | Buka form tambah lapangan, biarkan field nama kosong, klik Simpan | Muncul pesan validasi error "Nama lapangan wajib diisi" | β Berhasil |
| 4 | Filter lapangan berdasarkan status | Pilih filter dropdown "Tersedia" | Hanya lapangan dengan status "Tersedia" yang ditampilkan | β Berhasil |
| 5 | Pencarian lapangan | Ketik "VIP" di kolom pencarian | Hanya lapangan yang mengandung kata "VIP" yang ditampilkan | β Berhasil |
| 6 | Edit lapangan | Klik tombol edit pada salah satu lapangan, ubah harga menjadi Rp 200.000, klik Simpan | Data lapangan terupdate, notifikasi sukses muncul | β Berhasil |
| 7 | Hapus lapangan | Klik tombol hapus pada lapangan yang tidak memiliki pemesanan aktif | Konfirmasi muncul, setelah konfirmasi lapangan terhapus dari daftar | β Berhasil |
| No | Skenario Pengujian | Test Case | Hasil yang Diharapkan | Status |
|---|---|---|---|---|
| 1 | Menampilkan daftar pemesanan | Akses halaman /pemesanan | Semua pemesanan ditampilkan dalam tabel dengan kolom ID, Pelanggan, Lapangan, Tanggal, Waktu, Total, Status, dan Aksi | β Berhasil |
| 2 | Membuat pemesanan baru dengan data valid | Klik "Pemesanan Baru", pilih pelanggan, pilih lapangan, isi tanggal 25 Des 2024, durasi 2 jam, jam mulai 08:00, metode Transfer, klik Simpan | Muncul notifikasi sukses "Pemesanan berhasil dibuat", pemesanan baru muncul di tabel dengan status "Pending" | β Berhasil |
| 3 | Membuat pemesanan saat lapangan tidak tersedia | Buat pemesanan untuk lapangan yang sudah dipesan pada waktu yang sama | Muncul pesan error "Lapangan tidak tersedia pada waktu tersebut" | β Berhasil |
| 4 | Konfirmasi pemesanan pending | Klik tombol centang (β) pada pemesanan berstatus "Pending" | Status berubah menjadi "Dikonfirmasi", notifikasi sukses muncul | β Berhasil |
| 5 | Batalkan pemesanan | Klik tombol X pada pemesanan berstatus "Pending" | Status berubah menjadi "Dibatalkan", notifikasi muncul | β Berhasil |
| 6 | Lihat detail pemesanan | Klik icon mata (ποΈ) pada salah satu pemesanan | Muncul dialog/modal dengan detail lengkap pemesanan termasuk data pelanggan, lapangan, jadwal, dan total harga | β Berhasil |
| 7 | Filter berdasarkan status | Pilih filter "Dikonfirmasi" dari dropdown | Hanya pemesanan berstatus "Dikonfirmasi" yang ditampilkan | β Berhasil |
| 8 | Pencarian pemesanan | Ketik "TR001" di kolom pencarian | Hanya pemesanan dengan ID "TR001" yang ditampilkan | β Berhasil |
Berdasarkan hasil pengujian Black Box Testing yang dilakukan pada 2 halaman utama sistem (Lapangan dan Pemesanan), seluruh 15 test case berhasil dijalankan dengan hasil sesuai yang diharapkan. Sistem Penyewaan Lapangan Voli berjalan dengan baik dan siap untuk digunakan. Semua fitur CRUD (Create, Read, Update, Delete) berfungsi dengan benar, validasi form bekerja sesuai harapan, dan interaksi pengguna responsif.