Ujian Kompetensi Mandiri

LEMBAR SOAL PRAKTIK PEMROGRAMAN WEB

Membangun Aplikasi Dinamis Berbasis Backend PHP & MySQL

Mata Uji PHP & MySQL
Waktu 120 Menit (2 Jam)
Sifat Ujian Open Book / Internet
Tingkat Menengah (Intermediate)

Judul Project: Mini Cashflow Dashboard

A Deskripsi Kasus

Anda diminta untuk membangun sebuah aplikasi web satu halaman (atau berbasis modular) yang berfungsi sebagai sistem pencatatan keuangan (arus kas) pribadi. Aplikasi ini harus mampu menyimpan data secara permanen ke dalam database, menampilkan ringkasan saldo, menyaring data berdasarkan waktu, serta menghapus data dengan aman.


B Spesifikasi & Kebutuhan Sistem

1. Komponen Database (mini_cashflow)

Nama Kolom Tipe Data Atribut / Keterangan
id INT Primary Key, Auto Increment
nama_transaksi VARCHAR(100) Not Null
jenis ENUM('masuk', 'keluar') Not Null
nominal INT Not Null
tanggal DATE Not Null

2. Kebutuhan Fitur (Fungsional)

  • Fitur 1: Koneksi Database (koneksi.php)
    Membuat koneksi PHP ke MySQL menggunakan ekstensi PDO atau MySQLi.
  • Fitur 2: Input Transaksi (Create)
    Menyediakan form input: Nama Transaksi, Jenis (Masuk/Keluar), Nominal, dan Tanggal. Lakukan Validasi Server-Side (nominal wajib > 0 dan field tidak boleh kosong).
  • Fitur 3: Tampilan Dashboard & Saldo (Read)
    Menampilkan 3 kartu ringkasan menggunakan fungsi SUM(): Total Masuk, Total Keluar, dan Saldo Akhir. Riwayat transaksi wajib diurutkan secara terbalik berdasarkan tanggal terbaru dan berformat Rupiah (Rp 50.000).
  • Fitur 4: Filter Riwayat Transaksi
    Menyediakan form filter berupa Dropdown Bulan dan Input Tahun di atas tabel. Jika disubmit, tabel memfilter data sesuai inputan.
  • Fitur 5: Hapus Data
    Menyediakan tombol "Hapus" dengan proteksi konfirmasi JavaScript (confirm()) sebelum query dijalankan.

3. Kebutuhan Antarmuka (UI/UX)

Desain wajib rapi dan mudah dibaca (scannable). Berikan pembeda visual pada baris tabel: Latar belakang hijau muda untuk transaksi masuk, dan merah muda untuk transaksi keluar.


C Indikator Penilaian & Bobot

No Komponen Penilaian Bobot Target Waktu
1 Konfigurasi DB & koneksi.php 10% 15 Menit
2 Fitur Input & Validasi Server (Create) 25% 25 Menit
3 Tampilan Ringkasan Saldo & Tabel (Read) 30% 30 Menit
4 Fitur Filter Bulan & Tahun 20% 25 Menit
5 Fitur Hapus + Proteksi JavaScript (Delete) 10% 10 Menit
6 Kerapian UI & Ketepatan Warna Baris 5% 15 Menit
Total Akhir 100% 120 Menit

D Petunjuk Kode SQL (Bantuan Awal)

Untuk menghitung total uang masuk/keluar langsung dari MySQL, Anda dapat memanfaatkan fungsi agregat seperti contoh berikut:

SELECT SUM(nominal) AS total FROM transaksi WHERE jenis = 'masuk';

E Petunjuk Pengumpulan Proyek

Setelah menyelesaikan seluruh fitur dan memastikan tidak ada bug, harap kumpulkan hasil pekerjaan Anda dengan ketentuan berikut:

  • Unggah (*push*) seluruh *source code* aplikasi beserta file database (.sql) ke akun GitHub Anda.
  • Pastikan visibilitas repositori GitHub diatur ke Public agar dapat diperiksa oleh penguji. Repositori yang bersifat *Private* tidak akan dinilai.
  • Salin link repositori GitHub Anda dan kirimkan melalui formulir pengumpulan.
⚠️ Aturan & Anjuran
  • Disarankan untuk tidak berpindah ke fitur berikutnya sebelum fitur saat ini dipastikan berjalan tanpa bug/error.
  • Dilarang menggunakan AI Code Generator otomatis selama pengerjaan.