Sabtu, 24 November 2012

C++ : Gaji Pegawai dengan Stack

Gaji Pegawai dengan Stack
Salam Blogger, pada kesempatan kali ini saya ingin berbagi tentang pengalaman membuat program penghitung gaji dengan bahasa c++.
Analisisnya adalah kita memasukkan nama, golongan, jumlah hadir selama sebulan, jumlah jam lembur selama sebulan, kemudian gaji di dapat dari jumlah hadir di kali Rp.40.000,- dan gaji lembur di dapat dari jumlah jam lembur di kali Rp.20.000,-
Berikut Script Program Gaji Pegawai 

#include
#include
#include
#include

#define max 100

Penjelasan :

Di atas adalah file header stdio ( untuk standard I/O ), conio ( untuk memamngil fungsi getch() dan clrscr() ), string.h ( untuk memanggil fungsi string, char ), iostream ( untuk memanggil fungsi cout dan cin ).
define max 100 digunakan untuk membatasi jumlah data yang dimasukkan sebanyak seratus.

typedef char string[20];

Penjelasan :
definisi untuk char string hanya mampu menampung sebanyak 20 karakter.

typedef struct{
   char nama[50];
   int hadir;
   char gol[10];
   int lembur;
   int gaji;
   int gaji_lembur;
   int totalgaji;
}pegawai;

Penjelasan : 
Structur pegawai yang terdiri dari 
1.char nama[50]
2.int hadir;\
3.char gol[10]
4.int lembur
5.int gaji
6.int gaji_lembur
7.int totalgaji
struktur pegawai di gunakan untuk memasukkan data pegawai ke dalam stack

typedef struct{
   int top;
   pegawai content[max-1];
   int nelemen;
}stack_pegawai;

Penjelasan :
structur stack_pegawai yang terdiri dari 
1.int top
2.pegawai content[max-1]
3.int nelemen
di gunakan untuk menampung data pegawai dengan nelemen untuk menambahkan data, top untuk menambah tumpukan, pegawai content[max-1] untuk menampung data dari struktur pegawai.

void init(stack_pegawai *s)
{
   (*s).top=-1;
   (*s).nelemen=0;
}

Penjelasan :
Prosedur init digunakan untuk memberikan nilai awal stack, *s digunakan untuk akses / merubah data dalam stack.

void input(pegawai *x, string nama, string gol, int hadir, int lembur)
{
   strcpy((*x).nama,nama);
   strcpy((*x).gol,gol);
   (*x).hadir=hadir;
   (*x).lembur=lembur;
   (*x).gaji=hadir*40000;
   (*x).gaji_lembur=lembur*20000;
   (*x).totalgaji=(*x).gaji+(*x).gaji_lembur;
}

Penjelasan :
Prosedur input di gunakan untuk memasukkan data pegawai.

void push(stack_pegawai *s, pegawai x)
{
if((*s).top
   {
    (*s).top++;
      strcpy((*s).content[(*s).top].nama, x.nama);
      (*s).content[(*s).top].hadir=x.hadir;
      strcpy((*s).content[(*s).top].gol, x.gol);
      (*s).content[(*s).top].lembur=x.lembur;
      (*s).content[(*s).top].gaji=x.gaji;
      (*s).content[(*s).top].gaji_lembur=x.gaji_lembur;
      (*s).content[(*s).top].totalgaji=x.totalgaji;
      (*s).nelemen++;
   }
else
   {
cout<<"\nData Sudah Penuh";
   }
}

Penjelasan :
Prosedur Push memasukkan data pegawai ke dalam stack.

void show(stack_pegawai s)
{
if(s.top>-1)
   {
    while(s.top!=-1)
      {
       cout<<"\n\nNama Pegawai : "<<(s).content[(s).top].nama;
         cout<<"\nGolongan : "<<(s).content[(s).top].gol;
         cout<<"\nGaji Pegawai : "<<(s).content[(s).top].gaji;
         cout<<"\nGaji Lembur : "<<(s).content[(s).top].gaji_lembur;
         cout<<"\n++++++++++++++++++++++++++++++++++++++++++";
         cout<<"\nTotal Gaji : "<<(s).content[(s).top].totalgaji;
         cout<<"\n\n------------------------------------------";
         s.top--;
      }
   }
   else
    cout<<"\nData Masih Kosong";
}

Penjelasan :
Prosedur show untuk menampilakan semua data pada stack.

void pop(stack_pegawai *s)
{
pegawai x;
   if((*s).top>-1)
   {
    x=(*s).content[(*s).top];
      (*s).nelemen--;
      (*s).top--;
      cout<<"\nData Pegawai "<
   }

   else
   {
    cout<<"\nBelum ada Data yang Masuk";
   }
}

Penjelasan :
Prosedur Pop untuk mengambil satu data dalam stck

void main()
{
    pegawai x;
   stack_pegawai s;
   string nama, gol;
   int hadir, lembur;
   char pilih;

   init(&s);

   do
   {
      clrscr();
      puts("Program Gaji Pegawai");
      puts("1.Tambah Data Pegawai");
      puts("2.Lihat Data Pegawai");
      puts("3.Hapus Data Pegawai");
      puts("4.Kosongkan Data Pegawai");
      puts("ESC untuk Keluar");
      cout<<"Masukkan Pilihan [1-4] : ";
      pilih=getch();

      switch(pilih)
      {
      case '1':
            cout<<"\n-------------------------------------------";
            cout<<"\nMasukkan Nama : "; gets(nama);
            cout<<"\nMasukkan Gol : "; gets(gol);
            cout<<"\nMasukkan Jumlah Kehadiran  : "; cin>>hadir;
            cout<<"\nMasukkan Jumlah Jam Lembur : "; cin>>lembur;
            input(&x, nama, gol, hadir, lembur);
            push(&s, x);
            getch();
            break;
         case '2':
            cout<<"\n-------------------------------------------";
            show(s);
            getch();
            break;
         case '3':
            cout<<"\n-------------------------------------------";
            pop(&s);
            getch();
            break;
         case '4':
    cout<<"\n-------------------------------------------";
            init(&s);
            cout<<"\nData Sudah Kosong";
            getch();
            break;
      }

   }while(pilih!=27);
   getch();
}

Terimakasih telah mampir di blog yang sederhana ini, semoga script diatas bisa membantu, jika ada yang kurang jelas bisa bertanya langsung pada author di amdan_i@yahoo.com ( Email bisa / FB juga bisa )

Salam Blogger.

0 comments:

Posting Komentar