ANTRIAN PENDAFTARAN KTP MENGGUNAKAN BAHASA PEMROGRAMAN JAVA
TUGAS AKHIR ALGORITMA STRUKTUR DATA
OLEH KELOMPOK 1 ANGGOTA DWITHA FAJRI RAMADHANI
NIM 160533611410
FACHRYZAL CANDRA TRISNAWAN NIM 160533611466 IKA DAMAYANTI
NIM 160533611505
UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PROGRAM STUDI PENDIDIKAN TEKNIK INFORMATIKA MEI , 2017
i
DAFTAR ISI Halaman Cover..........................................................................................................i Daftar Isi...................................................................................................................ii Daftar Tabel............................................................................................................ iii Daftar Gambar.........................................................................................................iv Daftar Lampiran.......................................................................................................v BAB I Pendahuluan..................................................................................................1 1.1 Latar Belakang .......................................................................................1 1.2 Batasan Masalah.....................................................................................2 1.3 Rumusan Masalah..................................................................................2 1.4 Tujuan....................................................................................................2 BAB II Tinjaun Pustaka............................................................................................3 2.1 Antrian (Queue)......................................................................................3 2.2 Sistem Antrian KTP............................................................................... 5 2.3 Bahasa Pemrograman Java.....................................................................5 2.4 Import.....................................................................................................8 BAB III Metode Penelitian.....................................................................................10 3.1 Algoritma Queue..................................................................................10 3.2 Flowchart Queue...................................................................................11 3.3 Sumber Data.........................................................................................11 BAB IV Hasil dan Pembahasan..............................................................................12 4.1 Data......................................................................................................12 4.2 Queue untuk Antrian KTP....................................................................13 4.3 Analisa..................................................................................................17 BAB V Penutup......................................................................................................28 5.1 Kesimpulan...........................................................................................28 5.2 Saran.....................................................................................................28 Daftar Pustaka........................................................................................................29 Lampiran................................................................................................................30
ii
DAFTAR TABEL Tabel 2.1 Operasi pada queue Tabel 2.2 Java pada berbagai sistem operasi Tabel 4.1 Sourcode Class Queue Tabel 4.2 Sourcecode Class Node Tabel 4.3 Sourcecode Class List Tabel 4.4 Sourcecode Class Pendaftar Tabel 4.5 Sourcecode Class Queue Tabel 4.6 Sourcecode Class Queuedemo Tabel 4.7 Penjelasan Class Node Tabel 4.8 Penjelasan Class List Tabel 4.9 Penjelasan Class Pendaftar Tabel 4.10 Penjelasan Class Queue Tabel 4.11 Penjelasan Class Queuedemo
iii
DAFTAR GAMBAR Gambar 2.1 Antrian/Queue Gambar 2.2 Penambahan data Gambar 2.3 Penghapusan data Gambar 2.4 Penambahan data Gambar 2.5 Skema pengkompilasian hingga pengeksekusian kode Java Gambar 3.1 Flowchart Queue Gambar 4.1 Data pertama Gambar 4.2 Data kedua Gambar 4.3 Data ketiga Gambar 4.4 Data keempat Gambar 4.5 Data kelima Gambar 4.6 Data keenam Gambar 4.7 Flowchart antrian KTP Gambar Lampiran 1. Memasukkan data pertama Gambar Lampiran 2. Memasukkan data kedua Gambar Lampiran 3. Memasukkan data ketiga Gambar Lampiran 4. Memasukkan data keempat Gambar Lampiran 5. Memasukkan data kelima Gambar Lampiran 6. Lihat daftar antrian Gambar Lampiran 7. Memanggil antrian pertama Gambar Lampiran 8. Memanggil antrian kedua Gambar Lampiran 9. Memasukkan data keenam Gambar Lampiran 10. Memanggil antrian ketiga Gambar Lampiran 11. Memanggil antrian keempat Gambar Lampiran 12. Memanggil antrian kelima Gambar Lampiran 13. Memanggil antrian keenam Gambar Lampiran 14. Memanggil antrian Gambar Lampiran 15. Keluar dari program
iv
DAFTAR LAMPIRAN Lampiran 1 : Screenshoot Lengkap Program
v
BAB I PENDAHULUAN 1.1 Latar Belakang Antrian merupakan hal yang sering ditemui dalam kehidupan sehari-hari, misalnya antrian membeli tiket bioskop, antrian pasien di klinik maupun rumah sakit, antrian nasabah bank dan lain sebagainya. Antrian merupakan suatu proses yang berkaitan dengan kedatangan pelanggan yang membutuhkan pelayanan pada suatu fasilitas umum, kemudian mendapatkan pelayanan yang dibutuhkan, dan akhirnya beralih dari fasilitas tersebut. Sistem antrian terdiri dari himpunan pelanggan, petugas, dan aturan yang mengatur kedatangan para pelanggan dan pelayanan kepada pelanggan. Proses mengantri merupakan hal yang tidak menyenangkan bagi pelanggan karena berbagai hal seperti ruang tunggu kurang nyaman, proses mengantri yang panjang dan berdesak-desakkan akibat dari sistem antrian yang belum maksimal dalam memberikan pengaturan antrian terhadap pelanggan. Di era perkembangan yang serba modern, sistem antri menggunakan metode pendaftaran manual dikatakan belum efisien karena memerlukan waktu yang cukup lama dan biaya yang cukup mahal pula, sehingga dalam tugas akhir ini, permasalahan yang akan dibahas adalah bagaimana membuat sistem antrian yang diproses oleh program sehingga antrian dapat berjalan dengan efektif dan efisien. Penerapan sistem antrian yang akan dibahas adalah antrian dalam bidang pemerintahan dalam hal pendaftaran KTP. Petugas telah menerapkan sistem antrian menggunakan komputer dalam mengatur antrian dengan menambahkan data pendaftar untuk mengisi kolom-kolom yang tersedia kemudian data akan disimpan dalam tabel antrian, setelah itu pelanggan akan menunggu untuk dipanggil oleh petugas. Berdasarkan uraian di atas, maka penulis memberikan judul pada tugas akhir ini “ANTRIAN PENDAFTARAN KTP MENGGUNAKAN BAHASA PEMROGRAMAN JAVA”.
1
1.2 Batasan Masalah Batasan masalah dalam tugas akhir ini adalah sebagai berikut : 1. Model antrian yang akan dibahas hanya model antrian dengan metode queue dengan menggunakan jenis pelayanan FIFO (First In First Out) 2. Sistem akan dibuat dengan Bahasa pemrograman Java 3. Studi kasus pada penelitian ini khususnya diterapkan pada antrian pendaftaran KTP 1.3. Rumusan Masalah Dari latar belakang tersebut bisa disimpulkan bahwa permasalahan utama yang akan dipecahkan disini adalah bagaimana membuat suatu sistem antrian pendaftaran KTP dengan metode queue sebagai penerapan queue dalam kehidupan sehari-hari serta mengembangkan sistem antrian pendaftaran KTP yang manual. 1.4. Tujuan 1. Sebagai bagian dari tugas akhir matakuliah Algoritma Struktur Data yang merupakan salah satu syarat kelulusan 2. Untuk mengimplementasikan metode queue dalam kehidupan sehari-hari 3. Pendukung pengambilan keputusan dalam menentukan sistem antrian yang baik
2
BAB II TINJAUAN PUSTAKA 2.1 Antrian (Queue) Antrian sering dijumpai dalam kehidupan sehari-hari contohnya rumah sakit, pembelian tiket nonton bioskop, pembelian tiket kereta dan lain lain. Antrian atau Queue (baca: qyu) adalah salah satu struktur data yang memiliki sistem kerja pertama masuk dan pertama keluar atau FIFO (First In First Out) seperti halnya antrian pada dunia nyata (Salahuddin, 2010). Antrian atau Queue atau lebih dikenal dengan struktur FIFO (First In First Out) merupakan salah satu tipe data abstrak yang sering digunakan dalam ilmu komputer (Wibowo, 1989). Queue pada penambahan datanya hanya dapat dilakukan pada salah satu ujung dan penghapusan data hanya dapat dilakukan pada ujung yang lain. Elemen baru dumasukan pada bagian belakang dalam antrian dan penghapusan elemen hanya dilakukan pada bagian ujung depan elemen. Ada berbagai jenis model antrian, antara lain : 1. First In First Out (FIFO) : Dimana orang yang datang lebih awal akan diberikan pelayanan terlebih dahulu, orang yang datang terakhir akan dilayani terakhir. Contoh : Pelayanan kasir supermarket. 2. Last In First Out (LIFO) : Model antrian dimana yang datang terhakhir dilayani lebih awal, dan yang datang paling awal dilayani terakhir. Contoh : Tumpukan barang di gudang, dimana tumpukan paling atas merupakan barang terakhir yang masuk, sehingga akan diambil pertama. 3. Priority Service (PS) : Model antrian yang mengutamakan layanan kepada antrian yang memiliki prioritas lebih tinggi dibandingkan dengan prioritas yang lebih rendah. Meskipun datang paling akhir, jika prioritasnya paling tinggi makan akan didahulukan. Antrian mengenal dua prosedur utama yaitu memasukan elemen baru dan mengeluarkan/menghapus elemen yang sudah ada (Sumantri, 1988). Dimana elemen baru dimasukan sebagai elemen terakhir dalam antrian yang dikenal denga prosedur add atau insert. Elemen yang dihapus atau dikeluarkan adalah elemen pertama yang dikenal dengan prosedur delete atau remove.
3
Gambar 2.1 Antrian/Queue Tabel 2.1 merupakan tabel operasi pada queue. Tabel 2.1 Operasi pada queue
Proses penambahan data pada Queue q.insert(A); q.insert(B); q.insert(C); Gambar 2.2 Penambahan data
Proses penghapusan data pada Queue x= q.remove(); Gambar 2.3 Penghapusan data Proses penambahan data pada Queue, data yang dimasukan akan ada pada posisi terakhir q.insert(D); q.insert(E); Gambar 2.4 Penambahan data 1. Antrian datang secara berurutan A, B dan C yang kemudian dimasukan ke dalam baris antrian. Urutan data masuk melalui bagian Rear antrian. 2. Setelah A dilayani, maka A akan keluar dari bagian Front baris antrian. 3. Kemudian ada antrian baru yang masuk yaitu D dan E secara berurutan masuk melalui bagian Rear lagi. Dan seterusnya.
4
2.2 Sistem antrian KTP Kartu Tanda Penduduk (KTP) adalah identitas resmi Penduduk sebagai bukti diri yang diterbitkan oleh Instansi Pelaksana yang berlaku di seluruh wilayah Negara Kesatuan Republik Indonesia. Kartu ini wajib dimiliki Warga Negara Indonesia (WNI) dan Warga Negara Asing (WNA) yang memiliki Izin Tinggal Tetap (ITAP) yang sudah berumur 17 tahun atau sudah pernah kawin atau telah kawin. Dengan diberlakukannya wajib mempunyai KTP tentunya sebagai penduduk yang baik adalah segera mendaftarkan apabila telah memenuhi syarat. Pada Dinas Kependudukan tentunya tidak pernah sepi oleh pendaftar KTP dikarenakan penduduk Indonesia yang sangat padat, oleh karena itu dibuatlah program sistem antrian KTP dengan tujuan menertibkan para pendaftar. Sistem antrian KTP merupakan suatu kesatuan yang terdiri komponen atau elemen yang dihubungkan bersama untuk memudahkan aliran informasi yang berfungsi untuk mengelola antrian pada layanan pendaftaran KTP. Mekanisme dari sistem antrian KTP pada program ini terjadi dimulai dari pelanggan yang datang, kemudian petugas memasukkan data pelanggan yaitu dari no urut antrian, nama dan alamat, lalu pendaftar menunggu untuk dipanggil antrian, setelah itu pendaftar akan mendapatkan pelayanan.
2.3 Bahasa Pemrograman Java 2.3.1
Java Java adalah bahasa pemrograman serbaguna. Java dapat digunakan untuk membuat suatu program sebagaimana pengguna membuat dengan bahasa seperti Pascal atau C++. Yang lebih menarik, Java juga mendukung sumber daya Internet yang saat ini populer, yaitu World Wide Web atau yang sering disebut Web saja. Java juga mendukung aplikasi klien/server, baik dalam jaringan lokal (LAN) maupun jaringan berskala luas (WAN). Java dikembangkan oleh Sun Microsystems pada Agustus 1991, dengan nama semula Oak. Konon Oak adalah pohon semacam Jati yang terlihat dari jendela tempat pembuatnya, James Gosling, bekerja. (Abdul Kadir,
5
2005). Ada yang mengatakan Oak adalah singkatan dari “Object Application Kernel”, tetapi ada yang mengatakan hal itu muncul setelah nama Oak diberikan. Pada Januari 1995, karena nama Oak dianggap kurang komersial, maka diganti menjadi Java. Dalam sejumlah literatur disebutkan bahwa Java merupakan hasil perpaduan sifat dari sejumlah bahasa pemrograman, yaitu C, C++, ObjectC, SmallTalk, dan Common LISP. Selain itu Java juga dilengkapi dengan unsur keamanan. Yang tak kalah penting adalah bahwa Java menambahkan paradigma pemrograman yang sederhana. Jika pengguna telah mengenal C atau C++, yang mengandalkan pointer dan pengguna dapat merasakan kekompleksannya, Java justru meninggalkannya sehingga pengguna akan memperoleh kemudahan saat menggunakannya. 2.3.2
Java Non-Platform Program Java bersifat tidak bergantung pada platform; Artinya, Java dapat dijalankan pada sebarang komputer dan bahkan pada sebarang sistem operasi. Beberapa platform dan sistem operasi yang didukung oleh Java dapat dilihat pada tabel 2.1. Ketidakbergantungan terhadap platform sering dinyataka dengan istilah probabilitas. Yang menarik, tingkat probabilitas Java tidak hanya sebatas pada program sumber atau source code, melainkan juga pada tingkat kode biner yang disebut bytecode. Dengan demikian bila pengguna telah mengkompilasi program Java pada komputer bersistem operasi Windows, pengguna dapat menjalankan hasil kompilasi pada Macintosh secara langsung, tanpa perlu mengkompilasi ulang. Tabel 2.2 Java pada berbagai sistem operasi. Sistem Operasi
Vendor
AIX
IBM
DG/UX
Data General Corporation
Digital OpenVMS
Digital Equipment Corporation
Digital Unix
Digital Equipment Corporation
HP-UX
Hewlett Packard
6
IRIX
Silicon Graphics
Linux
Banyak perusahaan
MacOS
Apple
Netware
Novell
OS/2
IBM
OS/390 dan OS/400
IBM
Solaris
Sun Microsystems
Windows
Microsoft Corporation
Kode yang disebut bytecode dapat dijalankan pada berbagai sistem operasi karena kode ini berbeda dengan kode mesin. Kode mesin sangat bergantung pada platform, sedangkan bytecode dapat dimengerti oleh semua platform yang telah dilengkapi dengan interpreter Java. Mengingat bahwa hasil kompilasi Java dapat dijalankan pada sebarang sistem operasi ataupun prosesor, Java sering dikatakan bersifat netral terhadap arsitektur komputer. Gambar 2.5 memperlihatkan skema pengkompilasian kode sumber Java hingga terbentuk bytecode dan juga menunjukkan interpreter Java yang berperan untuk menerjemahkan bytecode.
7
Gambar 2.5 Skema pengkompilasian hingga pengeksekusian kode Java 2.3.3
Java adalah Bahasa Pemrograman Berorientasi Objek Sebagaimana halnya C++, salah satu bahasa yang mengilhami Java, Java juga merupakan bahasa pemrograman berorintasi objek (suatu model pengembangan perangkat lunak yang saat ini sangat populer). Sebagai bahasa pemrograman berorientasi objek, Java menggunakan kelas untuk membentuk suatu objek. Sejumlah kelas sudah tersedia dan pengguna dapat menggunakannya
dengan
mudah,
dan
bahkan
pengguna
dapat
mengembangkannya lebih jauh melalui konsep pewarisan. Pewarisan adalah salah satu sifat yang ada pada bahasa pemrograman berorientasi objek, yang memungkinkan sifat-sifat suatu objek diturunkan dengan mudah ke objek lain.
2.4 Import Static Import adalah fitur bahasa java untuk menyederhanakan akses variabel statis dan anggota static tanpa mengunakan nama kelas. Sebelum static import dikenalkan, digunakan steatment normal import pada setiap kelas java untuk menggunakan metode dan kelas menggunakan nama kelas. Biasanya di
8
pengkodingan java, jika ingin menggunakan variabel anggota static atau metode kelas dalam sourcecode, pertama harus mengimport kelas tersebut dengan mengunakan keyword normal import, setelah itu menggunakan variabel atau metode dengan nama kelas. Pada
program
sistem
java.util.Scanner;
antrian
KTP
dimana
import
ini
menggunakan
tersebut
import
digunakan
untuk
mengambil fungsi scanner pada java, jadi apabila tidak memasukkan sourcecode tersebut maka pada saat program dijalankan tidak dapat memasukkan pernyataan yang dibutuhkan pada saat eksekusi program. Setelah import tersebut ditulis pada program, kemudian mendeklarasikan Scanner read = new Scanner(System.in); untuk mengaplikasikan scanner tersebut pada pernyataan program menggunakan perintah read.next(); jadi setelah penulisan import tersebut maka pada saat eksekusi program pengguna program dapat memasukkan pernyataan yang dibutuhkan pada program sistem antrian KTP ini seperti memasukkan data no, data nama pendaftar, dan data alamat pelanggan.
9
BAB III METODE PENELITIAN 3.1 Algoritma Queue Operasi-operasi queue antara lain deklarasi, inisialisasi, kemudian cek kondisi kosong atau penuh, setelah itu membuat konstruktor penambahan, pengambilan dan pengaksesan. 3.1.1
Algoritma penambahan queue
1. Mulai 2. Deklarasi linked list 3. Masukkan data 4. Selesai 3.1.2
Algoritma pengaksesan queue
1. Mulai 2. Cetak Node Head 3. Selesai 3.1.3
Algoritma penghapusan queue
1. Mulai 2. Hapus Node Head 3. Selesai
Penjelasan algoritma : Pada algoritma antrian atau queue terdapat tiga proses operasi antara lain penambahan, pengaksesan dan penghapusan. Dimana penambahan queue terdiri dari mulai kemudian pendeklarasian linked list, setelah itu memasukkan data atau menambahkan data sesuai dengan kebutuhan setelah itu selesai. Sedangkan pada algoritma pengaksesan data adalah mulai, kemudian mencetak daftar antrian atau mencetak Node Head, setelah mencetak program akan berakhir. Untuk algoritma operasi yang terakhir adalah penghapusan data yang di awali dari mulai, kemudian menghapus data yang dimasukkan pertama, karena pada antrian ini menerapkan kaidah FIFO atau first in first out, setelah itu program selesai.
10
3.2 Flowchart Queue
Gambar 3.1 Flowchart Queue Penjelasan flowchart queue : Pada program queue secara umum bermula dengan memproses queue untuk mengecek apakah queue kosong, setelah itu masuk ke proses operasi instruksi pilihan antara lain dequeue, enqueue, dan end program. Apabila pilihan sama dengan 1 maka push value to queue apabila pilihan sama dengan 2 maka masuk ke kondisi apakah queue tersebut kosong jika benar maka pop value from queue apabila kondisi queue kosong salah maka kembali ke proses operasi intruksi pilihan, sedangkan apabila pilihan bukan sama dengan 2 maka program berhenti. 3.3 Sumber Data Sumber data utama dalam penelitian tugas akhir ini adalah data sekunder dimana data yang diperoleh berasal dari data-data rekayasa atau data yang diciptakan langsung atau spontan tanpa adanya pengamatan maupun wawancara dari narasumber yang berkaitan. Sehingga data yang digunakan pada sistem antrian KTP ini tidak tetap atau dapat berubah-ubah. Dan dari sistem antrian KTP ini data yang dibutuhkan antara lain no, nama, dan alamat. 11
BAB IV HASIL DAN PEMBAHASAN Pada penelitian ini mengimplementasikan queue dalam sistem antrian KTP yang nantinya akan meningkatkan kualitas pelayanan dan kepuasan masyarakat dalam pengantrian saat pembuatan KTP. 4.1 Data Data yang digunakan dalam penelitian ini, antara lain sebagai berikut :
Gambar 4.1 Data Pertama
Gambar 4.2 Data Kedua
Gambar 4.3 Data Ketiga
Gambar 4.4 Data Keempat
Gambar 4.5 Data Kelima
Gambar 4.6 Data Keenam
12
4.2 Queue untuk antrian KTP Tabel 4.1 Sourcecode class Queue Queue.java 1
public class Queue {
2
// atribut data
3
private final List listAntrian;
4
// constructor Queue
5
public Queue() {
6
listAntrian = new List("antrian");
7
}
8
// procedure menyisipkan data pada queue
9
public void enqueue(Object object, int
10
priority) {
11
if (priority == 0) {
12
listAntrian.sisipDiAkhir(object);
13
} else {
14
listAntrian.sisipDiAwal(object);
15
}
16
}
17
// function mengambil data pada queue
18
public Object dequeue() {
19
return listAntrian.hapusDrDepan();
20
}
21
// function pengecekan apakah queue kosong
22
public boolean kosong() {
23
return listAntrian.kosong();
24
}
25
// procedure mencetak data pada queue
26
public void cetak() {
27
listAntrian.cetak();
28
}
29 30
void cetak(String no, String nama, String
31
alamat, boolean kondisi) {
32
listAntrian.cetak();
33
//System.out.print(no+".
34
"+nama+","+alamat+"\n");
35 36
} }
13
Mendeklarasikan
class
dengan
nama
Queue.
Kemudian
mendeklarasikan variabel bernama listAntrian dengan tipe List. Membuat constructor untuk class Queue, yaitu untuk menyimpan data list ke variabel listAntrian. Selanjutnya procedure untuk menambahkan elemen pada antrian dengan parameter variabel object dan priority dengan nama enqueuer(). Function untuk mengambil elemen dalam antrian yaitu return variabel listAntrian dengan mengakses data dari method hapusDrDepan dengan nama dequeue(). Function untuk mengecek apakah antrian dalam keadaan kosong yaitu return variabel listAntrian dengan mengakses data dari method kosong(). Procedure untuk mencetak elemen data yang ada dalam antrian dengan nama cetak() yaitu dengan mengakses data dari method cetak() dalam listAntrian.
14
Flowchart
Gambar 4.7 Flowchart Sistem Antrian KTP 15
Penjelasan flowchart : Flowchart diatas merupakan flowchart studi kasus yang dibahas pada tugas akhir kali ini. Di mulai dari start yang kemudian deklarasi variabel sesuai dengan kebutuhan. Pendeklarasian variabel antara lain pilihan dengan tipe data integerserta variabel no, nama, dan alamat yang bertipe data string. Setelah mendeklarasikan variabel selanjutnya user menginputkan pilihan 1/2/3/0. Jika user menginputkan nilai 1, maka akan menuju ke kondisi pilihan==1,
jika
kondisi
true
maka
akan
menampilkan
output
“PENDAFTARAN” dan kemudian user akan menginputkan no,nama, dan alamat. Setelah user menginputkan data tersebut maka data akan di proses dan disimpan pada list.Antrian();. Setelah itu akan kembali pada menu awal menginputkan pilihan. Apabila user menginputkan nilai 2, maka akan menuju ke kondisi pilihan==2, jika kondisi true maka akan menampilkan output “LIHAT DAFTAR ANTRIAN” dan program akan memproses daftar antrian dan akan menampilkan “URUTAN ANTRIAN” beserta list antrian yang telah diinputkan datanya. Setelah itu akan kembali pada menu awal menginputkan pilihan. Apabila user menginputkan nilai 3, maka akan menuju ke kondisi pilihan==3, jika kondisi true maka akan menampilkan output “PANGGIL PENDAFTAR”. Setelah itu ada kondisi yaitu jika daftar antrian KTP kosong maka akan menampilkan output “ANTRIAN TELAH KOSONG”, kemudian akan kembali pada menu awal menginputkan pilihan dan jika daftar antrian tidak kosong maka data pertama yang masuk pada list.Antrian(); akan dihapus, kemudian menampilkan data tersebut telah keluar antrian. Setelah itu akan kembali pada menu awal menginputkan pilihan. Apabila user menginputkan nilai 0, maka akan menuju ke kondisi pilihan==4, jika kondisi true maka akan menampilkan output “KELUAR DARI PROGRAM”, kemudian program akan berhenti. Namun apabila user tidak menginputkan pilihan 1/2/3/0 maka program akan menampilkan output “PILIHAN MENU TIDAK TERSEDIA, SILAHKAN ULANG INPUT PLIHAN” dan setelah itu akan kembali pada menu awal menginputkan pilihan.
16
4.3 Analisa 4.3.1
Source Code Tabel 4.2 Sourcecode class Node Node.java
1
public class Node {
2
// atribut data
3
Object data;
4
Node next;
5
// constructor node
6
Node(Object object) {
7
this(object, null);
8
}
9
// constructor node
10
Node(Object object, Node node) {
11
data = object;
12
next = node;
13
}
14
// function getter data
15
Object getObject() {
16
return data;
17
}
18
// function getter pointer next
19
Node getNext() {
20
return next;
21 22
} }
Tabel 4.3 Sourcecode class List List.java 1
public class List {
2
// atribut data
3
public Node nodeAwal;
4
public Node nodeAkhir;
5
public String no;
6
public String nama;
7
public String alamat;
8 9
// constructor SLL
17
10
public List() {
11
this("list");
12
}
13
// constructor SLL
14
public List(String namaList) {
15
nama = namaList;
16
nodeAwal = nodeAkhir = null;
17
}
18 19 20
// procedure menyisipkan data di awal SLL
21
public void sisipDiAwal(Object dt) {
22
if (kosong()) {
23 24
nodeAwal = nodeAkhir = new Node(dt);
25
} else {
26 27
nodeAwal = new Node(dt, nodeAwal);
28
}
29
}
30
// procedure menyisipkan data di akhir
31 32
SLL public void sisipDiAkhir(Object dt) {
33
if (kosong()) {
34 35
nodeAwal = nodeAkhir = new Node(dt);
36
} else {
37 38
nodeAkhir = nodeAkhir.next = new Node(dt);
39
}
40
}
41
// function menghapus data dari depan
42
public Object hapusDrDepan() {
43
Object itemDihapus = null;
44
if (!kosong()) {
45
itemDihapus = nodeAwal.data;
46
if (nodeAwal == nodeAkhir) {
47 48
nodeAwal = nodeAkhir = null;
18
49
} else {
50
nodeAwal = nodeAwal.next;
51
}
52
}
53
return itemDihapus;
54
}
55
// function pengecekan apakah SLL
56
kosong
57
public boolean kosong() {
58
return nodeAwal == null;
59
}
60
// procedure mencetak data
61
public void cetak() {
62
if (kosong()) {
63
System.out.printf(" Antrian
64
kosong \n", no, nama, alamat);
65
return;
66
}
67
System.out.printf("Urutan Antrian
68
: ", no, nama, alamat);
69
Node kini = nodeAwal;
70
while (kini != null) {
71
System.out.printf("%s <-- ",
72
kini.data);
73
kini = kini.next;
74
}
75
System.out.println("\n");
76 77
} }
Tabel 4.4 Sourcecode class Pendaftar Pendaftar.java 1
public class Pendaftar {
2
// atribut data
3
private final String no;
4
private final String nama;
5
private final String alamat;
6
private final boolean kondisi;
19
7
// constructor Pendaftar
8
public Pendaftar(String no, String nama,
9
String alamat, boolean kondisi) {
10
this.no = no;
11
this.nama = nama;
12
this.alamat = alamat;
13
this.kondisi = kondisi;
14
}
15
/*public Pendaftar(String nama, boolean
16
kondisi) {
17
this.nama = nama;
18
this.kondisi = kondisi;
19
}*/
20
// function getter nama
21
public String getNama() {
22
return nama;
23
}
24
// function getter kondisi
25
public boolean getKondisi() {
26
return kondisi;
27
}
28
@Override
29
public String toString() {
30
return String.format("%s%s", "", no,
31
nama, alamat);
32 33
} }
Tabel 4.5 Sourcecode class Queue Queue.java 1
public class Queue {
2
// atribut data
3
private final List listAntrian;
4
// constructor Queue
5
public Queue() {
6
listAntrian = new List("antrian");
7
}
8
// procedure menyisipkan data pada queue
20
9
public void enqueue(Object object, int
10
priority) {
11
if (priority == 0) {
12
listAntrian.sisipDiAkhir(object);
13
} else {
14
listAntrian.sisipDiAwal(object);
15
}
16
}
17
// function mengambil data pada queue
18
public Object dequeue() {
19
return listAntrian.hapusDrDepan();
20
}
21
// function pengecekan apakah queue kosong
22
public boolean kosong() {
23
return listAntrian.kosong();
24
}
25
// procedure mencetak data pada queue
26
public void cetak() {
27
listAntrian.cetak();
28
}
29 30
void cetak(String no, String nama, String
31
alamat, boolean kondisi) {
32
listAntrian.cetak();
33
//System.out.print(no+".
34
"+nama+","+alamat+"\n");
35 36
} }
Tabel 4.6 Sourcecode class Queuedemo Queuedemo.java 1
import java.util.Scanner;
2
public class Queuedemo {
3
// atribut data
4
private static int pilihan, x;
5
private static String no;
6
private static String nama;
7
private static String alamat;
21
8
private static boolean kondisi;
9
private static final Scanner read = new
10
Scanner(System.in);
11 12
private static final Queue ktp = new Queue();
13 14
// implementasi queue
15
public static void main(String[] args) {
16
do {
17 18
System.out.println("-------------------------");
19 20
System.out.println(" E-KTP
");
21 22
System.out.println("-------------------------");
23 24
System.out.println("Pilihan Menu :");
25 26
System.out.println("-------------------------");
27 28
System.out.println("1. Pendaftaran");
29 30
System.out.println("2. Lihat Daftar Antrian");
31 32
PENDAFTARAN
System.out.println("3. Panggil Pendaftar");
33
System.out.println("0. Keluar");
34
System.out.print
35
("Masukkan
pilihan menu : ");
36
pilihan = read.nextInt();
37
switch (pilihan) {
38
case 1:
39
pendaftaran();
40
break;
41
case 2:
42
daftarAntrian();
43
break;
44
case 3:
45
keluarAntrian();
46
break;
22
47
default:
48
invalidMenu();
49
}
50 51
} while (pilihan != 0); }
52 53
// procedure memasukkan data pada queue
54
static void pendaftaran() {
55
System.out.println("Pendaftaran");
56
System.out.println("-------------------
57
-------");
58 59
System.out.print Pendaftar : ");
60
no = read.next();
61
System.out.print
62
("Masukkan No
("Masukkan Nama
Pendaftar : ");
63
nama = read.next();
64
System.out.print
65
("Masukkan Alamat
Pendaftar : ");
66
alamat = read.next();
67
Pendaftar kartu = new Pendaftar(no,
68
nama, alamat, kondisi);
69 70
//Pendaftar kartu = new Pendaftar(nama, kondisi);
71 72
ktp.enqueue(kartu, 0); }
73 74
// procedure melihat isi data pada queue
75
static void daftarAntrian() {
76 77
System.out.println("Lihat Daftar Antrian");
78 79
System.out.println("-------------------------");
80 81
ktp.cetak(no, nama, alamat, kondisi); }
82 83 84 85
// procedure mengambil/menghapus data pada queue static void keluarAntrian() {
23
86
System.out.println("Panggil
87
Pendaftar");
88
System.out.println("-------------------
89
-------");
90
if (ktp.kosong() == true) {
91
System.out.println("Antrian telah
92
kosong");
93
} else {
94
Object dtHapus =ktp.dequeue();
95
System.out.printf("%s telah keluar
96
dari antrian\n", dtHapus);
97
}
98
}
99 100
// procedure untuk input pilihan menu
101
keluar atau tidak ada
102
static void invalidMenu() {
103
if (pilihan == 0) {
104
System.out.println("\nKeluar dari
105
Program");
106
System.out.println("---------------
107
----");
108
} else {
109
System.out.println("PILIHAN MENU
110
TIDAK TERSEDIA");
111
System.out.println("Silahkan Ulang
112
Input Pilihan\n");
113
}
114 115
} }
116
4.3.2
Penjelasan Program Tabel 4.7 Penjelasan class Node Node.java
24
1
Mendeklarasikan class dengan nama Node
2-4
Mendeklarasikan variabel bernama data dengan tipe Object; dan varibel bernama next dengan tipe Node.
5-8
Constructor class Node, dengan parameter object
9-13
Constructor class Node, dengan parameter object dan node
14-17
Function untuk mendapatkan data; return variabel data
18-22
Function untuk mendapatkan pointer berikutnya; return variabel next
Tabel 4.8 Penjelasan class List List.java 1
Mendeklarasikan class dengan nama List
2-7
Mendeklarasikan variabel bernama : nodeAwal, nodeAkhir dengan tipe Node; dan variabel no, nama, alamat dengan tipe String.
9-17
Constructor untuk SLL dengan parameter namaList; inisialisasi variabel nodeAwal dan nodeAkhir dengan nilai null.
19-30
Procedure untuk menyisipkan data di awal list; parameter variabel dt dengan tipe Object.
31-41
Procedure unutuk menyisipkan data di akhir list; parameter variabel dt dengan tipe Object.
42-55
Function untuk menghapus isi list dari depan; return variabel itemDihapus.
56-60
Function untuk mengecek apakah list dalam keadaan kosong; return variabel nodeAwal dengan nilai null.
61-78
Procedure untuk mencetak data yg ada dalam list.
Tabel 4.9 Penjelasan class Pendaftar Pendaftar.java 1
Mendeklarasikan class dengan nama Pendaftar.
2-6
Mendeklarasikan variabel bernama no, nama, alamat dengan tipe String, dan variabel bernama kondisi dengan tipe boolean.
25
7-14
Constructor untuk class Pendaftar dengan parameter variable no, nama, alamat dan kondisi.
20-23
Function untuk mendapatkan nama pendaftar; return variabel nama.
24-27
Function untuk mendapatkan kondisi pendaftar; return variabel kondisi
28-33
Override method toString(); Method untuk format penulisan obyek yang dibuat dari class Pendaftar.
Tabel 4.10 Penjelasan class Queue Queue.java 1
Mendeklarasikan class dengan nama Queue.
2-3
Mendeklarasikan variabel bernama listAntrian dengan tipe
4-7
List. Constructor untuk class Queue; menyimpan data list ke
8-16
variabel listAntrian Procedure
17-20
untuk
menambahkan
elemen
pada
antrian;
parameter variabel object dan priority. Function untuk mengambil elemen dalam antrian; return
21-24
variabel listAntrian dengan mengakses data dari method hapusDrDepan. Function untuk mengecek apakah antrian dalam keadaan
30-36
kosong; return variabel listAntrian dengan mengakses data dari method kosong(). Procedure untuk mencetak elemen data yang ada dalam antrian.
Tabel 4.11 Penjelasan class Queuedemo Queuedemo.java 1
Mengimport data dari package Scanner
2
Mendeklarasikan class dengan nama QueueDemo.
4
Mendeklarasikan variabel integer dengan nama: pilihan, x
5
Mendeklarasikan variabel String dengan nama: no
26
6
Mendeklarasikan variabel String dengan nama: nama
7
Mendeklarasikan variabel String dengan nama: alamat
8
Mendeklarasikan variabel Boolean dengan nama: kondisi
9-10
Mendeklarasikan variabel Scanner dengan nama in
11-12
Membuat objek dari kelas Queue dengan nama ktp
15
Mendeklarasikan main method
16
Memulai perulangan
17-33
Mencetak header dan daftar menu program
34-35
Meminta inputan pilihan menu dari user
36
Menyimpan inputan ke variabel pilihan
38-40
Jika variabel pilihan bernilai 1, akan mengakses data dari method pendaftaran().
41-43
Jika variabel pilihan bernilai 2, akan mengakses data dari method daftarAntrian().
44-46
Jika variabel pilihan bernilai 3, akan mengakses data dari method keluarAntrian()
47-48
Jika variabel pilihan tidak valid, akan mengakses data dari method invalidMenu()
50
Kembali melakukan perulangan selama variabel pilihan tidak bernilai 0.
53-72
Procedure untuk menambahkan elemen pada antrian; meminta inputan no, nama dan alamat kustomer kepada user.
74-81
Procedure untuk menampilkan isi elemen dalam antrian; mengakse data dari method cetak().
83-98
Procedure untuk menghapus elemen dalam antrian; mengakses data dari method dequeue().
101-
Procedure untuk keluar dari program apabila user menginputkan
116
pilihan menu dengan nilai “0” dan memberitahukan user bahwa input pilihan menu yang dimasukkan tidak valid apabila inputan tidak = “0”.
27
BAB V PENUTUP 5.1 Kesimpulan Queue adalah salah satu struktur data yang memiliki sistem kerja pertama masuk dan pertama keluar atau FIFO (First In First Out) seperti halnya antrian pada dunia nyata. Queue pada penambahan datanya hanya dapat dilakukan pada salah satu ujung dan penghapusan data hanya dapat dilakukan pada ujung yang lain. Elemen baru dimasukkan pada bagian belakang dalam antrian dan penghapusan elemen hanya dilakukan pada bagian ujung depan elemen. Pada pembuatan sistem antrian pendaftaran KTP ini adalah membuat suatu sistem atau program antrian pendaftaran KTP dengan penerapan metode queue dan mengembangkan sistem antrian pendaftaran KTP yang masih manual agar lebih efisien dan efektif. Dalam menjalankan program tersebut petugas mengatur antrian dengan menambahkan data pendaftar untuk mengisi no, nama dan alamat pendaftar yang kemudian data akan disimpan dan setelah itu akan terjadi proses queue yang berfungsi untuk menampilkan data antrian pendaftar KTP. 5.2 Saran Pada penulisan tugas akhir ini, penulis hanya menjelaskan tentang sistem antrian model queue FIFO dengan analisis yang mengacu pada data sekunder. Penulis berharap saran untuk menerapkan program optimalisasi pada sistem antrian di lembaga-lembaga atau perusahaan lain yang menerapkan sistem antrian queue FIFO maupun Priority, menerapkan sistem antrian dengan asumsi model antrian dengan kapasitas sistem terbatas.
28
DAFTAR PUSTAKA Kadir, Abdul. 2005. Dasar Pemrograman JavaTM 2 Ed. II. Yogyakarta: Penerbit ANDI. Slamet I. S, Sumantri. 1988. Pengantar Struktur Data, Jakarta: Pusat Antar Universitas Ilmu Komputer Universitas Indonesia. Wibowo, Wahyu C. 1989. Pengantar Struktur Data. Jakarta: PT. Elex Media Komputindo. Wijaya, Robertus Hengky. 1999. Struktur Data. Surabaya: Sekolah Tinggi Manajemen Informatika & Teknik Komputer.
29
Lampiran I : Screenshoot Program Lengkap
Gambar Lampiran 1. Eksekusi Program dengan memilih menu no 1 dan memasukkan data pertama
Gambar Lampiran 2. Memasukkan data kedua
Gambar Lampiran 3. Memasukkan data ketiga
30
Gambar Lampiran 4. Memasukkan data keempat
Gambar Lampiran 5. Memasukkan data kelima
Gambar Lampiran 6. Lihat daftar antrian
31
Gambar Lampiran 7. Memanggil antrian pertama
Gambar Lampiran 8. Memanggil antrian kedua
Gambar Lampiran 9. Memasukkan data keenam
32
Gambar Lampiran 10. Memanggil antrian ketiga
Gambar Lampiran 11. Memanggil antrian keempat
Gambar Lampiran 12. Memanggil antrian kelima
33
Gambar Lampiran 13. Memanggil antrian keenam
Gambar Lampiran 14. Memanggil antrian
Gambar Lampiran 15. Keluar dari program
34