1.1 Latar Belakang
Di era globalisasi ini,
komputer memegang peranan penting disetiap bidangnya. Seperti proses transaksi,
proses pendataan serta proses lainnya yang akan menangani serta mempermudah proses itu untuk
berlangsung,begitu juga untuk menangani masalah antrian.
Antrian merupakan
kejadian yang dapat kita temui di berbagai tempat yang memberikan pelayanan
kepada masyarakat, salah satunya klinik.pada sebagian klinik, antrian yang
panjang tidak dapat terhindari, hal ini membutuhkan perhatian khusus pihak
klinik itu sendiri untuk mengatasi
penumpukan antrian. Sistem antrian yang tidak diatur dengan baik dapat menimbulkan efek negatif bagi suatu instansi pelayanan umum seperti klinik. Karena masyarakat yang menunggu giliran merasa tidak pasti kapan gilirannya akan dilayani.
penumpukan antrian. Sistem antrian yang tidak diatur dengan baik dapat menimbulkan efek negatif bagi suatu instansi pelayanan umum seperti klinik. Karena masyarakat yang menunggu giliran merasa tidak pasti kapan gilirannya akan dilayani.
Oleh karena itu kami
mencoba menuangkan ide yang mungkin dapat membantu mengatasi permasalahan
tersebut, sehingga dapat membantu pihak klinik untuk menginformasikan nomor
antrian kepada para costumers agar terhindarnya dari antrian yang menumpuk.
1.2
Tujuan
Adapun tujuan dari pembuatan sistem antrian ini
adalah untuk mengurangi penumpukan antrian yang terjadi pada suatu klinik.
1.3 Manfaat
Adapun manfaat dari pembuatan sistem antrian ini
adalah :
1. Membantu
pihak klinik untuk mengatur antrian agar tidak terjadinya penumpukan antrian
yang membuat kepadatan.
2. Membantu
pihak klinik untuk memberikan informasi nomor antrian kepada costumers serta
ke loket mana costumers harus mendaftar lebih lanjut.
3. Mempermudah
costumers untuk mengetahui nomor antriannya serta loket mana yang harus ia
datangi.
BAB II
PEMBAHASAN
2.1 Pembahasan Sistem
Pada sistem antrian
klinik ini kami menggunakan sistem antrian queue, dimana antrian (Queue)
merupakan representasi data yang hanya memperbolehkan pengaksesan data pada dua
ujung, yaitu penyisipan data atau pengisian data dilakukan di belakang(ekor)
dan pengeluaran data dilakukan di ujung(kepala). Dalam sistem antrian ini menggunakan
prinsip FIFO(First in Firs out). Sistem ini terdiri dari 2 peranan yaitu user
dan teler sebagai pengguna loket.
Pada sistem ini
terdapat beberapa tampilan, yaitu tampilan menu utama,dan menu Teller atau kita
sebut juga sebagai form loket. Pada tampilan menu utama terlebih dahulu user
harus mengklik tombol AMBIL ANTRIAN
untuk mengambil no antrian setiap costumers. Setelah nomor antrian dimasukan, maka selanjutnya di form loket akan
menampilkan daftar nomor antrian yang saat ini tersedia. Kemudian teller akan
melakukan tugasnya untuk memanggil satu persatu nomor antrian yang masih
tersedia. Pada sistem atrian pada salah satu klinik yang bernama”Sehatjaya” ini terdiri dari 2 loket, yaitu loket 1 dan
loket 2. Pada setiap loket pun tersedia fasilitas call (untuk memanggil nomor
antrian) dan fasilitas close (yang mana akan muncul tanda “X”). Pada sistem ini
juga, data yang telah dimasukan akan tersimpan didatabase.
Hal ini bertujuan untuk
memudahkan dalam proses pelaporan,
dimana di dalam laporan itu akan menampilkan data antrian klinik
tersebut per hari nya atau per tanggal yang akan kita buat laporan. Dimana
laporan tersebut berisi nomor antrian berapa , dilayani pada loket berapa,
kemudian tanggal ia mengantri serta waktu saat ia dilayani oleh sang teller
pada loket yang teller panggil nomor antriannya.
2.2 Prosedur Sistem
Adapun prosedur dari sistem antrian ini adalah :
1. Setelah
membuka aplikasi ini, pertama user harus mengetikan MULAI terlebih dlu dan
kemudian memasukan nomor antrian dengan
cara mengklik tombol AMBIL ANTRIAN.
2. Setelah
nomer antrian terdaftar atau sudah termasukan di dalam data nomor antrian yang
tersedia maka proses pemanggilan bisa
dilakukan.
3. Jika
nomor antrian sudah tersedia dan muncul dalam list tabel daftar antrian yang
tersedia, maka selanjutnya peranan sang teller untuk memanggil satu persatu antrian
yang tersedia dengan menekan tombol call.
4. Ketika
teller menekan tombol call, maka akan muncul di layar yaitu pemberitahuan untuk costumers dengan nomor antrian ke berapa di loket
mana dan otomatis data akan tersimpan ke
database.
5. Jika
salah satu teller pada loket akan menutup antrian pada loketnya , misalnya sang
teller pada loket itu akan ke toilet atau akan istirahat maka sang teller harus
menekan tombol close. Dimana ini berfungsi mengeluarkan simbol “X” yang
menandakan bahwa loket tersebut sedang clode.
6. Jika
teller akan meng-skip nomor antrian(misalnya nomor antrian tersebut pulang
tidak jadi mengantri ke klinik) maka tinggal menekan tombol skip dan antrian
tersebut akan terhapus dari daftar antrian.
7. Jika
antrian sudah habis, ketika teller menekan tombol call untuk memanggil antrian
maka akan muncul pemberitahuan bahwa nomor antrian kosong.
8. Setelah
nomor antrian habis, maka selanjutnya tinggal menunggu dimasukannya nomor
antrian lagi untuk kemudian bisa melakukan proses yang sama.
2.3 ScreenShoot Program
GAMBAR 1
KETERANGAN :
Pada gambar 1, itu merupakan
tampilan utama dari aplikasi sistem antrian. Dimana terlebih dahulu kita
harus mengetikan “MULAI” pada kotak yang kosong yang terdapat di pojok kiri
atas form.
|
KETERANGAN :
Untuk memasukan antrian maka
user harus menekan tombol AMBIL
ANTRIAN, maka akan muncul pemberitahuan nomor antrian kita yang kemudian akan
tampil pada tabel nomor antrian yang tersedia.
|
GAMBAR 3
KETERANGAN :
Ketika kita memasukan nomor antrian terus menerus maka pada tabel
yang ada di kanan akan menampilkan nomor antrian yang tersedia saat ini. Dan
akan dimunculkan total antrian yang tersedia di bawah tabel tersebut.
|
GAMBAR 4
KETERANGAN :
Pada form teller atau kita sebut juga form loket maka data nomor
antrian yang telah kita masukan tadi akan muncul juga di form ini. Selainitu
juga pada form ini akan tampil tanggal dan waktu saat ini yang berjalan
terus.
|
GAMBAR 5
KETERANGAN :
Jika teller akan melakukan pemanggilan nomor antrian dengan menekan
tombol call maka akan muncul nomor
antrian tersebut pada layar. Dimana di layar itu menampilkan nomor antrian
tersebut harus ke loket mana, dan data
tersebut otomatis akan tersimpan di database dan akan muncul pemberitahuan
bahwa penyimpanan berhasil dilakukan.
|
GAMBAR 6
KETERANGAN :
Jika antrian sudah habis dan teller menekan tombol call maka akan
menampilkan informasi pemberitahuan bahwa antrian.
|
GAMBAR 7
KETERANGAN :
Jika antrian akan di skip dari daftar nomor antrian maka tinggal
mengklik tombol skip dan akan muncul kotak informasi yang menyatakan bahwa
nomor antrian tersebut telah dihapus dari antrian
|
GAMBAR 8
KETERANGAN :
Jika kita ingin melihat data antrian yang telah kita lakukan tadi,
maka kita harus kembali ke menu utama dan memilih tombol LAPORAN, maka akan
muncul form seperti pada gambar 8. Dimana kita bisa melihat data yang telah
kita masukan sesuai tanggal yang akan kita tampilkan dan kemudian klik tombol
Cetak.
|
GAMBAR 9
KETERANGAN :
Setelah kita menekan tombol Cetak pada formlaporan , maka kita akan
ditampilkan hasil atau laporan data antrian yang tersimpan, sesuai tanggal
yang kita cari atau kita pilih sebelumnya pada form laporan (dalam gambar 8).
|
2.4 Source Code
1. Import yang diperlukan pada package
package uasproject;
import java.awt.CardLayout;
import com.mysql.jdbc.Driver;
import javax.swing.JFrame;
import
java.awt.event.MouseAdapter;
import
java.awt.event.MouseEvent;
import java.sql.Connection;
import
java.sql.DriverManager;
import java.sql.SQLException;
import
java.text.SimpleDateFormat;
import
javax.swing.JOptionPane;
import java.text.SimpleDateFormat;
import java.util.Date;
import kelola.kelola;
import koneksi.koneksi;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import javax.swing.Timer;
import
java.text.SimpleDateFormat;
import java.util.Locale;
import javax.swing.table.DefaultTableModel;
|
2. Source
code untuk menampilkan tanggal, diketikan dibawah public class
public class antrian extends
javax.swing.JFrame {
java.util.Date tglsekarang = new
java.util.Date();
private SimpleDateFormat smpdtfrmt = new SimpleDateFormat("ddMMMMMMMMM
yyyy", Locale.getDefault());
private String Tanggal =
smpdtfrmt.format(tglsekarang);
|
3. Source
code pada public antrian(nama jframenya)
public antrian() {
initComponents();
this.setLocationRelativeTo(null);
tgl.setText(Tanggal);
String Waktu;
setJam();
}
|
4. Source
code untuk menampilkan waktu, diketikan setelah
public antrian
public final void setJam(){
ActionListener taskPerformer = new
ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
String nol_jam = "", nol_menit="", nol_detik=
"";
java.util.Date dateTime = new java.util.Date();
int nilai_jam = dateTime.getHours();
int nilai_menit = dateTime.getMinutes();
int nilai_detik = dateTime.getSeconds();
if(nilai_jam<=9)nol_jam="0";
if(nilai_menit<=9)nol_menit="0";
if(nilai_detik<=9)nol_detik="0";
String jam = nol_jam+ Integer.toString(nilai_jam);
String menit = nol_menit+ Integer.toString(nilai_menit);
String detik = nol_detik+ Integer.toString(nilai_detik);
lblwaktu.setText(jam+":"+menit+":"+detik+"");
}
};
new Timer(1000,taskPerformer).start();
}
|
5. Source
code pendeklarasian, diketikan setelah public final void setJam
@SuppressWarnings("unchecked")
int noAntri = 0;
int head = -1;
int tail = -1;
int size = 20;
int kapasitas;
int x = 0;
int tempNomor_Antrian;
int tempLoket;
int Nomor_Antrian [] = new int[size];
int Loket;
|
6. Source
code button loket/ Teller
private void
jButton_loket9ActionPerformed(java.awt.event.ActionEvent evt) {
CardLayout card = (CardLayout) frame.getLayout();
card.show(frame,"loket");
home.setVisible(false);
loket.setVisible(true);
tabel2.setModel(new DefaultTableModel(null, new String[]{"Nomor
Antrian yang Tersedia"}));
for(int n=0; n<=tail; n++){
DefaultTableModel model = (DefaultTableModel) tabel2.getModel();
model.addRow(new Object[]{Nomor_Antrian[n]});
tabel2.setModel(model);
}
}
|
7. Source
code button LAPORAN
private void
lprnActionPerformed(java.awt.event.ActionEvent evt) {
frmlikereport rpt = new
frmlikereport();
rpt.setVisible(true);
this.setVisible(false);
}
|
8. Source
code button Ambil Antrian
private void
jButton_addActionPerformed(java.awt.event.ActionEvent evt) {
if (sp.getText().equals("")){
JOptionPane.showMessageDialog(null,"Harap Isi MULAI!",
"Information",
JOptionPane.INFORMATION_MESSAGE);
}else if (tail == -1){
head++;
noAntri++;
Nomor_Antrian[head] =
noAntri;
tail++;
JOptionPane.showMessageDialog(null, "Nomor Antrian Anda "
+Nomor_Antrian[head] ,
"Information",
JOptionPane.INFORMATION_MESSAGE);
}else if (tail == size -1){
JOptionPane.showMessageDialog(null, "Mohon Maaf Antrian
Penuh!" ,
"Information",
JOptionPane.INFORMATION_MESSAGE);
}else {
tail++;
noAntri++;
Nomor_Antrian[tail] =
noAntri;
JOptionPane.showMessageDialog(null, "Nomor Antrian Anda "
+Nomor_Antrian[tail] ,
"Information",
JOptionPane.INFORMATION_MESSAGE);
}
jTable_dataantrian.setModel(new
DefaultTableModel(null, new String[]{"Nomor Antrian yang
Tersedia"}));
DefaultTableModel model =
(DefaultTableModel) jTable_dataantrian.getModel();
for(int a=0; a<=tail; a++){
model.addRow(new
Object[]{Nomor_Antrian[a]});
jTable_dataantrian.setModel(model);
}
jTextField_noantri.setText("" +(tail+1));
}
|
9. Source
code button Home
private void
jButton_home1ActionPerformed(java.awt.event.ActionEvent evt) {
CardLayout card = (CardLayout) frame.getLayout();
card.show(frame,"user");
home.setVisible(true);
loket.setVisible(false);
}
|
10. Source
code button Skip
private void
jButton_skipActionPerformed(java.awt.event.ActionEvent evt) {
if(tail == -1){
JOptionPane.showMessageDialog(null,"Antrian Kosong!",
"Information",
JOptionPane.INFORMATION_MESSAGE);
}else{
tempNomor_Antrian =
Nomor_Antrian[head];
for(int i=0; i<tail; i++){
//Nama[i] = Nama[i+1];
//Jenis_Poli[i] =
Jenis_Poli[i+1];
Nomor_Antrian[i] =
Nomor_Antrian[i+1];
}
tail--;
JOptionPane.showMessageDialog(null,"Nomor Antrian " +tempNomor_Antrian+ " Telah Dihapus Dari Antrian",
"Information",JOptionPane.INFORMATION_MESSAGE);
}
tabel2.setModel(new DefaultTableModel(null, new String[]{"Nomor
Antrian yang Tersedia"}));
for(int c=0; c<=tail; c++){
DefaultTableModel model =
(DefaultTableModel) tabel2.getModel();
model.addRow(new Object[] {Nomor_Antrian[c]});
tabel2.setModel(model);
}
}
|
11. Source
code button Call pada setiap loket
private void
call1ActionPerformed(java.awt.event.ActionEvent evt) {
if(tail == -1){
JOptionPane.showMessageDialog(null,"Antrian Kosong!",
"Information",
JOptionPane.INFORMATION_MESSAGE);
no1.setText("");
}else{
no1.setText(""+Nomor_Antrian[0]);
txtnoantri.setText(""+Nomor_Antrian[0]);
txtdiloket.setText("1");
tempLoket = Loket;
Loket = Integer.parseInt(txtdiloket.getText());
String Waktu =
lblwaktu.getText();
Tanggal = tgl.getText();
for(int i=0; i<tail; i++){
Nomor_Antrian[i] =
Nomor_Antrian[i+1];
}
tail--;
kelola perintah = new kelola();
perintah.insert(
Nomor_Antrian,Loket,Tanggal,Waktu);
}
tabel2.setModel(new DefaultTableModel(null, new String[]{"Nomor
Antrian yang Tersedia"}));
for(int k=0; k<=tail; k++){
DefaultTableModel model =
(DefaultTableModel) tabel2.getModel();
model.addRow(new Object[] {Nomor_Antrian[k]});
tabel2.setModel(model);
}
}
private void
call2ActionPerformed(java.awt.event.ActionEvent evt) {
if(tail == -1){
JOptionPane.showMessageDialog(null,"Antrian Kosong!",
"Information",
JOptionPane.INFORMATION_MESSAGE);
no2.setText("");
}else{
no2.setText(""+Nomor_Antrian[0]);
txtnoantri.setText(""+Nomor_Antrian[0]);
txtdiloket.setText("2");
tempNomor_Antrian = Nomor_Antrian[head];
tempLoket = Loket;
Loket =
Integer.parseInt(txtdiloket.getText());
String Waktu =
lblwaktu.getText();
Tanggal = tgl.getText();
for(int i=0; i<tail; i++){
Nomor_Antrian[i] =
Nomor_Antrian[i+1];
}
tail--;
kelola perintah = new kelola();
perintah.insert(
Nomor_Antrian,Loket,Tanggal,Waktu);
}
tabel2.setModel(new DefaultTableModel(null, new String[]{"Nomor
Antrian yang Tersedia"}));
for(int k=0; k<=tail; k++){
DefaultTableModel model = (DefaultTableModel) tabel2.getModel();
model.addRow(new Object[] {Nomor_Antrian[k]});
tabel2.setModel(model);
}
}
|
12. Source
code button Close
private void
close1ActionPerformed(java.awt.event.ActionEvent evt) {
no1.setText("X");
}
private void close2ActionPerformed(java.awt.event.ActionEvent
evt) {
no2.setText("X");
}
|
13. Source code formreport dan button Cetak
package uasproject;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import
net.sf.jasperreports.engine.JasperFillManager;
import
net.sf.jasperreports.engine.JasperPrint;
import
net.sf.jasperreports.engine.JasperReport;
import
net.sf.jasperreports.engine.util.JRLoader;
import
net.sf.jasperreports.swing.JRViewer;
import
net.sf.jasperreports.view.JasperViewer;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
try{
String NamaFile =
"./src/uasproject/rptantriann.jasper";
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection koneksi =
DriverManager.getConnection("jdbc:mysql://localhost/project_antrian","root","");
HashMap param = new HashMap();
param.put("TGL",txttgl.getText());
JasperPrint JPrint = JasperFillManager.fillReport(NamaFile, param,
koneksi);
JasperViewer.viewReport(JPrint);
}catch (Exception ex){
System.out.println(ex);
}
}
|
BAB III
PENUTUPAN
3.1 Kesimpulan
Sistem Antrian Klinik ini sangat bermanfaat untuk
menghindari penumpukan antrian yang dapat terjadi jika banyak sekali costumers
yang akan berobat pada klinik tersebut. Dengan menggunakan sistem antrian ini,
maka proses pendaftaran dan proses pelayanan lainnya yang akan terjadi di
klinik akan mudah terselesaikan. Dan dengan sistem ini juga si costumers tidak
perlu lagi merasa tidak pasti kapan gilirannya akan dilayani karena mereka
dapat melihat informasi nomor antrian yang sedang dilayani dan ia tinggal
menunggu antriannya dipanggil. Selain bermanfaat untung para costumers, sistem
ini juga sangat bermanfaat untuk teller dalam memproses nomor antrian yang
tersedia untuk dia berikan pelayanan di
loketnya masing-masing dengan cara mengklik tombol call untuk memanggil nomor
antrian.
DAFTAR PUSTAKA
https://marisharingilmu.wordpress.com/tag/tutorial-ireport/
http://www.kumanmerah.com/2017/04/contoh-antrian-algoritma-di-pemrograman.html?m=1
http://berbagi-ilmu-good.blogspot.co.id/2013/11/tugas-portofolio-3-program-antrian.html?m=1
https://stackoverflow.com/questions/9868482/what-is-ljava-lang-string
https://stackoverflow.com/questions/20088808/data-truncation-incorrect-datetime-value
http://www.diskusiweb.com/discussion/43600/ask-simpan-text-file-txt-ke-mysql
http://www.kumanmerah.com/2017/04/contoh-antrian-algoritma-di-pemrograman.html?m=1
http://berbagi-ilmu-good.blogspot.co.id/2013/11/tugas-portofolio-3-program-antrian.html?m=1
https://stackoverflow.com/questions/9868482/what-is-ljava-lang-string
https://stackoverflow.com/questions/20088808/data-truncation-incorrect-datetime-value
http://www.diskusiweb.com/discussion/43600/ask-simpan-text-file-txt-ke-mysql
Dikerjakan oleh :
Kelompok
3 PBO
·
NOVIA DEVIYANTI [A1. 1600012]
·
M.RIZKI KAMALUDIN [A1. 1600009]
Manajemen Informatika (MI) - III
0 Komentar untuk "SISTEM APLIKASI ANTRIAN KLINIK"
Silakan tinggalkan komentar anda. DILARANG KERAS menyimpan link blog/web pada komentar dengan tujuan backlink, Spam.