(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...