Senin, 10 Mei 2021

Pemrograman OOP Java : Double Linked List 1

 

 

 

 

 

 

Dasar Program Java Berorientasi Objek

Double Linked List Series 1


The Objective

Buatlah program sederhana untuk mengelola data barang yang terdiri dari Kode, Nama dan Harga dengan menggunakan double linked list. Menu program setidaknya untuk menambah simpul baru, menghapus simpul, menampilkan linked list (maju dan mundur), serta mencari data Nama di dalam linked list.

 

Source Code

  • appTokoRama (Main Linked List)

package doublelink1;

//F Ramaditya Arief Nursanto
//Double Link List 1

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.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.menambahBarang(brb);
                    break;
                case 2:
                    tko.menghapusBarang();
                    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 doublelink1;

//F Ramaditya Arief Nursanto
//Double Link List 1

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

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

    public void menambahBarang(cBarangBaru addition) {
        if(depan==null) {
            depan=belakang=addition;
        }else {
            belakang.lanjut=addition;
            addition.mundur=belakang;
            belakang=addition;
        }
        System.out.println("Barang Berhasil Didaftarkan");
    }

    public void menghapusBarang() {
        if(depan==null) {
            System.out.println("Tidak Ada Daftar yang Bisa Dihapus");
        } else if(depan.lanjut==null) {
            depan=belakang=null;
            System.out.println("Barang Tersebut Berhasil Dihapus");
        } else {
            cBarangBaru hap=belakang.mundur;
            belakang.mundur=null;
            hap.lanjut=null;
            belakang=hap;
            System.out.println("Barang Tersebut Berhasil Dihapus");
        }
    }

    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.lanjut) {
            if(all.getnamabarang().equalsIgnoreCase(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");
        System.out.println("List Maju ");
        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();
        System.out.println("List Mundur ");
        for(cBarangBaru all=belakang; all!=null; all=all.mundur) {
            System.out.println(all.getkodebarang()+"\t\t"+all.getnamabarang()+"\t\t"+all.gethargabarang());
            all.toString();
    } System.out.println();
  }
}

  • cBarangBaru (Node)

package doublelink1;

//F Ramaditya Arief Nursanto
//Double Link List 1

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             

  •  Menu Utama Double Link List
 

  •  Menambah Barang dengan Double Linked List
 
 
 

  •  Mencetak Barang dengan Double Linked List


  •  Menghapus Barang dengan Double Linked List
 

Catatan : 

  • Masih terdapat satu Bug dimana program tidak menemukan barang yang dicari saat memilih menu pencarian
  • Bila gambar yang ditampilkan kurang jelas, mohon klik gambar tersebut.

Terimakasih telah berkunjung, have a nice day :))









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 :))