Senin, 10 Mei 2021

Pemrograman OOP Java : Linked List 2

 

 

 

 

 

Dasar Program Java Berorientasi Objek

Linked List Series 2


The Objective

Modifikasilah source code program latihan Linked List Barang dengan menambahkan dua method baru, sehingga memiliki menu pilihan untuk menambah dan menghapus simpul di posisi ujung belakang.

 

Source Code

  • appTokoRama (Main Linked List)
package linkedlist1;

//F Ramaditya Arief Nursanto
//Linked List 2

import java.util.Scanner;

public class appTokoRama {
    public static void main(String[] args) {
        cOperasiBarang tko = new cOperasiBarang(null);
        Scanner input = new Scanner(System.in);
        int opsi=0;

        do{
            System.out.println();
            System.out.println("Menu Aplikasi Toko Rama");
            System.out.println("1. Menambah Barang Baru");
            System.out.println("2. Menghapus Barang Tersedia");
            System.out.println("3. Mencari Barang Dalam Daftar");
            System.out.println("4. Mencetak Daftar List Barang");
            System.out.println("5. Keluar Dari Program");
            System.out.print("Masukkan Opsi : ");
            opsi=input.nextInt();

            switch(opsi) {
                case 1:
                    System.out.println();
                    System.out.println("1. Menambah Barang Baru Dari Depan");
                    System.out.println("2. Menambah Barang Baru Dari Belakang");
                    System.out.print("Masukkan Metode Menambah Barang :");
                    int opsi2=input.nextInt();

                    switch(opsi2) {
                        case 1:
                            System.out.println();
                            System.out.print("Masukkan Kode Barang : ");
                            String kdb = input.next();
                            System.out.print("Masukkan Nama Barang : ");
                            input = new Scanner(System.in);
                            String nmb = input.nextLine();
                            System.out.print("Masukkan Harga Barang : ");
                            input = new Scanner(System.in);
                            int hgb = input.nextInt();
                            cBarangBaru brb = new cBarangBaru(kdb, nmb, hgb);
                            tko.menambahBarangFirst(brb);
                            break;

                        case 2:
                            System.out.println();
                            System.out.print("Masukkan Kode Barang : ");
                            String kdbr = input.next();
                            System.out.print("Masukkan Nama Barang : ");
                            input = new Scanner(System.in);
                            String nmbr = input.nextLine();
                            System.out.print("Masukkan Harga Barang : ");
                            input = new Scanner(System.in);
                            int hgbr = input.nextInt();
                            cBarangBaru brbr = new cBarangBaru(kdbr, nmbr, hgbr);
                            tko.menambahBarangLast(brbr);
                            break;
                            default : System.out.println("Tidak Bisa Menambah Hal Tersebut");
                    }
                    break;
            
                case 2:
                    System.out.println();
                    System.out.println("1. Menghapus Barang Baru Dari Depan");
                    System.out.println("2. Menghapus Barang Baru Dari Belakang");
                    System.out.print("Masukkan Metode Menghapus Barang :");
                    int opsi3=input.nextInt();
                    
                    switch(opsi3) {
                        case 1:
                            tko.menghapusBarangFirst();
                            break;

                        case 2:
                           tko.menghapusBarangLast();
                            break;
                            default : System.out.println("Tidak Bisa Menghapus Seperti Itu");
                    }
                    break;
                    
                case 3:
                    System.out.println();
                    System.out.print("Nama Barang yang Dicari : ");
                    String nbrb = input.next();
                    tko.mencariBarang(nbrb);
                    break;
                case 4:
                    tko.mencetakBarang();
                    break;
                case 5:
                    System.out.println("Sampai Jumpa & Terima Kasih!");
                    break;
                    default : System.out.println("Pastikan Untuk Memilih Menu yang Tersedia Ya");

            }
        }while(opsi!=5);
    }
}

  • cOperasiBarang (DaftarTerkait)
package linkedlist1;

//F Ramaditya Arief Nursanto
//Linked List 2

public class cOperasiBarang {
    private cBarangBaru depan;
    private cBarangBaru belakang;
    int dBarangBaru;

    cOperasiBarang (cBarangBaru shelf) {
        depan=belakang=shelf; dBarangBaru=0;
    }

    public void menambahBarangFirst(cBarangBaru addition) {
        if(depan==null) {
            depan=addition;
        }else {
            addition.setselanjutnya(depan);
            depan=addition;
        }
        dBarangBaru++;
        System.out.println("Barang Berhasil Didaftarkan");
    }

