Aplikasi Penggajian Pegawai Dengan Bahasa Pascal


Pada Artikel ini saya akan menjelaskan tentang langkah-langkah pembuatan aplikasi pegawai menggunakan bahasa pascal :

{Program penyimpanan data }

program simpandata;
uses wincrt;
 type
 record_pegawai= record
                 NIP :string[6];
                 Nama :string[25];
                 kodebagiankerja:char;
                 gajipokok:longint;
                end;
 tipe_file_pegawai=file of record_pegawai;

 var
  file_pegawai : tipe_file_pegawai;
  data_pegawai : record_pegawai;
 begin
  clrscr;
  assign(file_pegawai,'pegawai.DTA');
  rewrite (file_pegawai);
  with data_pegawai do
   begin
    NIP:= '1212005';
    Nama:= 'RISYANDI';
    kodebagiankerja:='4';
    gajipokok:=500000
   end;

 write(file_pegawai, data_pegawai);
 close(file_pegawai);

 writeln;
 gotoxy(10,4); writeln('Data yang anda siapkan sudah di masukan dan terekam !! ');
 gotoxy(10,5);writeln('Tekan Return !! Terima kasih :)');
 readln;
 writeln;
 gotoxy(10,7);writeln('=== Create By : Risyandi ===');
 end.



{Program menambahkan data }

program tambah_data;
uses wincrt;
type
 record_pegawai= record
                 NIP :string[6];
                 Nama:string[25];
                 kodebagiankerja:char;
                 gajipokok:longint;
                 end;
  tipe_file_pegawai= file of record_pegawai;
procedure pemasukan_dan_perekaman_data (var file_pegawai: tipe_file_pegawai; nmr_rec:word);

{untuk memasukan data yang berasal dari papan ketik}
var
 posx:byte;
 data_pegawai:record_pegawai;
begin
 with data_pegawai do
begin

{buat keterangan pada layar}
clrscr;
gotoxy(10,1); writeln('=====================================================================');
gotoxy(10,2); write('pemasukan data ke-',nmr_rec:3);
gotoxy(10,4); write('NIP [6 digit]     : ');
posx:=WHEREx;
gotoxy (10,5); write('nama              : ');
gotoxy (10,6); write('kode bagian kerja :     [1].personalia [2].keuangan');
gotoxy (10,7); write('                        [3].pemasaran  [4].teknik    [5].produksi');
gotoxy (10,8); write('gaji pokok        :Rp ');
gotoxy (10,9); writeln('=====================================================================');
gotoxy (10,14); writeln('=== Created By : Risyandi ===');

{pemasukan data dari papan ketik}
gotoxy (posx,4); readln(NIP);
gotoxy (posx,5); readln(nama);
gotoxy (posx,6);
repeat
 kodebagiankerja:= READKEY
 until kodebagiankerja in ['1'..'5'];
 write (kodebagiankerja);
 gotoxy (posx+4, 8); readln(gajipokok);
 end;

write(file_pegawai,data_pegawai); {rekam ke disket}
end; {akhir prosedure pemasukan_perekaman_data}
procedure menambah_data;
var
 file_pegawai :tipe_file_pegawai;
 jawaban      :char;
 nmr_record,nmr_komponen:word;
begin
 clrscr;
 assign (file_pegawai,'pegawai.DTA');
 reset(file_pegawai);
 nmr_komponen:= filesize(file_pegawai);
 seek (file_pegawai,nmr_komponen);
 nmr_record := nmr_komponen+1;
 repeat
  pemasukan_dan_perekaman_data(file_pegawai,nmr_record);
  inc(nmr_record);
  gotoxy (10,10); write('menambah data lagi (Y/N)? ');
 repeat
  jawaban:=readkey
  until jawaban in ['Y','y','N','n'];
  until upcase(jawaban)='N';
  write (upcase(jawaban))
  end;
 begin
  menambah_data
 end.


