Senin, 29 Juni 2015

Pascal - Program Gaji Pegawai

Berikut ini adalah source code Program Gaji pegawai menggunakan bahasa Pascal.

program Gaji_Pegawai;
{Dibaca data pegawai dengan tabel NIK, Nama, JK, Jam Kerja, Gaji akan diolah
datanya dengan soal: 1. Menginputkan data, 2. Mencetak data,
3. Jam Kerja Minimum, 4. Jam Kerja maksimum, 5. Rata-rata jam kerja,
6. banyaknya karyawan yang lembur, 7. banyaknya karyawan yang jam kerjanya
   48 jam. Program ini dibuat oleh NIM.1400018214-SRI WAHYUNI dengan JUJUR
 pada tanggal 30 Mei 2015}

uses crt;
const Nmaks=500;
type
  karyawan=record
        nama, nik : string[25];
        jk : char;
        jamkerja:integer;
        gaji : longint;
  end;
  karyawanArray=array[1..Nmaks] of karyawan;

procedure BacaPegawai(N:integer; var krywan:karyawanArray);
var
   i : integer;
begin
    for i:=1 to N do
    begin
        write('Masukkan NIK Karyawan : '); readln(krywan[i].nik);
        write('Masukkan Nama Karyawan : '); readln(krywan[i].nama);
        write('Masukkan Jenis Kelamin [L/P] : '); readln( krywan[i].jk);
        write('Masukkan Jam Kerja/Minggu : '); readln(krywan[i].jamkerja);
    end;
end;

procedure Gaji(N:integer; var krywan : karyawanArray);
var
   i : integer;
   const gajipokok = 2000000;
   const lembur = 50000;
begin
     for i:= 1 to N do
     begin
        if (krywan[i].jamkerja > 48) then
        begin
            krywan[i].gaji := gajipokok+((krywan[i].jamkerja-48)*lembur);
        end
        else
        begin
            krywan[i].gaji:=gajipokok;
        end;
     end;
end;

procedure Carikaryawan(N:integer;var krywan:karyawanArray; namaygdicari: string);

var
   i : integer;
   ketemu : boolean;
begin
    i := 1;
    ketemu := false;
    while ((i <= N) and (not ketemu)) do
          if (krywan[i].nama = namaygdicari) then
          begin
             ketemu := true;
          end
          else
          begin
         i := i + 1;
         end;
    if (ketemu) then
    begin
       write('Nama ',namaygdicari,' ditemukan');
    end
    else
    begin
        writeln('Nama ',namaygdicari,' tidak ditemukan');
    end;
end;


function rataJamKerja(N:integer; krywan:karyawanArray):real;
var
   i, jml:integer;
begin
   jml:=0;
   for i:=1 to N do
   begin
        jml:=jml+krywan[i].jamkerja;
   end;
   rataJamKerja:=jml/N;
end;

function minimumJamKerja(N: integer; krywan:karyawanArray):integer;
var
   i, min : integer;
begin
   min:=1000;
   for i:=1 to N do
   begin
        if (krywan[i].jamkerja<min) then
        begin
           min:=krywan[i].jamkerja;
        end;
   end;
   minimumJamKerja:=min;
end;
function maxJamKerja(N:integer; krywan:karyawanArray):integer;
var
   i, max : integer;
begin
   max := -1;
   for i:=1 to N do
   begin
        if ( krywan[i].jamkerja > max ) then
        begin
           max := krywan[i].jamkerja;
        end;
   end;
   maxJamKerja := max;
end;

function karyawanLembur(N:integer; krywan : karyawanArray) : integer;
var
   i, lmbur : integer;
begin
     lmbur := 0;
     for i := 1 to N do
     begin
        if (krywan[i].jamkerja > 48 ) then
        begin
           lmbur := lmbur + 1;
        end;
     end;
     karyawanLembur := lmbur;
end;

function karyawanNormal ( N : integer; krywan : karyawanArray ) : integer;
var
   i, normal : integer;
begin
   normal := 0;
   for i := 1 to N do
   begin
        if krywan[i].jamkerja = 48 then
        begin
           normal := normal + 1;
        end;
   end;
   karyawanNormal := normal;
end;

procedure TampilData (N: integer; var krywan : karyawanArray);
var
   i : integer;
begin
     writeln('NIK         Nama        JK     Jam Kerja   Gaji          ');
     for i :=1 to N do
     begin
        write(krywan[i].nik,'         ', krywan[i].nama,'         ');
        write(krywan[i].jk,'       ', krywan[i].jamkerja,'          ');
        writeln(krywan[i].gaji);
     end;
end;

var
   N, jum, min, maxi, Nnormal, Nlembur : integer;
   rerata : real;
   namadicari, enter : string;
   krywan : karyawanArray;

begin
     write('Masukkan Banyaknya Karyawan : '); readln(N);
     writeln(' ');

     BacaPegawai(N, krywan);
     writeln(' ');
     Gaji(N, krywan);
     TampilData(N, krywan);
     writeln(' ');

     rerata := rataJamKerja(N, krywan);
     writeln('Rata-rata Jam Kerja : ', rerata);

     min := minimumJamKerja(N, krywan);
     writeln('Jam Kerja Paling sedikit : ', min);

     maxi := maxJamkerja(N, krywan);
     writeln('Jam Kerja Paling Banyak : ', maxi);

     Nnormal := karyawanNormal (N, krywan);
     writeln ('Banyaknya karyawan yang kerja 48 jam : ', Nnormal);

     Nlembur := karyawanLembur (N, krywan);
     writeln ('Banyaknya karyawan yang lembur : ', Nlembur);

     write('Masukkan nama karyawan yang dicari : ');
     readln(namadicari);
     Carikaryawan(N, krywan, namadicari);
     writeln(' ');
     write('Tekan enter untuk EXIT'); readln(enter);
end. 

Hasil Tampilan Setelah diRunning :










0 komentar:

Posting Komentar