Program Data Pegawai dengan Bahasa Pascal

program OlahData;
{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 INDRI AGUSTINA dengan JUJUR pada tanggal 29 Mei 2015}
uses crt;

const Nmaks=500;
type
  Karyawan = record
    jamkerja: integer;
    nik, nama, jkel : string[30];
    gaji:longint;
  end;
  KaryawanArray = array[1..Nmaks] of Karyawan;
  var krywan:KaryawanArray;

procedure BacaData(N : integer ; var krywan:KaryawanArray);
var
  i: integer;
begin
  for i:=1 to N do
  begin
    write('Masukkan NIK : ');
    readln(krywan[i].nik);
    write('Masukkan Nama : ');
    readln(krywan[i].nama);
    write('Masukkan Jenis Kelamin : ');
    readln(krywan[i].jkel);
    write('Masukkan Jam Kerja : ');
    readln(krywan[i].jamkerja);
    writeln();
  end;
end;

Procedure HitungGaji(N:integer);
var
   i: integer;
   const gajipokok=1000000;
   const gajilembur=25000;
begin

    for i:=1 to n do
    begin
         if krywan[i].jamkerja > 48 then
         begin
             krywan[i].gaji:=gajipokok+((krywan[i].jamkerja-48)*gajilembur);
         end
         else
         begin
             krywan[i].gaji:=gajipokok;
         end;
    end;
end;

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

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

function MaxJamKerja(N : integer) : integer;
var
  i, max : integer;
begin
  max := -1;
  for i:=1 to N do
  begin
    if(krywan[i].jamkerja > max) then
      max := krywan[i].jamkerja;
  end;
  MaxJamKerja := max;
end;

function MinJamKerja(N : integer) : integer;
var
  i, min : integer;
begin
  min := 999;
  for i:=1 to N do
  begin
    if(krywan[i].jamkerja < min) then
      min := krywan[i].jamkerja;
  end;
  MinJamKerja := min;
end;

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

function jamkrjnormal(N : integer) : integer;
var
  i, total : integer;
begin
  total := 0;
  for i:=1 to N do
  begin
    if(krywan[i].jamkerja = 48) then
      total := total+ 1;
  end;
  jamkrjnormal := total;
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
        begin
          if(krywan[i].nama = namaygdicari) then
              ketemu := true
          else
              i:=i+1;
        end;
        if(ketemu) then
           write('Data ditemukan')
        else
           write('Data tidak ditemukan');
end;

var
  N, min, max, Lembur, Normal : integer;
  namaygdicari:string;
  Rata_Rata : real;

begin
    write('Banyak data mahasiswa : ');
    readln(N);
    writeln();

  BacaData(N, krywan);
  HitungGaji(N);
  TampilDataPegawai(N);

  Rata_Rata := Rata(N);
  writeln('Rata-rata Jam Kerja = ', Rata_Rata);

  max := MaxJamKerja(N);
  writeln('Jam Kerja Maksimum = ', max);

  min := MinJamKerja(N);
  writeln('Jam Kerja Minimum  = ', min);

  Lembur := karyawanlembur(N);
  writeln('Banyaknya karyawan yang Lembur  = ', Lembur);

  Normal := jamkrjnormal(N);
  writeln('Banyaknya karyawan yang Jam Kerjanya 48 jam  = ', Normal);

  write('Masukkkan nama yang dicari : '); readln(namaygdicari);
  CariKaryawan(N, krywan, namaygdicari);
end.

Comments

Popular posts from this blog

Cara Membuat Halaman Login Hotspot Berbeda pada 1 Mikrotik

UltraISO Premium Edition v9.5.3

Arti OSAKMJ