1. Source Code:
uses crt;
type Pegawai=record
Nomor:string;
Nama:string;
Status:string;
Gaji:extended;
end;
var DataPeg:array[1..50]of Pegawai;
procedure Input(var i:integer);
var GajiPokok:longint;
n:integer;
begin
i:=i+1;
writeln('Input Data Pegawai');
writeln('==================');
writeln;
// writeln('Masukkan huruf (T) untuk pegawai TETAP ;');
// writeln('Masukkan huruf (H) untuk pegawai HONORER ;');
repeat
write('Nomor Pegawai : ');
readln(DataPeg[i].Nomor);
DataPeg[i].Nomor:=UpCase(DataPeg[i].Nomor);
if (DataPeg[i].Nomor[1]<>'H') and (DataPeg[i].Nomor[1]<>'T') then
begin
writeln('Nomor pegawai salah!');
writeln('Masukkan karakter (T) pada awal nomor pegawai untuk pegawai tetap');
writeln('Masukkan karakter (H) pada awal nomor pegawai untuk pegawai honor');
writeln;
end;
until (DataPeg[i].Nomor[1]='H') or (DataPeg[i].Nomor[1]='T');
write('Nama Pegawai : ');
readln(DataPeg[i].Nama);
if (DataPeg[i].Nomor[1]='T') then
DataPeg[i].Status:='TETAP';
if (DataPeg[i].Nomor[1]='H') then
DataPeg[i].Status:='HONOR';
writeln('Status Pegawai : ',DataPeg[i].Status);
writeln;
write('Gaji Pokok = Rp. ');
readln(GajiPokok);
write('Total jam lembur = ');
readln(n);
writeln;
if (DataPeg[i].Nomor[1]='T') then
DataPeg[i].Gaji:=GajiPokok+(GajiPokok*0.3)+(n*20000);
if (DataPeg[i].Nomor[1]='H') then
DataPeg[i].Gaji:=GajiPokok+(n*20000);
writeln('Gaji Total : Rp. ',DataPeg[i].Gaji:0:0);
writeln;
writeln;
writeln;
write('Press any key ...');readkey;
end;
procedure Output(x:integer);
var i:integer;
begin
writeln('Cetak Data Pegawai');
writeln('==================');
writeln;
writeln('=======================================================================');
writeln('| No | No Pegawai | Nama Pegawai | Status | Gaji Total (Rp) |');
writeln('=======================================================================');
for i:=1 to x do
begin
writeln('| | | | | |');
gotoxy(3,6+i);write(i);
gotoxy(8,6+i);write(DataPeg[i].Nomor);
gotoxy(21,6+i);write(DataPeg[i].Nama);
gotoxy(46,6+i);write(DataPeg[i].Status);
gotoxy(55,6+i);write(DataPeg[i].Gaji:0:0);
writeln;
end;
writeln;
writeln('=======================================================================');
write('Press Any Key to Exit ');readkey;
end;
procedure Menu(var jmlPeg:integer);
var pilihan:integer;
keluar:boolean;
begin
clrscr;
keluar:=false;
writeln('Data Pegawai');
writeln('============');
writeln;
writeln('Menu :');
writeln('1. Masukkan data baru');
writeln('2. Lihat semua data');
writeln('3. Keluar');
writeln;
write('Pilih : ');readln(pilihan);
if (pilihan>0) and (pilihan<4) then
begin
clrscr;
case pilihan of
1:Input(jmlPeg);
2:Output(jmlPeg);
3:keluar:=true;
end;
end;
if (keluar=false) then
Menu(jmlPeg);
end;
var jmlPeg:integer;
begin
jmlPeg:=0;
Menu(jmlPeg);
end.
Output:
Tampilan Menu |
Tampilan Pilihan Masukkan Data Baru |
Tampilan Pilihan Lihat Semua Data |
Penjelasan: Program ini cuma bisa satu kali input data, kalo mau input data pegawainya banyak tinggal code-nya.
2. Source Code
2. Source Code
uses crt;
type data_pegawai=record
status,nama,np:string;
lbr,tunj,lembur,stat,gaji,pokok,tunjangan:real;
end;
var
pegawai:array[1..100] of data_pegawai;
i,n:integer;
begin
clrscr;
write('Data Pegawai yang Dimasukkan : ');readln(n);
writeln;
for i:=1 to n do
begin
write('No Pegawai : ');readln(pegawai[i].np);
write('Nama Pegawai : ');readln(pegawai[i].nama);
write('Status : (pilih : 1.Tetap 2.Honor) ');readln(pegawai[i].stat);
if pegawai[i].stat=1 then
begin
pegawai[i].status:='Tetap';
end
else if pegawai[i].stat=2 then
begin
pegawai[i].status:='Honor';
end
else
begin
writeln('input salah!!!');
exit;
end;
write('Gaji Pokok : Rp. ');readln(pegawai[i].pokok);
write('Banyak jam lembur : ');readln(pegawai[i].lembur);
pegawai[i].tunj:=pegawai[i].pokok*30/100;
pegawai[i].lbr:=pegawai[i].lembur*20000;
writeln('==================================');
if pegawai[i].stat=1 then
begin
pegawai[i].gaji:=pegawai[i].pokok+pegawai[i].tunj+pegawai[i].lbr;
end
else if pegawai[i].stat=2 then
begin
pegawai[i].gaji:=pegawai[i].pokok+pegawai[i].lbr;
end;
end;
clrscr;
writeln('| No. Pegawai | Nama Pegawai | Status | Gaji |');
writeln('----------------------------------------------------');
for i:=1 to n do
begin
write('| ',pegawai[i].np);gotoxy(15,2+i);write('| ',pegawai[i].nama);gotoxy(30,2+i);write('| ',pegawai[i].status);gotoxy(39,2+i);write('| ',pegawai[i].gaji:2:0);gotoxy(52,2+i);write('|');writeln;
end;
writeln('----------------------------------------------------');
readkey;
end.
Output:
Tampilan Data Pegawai yg diinput |
Tampilan Output Data Pegawai |
Penjelasan: program Pascal ini bisa menginputkan data pegawai lebih banyak.
8 Comment