💸Praktikum 2
Pengantar
Pada praktikum kali ini, kita akan membuat sebuah sistem antrean nasabah pada sebuah bank. Class diagram dari Nasabah berikut akan menjadi acuan untuk class Nasabah.

Langkah Praktikum
Buatlah proyek dengan nama "
Praktikum2
" dan buatlah class "Nasabah
" didalamnya.Tambahkan atribut-atribut Nasabah seperti pada Class Diagram, kemudian tambahkan pula konstruktornya seperti potongan kode berikut ini.
Nasabah(String norek, String nama, String alamat, int umur, double saldo){
this.norek = norek;
this.nama = nama;
this.alamat = alamat;
this.umur = umur;
this.saldo = saldo;
}
Salin kode program class
Queue
pada Praktikum 1 untuk digunakan kembali pada Praktikum 2 ini. Pada Praktikum 1, data yang disimpan pada queue hanya berupa array bertipe integer, sedangkan pada Praktikum 2 data yang digunakan adalah object, maka perlu dilakukan modifikasi pada classQueue
tersebut.
Nasabah[] data;
int front;
int rear;
int size;
int max;
public Queue(int n) {
max = n;
data = new Nasabah[max];
size = 0;
front = rear = -1;
}
public void enqueue(Nasabah dt) {
if (isFull()) {
System.out.println("Queue sudah penuh");
} else {
if (isEmpty()) {
front = rear = 0;
} else {
if (rear == max - 1) {
rear = 0;
} else {
rear++;
}
}
data[rear] = dt;
size++;
}
}
public Nasabah dequeue() {
Nasabah dt = new Nasabah();
if (isEmpty()) {
System.out.println("Queue masih kosong");
} else {
dt = data[front];
size--;
if (isEmpty()) {
front = rear = -1;
} else {
if (front == max - 1) {
front = 0;
} else {
front++;
}
}
}
return dt;
}
Baris program
Nasabah dt = new Nasabah();
akan ditandai sebagai error, untuk mengatasinya, tambahkan konstruktor default di dalam classNasabah
.
Nasabah() {}
Karena satu elemen queue terdiri dari beberapa informasi (norek, nama, alamat, umur, dan saldo), maka ketika mencetak data juga perlu ditampilkan semua informasi tersebut, sehingga meodifikasi perlu dilakukan pada method
peek
dan methodprint
.
public void peek() {
if (!isEmpty()) {
System.out.println("Elemen terdepan: " + data[front].norek + " " + data[front].nama
+ " " + data[front].alamat + " " + data[front].umur + " " + data[front].saldo);
} else {
System.out.println("Queue masih kosong");
}
}
public void print() {
if (isEmpty()) {
System.out.println("Queue masih kosong");
} else {
int i = front;
while (i != rear) {
System.out.println(data[i].norek + " " + data[i].nama
+ " " + data[i].alamat + " " + data[i].umur + " " + data[i].saldo);
i = (i + 1) % max;
}
System.out.println(data[i].norek + " " + data[i].nama
+ " " + data[i].alamat + " " + data[i].umur + " " + data[i].saldo);
System.out.println("Jumlah elemen = " + size);
}
}
Selanjutnya, buat class baru dengan nama
QueueMain
tetap pada proyekPraktikum2
. Buat method menu untuk mengakomodasi pilihan menu dari masukan pengguna.
public static void menu() {
System.out.println("Pilih menu: ");
System.out.println("1. Antrian baru");
System.out.println("2. Antrian keluar");
System.out.println("3. Cek Antrian terdepan");
System.out.println("4. Cek Semua Antrian");
System.out.println("-------------------------");
}
Buat fungsi main, deklarasikan
Scanner
dengan namasc
.Buat variabel
max
untuk menampung kapasitas elemen pada queue. Kemudian lakukan instansiasi objek queue dengan namaantri
dan nilai parameternya adalah variabeljumlah
.
Scanner sc = new Scanner(System.in);
System.out.print("Masukkan kapasitas queue: ");
int jumlah = sc.nextInt();
Deklarasikan variabel dengan nama
pilih
bertipe integer untuk menampung pilih menu dari pengguna.Tambahkan kode berikut untuk melakukan perulangan menu sesuai dengan masukan yang diberikan oleh pengguna.
do {
menu();
pilih = sc.nextInt();
sc.nextLine();
switch (pilih) {
case 1:
System.out.print("No Rekening: ");
String norek = sc.nextLine();
System.out.print("Nama: ");
String nama = sc.nextLine();
System.out.print("Alamat: ");
String alamat = sc.nextLine();
System.out.print("Umur: ");
int umur = sc.nextInt();
System.out.print("Saldo: ");
double saldo = sc.nextDouble();
Nasabah nb = new Nasabah(norek, nama, alamat, umur, saldo);
sc.nextLine();
antri.Enqueue(nb);
break;
case 2:
Nasabah data = antri.Dequeue();
if (!"".equals(data.norek) && !"".equals(data.nama) && !"".equals(data.alamat)
&& data.umur != 0 && data.saldo != 0) {
System.out.println("Antrian yang keluar: " + data.norek + " " + data.nama + " "
+ data.alamat + " " + data.umur + " " + data.saldo);
break;
}
case 3:
antri.peek();
break;
case 4:
antri.print();
break;
}
} while (pilih == 1 || pilih == 2 || pilih == 3 || pilih == 4);
Compile dan jalankan class
QueueMain
, kemudian amati hasilnya.

Pertanyaan
Pada class
QueueMain
, jelaskan fungsiIF
pada potongan kode program berikut!
if (!"".equals(data.norek) && !"".equals(data.nama) && !"".equals(data.alamat)
&& data.umur != 0 && data.saldo != 0) {
System.out.println("Antrian yang keluar: " + data.norek + " " + data.nama + " " + data.alamat + " " + data.umur + " " + data.saldo);
break;
}
Lakukan modifikasi program dengan menambahkan method baru bernama peekRear pada class Queue yang digunakan untuk mengecek antrian yang berada di posisi belakang! Tambahkan pula daftar menu 5. Cek Antrian paling belakang pada class
QueueMain
sehingga methodpeekRear
dapat dipanggil!
Last updated