Senin, 03 Desember 2018

Source Code ( Daftar Gaji Karyawan )

#include <iostream>
#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

http://www.resepkuekeringku.com/2014/11/resep-donat-empuk-ala-dunkin-donut.html http://www.resepkuekeringku.com/2015/03/resep-kue-cubit-coklat-enak-dan-sederhana.html http://www.resepkuekeringku.com/2014/10/resep-donat-kentang-empuk-lembut-dan-enak.html http://www.resepkuekeringku.com/2014/07/resep-es-krim-goreng-coklat-kriuk-mudah-dan-sederhana-dengan-saus-strawberry.html http://www.resepkuekeringku.com/2014/06/resep-kue-es-krim-goreng-enak-dan-mudah.html http://www.resepkuekeringku.com/2014/09/resep-bolu-karamel-panggang-sarang-semut-lembut.html