Skip to main content

APLIKASI OOP DASAR SEDERHANA MENGGUNAKAN BAHASA PEMROGRAMAN JAVA

 Aplikasi Object Oriented dengan Bahasa Pemrograman Java Menggunakan GUI

Aplikasi UMKM : Coffee Shop


Nama Aplikasi:

FABS

Diambil dari akronim kata Fly as Butterfly yang merupakan identitas kelompok yaitu FABulous.


Deskripsi Aplikasi :

    Aplikasi ini dirancang untuk sistem pemesanan di coffee shop. Program yang dirancang masih sangat sederhana yaitu untuk satu kali pemesanan minuman di coffee shop. Program ini menggunakan relasi asosiasi, yaitu hubungan dapat saling menggunakan di dalam sebuah class dan tidak saling memiliki. Program ini juga menggunakan relasi pewarisan, dimana class anaknya cCoffee sama cPastry, dan kelas induknya cMenu. Untuk tampilan contoh penerapan relasi pewarisan terdapat pada bagian Menu jika kita mau melihat menu FABSCoffee.

    Fitur yang terdapat dalam program ini terdiri dari 4 bagian menu, yaitu menu pembeli, menu (daftar menu, menggunakan relasi pewarisan), menu pesanan dan selesai. Pada menu pembeli, di dalamnya terdapat sub menu diantaranya menambah data baru, mengubah data, melihat data dan menghapus data. Pada menu pemesanan, terdapat sub menu diantaranya menambah pesanan baru, mengubah pesanan, melihat pesanan dan menghapus pesanan. Pada menu, terdiri dari daftar menu yang ada di FABS. Terakhir selesai, pada menu ini program akan selesai.

    Program ini dituliskan dengan satu method yaitu method main dan lima class yaitu class coffee, class pembeli, class pesanan, class menu, dan class pastry.

1. Method Main

Method main berisikan seluruh menu.

2. Class Coffee, Pembeli, Pesanan, Menu, Pastry

    Class ini berisikan setter, getter dan query beserta atributnya. Untuk atribut coffee merupakan class anak dari class Menu. Kemudian atribut pembeli antara lain nama dan telepon. Berbeda dengan class coffee dan pembeli, pada class pesanan hanya terdapat getter dan setter dengan atribut kode, pembeli dari class pembeli dan coffee dari class coffee. Untuk class Menu terdapat getter dan class pastry merupakan class anak dan class induknya berasal dari class Menu.


Source Code

1. FABS

import javax.swing.*;
import java.util.Scanner;

