Sistem Reservasi Lapangan Mini Soccer Deskripsi Program Program ini adalah Sistem Reservasi Lapangan Mini Soccer berbasis console menggunakan bahasa Java. Fungsinya untuk mencatat, melihat, mengubah, dan menghapus data reservasi lapangan yang dilakukan oleh pengguna. Data reservasi tidak disimpan di database, tetapi sementara ditampung dalam ArrayList selama program berjalan. Struktur program sudah dipisahkan dengan menggunakan packages (main, model, service) sehingga lebih rapih sesuai konsep MVC sederhana.
Alur Program
- Program dijalankan → menampilkan menu utama:
- Tambah Reservasi
- Lihat Reservasi
- Ubah Reservasi
- Hapus Reservasi
- Keluar
- Tambah Reservasi
User memasukkan: nama, tanggal, jam, dan durasi. Ada validasi input (tidak boleh kosong, durasi harus angka lebih dari 0). Data tersimpan ke dalam daftar reservasi.
- Lihat Reservasi
Menampilkan semua reservasi yang sudah tersimpan. Jika kosong → muncul pesan "Belum ada data reservasi".
- Ubah Reservasi
User memilih nomor reservasi dari daftar. Program menampilkan data lama → user bisa isi data baru (atau enter kosong jika tidak ingin diubah). Data diperbarui sesuai input.
- Hapus Reservasi
User memilih nomor reservasi dari daftar. Program menghapus data tersebut dari daftar.
- Keluar
User memilih menu keluar. Program menampilkan pesan perpisahan → program berhenti.
Jadi alurnya sederhana: program jalan → tampilkan menu → user pilih → program proses → kembali ke menu, sampai user memilih keluar.
=========================================================== PENJELASAN KODE PROGRAM
1. Class Reservasi.java (Superclass)
-
Penjelasan:
- Private attributes: Menerapkan encapsulation untuk melindungi data
- Constructor: Inisialisasi objek dengan parameter yang diperlukan
- Getter/Setter: Akses aman ke data dengan validasi di setter
- Method dasar: hitungTotalBiaya() dan infoReservasi() yang akan di-override
2. Class ReservasiReguler.java (Subclass)
-
Penjelasan:
- extends Reservasi: Inheritance, mewarisi semua property dan method parent
- super(): Memanggil constructor parent class
- @Override: Method overriding untuk memberikan implementasi khusus
- Additional property: fasilitas khusus untuk reservasi reguler
3. Class ReservasiVIP.java (Subclass)
-
Penjelasan:
- Additional properties: fasilitasVIP dan biayaTambahanVIP
- Override hitungTotalBiaya(): Perhitungan berbeda dengan biaya tambahan VIP
- Method khusus: hitungDiskonMember() hanya ada di VIP
- Polymorphism: Method yang sama tapi behavior berbeda
4. Class ReservasiService.java (Business Logic)
-
Penjelasan:
- ArrayList: Collection untuk menyimpan multiple objek Reservasi
- Input validation: Loop sampai input valid
- Polymorphism: Satu variabel Reservasi bisa hold berbagai subclass
- instanceof: Runtime type checking
- Method overriding: infoReservasi() akan call implementasi yang tepat
5. Class Main.java (Entry Point)
-
Penjelasan:
- Entry point: Method main() sebagai starting point program
- Object instantiation: Membuat objek service untuk handle business logic
- Menu loop: while(true) untuk menu yang terus berulang
- Switch-case: Control flow untuk pilihan menu
===========================================================
ALUR PROGRAM
1. Tambah Reservasi
Penjelasan Output:
-
Menu Utama User diberikan pilihan 1–5 (Tambah, Lihat, Ubah, Hapus, Keluar). Pada contoh ini, user memilih 1 (Tambah Reservasi).
-
Form Input Reservasi
-
Nama Pemesan: janod
-
Tanggal: 22-09-2025
-
Jam Mulai: 23:00
-
Durasi: 3 jam
-
Jenis Reservasi: Reguler (Rp 50.000/jam)
-
-
Informasi Keuntungan Karena memilih Reguler, program menampilkan keuntungan reservasi reguler:
-
Harga lebih terjangkau (Rp 50.000/jam)
-
Fasilitas: Lapangan standar & air mineral
-
Cocok untuk bermain santai
-
-
Konfirmasi Reservasi Berhasil Program menampilkan detail reservasi:
-
[REGULER] Nama: janod
-
Tanggal: 22-09-2025
-
Jam: 23:00
-
Durasi: 3 jam
-
Total biaya: Rp 150.000
-
Fasilitas: Lapangan standar, Air mineral
-
Contoh jika mengisi dengan jawaban kosong
Penjelasan Output:
-
Menu Utama User memilih 2 (Lihat Reservasi).
-
Daftar Reservasi Program menampilkan semua data reservasi yang sudah tersimpan:
-
Reservasi 1 (Reguler) Nama: janod | Tanggal: 22-09-2025 | Jam: 23:00 | Durasi: 3 jam | Total Rp 150.000 Fasilitas: Lapangan standar, Air mineral
-
Reservasi 2 (VIP) Nama: ojan | Tanggal: 23-10-2025 | Jam: 22:00 | Durasi: 2 jam | Total Rp 200.000 Fasilitas VIP: Lapangan premium, AC, Sound system, Snack & minuman, Handuk Biaya tambahan: Rp 50.000
-
-
Statistik Reservasi Program otomatis menghitung ringkasan:
-
Total Reservasi: 2
-
Jumlah Reguler: 1
-
Jumlah VIP: 1
-
Total Pendapatan: Rp 350.000
-
3.Ubah Reservasi
Penjelasan Output:
-
Menu Utama User memilih 3 (Ubah Reservasi).
-
Daftar Reservasi Program menampilkan semua data reservasi yang ada (sama seperti menu lihat reservasi), lengkap dengan detail reguler dan VIP, serta statistik total.
-
Pilih Data yang Akan Diubah
-
User memilih reservasi nomor 1 (atas nama janod).
-
Program menampilkan data lama untuk memastikan.
-
-
Pilih Bagian yang Ingin Diubah Opsi yang tersedia: Nama, Tanggal, Jam, atau Durasi.
-
User memilih 1 (Nama Pemesan).
-
Nama diubah dari janod → ZANOD.
-
-
Konfirmasi Perubahan Program menampilkan pesan “Reservasi berhasil diubah!” dan memperlihatkan data terbaru dengan nama pemesan yang sudah diperbarui.
4.Hapus Reservasi
-
Penjelasan Output:
-
Daftar Reservasi Ditampilkan Program menampilkan semua data reservasi yang ada, lengkap dengan detail Reguler dan VIP, serta ringkasan statistik.
-
Pilih Reservasi yang Akan Dihapus
- User memilih nomor 1 (atas nama ZANOD).
-
Konfirmasi Hapus Program menampilkan pesan “Reservasi berhasil dihapus!” dan menampilkan detail data yang telah dihapus agar user tahu reservasi mana yang dihapus.
5.Keluar
-
Penjelasan Output:
-
Menu Utama User memilih opsi 5 (Keluar).
-
Program Selesai Program menampilkan pesan “Terima kasih!” sebagai penutup, lalu menghentikan proses.
-
