Jumat, 30 Desember 2011

Program penyimpanan data pelanggan dan barang dengan file bertipe Pascal.

Mungkin tepatnya sebuah tugas yang mau tidak mau harus dikerjakan ini, yang mengharuskan memelekkan mata ampe pagi, menghabiskan kopi ber'ton ton dan menghabiskan rokok bergudang gudang, demi terciptanya program sederhana yang acak kadut ini, tapi mungkin disini lah halte untuk berangkat ke masa depan yang lebih baik :D ...
(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...

Kamis, 29 Desember 2011

Fungsi Library time.h pada C++

Ternyata memang benar, masalah membuat kita menjadi lebih baik.. :D
Sedikit mernemukan kesilitan saat mengerjakan tugas pemerograman terstruktur, sehingga harus bertanya pada sang Mbah programer, yaitu google.. heuheu, memang layak disebut mbah, karna ketepatannya dalam menjawab masalah (loh..! kok malah bahas si Mbah yach,,, heuheu) okek langsung saja berikut fungsi time.h untuk menghitung waktu mundur...

#include 
#include 

void antosan ( int detik )
{
  clock_t endwait;
  endwait = clock () + detik * CLOCKS_PER_SEC ;
  while (clock() < endwait) {}
}

int main ()
{
  int n;
  printf ("Mulai menghitung mundur juragan...\n");
  for (n=10; n>0; n--)
  {
    printf ("%d\n",n);
    antosan (1);
  }
  printf ("awasss meledak... tuuuutt!!!\n");
  return 0;
} 
Silahkan selebihnya anda explorasi sendiri.. :)

Senin, 26 Desember 2011

Operasi String Pada C++

Sebenarnya sebuah logika program sudah ada dalam otak manusia masing-masing, tinggal merangsang dan mengeluarkannya saja ( sotoy mode on :D), tapi ya tetap saya walau begitu, perlu banyak berlatih dan membiasakan diri, seperti coretan kecil ini, kata pepatah jadul (:D), ikatlah ilmu dengan menuliskannya, berpedoman dari pepatah itu jadilah postingan ini.. hehe, terlebih jika akan ujian gak perlu browsing kemana-mana untuk mencari contekan, jika soalnya kebetulan sama dan tidak diketahui oleh pengawas uas kalo bawa hp ke kelas.. hahaha....

Ini Program sederhana pengaplikasian string c++

#include  
#include  
#include  
 
void main() 
{ 
    char *str1="Naya",*str2="Kartika",*str3,*str4; 
    char *posisi,huruf='a'; 
    int panjang,hasil; 
 
    clrscr(); 
    printf("Nilai dari str1 : %s\n",str1); 
    printf("Nilai dari str2 : %s\n",str2); 
    panjang=strlen(str1); 
    printf("\nPanjang string str1 : %d\n",panjang);getch(); 
    strcpy(str3,str1); 
    printf("\nNilai dari str3 hasil copy dari str1 : %s\n",str3);getch(); 
    hasil=strcmp(str1,str2); 
    printf("\nHasil perbandingan %s vs %s : %d artinya \n",str1,str2,hasil); 
    if(hasil==0) 
    printf("Kedua string tersebut sama\n"); 
    else if(hasil>0) 
    printf("String %s > string %s \n",str1,str2); 
    else 
    printf("String %s < string %s \n",str1,str2); 
    getch(); 
 
    posisi=strchr(str1,huruf); 
 
    if(posisi) 
  printf("\nhuruf %c berada pada posisi %d di kata %s\n",huruf,posisi-str1,str1); 
    else 
  printf("\nHuruf %c Tidak ditemukan kata %s\n",huruf,str1);getch(); 
 
    posisi=strstr(str1,str2); 
 
    if(posisi) 
  printf("\nString %s berada pada posisi %d pada kata %s \n",str2,posisi-str1,str1); 
    else 
  printf("\nString %s Tidak ditemukan pada kata %s\n",str2,str1); 
    getch(); 
 
    strcpy(str4,str1); 
    printf("\nKata %s di-Upper-kan jadi %s \n",str1,strupr(str4));getch(); 
 
    strcpy(str4,str2); 
    printf("\nKata %s di-Lower-kan jadi %s \n",str2,strlwr(str4));getch(); 
} 

