🏐 Sistem Penyewaan Lapangan Voli

Perancangan dan Dokumentasi Teknis Sistem Informasi

NIM : 17230189    NAMA : Raymond Lapian
   Mata Kuliah : Rekayasa Perangkat Lunak

1 Analisa Sistem

Deskripsi Sistem

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.

Hak Akses User Admin

Berikut adalah fitur dan kemampuan yang dimiliki oleh user Admin dalam sistem:

πŸ“ Manajemen Lapangan

  • Menambah lapangan baru
  • Mengedit informasi lapangan
  • Menghapus lapangan
  • Mengatur status lapangan (Tersedia/Dipesan/Maintenance)
  • Mengatur harga sewa per jam
  • Mengelola fasilitas lapangan

πŸ‘₯ Manajemen Pelanggan

  • Melihat daftar pelanggan
  • Menambah pelanggan baru
  • Mengedit data pelanggan
  • Menghapus pelanggan
  • Melihat riwayat pemesanan pelanggan
  • Mencari data pelanggan

πŸ“… Manajemen Pemesanan

  • Membuat pemesanan baru
  • Mengkonfirmasi pemesanan
  • Membatalkan pemesanan
  • Melihat jadwal pemesanan
  • Mengelola pembayaran
  • Mencetak bukti pemesanan

πŸ“Š Dashboard & Laporan

  • Melihat statistik pemesanan
  • Melihat total pendapatan
  • Melihat lapangan tersedia
  • Melihat pemesanan hari ini
  • Melihat aktivitas terbaru
  • Generate laporan bulanan

2 Struktur Database

Sistem menggunakan 3 tabel utama: 2 tabel master (Pelanggan dan Lapangan) dan 1 tabel transaksi (Pemesanan).

TABEL PELANGGAN (Master)
PK id VARCHAR(10)
nama VARCHAR(100)
email VARCHAR(100)
telepon VARCHAR(15)
alamat TEXT
tanggal_daftar DATE
TABEL LAPANGAN (Master)
PK id VARCHAR(10)
nama VARCHAR(100)
tipe ENUM('Indoor','Outdoor')
harga_per_jam DECIMAL(10,2)
status ENUM('Tersedia','Dipesan','Maintenance')
fasilitas JSON
deskripsi TEXT
TABEL PEMESANAN (Transaksi)
PK id VARCHAR(10)
FK pelanggan_id VARCHAR(10)
FK lapangan_id VARCHAR(10)
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

3 Entity Relationship Diagram (ERD)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         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          β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

4 Use Case Diagram

                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                         β”‚            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                     β”‚   β”‚     β”‚
                         β”‚   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚     β”‚
                         β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
                         β”‚                                                              β”‚
                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5 Sequence Diagram - Proses Pemesanan

    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      β”‚                   β”‚                    β”‚
      β”‚<────────────────────│                   β”‚                    β”‚
      β”‚                     β”‚                   β”‚                    β”‚

6 Activity Diagram - Proses Pemesanan Lapangan

                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚     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      β”‚
                                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

7 Class Diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            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                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

8 Deployment Diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                    <>                                         β”‚
β”‚                              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           β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚                              β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                         β”‚                              β”‚                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

9 Rancangan Interface (Minimal 3 Halaman)

9.1 Halaman Dashboard

🏐 VolleyRent - Dashboard
🏐 VolleyRent
πŸ“Š Dashboard
πŸ“ Lapangan
πŸ“… Pemesanan
πŸ‘₯ Pelanggan

Selamat Datang, Admin!

Rp 2.5M
Total Pendapatan
48
Total Pemesanan
3/5
Lapangan Tersedia
125
Total Pelanggan

Pemesanan Terbaru

ID Pelanggan Lapangan Status
TR001 Ahmad Wijaya Lap. Voli A Dikonfirmasi
TR002 Siti Rahayu Lap. Voli B Pending

9.2 Halaman Manajemen Lapangan

🏐 VolleyRent - Manajemen Lapangan
🏐 VolleyRent
πŸ“Š Dashboard
πŸ“ Lapangan
πŸ“… Pemesanan
πŸ‘₯ Pelanggan

Daftar Lapangan

INDOOR
Lapangan Voli A

Lapangan indoor standar internasional

Rp 150.000/jam Tersedia
OUTDOOR
Lapangan Voli C

Lapangan outdoor dengan pemandangan

Rp 100.000/jam Dipesan
INDOOR VIP
Lapangan Voli VIP

Fasilitas lengkap dan mewah

Rp 250.000/jam Tersedia

9.3 Halaman Manajemen Pemesanan

🏐 VolleyRent - Manajemen Pemesanan
🏐 VolleyRent
πŸ“Š Dashboard
πŸ“ Lapangan
πŸ“… Pemesanan
πŸ‘₯ Pelanggan

Daftar Pemesanan

ID Pelanggan Lapangan Tanggal Waktu Total Status Aksi
TR001 Ahmad Wijaya Lap. Voli A 20 Des 2024 08:00-10:00 Rp 300.000 Dikonfirmasi πŸ‘οΈ ✏️
TR002 Siti Rahayu Lap. Voli B 20 Des 2024 14:00-16:00 Rp 300.000 Pending πŸ‘οΈ βœ… ❌
TR003 Budi Santoso Lap. Voli VIP 21 Des 2024 10:00-13:00 Rp 750.000 Dikonfirmasi πŸ‘οΈ ✏️

9.4 Form Tambah Pemesanan

🏐 VolleyRent - Form Pemesanan Baru

Buat Pemesanan Baru

Total Pembayaran: Rp 300.000

10 Pengujian Sistem (Black Box Testing)

10.1 Pengujian Halaman Lapangan

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

10.2 Pengujian Halaman Pemesanan

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

Ringkasan Hasil Pengujian

15
Total Test Case
15
Berhasil
0
Gagal
100%
Success Rate

βœ… Kesimpulan Pengujian

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.