public class FABS {
    public static void main(String[] args) {
        cPembeli pembeli = null;
        cPesanan pesanan = null;
        cMenu m[] = new cMenu[7];
        m[0] = new cMenu("1", "Americano");
        m[1] = new cMenu("2", "Cappucino");
        m[2] = new cMenu("3", "Ice Espresso");
        m[3] = new cMenu("4", "Caramel Macciato");
        m[4] = new cMenu("5", "Morning Bun");
        m[5] = new cMenu("6", "Cheese Danish");
        m[6] = new cMenu("7", "Butter Croissant");
        int jmn = 7;
        String pilih;

        JFrame jf = new JFrame("Welcome to FABS Coffee");
        jf.setSize(600, 400);

        do {
            pilih = JOptionPane.showInputDialog(jf, "\n::Selamat datang di Fab's Coffee::" +
                    "\nSilahkan pilih menu program yang tersedia" +
                    "\nMENU PROGRAM" +
                    "\n1. Pembeli" +
                    "\n2. Lihat Menu" +
                    "\n3. Pesanan" +
                    "\n4. Keluar");

            int pilihMenu = Integer.parseInt(pilih);

            switch (pilihMenu) {
                case 1:
                    String pilihMenuPembeli;
                    do {
                        pilihMenuPembeli = JOptionPane.showInputDialog(jf, "::Sub Menu Pembeli::" +
                                "\n1. Tambah Data" +
                                "\n2. Ubah Data" +
                                "\n3. Lihat Data" +
                                "\n4. Hapus Data" +
                                "\n5. Keluar Sub Menu Pembeli");

                        int pilihPembeli = Integer.parseInt(pilihMenuPembeli);
                        switch (pilihPembeli) {
                            case 1:
                                if (pembeli != null) {
                                    JOptionPane.showMessageDialog(jf,"::Data pembeli sudah terisi");
                                    break;
                                }
                                String nm = JOptionPane.showInputDialog(jf, "Nama Pembeli");
                                String tlp = JOptionPane.showInputDialog(jf, "Nomor Telpon");
                                pembeli = new cPembeli(nm, tlp);
                                JOptionPane.showMessageDialog(jf,"::Penambahan Sukses...");
                                break;

                            case 2:
                                if (pembeli != null) {
                                    nm = JOptionPane.showInputDialog(jf,"Ubah Nama Pembeli" +
                                            "\nNama Lama : " + pembeli.getNama() + "\nNama Baru = ");
                                    pembeli.setNama(nm);

                                    tlp = JOptionPane.showInputDialog(jf, "Nomor Telepon Lama : " + pembeli.getTelepon() + "\nNomor Telepon Baru = ");
                                    pembeli.setTelepon(tlp);
                                    JOptionPane.showMessageDialog(jf,"::Update Sukses");
                                } else JOptionPane.showMessageDialog(jf,"::Pembeli Masih Kosong!");
                                break;

                            case 3:
                                if (pembeli != null) {
                                    JOptionPane.showMessageDialog(jf, "Data Pembeli" +
                                            "\nNama = " + pembeli.getNama() + "\nTelepon = " + pembeli.getTelepon());
                                } else JOptionPane.showMessageDialog(jf,"::Data Pembeli Kosong!");
                                break;

                            case 4:
                                nm = JOptionPane.showInputDialog(jf,"Hapus Data Pembeli" +
                                        "\nMasukkan Nama");
                                if (pembeli != null && pembeli.getNama().equalsIgnoreCase(nm)) {
                                    String hapus = JOptionPane.showInputDialog(jf, "Apakah Anda yakin ingin menghapus?" +
                                            "\n1. Ya" +
                                            "\n2. Batal");

                                    int delete = Integer.parseInt(hapus);

                                    if (delete == 1) {
                                        pembeli = null;
                                        JOptionPane.showMessageDialog(jf,"::Data pembeli dihapus");
                                    } else {
                                        JOptionPane.showMessageDialog(jf,"::Hapus data dibatalkan");
                                    }
                                }
                                break;
                        } 
                    } while (pilihMenuPembeli != "5");
                    break;

                case 2 :
                    cCoffee cfe1 = new cCoffee("1","Americano");
                    cCoffee cfe2 = new cCoffee("2","Cappucino");
                    cCoffee cfe3 = new cCoffee("3","Ice Espresso");
                    cCoffee cfe4 = new cCoffee("4","Caramel Macciato");
                    cPastry pst1 = new cPastry("5","Morning Bun");
                    cPastry pst2 = new cPastry("6","Cheese Danish");
                    cPastry pst3 = new cPastry("7","Butter Croissant");

                    JOptionPane.showMessageDialog(jf, "::Menu FABS Coffee" +
                            "\nSemua jenis coffee dan pastry seharga Rp 25.000,-" +
                            "\nCOFFEE" +
                            "\n" +cfe1.getKode()+" "+cfe1.getNama() +
                            "\n" +cfe2.getKode()+" "+cfe2.getNama()+
                            "\n" +cfe3.getKode()+" "+cfe3.getNama()+
                            "\n" +cfe4.getKode()+" "+cfe4.getNama()+
                            "\n\nPASTRY" +
                            "\n" +pst1.getKode()+" "+pst1.getNama()+
                            "\n" +pst2.getKode()+" "+pst2.getNama()+
                            "\n" +pst3.getKode()+" "+pst3.getNama());
                    break;

                case 3:
                    String pilihMenuPesanan;
                    do {
                       pilihMenuPesanan =  JOptionPane.showInputDialog(jf, "Sub Menu Pesanan" +
                                "\n1. Buat Pesanan" +
                                "\n2. Tambah Pesanan" +
                                "\n3. Hapus Pesanan" +
                                "\n4. Lihat Pesanan" +
                                "\n5. Keluar Sub Menu Pesanan");

                       int pilihPesanan = Integer.parseInt(pilihMenuPesanan);

                       switch (pilihPesanan) {
                        case 1:
                            String nm = JOptionPane.showInputDialog(jf, "Masukkan Nama Pembeli");
                            if (pembeli != null && pembeli.getNama().equalsIgnoreCase(nm)) {
                                String kd = JOptionPane.showInputDialog(jf,"  Masukkan Kode Transaksi");
                                String jml = JOptionPane.showInputDialog(jf, "  Jumlah Menu");
                                int j = Integer.parseInt(jml);
                                pesanan = new cPesanan(pembeli, j);
                                System.out.println("  Pembuatan sukses...");
                            }
                            break;

                        case 2:
                            String mn = JOptionPane.showInputDialog(jf, "Menu FABS Coffee" +
                                    "\nSemua jenis coffee dan pastry seharga Rp 25.000,-" +
                                    "\nMasukkan Kode Menu");

                            // validasi kode coffee ke array coffee di MAIN
                            boolean ada = false;
                            for (int i = 0; i < jmn; i++) {
                                if (m[i].getKode().equalsIgnoreCase(mn)) {
                                    ada = true;
                                    if (pesanan != null)
                                        pesanan.addMenu(m[i]);
                                    else JOptionPane.showMessageDialog(jf,"  Pesanan belum ada!");
                                    break;
                                }
                            }
                            if (ada == false) {
                                JOptionPane.showMessageDialog(jf,"Menu tidak ada!");
                            }
                            break;

                        case 3:
                            if (pesanan != null) {
                                mn = JOptionPane.showInputDialog(jf,"  Masukkan Kode");
                                pesanan.deleteMenu(mn);
                            } else JOptionPane.showMessageDialog(jf, "  Pesanan masih kosong!");
                            break;

                        case 4:
                            if (pesanan != null) {
                                int total = pesanan.getJumlah() * 25000;
                                int bayar = 0;
                                if (total >= 100000) {
                                    bayar = (int) (total - (0.15 * total));
                                } else if (total >= 50000) {
                                    bayar = (int) (total - (0.10 * total));
                                } else bayar = total;
                                JOptionPane.showMessageDialog(jf," "+pesanan.ToString()+
                                        "\nTotal Harga: " + total +
                                        "\nTotal Bayar: " + bayar);
                            } else JOptionPane.showMessageDialog(jf, "  Pesanan masih kosong!");
                            break;
                    }
                    break;

            } while (pilihMenuPesanan != "5");

        } while (pilihMenu != 5);
    } while (pilih != "4");
        JOptionPane.showMessageDialog(jf, "Terima kasih" +
                "\n- FABS Coffee");
}
}