{Program Membaca semua data yang telah di masukan dan telah tersimpan}
program bacasemuadata;
uses wincrt;
type
 record_pegawai= record
                 NIP :string[6];
                 Nama:string[25];
                 kodebagiankerja:char;
                 gajipokok:longint;
                 end;
 tipe_file_pegawai = file of record_pegawai;

 procedure menampilkansemuadata;
 var
  file_pegawai : file of record_pegawai;
  bagiankerja : string [10];
  data_pegawai : record_pegawai;
 begin
  clrscr;
  assign (file_pegawai,'pegawai.DTA');
  reset(file_pegawai);
  writeln('   NIP             NAMA            BAGIAN KERJA             GAJI');
  writeln('====================================================================');
  while not eof (file_pegawai) do
   with data_pegawai do
    begin
     read (file_pegawai, data_pegawai);
      case kodebagiankerja of
       '1':bagiankerja:='personalia';
       '2':bagiankerja:='keuangan';
       '3':bagiankerja:='pemasaran';
       '4':bagiankerja:='Teknik';
       '5':bagiankerja:='Produksi';
       end;
      writeln (NIP:6,      Nama:20,      bagiankerja:16,'           Rp',gajipokok:8);
      end;
  writeln('====================================================================');
  end;

     begin
      menampilkansemuadata;
      write('Tekan Return'); readln;
      end.




{Program Menghapus Bagian Data yang ingin di hapus}

program hapusdata;
uses wincrt;
type
 record_pegawai = record
                  NIP                   :string[6];
                  nama                  :string[25];
                  kodebagiankerja       :char;
                  gajipokok             :longint;
                  end;
 tipe_file_pegawai = file of record_pegawai;
 var
  file_pegawai:tipe_file_pegawai;
  data_pegawai:record_pegawai;

 procedure tampilkan_komponen(var data_pegawai: record_pegawai);
 begin
  with data_pegawai do
   begin
    gotoxy(10,4); write('NIP    :',NIP);
    gotoxy(10,5); write('nama   :',nama);
    gotoxy(10,6); write('bagian kerja :');
    case kodebagiankerja of
    '1': write ('Personalia');
    '2': write ('Keuangan');
    '3': write ('pemasaran');
    '4': write ('Teknik');
    '5': write ('Produksi');
   end;
   gotoxy(10,7); write ('gaji pokok :Rp ',gajipokok);
   end;
   end;

 procedure menghapusdata;
 const
  posisi_awal_file=0;
 var
  file_pegawai:tipe_file_pegawai;
  ketemu, adapenghapusan:boolean;
  jawaban:char;
  nip_dicari:string[6];

 procedure proses_penghapusan (var file_pegawai : tipe_file_pegawai);
 const
  namafilesementara='temporer.DTA';
 var
  fileproses:tipe_file_pegawai;
  data_pegawai:record_pegawai;
  nmrrecord:word;
 begin
  clrscr;
  writeln('tunggu .. sedang melakukan proses penghapusan');
  assign(fileproses,'temporer.DTA');
  rewrite(fileproses);
  seek (file_pegawai, posisi_awal_file);
  for nmrrecord := 1 to filesize (file_pegawai) do
   begin
    read (file_pegawai, data_pegawai);
    if data_pegawai.nip<>'*' then
     write (fileproses, data_pegawai)
    else
     write('komponen nomor', filepos(file_pegawai)-1,'dihapus.');
   end;

 close(file_pegawai);
 close(fileproses);
 erase(file_pegawai);
 assign(fileproses, namafilesementara);
 rename(fileproses,'pegawai.DTA');
 writeln('pengahapusan selesai.');
 end;

 begin
  assign(file_pegawai,'pegawai.DTA');
  reset(file_pegawai);
  adapenghapusan:=false;
  repeat
   clrscr;
   gotoxy(10,4); write ('NIP dari data yang akan di hapus : ');
   readln(Nip_dicari);
   gotoxy(10,14); writeln('=== Created By : Risyandi ===');

 seek (file_pegawai, posisi_awal_file);
 ketemu:=false;
 while (not eof(file_pegawai)) and (not ketemu) do
  begin
   read(file_pegawai, data_pegawai);
   if data_pegawai.NIP=Nip_dicari then
   ketemu:=true;
   end;

 if ketemu then
  begin
   clrscr;
   tampilkan_komponen(data_pegawai);
   gotoxy(10,9); write('data ini di hapus (Y/T) ?');
   repeat
    jawaban:=readkey 
   until jawaban in ['Y','y','T','t'];
   if upcase(jawaban)= 'Y' then
    begin
     data_pegawai.NIP:='*';
     seek(file_pegawai, filepos(file_pegawai)-1);
     write(file_pegawai, data_pegawai);
     adapenghapusan:=true;
     end;
     end
     else
      begin
      gotoxy(10,6);
      writeln('Data Tidak Ditemukan !!!');
      end;
  gotoxy (10,9); clreol;
  write('Mau menghapus lagi (Y/T) ?');
  repeat
   jawaban:=readkey;
   until jawaban in ['Y','y','T','t'];
   until upcase (jawaban)= 'T';

  if adapenghapusan then
   proses_penghapusan (file_pegawai)
  else
   close(file_pegawai);
  end;
  begin
  menghapusdata
  end.



