Sebuah perusahaan PT. AMHARLE akan membuat
aplikasi penggajian karyawan dengan ketentuan sebagai berikut:
Gaji
Pokok(Gapok)
Gaji pokok dihitung
berdasarkan lama kerja (tahun) sebagai berikut:
<= 1Tahun =
850000
2 s/d 3Tahun =
1000000
4 s/d 5Tahun = 1250000
> 5tahun = 2500000
Tunjangan
Transport
tunjangan transport
dihitung per hari sebesar 25000
Tunjangan
Keluarga
Tunjangan keluarga
diberikan untuk yang menikah sebesar 150000 jika belum miliki anak.
Jika sudah memiliki
anak sebesar 150000 ditambah 75000 per anak (maksimal jumlah anak 3)
Bonus
Ketertiban
Bonus ketertiban
dihitung dari hari masuk tepat waktu sebesar 20000
Bonus
Level
bonus level
ditentukan sebagai berikut:
kode Nama besar bonus
1 Junior 125000
2 Senior 200000
3 Expert 350000
Total
gaji adalah hasil penjumlahan dari Gapok, Tunjangan Transport, tunjangan
Keluarga, bonus ketertiban dan bonus level.
Program:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
/*
jumkar untuk menyimpan jumlah karyawan
atrinputpeg adalah jumlah atribut input data karyawan selain nama
(Lama kerja, Jumlah masuk kerja, Jumlah masuk tepat waktu,
level karyawan (1/2/3), Status menikah (Y/T) dan Jumlah Anak)
atroutputpeg adalah jumlah atribut output data karyawan selain nama
(gaji pokok, tunjangan transport, tunjangan keluarga, bonus ketertiban,
bonus level dan total gaji)
*/
#define jumkar 100
#define atrinputpeg 6
#define atroutputpeg 6
int tgl, bln, thn;
int lagi, i;
char y, statusmenikah;
string namakaryawan[jumkar];
int indatapeg[jumkar][atrinputpeg];
long outdatapeg[jumkar][atroutputpeg];
/*
function gapok untuk menghitung gaji pokok dimana
ketentuan besarnya gaji pokok berdasarkan lama kerja (tahun)
*/
long gapok (int lamakerja)
{
long gajipokok;
if (lamakerja<=1)
{
gajipokok = 850000;
}
else if(lamakerja<=3)
{
gajipokok = 1000000;
}
else if(lamakerja<=5)
{
gajipokok = 1250000;
}
else
{
gajipokok = 2500000;
}
return (gajipokok);
}
/*
function ttrans untuk menghitung tunjangan transport dimana perhari 25000
*/
long ttrans (int harikerja)
{
return (harikerja * 25000);
}
/*
function tkel untuk menghitung tunjangan keluarga diberikan untuk
yang menikah sebesar 150000 jika belum miliki anak.
Jika sudah memiliki anak sebesar 150000 ditambah 75000 per anak
(maksimal jumlah anak 3)
*/
long tkel (int status, int anak)
{
long tunjangankel;
if (status == 1)
{
if (anak <= 3)
{
tunjangankel = 150000 + anak*75000;
}
else
{
tunjangankel = 150000 + 3*75000;
}
}
else
{
tunjangankel = 0;
}
return (tunjangankel);
}
/*
function bket untuk menghitung bonus ketertiban,
yang dihitung dari hari masuk tepat waktu sebesar 20000
*/
long bket (int haritepat)
{
return (haritepat * 20000);
}
// function blevel untuk menghitung bonus level
long blevel (int kodelevel)
{
switch (kodelevel)
{
case 1: return (125000); break;
case 2: return (200000); break;
default: return (350000); break;
}
}
/*
function utama tanpa nilai balik untuk mendefinisikan menu utama
dimana terdapat pilihan 1 s.d 4
*/
void utama ()
{
int pilihan;
clrscr();
cout <<"Aplikasi Penggajian Karyawan PT. AMHARLE \n";
cout <<"Menu Utama: \n";
cout <<"1. Atur Tanggal Penggajian \n";
cout <<"2. Entri Data \n";
cout <<"3. List Data \n";
cout <<"4. Exit \n";
cout <<"Pilihan Anda (1-4) ? ";
cin>>pilihan;
switch (pilihan)
{
//pilihan pertama untuk mengatur tanggal
case 1:
{
clrscr();
cout<< " Masukkan Tanggal, Bulan dan Tahun Penggajian \n";
cout<< " Tanggal
: "; cin>>tgl;
cout<< " Bulan
: "; cin>>bln;
cout<< " Tahun
: "; cin>>thn;
cout<< "\n Kembali ke menu utama (tekan sembarang tombol)\n";
getch();
utama ();
break;
}
//pilihan kedua untuk input data karyawan
case 2:
{
clrscr();
lagi = 0;
i = 1;
while (lagi<1)
{
cout<<"\nNama : "; cin>>namakaryawan[i];
cout<<"\Lama kerja(tahun): "; cin>>indatapeg[i][1];
cout<<"\Jumlah masuk kerja: "; cin>>indatapeg[i][2];
cout<<"\Jumlah masuk tepat waktu: "; cin>>indatapeg[i][3];
cout<<"\Level Karyawan (1/2/3): "; cin>>indatapeg[i][4];
cout<<"\Status Menikah (Y/T): "; cin>>statusmenikah;
if ((statusmenikah == 'Y') || (statusmenikah == 'y'))
{
indatapeg[i][5] = 1;
cout<<"\Jumlah anak
: "; cin>>indatapeg[i][6];
}
else if ((statusmenikah == 'T') || (statusmenikah == 't'))
{
indatapeg[i][5] = 0;
indatapeg[i][6] = 0;
}
//menghitung besarnya gaji pokok berdasarkan lama kerja (tahun)
outdatapeg[i][1]= gapok(indatapeg[i][1]);
//menghitung besarnya tunjangan transport dihitung perhari sebesar 25000
outdatapeg[i][2] = ttrans(indatapeg[i][2]);
//menghitung besarnya tunjangan keluarga
outdatapeg[i][3]= tkel (indatapeg[i][5],indatapeg[i][6]);
//menghitung besarnya bonus ketertiban dihitung dari hari masuk tepat waktu
outdatapeg[i][4] = bket(indatapeg[i][3]);
//menghitung besarnya bonus level
outdatapeg[i][5] = blevel (indatapeg[i][4]);
//menghitung total gaji (gaji bersih) setiap karyawan
outdatapeg[i][6] = outdatapeg[i][1]+outdatapeg[i][2]+outdatapeg[i][3]+outdatapeg[i][4]+outdatapeg[i][5];
cout<<"\nULANGI LAGI [Y/T] ? ";
y = getche();
{
if (y=='Y'||y=='y')
lagi =- 1;
i++;
}
lagi++;
cout<<"\n";
}
cout<< " Kembali ke menu utama (tekan sembarang tombol)\n";
getch();
utama ();
break;
}
//pilihan ketiga untuk menampilkan data karyawan yang telah diinputkan
case 3:
{
clrscr();
cout <<"\nList gaji karyawan PT. AMHARLE Yogyakarta\n";
cout <<"Tanggal " << tgl << " " << bln << " " << thn << "\n";
cout <<"+---+---------+-------+-------+-------+--------+-------+-------+-------+-------+\n";
gotoxy(1,5); cout <<"|No.";
gotoxy(5,5); cout<<"| Nama";
gotoxy(15,5);cout<<"| LK(Th)";
gotoxy(23,5);cout<<"| Level";
gotoxy(31,5);cout<<"| Gapok";
gotoxy(39,5);cout<<"| T.Trans";
gotoxy(48,5);cout<<"| T.Kel";
gotoxy(56,5);cout<<"| B.Ket";
gotoxy(64,5);cout<<"|B.Level";
gotoxy(72,5);cout<<"| Total |";
gotoxy(1,6); cout <<"+---+---------+-------+-------+-------+--------+-------+-------+-------+-------+\n";
//menghitung total gaji semua karwayan (gajikeluar)
for (int j=1;j<i;j++)
{
gotoxy(1,6+j); cout <<"|"<<j;
gotoxy(5,6+j); cout<<"|"<<namakaryawan[j];
gotoxy(15,6+j);cout<<"|"<<indatapeg[j][1];
if (indatapeg[j][4]==1)
{
gotoxy(23,6+j);cout<<"|Junior";
}
else if (indatapeg[j][4]==2)
{
gotoxy(23,6+j);cout<<"|Senior";
}
else if (indatapeg[j][4]==3)
{
gotoxy(23,6+j);cout<<"|Expert";
}
gotoxy(31,6+j);cout<<"|"<<outdatapeg[j][1];
gotoxy(39,6+j);cout<<"|"<<outdatapeg[j][2];
gotoxy(48,6+j);cout<<"|"<<outdatapeg[j][3];
gotoxy(56,6+j);cout<<"|"<<outdatapeg[j][4];
gotoxy(64,6+j);cout<<"|"<<outdatapeg[j][5];
gotoxy(72,6+j);cout<<"|"<<outdatapeg[j][6];
gotoxy(80,6+j);cout<<"|";
}
gotoxy(1,6+i); cout <<"+---+---------+-------+-------+-------+--------+-------+-------+-------+-------+\n";
cout<< "\n Kembali ke menu utama (tekan sembarang tombol)\n";
getch();
utama ();
break;
}
//pilihan keempat untuk keluar dari aplikasi
case 4:
{
cout<<"\nSelesai \n";
cout<<"Terimakasih";
getch();
break;
}
}
}
void main() {
clrscr();
utama();
}