2. cCoffee

public class cCoffee extends cMenu {
cCoffee(){
System.out.println("Default constructor...");
}
cCoffee(String k, String n){
super(k,n);
System.out.println("  Object coffee dibuat...");
}
@Override
public void info() {
System.out.println("Menu Coffee");
super.info();
}
}

3. cMenu

public class cMenu {
private String kode;
private String nama;
cMenu(){
System.out.println("Default constructor...");
}
cMenu(String k, String n){
kode=k; nama=n;
System.out.println("  Object menu dibuat...");
}
// getter
public String getKode() {
return kode;
}
public String getNama() {
return nama;
}
public void info() {
System.out.println(kode+"\t"+nama);
}
}

4. cPastry

public class cPastry extends cMenu {
cPastry(){
System.out.println("Default constructor...");
}
cPastry(String k, String n){
super(k,n);
System.out.println("  Object pastry dibuat...");
}
@Override
public void info() {
System.out.println("Menu Pastry");
super.info();
}
}

5. cPembeli

public class cPembeli {
private String nama;
private String telepon;
cPembeli(String n, String t){
nama=n; telepon=t;
System.out.println("  Object pembeli dibuat...");
}
// setter
public void setNama(String n) {
nama=n;
}

public void setTelepon(String t) {
telepon = t;
}

// getter
public String getNama() {
return nama;
}

public String getTelepon() { return telepon;}
// query
public String ToString() {
return nama+"\t"+telepon;
}
}

6. cPesanan

public class cPesanan {
private cPembeli pbl;
private cMenu[] men;
private int jmen, maksmen;
cPesanan(cPembeli p, int j){
pbl=p; maksmen=j; jmen=0;
men=new cMenu[j];
System.out.println("  Object pesanan dibuat...");
}
public int getJumlah() {
return maksmen;
}
public void addMenu(cMenu m) {
if(jmen<maksmen) {
men[jmen]=m;
jmen++;
System.out.println("  Penambahan sukses...");
}
else System.out.println("  Kapasitas penuh!");
}
public void deleteMenu(String kode) {
if(jmen>0) {
// cari kode di array coffee
boolean ada=false;
for(int i=0; i<jmen; i++) {
if(men[i].getKode().equalsIgnoreCase(kode)) {
ada=true;
men[i]=null;
// geser maju elemen belakang
for (int j=i; j<jmen; j++) {
if(j==jmen-1)
men[j]=null;
else
men[j]=men[j+1];
}
jmen--;
System.out.println("  Hapus sukses...");
break;
}
}
if(ada==false) {
System.out.println("  Coffee tidak ada!");
}
}
else System.out.println("  Coffee masih kosong!");
}
public String ToString() {
int harga = 25000;
String t=" ";
t=t+"Daftar Pesanan ["+pbl.getNama()+"]\n";
for(int i=0; i<jmen; i++) {
t=t+men[i].getNama()+"\t";
t=t+harga+"\n";
}
return t;
}
}

