Pustaka ADT

ADT atau Abstract Data Type merupakan bentuk struktur data yang memiliki kegunaan serta perilaku yang sama. Tipe data abstract juga bisa disebut tipe data bentukan. Tipe data abstrak yang dapat dibuat menggunakan array ataupun linked list. Masing-masing dari itu memiliki kesulitannya tersendiri dan membutuhkan ketelitian.


Class Main

package PustakaADT;

import java.util.Scanner;

import java.util.Queue;

import java.util.LinkedList;

public class Main {

    public static void main(String[] args) {

        Scanner    s = new Scanner(System.in);

        Queue      q = new LinkedList();

        LinkedList l = new LinkedList();

        String pmsn[] = new String[50];

        int hrg = 200000;

        

        byte pil;

        String nokur[][] = new String[4][5];

        byte jmlh=0, e=0, f=0;

        char symb1, symb2, symb3, symb4;

        

        do{

            System.out.println("\nPEMBELIAN TIKET KERETA API");

            System.out.println("1. Ambil Nomor Antrian");

            System.out.println("2. Panggil Nomor Antrian");

            System.out.println("3. Daftar Antrian");

            System.out.println("4. Lihat Kursi Kereta");

            System.out.println("5. Keluar");

            System.out.print("Pilih : ");

            pil = s.nextByte();

            

            switch(pil){

                case 1 :

                    System.out.println("\nANTRIAN KE "+(e+1));

                    s = new Scanner(System.in);

                    System.out.print("Nama Pemesan     : ");

                    String namapsn = s.nextLine();

                    

                    q.add(namapsn);

                    pmsn[e]=namapsn;

                    System.out.println("Antrian Berhasil Diambil!");

                    e++;

                    break;

                    

                case 2 :

                    if(q.isEmpty()==true)System.out.println("Nomor Antrian Kosong!");

                    else {

                        s = new Scanner(System.in);

                        System.out.println("Nama Pemesan     : "+pmsn[f]);

                        System.out.print("Stasiun Asal     : ");

                        String statasal = s.nextLine();


                        s = new Scanner(System.in);

                        System.out.print("Stasiun Tujuan   : ");

                        String stattuju = s.nextLine();


                        System.out.print("Jumlah Penumpang : ");

                        jmlh = s.nextByte();

                        

                        int biaya = hrg*jmlh;

                        System.out.println("\nTotal Biaya  : Rp"+biaya);

                        System.out.println("Lanjut Pengisian Data?");

                        System.out.println("1. Ya           2. Tidak");

                        System.out.print("Pilih : ");

                        byte pill = s.nextByte();

                        

                        if(pill==1){

                            for (int i = 0; i < jmlh; i++) {

                                System.out.println("\nDATA PENUMPANG "+(i+1));

                                System.out.print("Nomor Tanda Pengenal : ");

                                String ktp = s.next();


                                s = new Scanner(System.in);

                                System.out.print("Nama Penumpang : ");

                                String nama = s.nextLine();


                                System.out.println("               ");

                                System.out.println("    A   B       C   D");


                                for (int j = 0; j < 4; j++) {

                                    if(nokur[j][0]==null) symb1 = '✓';

                                    else symb1 = '✖';

                                    if(nokur[j][1]==null) symb2 = '✓';

                                    else symb2 = '✖';

                                    if(nokur[j][2]==null) symb3 = '✓';

                                    else symb3 = '✖';

                                    if(nokur[j][3]==null) symb4 = '✓';

                                    else symb4 = '✖';

                                    System.out.println((j+1)+"   "+symb1+"   "+symb2+"       "+symb3+"   "+symb4);

                                }

                                

                                boolean nomor = false;

                                while(nomor==false){

                                    System.out.println("KURSI KOSONG : ✓, KURSI TERISI : ✖");

                                    System.out.print("Nomor Kursi (ex: 1A): ");

                                    String pilkur = s.next();

                                    cObject psn = new cObject(nama, ktp, statasal, stattuju, pilkur, biaya);

                                    l.add(psn);


                                    char c = pilkur.charAt(0);

                                    int a = Character.getNumericValue(c);


                                    int b;

                                    if(pilkur.charAt(1)=='A'|| pilkur.charAt(1)=='B' || pilkur.charAt(1)=='C' || pilkur.charAt(1)=='D') {

                                        if(pilkur.charAt(1)=='A') b = 0;

                                        else if(pilkur.charAt(1)=='B') b = 1;

                                        else if(pilkur.charAt(1)=='C') b = 2;

                                        else b = 3;

                                        

                                        if(nokur[a-1][b]==null){

                                            nokur[a-1][b] = ktp;

                                            nomor =true;

                                            System.out.println("Booking Kursi Berhasil!");

                                        }

                                        else {

                                            nomor =false;

                                            System.out.println("Booking Kursi Gagal! Kursi Telah Terisi!");

                                        }

                                    }

                                    else {

                                        System.out.println("Nomor Kursi Tidak Valid!");

                                        nomor =false;

                                    }

                                }

                            }

                            q.poll();

                             f++;

                        }     

                        else {

                            System.out.println("Pemesanan Berhasil Dibatalkan!");

                            q.poll();

                            System.out.println("Ambil Kembali Nomor Antrian untuk Pemesanan Selanjutnya!");

                        }

                    }

                    break;

                case 3 :

                    if(q.isEmpty()==true)System.out.println("Daftar Antrian Kosong!");

                    else{

                        byte g=f;

                        System.out.println("\nDaftar Antrian : ");

                        for (int i = 0; i < q.size() ; i++) {

                            System.out.println("No. "+(g+1));

                            g++;

                        }

                    }

                    break;

                case 4 :

                    System.out.println("\nDAFTAR KURSI KERETA");

                    System.out.println("    A   B       C   D");

                    for (int j = 0; j < 4; j++) {

                        if(nokur[j][0]==null) symb1 = '✓';

                        else symb1 = '✖';

                        if(nokur[j][1]==null) symb2 = '✓';

                        else symb2 = '✖';

                        if(nokur[j][2]==null) symb3 = '✓';

                        else symb3 = '✖';

                        if(nokur[j][3]==null) symb4 = '✓';

                        else symb4 = '✖';

                        System.out.println((j+1)+"   "+symb1+"   "+symb2+"       "+symb3+"   "+symb4);

                    }

                    break;

                case 5 : System.out.println("Thank You!");

            }

        }while(pil!=5);

    }

}





Output Program


Pengambilan Nomor Antrian dan Input Nama Pemesan




Daftar Antrian Setelah Penambahan Antrian




Pemanggilan Nomor Antrian dari Awal dan Pengisian Data Penumpang





Daftar Antrian Setelah Pemanggilan Antrian


Pemanggilan Antrian Berikutnya dan Pengisian Data Penumpang


Daftar Antrian yang Tersisa serta Daftar Kursi Kereta