Program Antrian Bank C++

Pengertian Queue


Jika diartikan secara harafiah, queue berarti antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehiduypan sehari-hari, misalnya saat Anda mengantri di loket untuk membeli tiket.
Antrian dapat di implementasikan menggunakan Array, disini dijelaskan ada 10 antrian yang mana 10 antrian tersebut dapat diibaratkan sebagai array berindek 10. Dalam antrian ini menggunakan pola FIFO, yaitu first in first out yang artinya pembeli tiket yang pertama dilayani terlebih dahulu dan begitu seterusnya sampai habis.
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.

Program antrian Bank

#include <stdio>
#include <conio>
#define MAX 6
typedef struct{
int data[MAX];
int head;
int tail;
} Queue;
Queue antrian;
void Create(){
antrian.head=antrian.tail=-1;
}

int IsEmpty(){
if(antrian.tail==-1)
return 1;
else
return 0;
}

int IsFull(){
if (antrian.tail==MAX-1) return 1;
else return 0;
}

//fungsi memasukkan data

void Enqueue(int data){
if(IsEmpty()==1){
antrian.head=antrian.tail=0;
antrian.data[antrian.tail]=data;

printf("\t Silahkan Masuk !! \n",antrian.data[antrian.tail]);
void Tampil();
{
if(IsEmpty()==0){
for(int i=antrian.head;i<=antrian.tail;i++){
printf("%d ",antrian.data[i]);
}
}else printf("data kosong!");
};
}else
if(IsFull()==0){
antrian.tail++;
antrian.data[antrian.tail]=data;
printf("\t Silahkan Masuk !! \n",antrian.data[antrian.tail]);
}

}

int Dequeue(){
int i;
int e = antrian.data[antrian.head];
for(i=antrian.head;i<=antrian.tail-1;i++){
antrian.data[i]= antrian.data[i+1];
}
antrian.tail--;
return e;
}


void clear(){
antrian.head=antrian.tail=-1;
printf("Data Clear");
}
void Tampil()
{ int jum;
jum=0;

if(IsEmpty()==0){
for(int i=antrian.head;i<=antrian.tail;i++){
jum++;

printf("\n| %d |",antrian.data[i]);}
printf("\njumlah yang mengantri saat ini %i orang",jum);
}else printf("Data Kosong!\n");}

//sebagai nasabah
void nasabah()
{
int data;
char lagi;
do{
clrscr();
printf("\t+=================================+\n");
printf("\t| menu nasabah |\n");
printf("\t+=================================|\n");
printf("\t| tekan (a) untuk masukkan data |\n");
printf("\t| tekan (b) melihat data antrian |\n");
printf("\t| tekan (x) keluar |\n");
printf("\t+=================================|\n");
printf("pilihan : "); scanf("%c",&lagi);
if((lagi=='x') || (lagi=='X'))
{ printf("terima kasih\n");

break;
}

switch(lagi)
{
case 'a':
printf("masukkan data: "); scanf("%d",&data);
Enqueue(data);
break;
case 'b': Tampil();
break;

}getch();
} while(lagi !='x');
getche();
}

//memasukkan password
void password()
{
char nama[20], id[10], password[4];
int i;
{
clrscr();

atas:
clrscr();
printf("\t\t+===============================================+\n");
printf("\t\t| S E L A M A T D A T A N G |\n");
printf("\t\t| jika anda admin dari teller |\n");
printf("\t\t|Silahkan masukkan User Name & 3 digit Password |\n");
printf("\t\t+===============================================+\n");
printf("\t\t UserName : ") ; cin>>nama;
printf("\t\t No. Identitas : "); cin>>id;
printf("\t\t Password : ") ;
for(i=0; i<=2; i++)
{password[i]=getche(); printf("\bX");
}
printf("\n\t\t+=============================================+\n");
if (strcmp(password,"aaa")==0)
{ printf("\n\n\t\t Anda Masuk Sebagai TEllER\n");
printf("\t\t User : %s \n",nama);
printf("\t\t No. Identitas : %s\n",id);
printf("\n\n\t\tTekan Sembarang tombol untuk ke menu teller..!");
goto bawah;
}
else
{
printf("\t\t\tpassword salah bro...hahaaa\n");
printf("\t\tketik sembarang tombol untuk kembali ke menu: ");
goto atas;

}
bawah:
getch();
}
}

//void teller
void teller()
{char menu;
password();
do{
clrscr();
printf("\t\t+=================================+\n");
printf("\t\t| menu pilihan untuk TELLER |\n");
printf("\t\t+=================================+\n");
printf("\t\t| tekan (a) untuk menghapus data |\n");
printf("\t\t| tekan (b) melihat data antrian |\n");
printf("\t\t| tekan (c) untuk mereset |\n");
printf("\t\t| tekan (x) untuk keluar |\n");
printf("\t\t+=================================+\n");
printf("pilihan : "); scanf("%c",&menu);
if((menu=='x') || (menu=='X'))
{ printf("terima kasih\n");

break;
}

switch(menu)
{
case 'a': printf("Elemen yang keluar : %d",Dequeue());
break;
case 'b': Tampil();
break;
case 'c': clear();
break;
}getch();
} while(menu !='x');

}

void main(){
char pil;


Create();
do{
clrscr();
fflush(stdin);
printf("\t\t+=====================================+\n");
printf("\t\t| Bank Republik Indonesia|\n");
printf("\t\t| jalan Menukan |\n");
printf("\t\t| Yoggyakarta |\n");
printf("\t\t+=====================================+\n");
printf("\t\t| tekan (n) untuk Nasabah |\n");
printf("\t\t| tekan (t) untuk Teller |\n");
printf("\t\t| tekan (k) keluar dari program |\n");
printf("\t\t+=====================================+\n");
printf("pilihan : "); scanf("%c",&pil);
if((pil=='k') || (pil=='k'))
{ printf("terima kasih");
break;
}

switch(pil)
{
case 'n': nasabah();
break;
case 't': teller();
break;

}

}while(pil!='k');
}

Posting Komentar

4 Komentar