Studi Kasus
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 | 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.
Screenshoot aplikasi
1\. Atur Tanggal Penggajian
2\. Entri Data
3\. List Data
4\. Exit
Pilihan Anda (1-3) ?
Tampilan ketika dipilih menu 1: Atur tanggal penggajian
Masukkan Tanggal, Bulan dan Tahun Penggajian
Tanggal:
Bulan:
Tahun:
Tampilan ketika dipilih menu 2: Entri Data
Nama : .....
Lama kerja(tahun) : ....
Jumlah masuk kerja : ....
Jumlah masuk tepat waktu : ...
level karyawan (1/2/3) : ...
Status menikah (Y/T) : ...
Jumlah Anak : ....
Keterangan:
Inputan jumlah anak hanya akan muncul jika status menikah diisi dengan y.
Tampilan ketika dipilih menu 3: List Data
List gaji karyawan PT. AMHARLE Yogyakarta
Tanggal: 99 xxxxxxx 9999
+-----+-----------+--------+-------+-------+----------+-------+-------+--------+--------+
| No. | Nama | LK(Th) | Level | Gapok | T. Trans | T.Kel | B.Ket |B.Level | Total |
+-----+-----------+--------+-------+-------+----------+-------+-------+--------+--------+
| | | | | | | | | | |
+-----+-----------+--------+-------+-------+----------+-------+-------+--------+--------+
| Total gaji dikeluarkan | |
+-----+-----------+--------+-------+-------+----------+-------+-------+--------+--------+
Keterangan:
- Format tanggal berupa tanggal nama bulan dan tahun.
- Tampilan ketika menu 4 dipilih, maka menampilkan profil dari pembuat aplikasi (misal NIM, Nama dll).
Ketentuan pembuatan program:
- Program dibuat dengan menggunakan Borland C++
- Program dibuat dengan memanfaatkan tipe data array dan dibuat modular dengan memanfaatkan user defined function/fungsi buatan sendiri
Ketentuan Penilaian:
- Opsi menu 1: 10%
- Opsi menu 2: 25%
- Opsi menu 3: 60%
- Opsi menu 4: 5%
Ketentuan pembuatan dan pengiriman karya:
- Program dibuat secara individu bukan kelompok
- Ketentuan nilai di atas hanya berlaku untuk tugas hasil karya sendiri. jika ditemukan kecurangan dalam pembuatan karya, dosen bebas memberikan nilai tanpa menggunakan ketentuan penilaian di atas.
- Batas pengumpulan tugas adalah selama 10 Hari sejak soal ini diterbitkan
Screenshoot:

Menu Utama

Pilihan 1

Pilihan 2

Pilihan 3