Senin, 19 Desember 2011

Mencari suatu data dari file (penyimpanan) di pascal

Mungkin yang sudah atau yang lagi belajar pascal akan dan pasti bertemu dengan yang namanya "file" dalam pemerograman pascal, baik itu file bertipe, tidak bertipe atau file text, berikut ini sedikit program mencari suatu data barang yang sebelumnya data barang sudah di inputkan oleh user, agar tidak lupa dan mudah diingat maka saya tulis saja disini.. :D


Program Berkas_data_barang;
uses crt;
type datbar = record
kobar  : integer;
nabar  : string;
harga  : longint;
end;
var
filedatbar : file of datbar;
data       : datbar;
pil, ul    : char;


Procedure bukafile;
begin
Assign (filedatbar,'datbar.TXT');
{$I-};
Reset (filedatbar);
{$I+};
End;

procedure tambah;
var
lagi : char;
ada  : boolean;
i    : integer;
nocr : word;
Begin
ul         := 'Y';
Lagi       := 'Y';
clrscr;

bukafile;
if IOResult <> 0 then
rewrite (filedatbar);

repeat
clrscr;
ada := false;
i := 0;
write ('No kode barang : '); readln (nocr);
while (ada = false) and (i<> filesize(filedatbar)) do
begin
seek (filedatbar,i);
read (filedatbar,data);
if data.kobar=nocr then
ada := true
else
inc (i);
end;
if (ada = true) then
begin
write ('Kode barang', nocr, 'ini sudah ada..!!');
end
else
begin
seek (filedatbar,filesize(filedatbar));
data.kobar := nocr;
write ('nama barang : '); readln (data.nabar);
write ('Silahkan masukan harga : '); readln (data.harga);
write (filedatbar,data);
end;
write ('tambah data lagi [Y/T] : '); lagi := Upcase (Readkey);
until lagi <> 'Y';
close (filedatbar);
end;

Procedure tampil;
var
i    : integer;
Begin
ul := 'Y';
bukafile;
if IoResult <> 0 Then
write ('Maaf Data masih kosong')
else
begin;
i := 0;
while not EOF (filedatbar) do
begin
Inc (i);
Read(filedatbar,data);
writeln ('Kode barangnya adalah : ', data.kobar);
writeln ('Nama barangnya adalah : ', data.nabar);
writeln ('Harga' , data.nabar ,' adalah     : Rp.', data.harga);
writeln (' ');
end;
close (filedatbar);
end;
end;

Procedure cari_barang;
var
i, ko : integer;
lagi     : char;
Begin
ul := 'Y';
lagi := 'Y';
Repeat
Write ('Silahkan Masukan Kode barang yang anda Cari : ');
readln (ko);
bukafile; {pemanggilan Prosedur buka file}
If IoResult <> 0 Then
write ('Maaf Mas Bro kode barang tidak ada..!')
else
begin
i := 0;
while not EOF (filedatbar) do
begin
read (filedatbar,data);
if data.kobar = ko then
begin
Inc (i);
writeln ('Kode barangnya adalah : ', data.kobar);
writeln ('Nama barangnya adalah : ', data.nabar);
writeln ('Harga' , data.nabar ,' adalah     : Rp.', data.harga);
writeln (' ')
end;

end;
close (filedatbar);
end;
writeln;
Write ('Mau mencari barang lagi.. ??? '); lagi :=upcase (readkey);
until lagi <> 'Y';
end;


Begin
clrscr;
repeat
writeln ('DAFTAR MENU PROGRAM');
writeln;
write ('1. Tambah data barang.');
writeln;
write ('2. Tampilkan semua data barang.');
writeln;
write ('3. Tampilkan data barang berdasarkan kode barang.');
writeln;
write ('4. Keluar.');
writeln;
Write ('Silahkan Masukan No. menu = '); readln (pil);
case pil of
'1'    : tambah;
'2'    : tampil;
'3'    : cari_barang;
end;
until (ul <> 'Y') or (pil='4');

end.