(okek saya rasa cukup curhatnya,,,,, :D )
Mungkin bagi yang sedang belajar bahasa pemerograman pascal akan bertemu dengan data terstruktur pascal yang bernama file, file itu sendiri dibagi menjadi tiga jenis, yaitu file bertipe, tidak bertipe dan file text, disini saya tidak akan menulis tentang bagai mana semua struktur file itu, silahkan kawan sekalian tanya ke mbah google, pasti lebih cespleng disini saya cuman akan berbagi source code program menggunakan file...
berikut source code programnya...
Program Data_Pelanggan;
Uses Crt;
Type pelanggan = Record
ID : Word;
Nama : String[20];
biaya : Real;
nopol : array[1..20] of char;
alamat : string[20];
tanggal : byte;
bulan : string;
End;
Type Barang = RECORD
IdBar : integer;
NamaBar : string[50];
HargaBar : real;
banyak : integer;
End;
Var filepel : File of pelanggan;
filetemp : File of pelanggan;
FileBar : File of Barang;
FileTemp2: File of Barang;
Data2 : Barang;
Data : pelanggan;
Pil,Ul : Char;
const garis = '===========================================================';
Procedure Menu;
Begin
Clrscr;
Gotoxy(34,1);
Write('MENU PILIHAN');
Gotoxy(34,2);
Write('============');
Gotoxy(27,4);
Write('1. Tambah Data Pelanggan');
Gotoxy(27,5);
Write('2. Edit Data Pelanggan');
Gotoxy(27,6);
Write('3. Hapus Data Pelanggan');
Gotoxy(27,7);
Write('4. Tampilkan Data Pelanggan');
Gotoxy(27,8);
Write('5. Tampil data pelanggan Berdasarkan ID');
Gotoxy(27,9);
Gotoxy(27,10);
Gotoxy(34,11);
Write('MENU DATA BARANG');
Gotoxy(34,12);
Write('================');
Gotoxy(27,13);
Write('6. Tambah Data Barang');
Gotoxy(27,14);
Write('7. Tampil Data Barang');
Gotoxy(27,15);
Write('8. Tampil Data Barang Berdasarkan ID');
Gotoxy(27,17);
Write('9. Keluar (Exit)');
Gotoxy(27,19);
Write('Pilihan [1..9]: ');Pil:=Readkey;
End;
Procedure Menu1;
Begin
Clrscr;
Gotoxy(34,1);
Write(' MENU UTAMA');
Gotoxy(34,2);
Write('============');
Gotoxy(27,4);
Write('1. Data Pelanggan');
Gotoxy(27,5);
Write('2. Data Barang');
Gotoxy(27,7);
Write('9. Keluar (Exit)');
Gotoxy(32,12);
Write('Pilihan [1..9]: ');Pil:=Readkey;
End;
Procedure BukaFile;
Begin
Assign(Filepel,'pel.TXT');
{$I-};
Reset(Filepel);
{$I+};
End;
Procedure BukaFileBar;
Begin
Assign(FileBar,'Bar.TXT');
{$I-};
Reset (FileBar);
{$I+};
End;
Procedure TambahBarang;
Var Lagi : Char;
Ada : Boolean;
i,o,a : Integer;
nomor : Word;
Begin
Ul:='Y';
Lagi:='Y';
Clrscr;
BukaFileBar;
If IOResult<>0 Then
Rewrite(FileBar);
Repeat
Clrscr;
Ada:=False;
i:=0;
Gotoxy(30,1);
Write('TAMBAH DATA BARANG');
Gotoxy(30,2);
Write('==================');
Gotoxy(30,3);
Write('No. ID Barang : ');
Readln(nomor);
While (Ada=False) and (i<>Filesize(Filebar)) Do
Begin
seek (FileBar,i);
Read (FileBar,Data2);
if Data2.IdBar = nomor Then
Ada := True
Else
Inc (i);
End;
IF (Ada=True) Then
Begin
Gotoxy(20,9);
Write ('Nomor ID Barang ",nomor," ini Sudah Ada..!');
end
Else
Begin
Seek(FileBar,Filesize(FileBar));
Data2.IdBar := nomor;
Gotoxy(20,5);
Write('Nama Barang : ');
Readln(Data2.NamaBar);
Gotoxy(20,6);
Write('Harga Barang : $');
Readln(Data2.HargaBar);
Gotoxy(20,7);
write('Banyaknya : ');
Readln(Data2.banyak);
Write(FileBar,Data2);
End;
Gotoxy(20,13);
Write('Mau Tambah Data LAgi juragan [Y/T] : '); Lagi := upcase(ReadKey);
until Lagi <> 'Y';
Close (FileBar);
End;
Procedure Tambah;
Var Lagi : Char;
Ada : Boolean;
i,o,a : Integer;
nomor : Word;
Begin
Ul:='Y';
Lagi:='Y';
Clrscr;
BukaFile;
If IOResult<>0 Then
Rewrite(Filepel);
Repeat
Clrscr;
Ada:=False;
i:=0;
Gotoxy(30,1);
Write('TAMBAH DATA PELANGGAN');
Gotoxy(30,2);
Write('=====================');
Gotoxy(20,4);
Write('No. ID Pelanggan : ');Readln(nomor);
While (Ada=False) And (i<>Filesize(Filepel)) Do
Begin
Seek(Filepel,i);
Read(Filepel,Data);
If Data.id=nomor Then
Ada:=True
Else
Inc(i);
End;
If (Ada=True) Then
Begin
Gotoxy(20,9);Write('Nomor ID Pelanggan "',nomor,'" Ini Sudah Ada!');
End
Else
Begin
Seek(Filepel,Filesize(Filepel));
Data.id:=nomor;
Gotoxy(20,5);
Write('Nama Pelanggan : ');
Readln(Data.Nama);
Gotoxy(20,6);
Write('Biaya BEngkel : $');
Readln(Data.biaya);
Gotoxy(20,7);
Write('Alamat : ');
Readln(Data.alamat);
Gotoxy(20,8);
write('Tanggal Reg. : ');
Readln(Data.tanggal);
Gotoxy(20,9);
Write('Bulan Reg. : ');
Readln(Data.bulan);
Gotoxy(20,10);
write('Silahkan masukkan banyak No.Pol.: ');
Readln(o);
for a:=1 to o do
begin
Gotoxy(21,a+10);
Write('No. Pol. Kendaraan ke- ',a,' : ');
readln;
end;
Write(Filepel,Data);
End;
Gotoxy(20,13);
Write('Mau Tambah Data Lagi Juragan [Y/T]:');Lagi:=Upcase(Readkey);
Until Lagi<>'Y';
Close(Filepel);
End;
Procedure Edit;
Var Lagi: Char;
Ada : Boolean;
i,o,a : Integer;
nomor: Word;
Begin
Ul:='Y';
Lagi:='Y';
Clrscr;
BukaFile;
If IOResult<>0 Then
Write('Data Masih Kosong Juragan...!')
Else
Begin
Repeat
Clrscr;
Ada:=False;
i:=0;
Gotoxy(30,1);
Write('EDIT DATA PELANGGAN');
Gotoxy(30,2);
Write('=====================');
Gotoxy(20,4);Write('No. ID Pelanggan : ');
Readln(nomor);
While (Ada=False) And (i<>Filesize(Filepel)) Do
Begin
Seek(Filepel,i);
Read(Filepel,Data);
If Data.id=nomor Then
Begin
Ada:=True;
Gotoxy(20,5);
Write('Nama Pelanggan : ',Data.Nama);
Gotoxy(20,6);
Write('Biaya Bengkel : $',Data.biaya:1:2);
Gotoxy(20,7);
Write('Alamat : ',Data.alamat);
Gotoxy(20,8);
write('Tanggal Reg. : ',Data.tanggal);
Gotoxy(20,8);
Write('Bulan Reg. : ',Data.bulan);
for a:=1 to FileSize(Filepel) do
Gotoxy(21,11);
Write('No. Pol. Kendaraan ke- ',a,' : ',Data.nopol[a]);
end
Else
Inc(i);
End;
If (Ada=True) Then
Begin
Data.id:=nomor;
Gotoxy(20,12);
Write('Nama Pelanggan : ');
Readln(Data.Nama);
Gotoxy(20,14);
Write('Biaya BEngkel : $');
Readln(Data.biaya);
Gotoxy(20,15);
Write('Alamat : ');
Readln(Data.alamat);
Gotoxy(20,16);
write('Tanggal Reg. : ');
Readln(Data.tanggal);
Seek(Filepel,i);
Write(Filepel,Data);
End
Else
Begin
Gotoxy(20,16);Write('Nomor Mahasiswa "',nomor,'" Ini Tidak Ada Gan..!');
End;
Gotoxy(20,17);Write('Mau Edit Data Lagi [Y/T]: ');Lagi:=Upcase(Readkey);
Until Lagi<>'Y';
End;
Close(Filepel);
End;
Procedure Hapus ;
Var
a : word;
i : integer;
ketemu : boolean;
lg : string;
begin
clrscr;
Assign(filetemp, 'temp.dat') ;
{$I-} Reset(filetemp) ;
{$I+} if ioresult<> 0 then Rewrite(filetemp) ;
BukaFile;
Rewrite(filetemp) ;
Repeat
clrscr;
GotoXY(27,5) ; Write(' HAPUS DATA PELANGGAN');
GotoXY(27,6) ; Write('=============================') ;
GotoXY(27,7) ; Write('ID. Pelanggan yang akan dihapus : ') ; Readln(a) ;
Data.id := a;
i := 1;
seek(filepel,0) ; ketemu := false ;
while not eof(filepel) do
begin
seek(filepel,i-1); read (filepel, Data) ;
if Data.id = a then
begin
ketemu := true ;
end
else
begin
seek(filetemp,filesize(filetemp));
write(filetemp,Data) ;
end;
inc(i);
end;
i := 1;
rewrite(filepel) ;
seek(filetemp,0) ;
while not eof(filetemp) do
begin
seek(filetemp,i-1); read (filetemp, Data) ;
seek(filepel,filesize(filepel));
write(filepel,data) ;
inc(i);
end;
if not ketemu then
begin
GotoXY(27,8) ; Write('Data ini tidak ada Juragan..!!')
end
else
begin
GotoXY(27,9) ; Write('Data ini sudah di hapus Juragan..')
end;
GotoXY(27,12); Write('Input Lagi [Y/T] : ') ; lg := upcase (readkey);
Until lg <> 'Y';
close(filetemp) ;
close(filepel) ;
end;
Function RataBiaya(Tbiaya:Real;n:integer):Real;
Begin
RataBiaya:=Tbiaya/n;
End;
Procedure TampilBarang;
Var i : Integer;
Begin
clrscr;
Ul:='Y';
BukaFileBar;
If IoResult <> 0 Then
Writeln('Maaf Data Masih Kosong Juragan...! ')
Else
Begin
Clrscr;
Writeln(' DATA BARANG ');
Writeln;
writeln(garis);
Writeln(' NO ID NAMA HARGA Pcs ');
writeln(garis);
i:=0;
While Not EoF(FileBar) Do
Begin
Inc(i);
Read(FileBar,Data2);
Writeln(i:3,Data2.idBar:6,Data2.NamaBar:20,Data2.hargaBar:8:2,Data2.banyak:10,Data.tanggal:8);
End;
writeln(garis);
writeln(garis);
Close(FileBar);
End;
Writeln;
Write('Hajar Enter untuk melanjutkan...');Readkey;
End;
Procedure tampil_idBarang;
Var i : Integer;
a : integer;
Lagi : Char;
Begin
Ul:='Y';
Lagi:='Y';
Repeat
Clrscr;
Write('Silahkan masukkan ID Barang yang anda cari : ');Readln(a);
BukaFileBar;
If IoResult <> 0 Then
Write('Maaf Data Masih Kosong Gan,,,! ')
Else
Begin
Writeln(' NO ID NAMA HARGA Pcs ');
writeln(garis);
i:=0;
While Not EoF(FileBar) Do
Begin
Read(FileBar,Data2);
if Data2.idBar = a then
Begin
Inc(i);
Writeln(i:3,Data2.idBar:6,Data2.NamaBar:20,Data2.hargaBar:1:2,Data2.banyak:10,Data.tanggal:8);
End;
end;
writeln(garis);
Close(FileBar);
End;
Writeln;
Write('Mau Lihat Data Lagi Gan [Y/T]: ');Lagi:=Upcase(Readkey);
Until Lagi<>'Y';
End;
Procedure Tampil;
Var i : Integer;
Tbiaya : Real;
Begin
clrscr;
Ul:='Y';
Tbiaya:=0;
BukaFile;
If IoResult <> 0 Then
Writeln('Maaf Data Masih Kosong Juragan...! ')
Else
Begin
Clrscr;
Writeln(' DATA PELANGGAN ');
Writeln;
writeln(garis);
Writeln(' NO ID NAMA BIAYA ALAMAT T.REG. ');
writeln(garis);
i:=0;
While Not EoF(Filepel) Do
Begin
Inc(i);
Read(Filepel,Data);
Writeln(i:3,Data.id:6,Data.Nama:20,Data.biaya:8:2,Data.alamat:10,Data.tanggal:8);
Tbiaya:=Tbiaya+Data.biaya;
End;
writeln(garis);
Writeln('Rata-Rata pendapatan sampai saat ini adalah: $',Ratabiaya(Tbiaya,i):1:2);
writeln('Total Pendapatan sampai saat ini adalah : $',Tbiaya:1:2);
writeln(garis);
Close(Filepel);
End;
Writeln;
Write('Hajar Enter untuk melanjutkan...');Readkey;
End;
Procedure tampil_id;
Var i : Integer;
a : Byte;
Lagi : Char;
Begin
Ul:='Y';
Lagi:='Y';
Repeat
Clrscr;
Write('Silahkan masukkan ID yang anda cari : ');Readln(a);
BukaFile;
If IoResult <> 0 Then
Write('Maaf Data Masih Kosong Gan,,,! ')
Else
Begin
Writeln(' DATA PELANGGAN ');
Writeln;
writeln(garis);
Writeln(' NO ID NAMA BIAYA ALAMAT T.REG');
writeln(garis);
i:=0;
While Not EoF(Filepel) Do
Begin
Read(Filepel,Data);
If Data.id=a then
Begin
Inc(i);
Writeln(i:3,Data.id:6,Data.Nama:20,Data.biaya:8:2,Data.alamat:10,Data.tanggal:10);
End;
End;
writeln(garis);
Close(Filepel);
End;
Writeln;
Write('Mau Lihat Data Lagi Gan [Y/T]: ');Lagi:=Upcase(Readkey);
Until Lagi<>'Y';
End;
Begin
Repeat
Menu;
case Pil of
'1' : Tambah;
'2' : Edit;
'3' : Hapus;
'4' : Tampil;
'5' : tampil_id;
'6' : TambahBarang;
'7' : tampilBarang;
'8' : tampil_idBarang;
end;
Until (Ul<>'Y') Or (Pil='9');
End.Silahkan dicopas, jika rekan menggunakan editor turbo pascal, silahkan di coding ulang ampe mata copot.. hehe, (sebenernya bisa di akali :D )
Tapi bagi rekan yang menggukan platform linux, cukup copas di editor text dan meng'compailnya menggunakan fpc seperti di ubuntu, dan sintax pascal berjalan dimulti platform tampa harus edit-edit...