{Program mengganti bagian data}
program gantidata;
uses wincrt;
 type
  record_pegawai= record
                  NIP   :string[6];
                  nama  :string[25];
                  kodebagiankerja :char;
                  gajipokok :longint;
                  end;
  tipe_file_pegawai = file of record_pegawai;

 procedure tampilkan_komponen(var data_pegawai: record_pegawai);
 begin
  with data_pegawai do
   begin
    gotoxy(10,4); write('NIP    :',NIP);
    gotoxy(10,5); write('nama   :',nama);
    gotoxy(10,6); write('bagian kerja :');
    case kodebagiankerja of
    '1': write ('Personalia');
    '2': write ('Keuangan');
    '3': write ('pemasaran');
    '4': write ('Teknik');
    '5': write ('Produksi');
   end;
   gotoxy(10,7); write ('gaji pokok :Rp ',gajipokok);
   end;
   end;

 procedure menggantidata;
 const
 posisi_awal_file=0;
  var
   file_pegawai : tipe_file_pegawai;
   data_pegawai : record_pegawai;
   jawaban : char;
   posx    : byte;
   Nip_dicari     : string[6];
   ketemu         :boolean;
  begin
   assign (file_pegawai,'Pegawai.DTA');
   reset(file_pegawai);
   repeat
    clrscr;
    gotoxy(10,4); write('NIP dari data yang akan di ganti : ');
    readln(Nip_dicari);

    seek(file_pegawai, posisi_awal_file);
    ketemu:=false;
    while (not eof(file_pegawai)) and (not ketemu) do
     begin
      read (file_pegawai, data_pegawai);
      if data_pegawai.NIP = Nip_dicari then
       ketemu:= true;
     end;
    if ketemu then
     begin
      clrscr;
      tampilkan_komponen(data_pegawai);
      gotoxy(10,9); write('data baru : ');
      gotoxy(10,11); write('kode bagian kerja : ');
      posx:=wherex;
      gotoxy(posx+3,11); write ('[1] Personalia [2] Keuangan');
      gotoxy(posx+3,12); write ('[3]Pemasaran   [4] Teknik     [5] prouksi');
      gotoxy(10,13); write ('gaji pokok :Rp ');

   gotoxy (posx,11);
   repeat
    data_pegawai.kodebagiankerja := readkey;
    until data_pegawai.kodebagiankerja in ['1'..'5'];
    write (data_pegawai.kodebagiankerja);
    gotoxy (posx+4, 13);
    readln(data_pegawai.gajipokok);

    seek (file_pegawai, filepos(file_pegawai)-1);
    write(file_pegawai,data_pegawai);
    end
    else
     begin
      gotoxy(10,6);
      write('data tersebut tidak bisa di temukan !! ');
      end;

      gotoxy(10,15); write('Mau mengubah lagi ? (Y/T)');
      repeat
       jawaban:= readkey
       until jawaban in ['Y','y','T','t'];
       write(upcase(jawaban));
       until upcase(jawaban)='T';
      end;

      begin
       menggantidata;
       end.


terima kasih itulah sebagian coding untuk membuat program data pegawai terstruktur !!
wassalam.wr.wb