Tutorial Java Pemula: Cara Membuat Aplikasi Sistem UMKM Sederhana (Lengkap & Mudah)

Tutorial Java Pemula: Cara Membuat Aplikasi Sistem UMKM Sederhana (Lengkap & Mudah)

Halo semua, pada artikel ini Anda akan mempelajari cara membangun sebuah aplikasi sederhana berbasis Java dengan studi kasus Sistem UMKM.

Panduan ini disusun secara bertahap dan sistematis agar mudah diikuti, bahkan bagi Anda yang masih berada pada tahap awal pembelajaran pemrograman. Setiap bagian akan dijelaskan dengan jelas sehingga Anda dapat memahami konsep sekaligus praktiknya tanpa merasa kesulitan.

Melalui artikel ini, diharapkan Anda tidak hanya mampu menyelesaikan pembuatan aplikasi, tetapi juga memahami dasar-dasar pengembangan program yang terstruktur dan rapi.

Mari kita mulai proses pembelajaran ini langkah demi langkah.

1. Tujuan Pengembangan Aplikasi

Aplikasi ini dirancang untuk memiliki beberapa fungsi utama, yaitu:

  • Menampilkan daftar produk
  • Menambahkan produk baru
  • Melakukan transaksi pembelanjaan
  • Menampilkam riwayat transaksi

Seluruh fitur diakses melalui menu interaktif yang ditampilkan pada terminal.

2. Persiapan Pengembangan

Sebelum memulai, pastikan Anda telah menyiapkan:

  • JDK (Java Development Kit)
  • Aplikasi untuk menulis kode seperti VSCode, NetBeans, atau Notepad++

Selanjutnya, buat direktori project dengan struktur sebagai berikut:

UTS_Pemrograman1_NamaKamu/

Kemudian, susun folder agar lebih terstruktur dan profesional:

src/com/umkm/app/model
src/com/umkm/app/service

3. Struktur Project

Berikut adalah struktur lengkap project:

UTS_Pemrograman1_NamaKamu/
│
├── src/
│   └── com/
│       └── umkm/
│           └── app/
│               ├── model/
│               │   ├── Product.java
│               │   ├── OrderItem.java
│               │   └── Order.java
│               │
│               ├── service/
│               │   ├── InventoryService.java
│               │   └── OrderService.java
│               │
│               └── Main.java
│
├── screenshots/
│   ├── coding_1.png
│   ├── coding_2.png
│   └── output_program.png
│
├── README.txt
│
└── NamaKamu_NIM.rar

Struktur ini bertujuan untuk memisahkan logika program agar lebih terorganisir dan mudah dikembangkan.

4. Membuat Bagian Model (Tempat Menyimpan Data)

Bagian model berfungsi untuk menyimpan data seperti produk dan transaksi.

Product.java

Menyimpan data produk:

package com.umkm.app.model;

public class Product {
    private int id;
    private String name;
    private double price;
    private int stock;

    public Product(int id, String name, double price, int stock) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.stock = stock;
    }

    public int getId() { return id; }
    public String getName() { return name; }
    public double getPrice() { return price; }
    public int getStock() { return stock; }

    public void setStock(int stock) { this.stock = stock; }

    @Override
    public String toString() {
        return String.format("%d | %s | Rp %.0f | stok: %d", id, name, price, stock);
    }
}

OrderItem.java

Menyimpan item yang dibeli dalam transaksi:

package com.umkm.app.model;

public class OrderItem {
    private Product product;
    private int qty;

    public OrderItem(Product product, int qty) {
        this.product = product;
        this.qty = qty;
    }

    public double getTotal() { return product.getPrice() * qty; }

    @Override
    public String toString() {
        return String.format("%s x%d = Rp %.0f", product.getName(), qty, getTotal());
    }
}

Order.java

Menyimpan satu transaksi:

package com.umkm.app.model;

import java.util.ArrayList;
import java.util.List;

public class Order {
    private static int COUNTER = 1;
    private int orderId;
    private List<OrderItem> items;

    public Order() {
        this.orderId = COUNTER++;
        this.items = new ArrayList<>();
    }

    public void addItem(OrderItem item) { items.add(item); }

