A
ALVITO.DEV
RETURN_TO_BASE PROJECT_ID: BUDGIEVB

// PROJECT_SPECS

BudgieVB: Manajer Keuangan Personal
CURRENT_STATUS
completed
TECHNOLOGY_STACK
Visual Basic .NETMySQLScottPlotWinForms

// CLASSIFIED_DOCUMENT

BudgieVB: Manajer Keuangan Personal

Aplikasi desktop manajemen keuangan pribadi (Personal Cashflow) dengan fitur multi-currency, budgeting, dan visualisasi grafik interaktif menggunakan ScottPlot.

Mengapa BudgieVB?

Kebanyakan aplikasi keuangan terlalu rumit atau justru terlalu simpel. BudgieVB (Budgie Visual Basic) lahir dari kebutuhan tugas akhir mata kuliah Pemrograman Visual untuk menciptakan aplikasi desktop yang robust namun tetap intuitif.

Aplikasi ini tidak sekadar mencatat pengeluaran, tapi juga membantu Anda memvisualisasikan kesehatan finansial melalui grafik yang real-time.

Tampilan Dashboard BudgieVB

Arsitektur & Alur Kerja

Agar Anda paham cara kerjanya, mari kita bedah β€œotak” aplikasi ini. BudgieVB menggunakan arsitektur event-driven khas Windows Forms yang terhubung ke database MySQL lokal.

1. Diagram Alur Data (Data Flow)

Berikut adalah perjalanan data saat Anda mencatat transaksi baru:

sequenceDiagram
    participant User
    participant UI as Form Transaksi
    participant Logic as VB.NET Logic
    participant DB as MySQL Database
    participant Chart as ScottPlot Chart

    User->>UI: Input Jumlah & Kategori
    UI->>Logic: Validasi Input (Tidak boleh 0/Minus)
    Logic->>DB: INSERT INTO transactions...
    DB-->>Logic: Success
    Logic->>UI: Reset Form
    Logic->>Chart: Request Data Terbaru
    DB-->>Logic: SELECT SUM(amount)...
    Logic->>Chart: Re-render Grafik
    Chart-->>UI: Update Tampilan Pie Chart

2. Struktur Database

Aplikasi ini menggunakan database relasional untuk menjaga integritas data. Tidak ada lagi cerita saldo minus tanpa alasan.

erDiagram
    USERS ||--o{ ACCOUNTS : owns
    ACCOUNTS ||--o{ TRANSACTIONS : has
    CATEGORIES ||--o{ TRANSACTIONS : classifies
    CURRENCIES ||--o{ ACCOUNTS : denominated_in

    USERS {
        int id PK
        string username
        string password_hash
    }

    ACCOUNTS {
        int id PK
        string name
        decimal balance
        int currency_id FK
    }

    TRANSACTIONS {
        int id PK
        decimal amount
        date transaction_date
        string type "Income/Expense"
        string note
    }

Bedah Kode & Struktur File

Jika Anda mengunduh repository ini, berikut adalah peta untuk memahami isinya:

BudgieVB/
β”œβ”€β”€ BudgieVB.sln # File solusi utama (Buka file ini di Visual Studio)
β”œβ”€β”€ budgie.sql # Script database (IMPORT INI KE PHPMYADMIN!)
└── BudgieVB/ # Folder Source Code
β”œβ”€β”€ Forms/ # Semua tampilan GUI ada di sini
β”‚ β”œβ”€β”€ frmLogin.vb # Gerbang masuk aplikasi
β”‚ β”œβ”€β”€ frmDashboard.vb # Pusat kendali (Ada ScottPlot di sini)
β”‚ └── frmAddTx.vb # Form tambah transaksi
β”œβ”€β”€ Modules/
β”‚ └── Database.vb # "Jantung" koneksi ke MySQL
β”œβ”€β”€ Assets/ # Ikon dan gambar
└── App.config # Konfigurasi koneksi DB (Ganti user/pass DB disini)
Note (Penting untuk Developer)

File Modules/Database.vb adalah file paling krusial. Di sinilah Connection String berada. Jika Anda gagal login, cek apakah username/password MySQL di file ini sudah sesuai dengan settingan XAMPP Anda.

Algoritma Utama: Validasi Saldo

Salah satu logika terpenting dalam aplikasi keuangan adalah mencegah pengeluaran melebihi saldo akun. Berikut pseudocode-nya:

' Logika saat tombol "Simpan Pengeluaran" ditekan
Function SimpanTransaksi()
Dim saldoSekarang = GetCurrentBalance(accountID)
Dim pengeluaranBaru = txtAmount.Text
' 1. Cek apakah uang cukup
If pengeluaranBaru > saldoSekarang Then
ShowError("Saldo tidak cukup! Jangan boros.")
Return False
End If
' 2. Lakukan Transaksi
ExecuteQuery("INSERT INTO transactions ...")
' 3. Update Saldo Akun
Dim saldoBaru = saldoSekarang - pengeluaranBaru
ExecuteQuery("UPDATE accounts SET balance = " & saldoBaru)
Return True
End Function

Panduan Instalasi (Cara Pakai)

Ingin mencoba aplikasi ini di komputer Anda? Ikuti langkah ini:

  1. Persiapan Lingkungan:

    • Install Visual Studio 2022 (Pilih workload .NET Desktop Development).
    • Install XAMPP (untuk server database MySQL).
    • Install MySQL Connector for .NET (agar VB bisa ngobrol sama MySQL).
  2. Setup Database:

    • Nyalakan Apache & MySQL di XAMPP.
    • Buka localhost/phpmyadmin.
    • Buat database baru bernama budgie_db.
    • Import file budgie.sql yang ada di repository.
  3. Jalankan Aplikasi:

    • Buka BudgieVB.sln.
    • Tekan tombol Start (Ikon Play Hijau).
    • Login dengan user default (jika ada di readme) atau register user baru.

Pustaka Pihak Ketiga

Saya menggunakan ScottPlot karena komponen grafik bawaan Visual Studio (MSChart) sudah terasa kuno dan berat. ScottPlot memungkinkan:

  • Rendering grafik ribuan data dalam hitungan milidetik.
  • Interaktif (bisa di-zoom dan digeser).
  • Tampilan modern dan flat design.

Kesimpulan

BudgieVB mengajarkan saya bahwa aplikasi visual yang baik bukan hanya soal drag-and-drop tombol, tapi bagaimana menyusun arsitektur data yang rapi di belakang layar. Sinergi antara MySQL (Penyimpanan), VB.NET (Logika), dan ScottPlot (Visualisasi) menghasilkan aplikasi yang powerful.

AUTHORIZED_BY ALVITO.DEV ADMIN
DATE_LOGGED 20 JUNE 2024