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