    public void menambahBarangLast(cBarangBaru laddition) {
        if(belakang==null) {
            depan=belakang=laddition;
        } else {
            laddition.setselanjutnya(belakang);
            belakang.lanjut=laddition;
            laddition.mundur=belakang;
            belakang=laddition;
        }
        dBarangBaru++;
        System.out.println("Barang Berhasil Didaftarkan");
    }

    public String menghapusBarangFirst() {
        String tempKode=null;
        String tempNama=null;
        int tempHarga=0;
        
        if(depan!=null) {
            cBarangBaru all=depan.getselanjutnya();
            tempKode=depan.getkodebarang();
            tempNama=depan.getnamabarang();
            depan.setselanjutnya(null);
            depan=all;
            dBarangBaru--;
            System.out.println("Barang Tersebut Berhasil Dihapus dari Daftar");
        }else {
            System.out.println("Daftar Barang Saat ini Telah Kosong");
            return tempKode+" "+tempNama+" "+tempHarga;
        }
        return tempNama;
    }

    public cBarangBaru menghapusBarangLast() {
        if(depan!=null) {
            cBarangBaru support, akhir;
                if(depan.lanjut==null) {
                    akhir=depan;
                    depan=belakang=null;
                } else {
                    support=depan;
                    while(support.lanjut!=belakang) {
                        support=support.lanjut;
                    }
                    akhir=belakang;
                    belakang=support;
                    belakang.lanjut=null;
                    System.out.println("Barang Tersebut Berhasil Dihapus dari Daftar");
                } return akhir;
        } else {
            System.out.println("Daftar Barang Sudah Tidak Berisi");
            return null;
        }
    }

    public void mencariBarang(String src) {
        boolean eksis = false;
        System.out.println();
        System.out.println("Hasil Mencari Barang Dari Daftar : ");
        for(cBarangBaru all=depan; all!=null; all=all.getselanjutnya()) {
            if(all.getnamabarang().equals(src)) {
                eksis = true;
                break;
            }
        }
            if(eksis==false) {
                System.out.println("Barang Tersebut Tidak Ada Dalam Daftar");
            }else{
                System.out.println("Barang Tersebut Ditemukan");
            }
    }

    public void mencetakBarang() {
        System.out.println("Daftar Barang di Toko Rama");
        System.out.println("Kode Barang \t\tNama Barang \t\tHarga Barang");
        for(cBarangBaru all=depan; all!=null; all=all.lanjut) {
            System.out.println(all.getkodebarang()+"\t\t"+all.getnamabarang()+"\t\t"+all.gethargabarang());
            all.toString();
        }
        System.out.println();
    }
}

  • cBarangBaru (Node)

 package linkedlist1;

//F Ramaditya Arief Nursanto
//Linked List 2

public class cBarangBaru {
    private String kodebarang;
    private String namabarang;
    private int hargabarang;   

    cBarangBaru lanjut, mundur;
    cBarangBaru(String kdb, String nmb, int hgb) {
        lanjut=null; kodebarang=kdb; namabarang=nmb; hargabarang=hgb;
    }

    //set Barang Baru
    public void setkodebarang(String kdb) {
        kodebarang=kdb;
    }
    public void setnamabarang(String nmb) {
        namabarang=nmb;
    }
    public void sethargabarang(int hgb) {
        hargabarang=hgb;
    }
    public void setselanjutnya(cBarangBaru lnjt){
        lanjut=lnjt;
    }

    //get Barang Baru
    public String getkodebarang() {
        return kodebarang;
    }
    public String getnamabarang() {
        return namabarang;
    }
    public int gethargabarang() {
        return hargabarang;
    }
    public cBarangBaru getselanjutnya() {
        return lanjut;
    }
}


The Visual Output             


  •  Penambahan Barang di Node Belakang dengan Linked List
 




  •  Menghapus Barang di Node Belakang dengan Linked List
 



Catatan : 

  • Masih terdapat satu Bug dimana meskipun program telah berhasil melakukan penghapusan dari node belakang, namun list barang sebelumnya justru ter-reset (tertimpa dan terhapus)
  • Bila gambar yang ditampilkan kurang jelas, mohon klik gambar tersebut.

Terimakasih telah berkunjung, have a nice day :))







Tidak ada komentar:

Posting Komentar