Tampilan Program

1. Tampilan Awal AppFABSCoffee 

    Berikut merupakan tampilan awal program ketika dijalankan. User dapat memilih opsi yang ingin dilakukan


2. Submenu Pembeli

    Pada menu pembeli user dapat melakukan tambah, lihat, hapus dan ubah data pembeli.
 

    Tampilan Tambah Data

    Untuk menambah data, user diminta memasukkan nama dan telepon untuk ditambahkan sebagai data pembeli.




 Tampilan Ubah Data

    Untuk mengubah data, user akan diminta memasukkan nama lama dan mengisi nama baru. selain itu, user juga akan diminta mengisi nomor telepon lama untuk diubah ke nomor telepon baru.



  Tampilan Lihat Data Pembeli

    Pada pilihan submenu data pembeli, terdapat tampilan nama dan telepon pembeli.


 Tampilan Hapus Data Pembeli

    Untuk menghapus data pembeli, user diminta memasukkan nama yang ingin dihapus. Kemudian, akan muncul pertanyaan "Hapus Data?:" dan dua opsi yaitu ya untuk hapus dan tidak untuk membatalkan hapus data.





3. Submenu Menu FABSCoffee

Pada menu ini ditampilkan daftar menu coffee dan pastry.


4. Submenu Pesanan

Pada menu pesanan user dapat melakukan beberapa proses yaitu buat, tambah, lihat, dan hapus.



Comments

Popular posts from this blog

PROGRAM PUSTAKA ADT MENGGUNAKAN BAHASA PEMROGRAMAN JAVA

  Program Antrian Pembelian Tiket Pesawat Berikut ini merupakan contoh program Pustaka ADT pada bahasa pemrograman java menggunakan Queue dan juga Linked List: Source Code 1. Class appAntrianTiket import java.util.Queue; import java.util.LinkedList; import java.util.Scanner; public class appAntrianTiketPesawat { public static void main(String[] args) { int bagasi;     int hargaTiket=700000;     int hargaBagasi=4400;     String noAntrian,nama,bandaraAsal,bandaraTujuan; Queue q = new LinkedList(); Scanner s = new Scanner(System.in); int pilih=0; do { System.out.println("\nMENU PEMBELIAN TIKET PESAWAT");         System.out.println("1. Ambil nomor antrian");         System.out.println("2. Panggil antrian");         System.out.println("3. Daftar antrian");         System.out.println("4. Keluar");         System.out.print("...

PROGRAM DOUBLE LINKED LIST MENGGUNAKAN BAHASA PEMROGRAMAN JAVA

    Program Double Linked List Barang Berikut ini merupakan contoh program double linked list dengan bahasa pemrograman java untuk penyimpanan data barang: Source Code 1. Class cNode public class cNode { private String kode; private String nama; private int harga; cNode next, prev; cNode(String kd, String nm, int hrg){ kode=kd; nama=nm; harga=hrg; next=prev=null; System.out.println("Object "+kd+" "+nm+" "+hrg+" dibuat..."); } public String getKode() { return kode; } public String getNama() { return nama; } public int getHarga() { return harga; } public String ToString() { return "["+kode+"]"+"\t"+nama+"\t"+harga; } } 2. Class cDoubleLinkedList public class cDoubleLinkedList { cNode head, tail; int jNode; cDoubleLinkedList(){ head=tail=null; jNode=0; System.out.println("Object Double Linked List dibuat..."); } public void tambahN...

PROGRAM STACK SINGLE LINKED LIST MENGGUNAKAN BAHASA PEMROGRAMAN JAVA

  Program Stack Single Linked List Barang Berikut ini merupakan contoh program stack dengan single linked list menggunakan bahasa pemrograman java untuk penyimpanan data barang: Source Code 1. Class cElemen public class cElemen { private String nama; cElemen next; cElemen(String n){ nama=n; System.out.println("Object "+n+" created..."); } public String getNama() { return nama; } } 2. Class cStack public class cStack { //head dan tail cElemen top, bottom; int jumlah; cStack(){ top=bottom=null; jumlah=0; System.out.println("Object stack created..."); } public void push(cElemen baru) { if(top==null) { top=bottom=baru; } else { //tumpukan sudah ada isinya baru.next = top; top = baru; } System.out.println("Push OK..."); } public cElemen pop() { if(top==null) { System.out.println("Stack empty!"); return null; } else if(top.next==null) { cElemen t...