#include <iomanip>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;
int garis() {
int garis;
for (garis=0;garis<=106;garis++) {
cout << "-";
}
cout << endl;
}
int garis2() {
int garis;
for(garis=0;garis<=106;garis++) {
cout << "=";
}
cout << endl;
}
void header() {
cout << "\t\t\t\t\tDaftar Gaji Karyawan" << endl;
cout << "\t\t\t\t\t\"PT YUVERTY SEJAHTERA\"" << endl;
}
struct karyawan {
char null[0];
int no,nip;
char nama[100],kode_status[100];
char* jabatan;
char* status;
int kode_jabatan,tunjangan,gaji_pokok,total_gaji;
};
int main() {
karyawan kry[100];
int data_count;
int jumlah_halaman,akhir,nav,mulai,sisa,page=1;
char move;
int bulan;
int total = 0;
int total_count;
int grand_total = 0;
//memasukan nilai data_count sebagai banyaknnya data
cout << "Jumlah Karyawan : ";cin >> data_count;
cout << "Bulan : ";cin >> bulan;
garis();
cout << "Input Data Karyawan" << endl;
//looping untuk menyimpan data
for(int i=0;i<data_count;i++) {
cout << "Data Karyawan Ke : " << (i+1) << endl;
cout << "NIP Karyawan : ";cin >> kry[i].nip;
gets(kry[i].null);
cout << "Nama Karyawan : ";gets(kry[i].nama);
cout << "Kode Jabatan[1/2] : ";cin >> kry[i].kode_jabatan;
cout << "Kode Status[M/S] : ";cin >> kry[i].kode_status;
if (kry[i].kode_jabatan == 1)
{
kry[i].jabatan = "Administrasi";
kry[i].gaji_pokok = 800000;
strlwr(kry[i].kode_status);
if (!strcmp(kry[i].kode_status,"m"))
{
kry[i].status = "Menikah";
kry[i].tunjangan = 200000;
}
else if (!strcmp(kry[i].kode_status,"s"))
{
kry[i].status = "Single";
kry[i].tunjangan = 100000;
}else{
kry[i].status = "Tidak Tersedia";
kry[i].tunjangan = 0;
}
}
else if (kry[i].kode_jabatan == 2)
{
kry[i].jabatan = "Operasioanl";
kry[i].gaji_pokok = 850000;
strlwr(kry[i].kode_status);
if (!strcmp(kry[i].kode_status,"m"))
{
kry[i].status = "Menikah";
kry[i].tunjangan = 250000;
}
else if (!strcmp(kry[i].kode_status,"s"))
{
kry[i].status = "Single";
kry[i].tunjangan = 150000;
}else{
kry[i].status = "Tidak Tersedia";
kry[i].tunjangan = 0;
}
}else{
kry[i].jabatan = "Tidak Tersedia";
kry[i].gaji_pokok = 0;
}
cout << endl;
kry[i].total_gaji = kry[i].gaji_pokok + kry[i].tunjangan;
kry[i].no = i+1;
}
//perhitungan navigasi
mulai = 1;
akhir = 3;
jumlah_halaman = data_count/akhir;
sisa = data_count%akhir;
if(sisa>0) {
jumlah_halaman++;
}
//looping do while untuk navigasi
do{
system("cls");
//selection navigasi
if(move=='b' || move=='B')
{ //jika N maka akan lanjut
if(akhir < data_count)
{
page+=1;
mulai+=3;
akhir+=3;
total = 0;
}
}
else if(move=='s' || move=='S')
{ //jika P maka akan kembali
if(mulai >= 3)
{
page-=1;
mulai-=3;
akhir-=3;
total = 0;
}
}
//memanggil fungsi garis
//memanggil fungsi header
header();
cout << "Bulan : " << bulan << endl;
garis2();
cout << " No NIP Karyawan Nama Karyawan Jabatan Status Gaji Pokok Tunjangan Total Gaji" << endl;
garis2();
for(int i=mulai-1;i<akhir;i++) {
//menyembunyikan file sampah
if(kry[i].no!=0 && kry[i].nip!=0 && kry[i].nama!=0 && kry[i].jabatan!=0 && kry[i].status!=0 && kry[i].gaji_pokok!=0 && kry[i].tunjangan!=0 && kry[i].total_gaji!=0){
cout << " " << left <<
setw(13) << kry[i].no <<
setw(15) << kry[i].nip <<
setw(9) << kry[i].nama <<
setw(15) << kry[i].jabatan <<
setw(12) << kry[i].status <<
setw(15) << kry[i].gaji_pokok <<
setw(15) << kry[i].tunjangan <<
setw(10) << kry[i].total_gaji << endl;
//memanggil fungsi garis
garis();
}
}
for(int i=mulai-1;i<akhir;i++){
total = total+kry[i].total_gaji;
grand_total = grand_total + kry[i].total_gaji;
}
cout << "Total Gaji Karyawan : " << total<< endl;
if (akhir > data_count)
{
cout << "Grand Total : " << grand_total << endl;
grand_total = 0;
}
garis();
//menampilkan halaman ke berapa dari berapa halaman
cout<<"Halaman Ke "<<page<<" Dari "<<jumlah_halaman<<" Halaman" << endl;
garis();
cout<<"\t\t\t\t\t ";
//navigasi nomor di bawah tabel
for(nav=1;nav<=jumlah_halaman;nav++){
if(nav==page){
cout<<"["<<nav<<"]";
} else {
cout<<" "<<nav<<" ";
}
}
cout<<endl<<endl;
cout << "Berikutnya[B] / Sebelumnya[S] / Keluar [Tekan Apa Saja] : ";cin >> move;
}while(move=='B' || move=='S' || move=='s' || move=='b');
return 0;
}
0 komentar:
Posting Komentar