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