SISTEM APLIKASI ANTRIAN KLINIK

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.
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.


                                                                          GAMBAR 2

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







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.

 
Copyright © 2014 Tutorial Kampus - All Rights Reserved
Template By. Catatan Info