Pilihan 4
Source Code:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <iomanip.h>
#include <stdlib.h>
/**www.gatewan.com || (Wawan Beneran)**/
/*tempat mendeklarasikan prorotipe fungsi-fungsi dan
variabel-variabel yang sekiranya perlu dikenali secara global*/
//--------------------------------------------------------------------------
menu(); tgl(); entrydata(); long fgp(long gp); long tjsts(long tklrg);
long tjjmtw(long bket); list(); long bnslvl(long blvl); bye();
void cetak(int row, char *text); int bom(); back();
char nm[30], m[30], sts;
int lmkrj, jmk, jmtw, lvl, ank, d, pilihan;
long y, jgp, bkel, jbket, bolvl;
//------------------------------------------------------------------------
void main()
{
for (int i=1; i>0; i++)
{
clrscr();
menu();
if (pilihan==1)
{
tgl();
}
else if (pilihan==2)
{
entrydata();
}
else if (pilihan==3)
{
clrscr();
cout<<"\n";
cout<<"List gaji karyawan PT. AMHARLE Yogyakarta \n";
cout<<"Tanggal: "<<d<<" "<<m<<" "<<y<<"\n";
list();
long fgp(long gp);
long tjsts(long tklrg);
long tjjmtw(long bket);
long tj_trans=25000*jmk;
gotoxy(3,10);cout<<"1";
gotoxy(7,10);cout<<nm;
gotoxy(17,10);cout<<lmkrj;
gotoxy(25,10);cout<<lvl;
gotoxy(31,10);cout<<fgp(jgp);
gotoxy(39,10);cout<<tj_trans;
gotoxy(48,10);cout<<tjsts(bkel);
gotoxy(56,10);cout<<tjjmtw(jbket);
gotoxy(64,10);cout<<bnslvl(bolvl);
long ttl=fgp(jgp)+tj_trans+tjsts(bkel)+tjjmtw(jbket)+bolvl;//total gaji ada disini
gotoxy(72,10);cout<<ttl;
gotoxy(72,14);cout<<ttl;
gotoxy(1,17);cout<<endl;
back();
}
else if (pilihan==4)
{
bom();
exit(bom());
}
else
{
cout<<"kode yang anda masukan salah!!, silakan ulangi lagi, terimakasih";
}
}
getch();
}
//**disini tempat saya mendefinisikan fungsi**//
//fungsi menu *********************************************
menu()
{
cout<<"1. Atur Tanggal Penggajian \n";
cout<<"2. Entri Data \n";
cout<<"3. List Data \n";
cout<<"4. Exit \n";
cout<<"\n";
cout<<"Pilihan Anda (1-4) ? : ";
cin>>pilihan;
}
//*********************************************************
//fungsi entri data****************************************
entrydata()
{
cout<<endl;
cout<<"Nama"<<setw(22)<<": ";cin>>nm;
cout<<"Lama kerja(tahun)"<<setw(9)<<": ";cin>>lmkrj;
cout<<"Jumlah masuk kerja"<<setw(8)<<": ";cin>>jmk;
cout<<"Jumlah masuk tepat waktu"<<setw(0)<<": ";cin>>jmtw;
cout<<"level karyawan (1/2/3)"<<setw(4)<<": ";cin>>lvl;
cout<<"Status menikah (Y/T)"<<setw(6)<<": ";cin>>sts;
if(sts =='y'|| sts == 'Y')
{
cout<<"Jumlah Anak"<<setw(15)<<": ";cin>>ank;
}
else
{
clrscr();
menu();
}
}
//*********************************************************
//fungsi input tanggal*************************************
tgl()
{
cout<<"Masukkan Tanggal, Bulan dan Tahun Penggajian \n";
cout<<"Tanggal : ";cin>>d;
cout<<"Bulan : ";cin>>m;
cout<<"Tahun : ";cin>>y;
}
//*********************************************************
//fungsi gaji pokok ***************************************
long fgp(long gp)
{
if(lmkrj<=1)
{
gp=850000;
}
else if(lmkrj>=2 && lmkrj<=3)
{
gp=1000000;
}
else if(lmkrj>=4 && lmkrj<=5)
{
gp=1250000;
}
else
{
gp=1250000;
}
return(gp);
}
//*********************************************************
//fungsi tunjangan nikah dan anak**************************
long tjsts(long tklrg)
{
long istri, anak;
if(sts =='y'|| sts == 'Y')
{
istri=150000;
}
else
{
istri=0;
}
if(ank==1)
{
anak=75000;
}
else if(ank==2)
{
anak=75000*2;
}
else if(ank>=3)
{
anak=75000*3;
}
else
{
anak=0;
}
tklrg=istri+anak;
return (tklrg);
}
//**********************************************************
//fungsi tunjangan tepat waktu*****************************
long tjjmtw(long bket)
{
bket=20000*jmtw;
return(bket);
}
//**********************************************************
//fungsi tunjangan level atau jabatan***********************
long bnslvl(long blvl)
{
if(lvl==1)
{
blvl=125000;
}
else if(lvl==2)
{
blvl=200000;
}
else if(lvl>=3)
{
blvl=350000;
}
else
{
blvl=0;
}
return (blvl);
}
//******************************************************************************
//fungsi list slip gaji, dimana format ini saya adopsi dari soal yang diberikan*
//saya memilih menampilkan dengan cara seperti ini, sebab lebih ringan
//diprocessor pc dan di processor saya sendiri heheheh..dibandingkan dengan cara
//memanfaatkan fungsi array*****************************************************
list()
{
cout<<"+---+----------+-------+-----+-------+--------+-------+-------+-------+--------+ \n";
cout<<"|No.|Nama |LK(Th) |Level|Gapok |T. Trans|T.Kel |B.Ket |B.Level|Total | \n";
cout<<"+---+----------+-------+-----+-------+--------+-------+-------+-------+--------+ \n";
cout<<"| | | | | | | | | | | \n";
cout<<"+---+----------+-------+-----+-------+--------+-------+-------+-------+--------+ \n";
cout<<"| Total gaji dikeluarkan | | \n";
cout<<"+---+----------+-------+-----+-------+--------+-------+-------+-------+--------+ \n";
}
//******************************************************************************
//fungsi author display sebelum exit********************************************
bye()//mendeklarasikan array dengan pointer(*) untuk fungsi cetak
{
clrscr();
cetak(1,"PT. AMHARLE");
cetak(2,"TUGAS K3");
cetak(3,"PRAKTIKUM PEMROGRAMAN SYSTEM");
cetak(4,"AUTHOR : WAWAN CHAHYO NUGROHO / 12131294");
cetak(5,"PRODI : S1, TEKNIK INFORMATIKA");
cetak(6,"STMIK ELRAHMA YOGYAKARTA ");
cetak(7,"Please Sabar broo...");
}
//********************************************************************************
//fungsi cetak tengah***********************************************************
void cetak(int row, char *text)
{
gotoxy(40-strlen(text)/2,row); cout<<text; /**strlen utk mghtung pjg char
dalam layar monitor terdiri dari 25 baris dan 80 kolom **/
}
//********************************************************************************
//fungsi timmer gaya gue :D ****************************************************
int bom()
{
int x;
for(int n=5555;n>=1;n--)
{
for(int m=n;m>=1;m--)
{
for(int o=m;o>=1;o--)
{
x=o;
x--;
}
x=m;
x--;
}
x=n;
bye();
cout<<x;
}
return 0;
}
//********************************************************************************
//fungsi back to menu setelah list***********************************************
back()
{
int w;
do{
cout<<"Silakan Tekan 0 untuk kembali ke menu";cin>>w;
if (w==0)
{
clrscr();
menu();
}
else
{
cout<<"angka yang anda masukan tidak benar"<<endl;
}
}
while(w != 0);
}
//*******************************************************************************