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