ETS - PBO B
Kelas : PBO B
Menampilkan informasi produk
Laporan penjualan
Memproses pembelian produk
Notifikasi status pembelian
class VendingMachine { // Attributes (sesuai class diagram) private List<Product> products; private List<Transaction> transactions; private PaymentProcessor paymentProcessor; // Constructor public VendingMachine() { this.products = new ArrayList<>(); this.transactions = new ArrayList<>(); this.paymentProcessor = new PaymentProcessor(100000); // Inisialisasi produk products.add(new Product("P001", "Chitato", 10000)); products.add(new Product("P002", "Oreo", 8000)); products.add(new Product("P003", "Coca Cola", 7000)); } // Method: displayProducts() public void displayProducts() { System.out.println("=== DAFTAR PRODUK ==="); for (int i = 0; i < products.size(); i++) { Product p = products.get(i); System.out.println((i+1) + ". " + p.getName() + " - Rp " + p.getPrice()); } } // Method: selectProduct(id) public void selectProduct(int id) { if (id >= 0 && id < products.size()) { Product p = products.get(id); System.out.println("Produk dipilih: " + p.getName()); } else { System.out.println("Produk tidak ditemukan!"); } } // Method: purchaseProduct(...) public void purchaseProduct(int productId, double payment) { Product p = products.get(productId); if (payment >= p.getPrice()) { double change = payment - p.getPrice(); System.out.println("Pembelian berhasil!"); System.out.println("Kembalian: Rp " + change); // Simpan transaksi transactions.add(new Transaction(p.getName(), p.getPrice())); } else { System.out.println("Pembayaran kurang!"); } } // Method: refillStock(...) public void refillStock(String productName, int amount) { System.out.println("Refill " + amount + " unit untuk " + productName); } // Method: generateReport() public void generateReport() { System.out.println("\n=== LAPORAN ==="); System.out.println("Total Transaksi: " + transactions.size()); System.out.println("Saldo Mesin: Rp " + paymentProcessor.getMachineCash()); System.out.println("\nRiwayat:"); for (Transaction t : transactions) { System.out.println("- " + t.getInfo()); } } }
- Mesin aktif → menampilkan menu pilihan produk.
- Pengguna memilih jenis produk
- Mesin menampilkan total harga.
- Pengguna melakukan pembayaran.
- Mesin memverifikasi pembayaran → jika cukup → mengeluarkan produk
- Transaksi disimpan ke log.
- Jika stok habis → admin diingatkan untuk refill.
maka berikut merupakan contoh output nya
=== DEMO VENDING MACHINE ===
=== DAFTAR PRODUK ===
1. Chitato - Rp 10000.0
2. Oreo - Rp 8000.0
3. Coca Cola - Rp 7000.0
Produk dipilih: Chitato
Pembelian berhasil!
Kembalian: Rp 10000.0
Pembelian berhasil!
Kembalian: Rp 2000.0
Refill 10 unit untuk Chitato
=== LAPORAN ===
Total Transaksi: 2
Saldo Mesin: Rp 100000.0
Riwayat:
- Transaksi: Chitato - Rp 10000.0
- Transaksi: Oreo - Rp 8000.0
4. Implementasikan dalam bentuk aplikasi simulasi vending snack machine
terdapat dua file yaitu main.java dan utils.java untuk implementasi vendin machine ini.
main.java
utils.java
Link Demo : demo vending machine