    public double getGrandTotal() {
        return items.stream().mapToDouble(OrderItem::getTotal).sum();
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("Order#").append(orderId).append("\n");
        for (OrderItem it : items) sb.append("  - ").append(it).append("\n");
        sb.append(String.format("Total: Rp %.0f", getGrandTotal()));
        return sb.toString();
    }
}

5. Membuat Bagian Service (Logika Program)

Service adalah bagian yang menjalankan aturan aplikasi.

InventoryService.java

package com.umkm.app.service;

import com.umkm.app.model.Product;
import java.util.ArrayList;
import java.util.List;

public class InventoryService {
    private List<Product> products = new ArrayList<>();

    public void addProduct(Product p) { products.add(p); }

    public List<Product> getAll() { return products; }

    public Product findById(int id) {
        return products.stream().filter(p -> p.getId() == id).findFirst().orElse(null);
    }

    public boolean decreaseStock(int productId, int qty) {
        Product p = findById(productId);
        if (p == null || p.getStock() < qty) return false;
        p.setStock(p.getStock() - qty);
        return true;
    }
}

OrderService.java

package com.umkm.app.service;

import com.umkm.app.model.Order;
import java.util.ArrayList;
import java.util.List;

public class OrderService {
    private List<Order> orders = new ArrayList<>();

    public void saveOrder(Order o) { orders.add(o); }

    public List<Order> getOrders() { return orders; }
}

6. Program Utama (Main Menu)

Ini bagian yang akan tampil saat dijalankan.

Main.java

package com.umkm.app;

import com.umkm.app.model.*;
import com.umkm.app.service.*;

import java.util.Scanner;

public class Main {
    private static InventoryService inventory = new InventoryService();
    private static OrderService orders = new OrderService();
    private static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        seedData();
        boolean running = true;

        while (running) {
            System.out.println("\n=== SISTEM UMKM SEDERHANA ===");
            System.out.println("1. Lihat Produk");
            System.out.println("2. Tambah Produk (demo)");
            System.out.println("3. Buat Transaksi");
            System.out.println("4. Lihat Semua Transaksi");
            System.out.println("0. Keluar");
            System.out.print("Pilih> ");

            switch (sc.nextLine()) {
                case "1": listProducts(); break;
                case "2": addDemoProduct(); break;
                case "3": createTransaction(); break;
                case "4": listOrders(); break;
                case "0": running = false; break;
                default: System.out.println("Pilihan tidak valid.");
            }
        }
    }

    private static void seedData() {
        inventory.addProduct(new Product(1, "Kue Basah", 5000, 50));
        inventory.addProduct(new Product(2, "Kerajinan Anyam", 25000, 10));
        inventory.addProduct(new Product(3, "Sambal Botol", 12000, 30));
    }
    
    // Fungsi listProducts, addDemoProduct, createTransaction, listOrders
}

7. Cara Menjalankan Program

Untuk compile:

javac -d out src/com/umkm/app/model/*.java src/com/umkm/app/service/*.java src/com/umkm/app/Main.java

Untuk menjalankan:

java -cp out com.umkm.app.Main

8. Contoh Tampilan Program Saat Berjalan

Menu Utama

=== SISTEM UMKM SEDERHANA ===
1. Lihat Produk
2. Tambah Produk (demo)
3. Buat Transaksi
4. Lihat Semua Transaksi
0. Keluar
Pilih>

Daftar produk

-- Daftar Produk --
1 | Kue Basah | Rp 5000 | stok: 50
2 | Kerajinan Anyam | Rp 25000 | stok: 10
3 | Sambal Botol | Rp 12000 | stok: 30

Transaksi

Masukkan ID produk: 1
Jumlah: 2
Item ditambahkan: Kue Basah

Hasil transaksi

Transaksi selesai:
Order#1
  - Kue Basah x2 = Rp 10000
  - Sambal Botol x1 = Rp 12000
Total: Rp 22000

Penutup

Dengan mengikuti panduan ini, Anda telah mempelajari dasar-dasar pembuatan aplikasi Java sederhana dengan konsep:

  • Pemisahan model dan service
  • Pengelolaan data menggunakan object-oriented programming (OOP)
  • Interaksi pengguna melalui console

Latihan ini dapat menjadi fondasi untuk mengembangkan aplikasi yang lebih kompleks di masa mendatang.