Search

Tugas Portofolio 3 Program Antrian Rumah Sakit

Deskripsi Program 


Queue (Antrian) Aplikasi ini dibuat memanfaatkan konsep double linked list. Queue merupakan suatu bentuk khusus dari List Linier dengan operasi pemasukan data hanya diperbolehkan pada salah satu sisi, yang disebut sisi Belakang/ ekor ( Tail ) dan operasi penghapusan hanya diperbolehkan pada sisi lainnya yang disebut sisi Depan/ kepala ( Head ) dari Linked List.

Antrian dapat di implementasikan menggunakan Array, disini dijelaskan ada 100 antrian yang mana 100 antrian tersebut dapat diibaratkan sebagai array berindek 100 (data[100]). Dalam antrian ini menggunakan pola FIFO, yaitu first in first out yang artinya  yang pertama dilayani terlebih dahulu mengantri dan begitu seterusnya sampai habis. Program ini dapat memilih menu ambil no antrian dan isi data antrian, kemudian menu 2 memamnggil antrian sesuai urutan data antrian, menu ke 3 melihat data antrian, dan menu 4 exit.

Macam-macam Operasi Queue dengan Linear Array:
  • IsEmpty
    Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. hal ini dilakukan dengan mengecek apakah tail bernilai -1 atau tidak. Nilai -1 menandakan bahwa queue masih kosong.
  • IsFull
    Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data dengan cara mengecek apakah nilai tail sudah sama dengan jumlah maksimal queue. Jika nilai keduanya sama, berarti queue sudah penuh.
  • EnQueue
    Fungsi EnQueue berguna untuk memasukkan sebuah elemen dalam queue.
  • DeQueue
    Fungsi DeQueue berguna untuk mengambil sebuah elemen dari queue. Operasi ini sering disebut juga serve. Hal ini dilakukan dengan cara memindahkan sejauh satu langkah ke posisi di depannya sehingga otomatis elemen yang paling depan akan tertimpa dengan elemen yang terletak di belakangnya.
  • Clear
    Fungsi Clear berguna untuk menghapus semua lemen dalam queue dengan jalan mengeluarkan semua elemen tersebut satu per satu hingga queue kosong dengan memanfaatkan fungsi DEQueue.
Source Code Program

#include <stdio.h>
#include <conio.h>

typedef struct
{
            int data[100];
            char data1[100][20];
            char data2[100][30];
            char data3[100][15];
            int depan;
            int belakang;
}Queue;
Queue antrian;
Queue no;
Queue nama;
Queue poli;

int pilihan, data, i, j;
char data1[20], data2[30], data3[15];

int isEmpty()
{
            if (antrian.belakang==-1)
                        return 1;
            else
                        return 0;
}

int isFull()
{
            if(antrian.belakang==100)
                        return 1;
            else
                        return 0;
}

void Enqueue(int data, char data1[20], char data2[30], char data3[15])
{
            if(isEmpty()==1)
            {
                        antrian.depan=antrian.belakang=0;
                        nama.depan=nama.belakang=0;
                        poli.depan=poli.belakang=0;
                        no.depan=no.belakang=0;
                        antrian.data[antrian.belakang]=data;
                        for(i=0;i<20;i++)
                        {nama.data1[nama.belakang][i]=data1[i];}
                        for(i=0;i<30;i++)
                        {poli.data2[poli.belakang][i]=data2[i];}
                        for(i=0;i<15;i++)
                        {no.data3[no.belakang][i]=data3[i];}
                        printf("data anda telah masuk. silahkan menunggu panggilan");
            }
            else if(isFull()==0)
            {
                        antrian.belakang++;
                        nama.belakang++;
                        poli.belakang++;
                        no.belakang++;
                        antrian.data[antrian.belakang]=data;
                        for(i=0;i<20;i++)
                        {nama.data1[nama.belakang][i]=data1[i];}
                        for(i=0;i<30;i++)
                        {poli.data2[poli.belakang][i]=data2[i];}
                        for(i=0;i<15;i++)
                        {no.data3[no.belakang][i]=data3[i];}
                        printf("data anda telah masuk. silahkan menunggu panggilan");
            }
}

int Dequeue()
{
            if(isEmpty()==0)
            {
            int i,e ;
            char a[20], b[30];
            e=antrian.data[antrian.depan];
            for(i=0;i<20;i++)
            {
                        a[i]=nama.data1[nama.depan][i];
            }
            for(i=0;i<30;i++)
            {
                        b[i]=poli.data2[poli.depan][i];
            }
            for(i=antrian.depan;i<antrian.belakang;i++)
            {
                        antrian.data[i]=antrian.data[i+1];
                        for(j=0;j<20;j++)
                        {nama.data1[i][j]=nama.data1[i+1][j];}
                        for(j=0;j<30;j++)
                        {poli.data2[i][j]=poli.data2[i+1][j];}
                        for(j=0;j<15;j++)
                        {no.data3[i][j]=no.data3[i+1][j];}
            }
            antrian.belakang--;
            nama.belakang--;
            poli.belakang--;
            no.belakang--;
            printf("antrian no %i dengan nama %s silahkan memasuki poli %s !", e, a, b);
            return e;
            return a[20];
            return b[30];
            }
            else
            {
                        printf("antrian kosong");
            }
}

void buat()
{
            antrian.depan=antrian.belakang=-1;
            nama.depan=nama.belakang=-1;
            poli.depan=poli.belakang=-1;
            no.depan=no.belakang=-1;
}

void main()
{
            int n;
            buat();
            n=1;
            do
            {
                        system("cls");
                        puts("aplikasi antrian rumah sakit");
                        puts("============================\n");
                        puts(" menu :");
                        puts("1. masukkan antrian");
                        puts("2. panggil antrian");
                        puts("3. lihat antrian");
                        puts("4. exit");
                        printf("silahkan masukkan pilihan (1-4) : "); scanf("%i", &pilihan);
                        switch(pilihan)
                        {
                                    case 1 :
                                                printf("no antrian anda adalah %i\n", n);
                                                data=n;
                                                printf("masukkan no. rekam medis anda :"); scanf("%s",&data3);
                                                printf("masukkan nama lengkap anda(gunakan tanda (_) untuk spasi) :"); scanf("%s",&data1);
                                                printf("masukkan poli berobat anda (gunakan tanda (_) untuk spasi):"); scanf("%s",&data2);
                                                Enqueue(data, data1, data2, data3);
                                                n++;
                                    break;

                                    case 2 :
                                                Dequeue();
                                    break;

                                    case 3 :
                                                if(isEmpty()==1)
                                                {
                                                            printf("antrian kosong !");
                                                            break;
                                                }
                                                puts("no antrian           no.reka medis              nama lengkap              poli berobat");
                                                for(i=antrian.depan;i<=antrian.belakang;i++)
                                                {
                                                            printf("%i                    %s                   %s                   %s\n", antrian.data[i], no.data3[i], nama.data1[i], poli.data2[i]);
                                                }

                                    break;
                                    case 4 :
                                                printf("terimakasih atas partisipasinya !!!");
                                    break;
                                    default :
                                                puts("salah tuh pilihannya !!!");
                                    break;
                        }
                        getch();
            }while(pilihan!=4);

}


  Running Program




Flowchart Program



Video Tutorial Pembuatan Program







4 komentar:

© 2012. All Rights Reserved. Design by Biyan Pasau