Dokumentasi Perancangan Sistem
Gambaran umum sistem penyewaan lapangan voli
Kelola data pelanggan dengan mudah dan efisien
Sistem reservasi yang terintegrasi
Pencatatan pembayaran otomatis
Kontrol penuh untuk administrator
Struktur database dengan 3 tabel: 2 tabel master dan 1 tabel transaksi
| Field | Tipe Data | Key | Keterangan |
|---|---|---|---|
id_pelanggan |
INT | PK | Primary Key, Auto Increment |
nama |
VARCHAR(100) | - | Nama lengkap pelanggan |
no_telepon |
VARCHAR(15) | - | Nomor telepon |
email |
VARCHAR(100) | - | Alamat email |
alamat |
TEXT | - | Alamat lengkap |
created_at |
DATETIME | - | Tanggal registrasi |
| Field | Tipe Data | Key | Keterangan |
|---|---|---|---|
id_lapangan |
INT | PK | Primary Key, Auto Increment |
nama_lapangan |
VARCHAR(50) | - | Nama/kode lapangan |
jenis |
ENUM('Indoor', 'Outdoor') | - | Jenis lapangan |
harga_per_jam |
DECIMAL(10,2) | - | Harga sewa per jam |
status |
ENUM('Tersedia', 'Tidak Tersedia') | - | Status ketersediaan |
deskripsi |
TEXT | - | Deskripsi fasilitas |
| Field | Tipe Data | Key | Keterangan |
|---|---|---|---|
id_transaksi |
INT | PK | Primary Key, Auto Increment |
id_pelanggan |
INT | FK | Foreign Key โ pelanggan |
id_lapangan |
INT | FK | Foreign Key โ lapangan |
tanggal_sewa |
DATE | - | Tanggal penyewaan |
jam_mulai |
TIME | - | Jam mulai sewa |
jam_selesai |
TIME | - | Jam selesai sewa |
total_harga |
DECIMAL(10,2) | - | Total biaya sewa |
status_bayar |
ENUM('Lunas', 'Belum Lunas') | - | Status pembayaran |
created_at |
DATETIME | - | Waktu transaksi dibuat |
-- Tabel Pelanggan (Master) CREATE TABLE pelanggan ( id_pelanggan INT PRIMARY KEY AUTO_INCREMENT, nama VARCHAR(100) NOT NULL, no_telepon VARCHAR(15), email VARCHAR(100), alamat TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- Tabel Lapangan (Master) CREATE TABLE lapangan ( id_lapangan INT PRIMARY KEY AUTO_INCREMENT, nama_lapangan VARCHAR(50) NOT NULL, jenis ENUM('Indoor', 'Outdoor') NOT NULL, harga_per_jam DECIMAL(10,2) NOT NULL, status ENUM('Tersedia', 'Tidak Tersedia') DEFAULT 'Tersedia', deskripsi TEXT ); -- Tabel Transaksi Sewa (Transaksi) CREATE TABLE transaksi_sewa ( id_transaksi INT PRIMARY KEY AUTO_INCREMENT, id_pelanggan INT NOT NULL, id_lapangan INT NOT NULL, tanggal_sewa DATE NOT NULL, jam_mulai TIME NOT NULL, jam_selesai TIME NOT NULL, total_harga DECIMAL(10,2) NOT NULL, status_bayar ENUM('Lunas', 'Belum Lunas') DEFAULT 'Belum Lunas', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (id_pelanggan) REFERENCES pelanggan(id_pelanggan), FOREIGN KEY (id_lapangan) REFERENCES lapangan(id_lapangan) );
Diagram hubungan antar entitas dalam sistem
| Entitas 1 | Relasi | Entitas 2 | Keterangan |
|---|---|---|---|
| pelanggan | 1 : N | transaksi_sewa | Satu pelanggan dapat memiliki banyak transaksi sewa |
| lapangan | 1 : N | transaksi_sewa | Satu lapangan dapat disewa dalam banyak transaksi |
Use Case Diagram dan Activity Diagram
Desain 3 halaman utama sistem
Pilih lapangan dan jadwal yang tersedia
Rp 100.000/jam
โ Tersedia
Rp 100.000/jam
โ Tersedia
Lapangan
Lapangan A - Indoor
Tanggal
Jam Mulai
Jam Selesai
Black Box Testing untuk validasi fungsionalitas
| ID | Skenario Pengujian | Input | Output Diharapkan | Hasil | Status |
|---|---|---|---|---|---|
| TC001 | Login dengan username dan password yang valid | Username: admin, Password: admin123 |
Admin berhasil login dan masuk ke halaman dashboard | Sesuai harapan | โ PASS |
| TC002 | Login dengan password yang salah | Username: admin, Password: wrongpass |
Menampilkan pesan error "Username atau password salah" | Sesuai harapan | โ PASS |
| TC003 | Login dengan field kosong | Username: (kosong), Password: (kosong) |
Menampilkan pesan error "Field tidak boleh kosong" | Sesuai harapan | โ PASS |
| ID | Skenario Pengujian | Input | Output Diharapkan | Hasil | Status |
|---|---|---|---|---|---|
| TC004 | Menambahkan lapangan baru dengan data lengkap | Nama: Lap. E, Jenis: Indoor, Harga: 100000 |
Data lapangan tersimpan dan muncul di daftar | Sesuai harapan | โ PASS |
| TC005 | Menambahkan lapangan dengan nama yang sudah ada | Nama: Lap. A, Jenis: Indoor, Harga: 100000 |
Menampilkan pesan error "Nama lapangan sudah ada" | Sesuai harapan | โ PASS |
| TC006 | Menambahkan lapangan dengan harga kosong | Nama: Lap. F, Jenis: Outdoor, Harga: (kosong) |
Menampilkan pesan error "Harga wajib diisi" | Sesuai harapan | โ PASS |
Metode pengujian yang berfokus pada fungsionalitas sistem tanpa melihat struktur internal kode. Pengujian dilakukan berdasarkan spesifikasi kebutuhan dengan memberikan input dan memverifikasi output.