Lebih dari Sekadar Menghitung Jam
Rental PlayStation adalah bisnis klasik di Indonesia. Namun, banyak pemilik rental masih mencatat waktu main di buku tulis atau kertas sobekan. Masalahnya klise: Human Error.
Salah catat jam masuk, lupa menghitung diskon member, atau bingung saat pelanggan minta βtambah paket 1 jam lagiβ.
Sebagai Tugas Akhir mata kuliah Algoritma Pemrograman, saya menciptakan AGS Billing (awalnya bernama agsplaystation) untuk mendigitalkan proses manual tersebut.
Mengapa C# dan .NET?
Berbeda dengan aplikasi web yang butuh browser, aplikasi billing butuh performa Desktop Native.
- Stabilitas: C# berjalan sangat stabil di lingkungan Windows. Tidak ada istilah βloading pageβ atau βrefreshβ.
- Presisi: Menghitung durasi hingga detik membutuhkan timer sistem yang akurat, sesuatu yang sangat mudah dilakukan dengan .NET Framework.
Logika di Balik Kode (Algoritma Tarif)
Tantangan terbesar project ini bukanlah membuat tombol, melainkan Algoritma Tarif. Bagaimana komputer memutuskan berapa yang harus dibayar?
Berikut adalah diagram alur logika billing yang berjalan setiap detik:
flowchart TD
Start[Pelanggan Datang] --> Pilih{Pilih Mode}
Pilih -- Paket (Bayar Depan) --> SetTimer[Set Timer Mundur]
SetTimer --> Main[Main Berjalan]
Main --> CekWaktu{Waktu Habis?}
CekWaktu -- Ya --> MatikanTV[Matikan TV / Alarm]
CekWaktu -- Tidak --> Main
Pilih -- Open Billing (Bayar Belakang) --> StartTimer[Start Timer Maju]
StartTimer --> MainOpen[Main Berjalan]
MainOpen --> Stop{Pelanggan Stop?}
Stop -- Ya --> Hitung[Hitung Durasi x Tarif Per Jam]
Hitung --> Bayar[Tampilkan Total Bayar]
Stop -- Tidak --> MainOpen
Fitur Utama
- Real-time Timer: Menggunakan komponen
System.Windows.Forms.Timeryang berdetak setiap 1000ms (1 detik) untuk memperbarui durasi dan biaya secara live. - Manajemen Member: Logika database sederhana untuk menyimpan data pelanggan setia dan memberikan harga khusus.
- Laporan Harian: Menghitung total pendapatan hari itu secara otomatis.
Note (Pelajaran Algoritma)
Project ini mengajarkan saya tentang State Management. Bagaimana status PC/TV berubah dari Idle -> Active -> Paused -> Finished. Setiap perubahan status memicu logika tarif yang berbeda.
Struktur Project (Visual Studio)
AGSBILLING/βββ AGSBILLING.sln # Solution Fileβββ AGSBILLING/β βββ Program.cs # Entry Point (Main Function)β βββ Form1.cs # Logika UI Utama (Timer & Tombol)β βββ Form1.Designer.cs # Kode Auto-generate UIβ βββ Classes/β βββ BillingLogic.cs # Rumus hitung duit ada di siniβ βββ Member.cs # Class Objek Memberβββ bin/Debug/ # Hasil Compile (.exe)Evolusi Project
Awalnya project ini hanya berupa kode C++ sederhana di terminal hitam putih. Namun, saya menantang diri sendiri untuk memporting-nya ke C# Windows Forms (GUI) agar layak digunakan oleh manusia biasa, bukan cuma programmer.
Transisi dari Console ke GUI mengajarkan saya tentang Event-Driven Programming (kode yang berjalan hanya saat tombol diklik), berbeda dengan Procedural Programming (kode jalan dari atas ke bawah) yang biasa diajarkan di awal kuliah.
Kesimpulan
AGS Billing adalah bukti bahwa logika pemrograman dasar (Looping, If-Else, Variable) bisa menjadi solusi bisnis nyata jika dikemas dengan antarmuka yang tepat. Ini adalah langkah pertama saya memahami bagaimana Software Engineering bekerja di dunia desktop.