Selasa, 16 Juli 2013

Contoh Pascal dengan database

Berikut ini ada contoh program pascal dengan database
konsepnya sebagai program kasir ketika ditanyakan akan menginput program dijawab dengan "Y"
maka inputan akan berulang hingga inputan dijawab dengan "T"
dan otomatis akan mencetak laporan penjualan, data inputan ketika member akan mendapat diskon 10%
Berikut gambar program ketika dijalankan

















Penjelasan singkat program
Program ini menggunakan database dengan nama database.txt, sedangkan command-command yang digunakan dalam database ini adalah,

assign(database,'database.txt'); (memberi nama database)
rewrite (database); (membuat database)
            reset(database); (membuka database)
            write(database,data); (menulis database)
            close(database); (menutup database)
            read(database,data); (membaca database)

Karena data yang dimasukkan bisa banyak tergantung dari jumlah pelanggan, maka dibuat prosedur baca_data agar tidak menulis berulang-ulang.
Prosedur baca_data sebagai berikut

procedure baca_data;
begin
                        assign(database,'database.txt');{$I-}
                        reset(database);{$I+}
end;

Untuk penomoran otomatis saya menggunakan command inc(nomor) sebagai ganti command nomor:=nomor+1 dimana sebelumnya di deklarasikan bahwa nomor:=0 . Karena saya meletakkan inc(nomor) berada diatas input nomor sehingga ketika melewati command ini variabel nomor sudah berubah menjadi 1.
Untuk mempercantik tampilan saya menggunakan command gotoxy(x,y) dimana X adalah jumlah spasi dan Y adalah lokasi baris. Dengan command ini akan membuat program terlihat lebih interaktif. Sebagai contoh pada login kasir saya meletakkan inputan agar berada di tengah-tengah frame seperti berikut


gotoxy(25,1);write('===========================');
             gotoxy(25,2);write('        LOGIN KASIR');
            gotoxy(25,3);write('---------------------------');
            gotoxy(25,4);write;
            gotoxy(25,6);write;
            gotoxy(25,7);write('===========================');
             gotoxy(25,8);write('      PROGRAM KASIR');
             gotoxy(25,9);write('    TOKO SUSANTO JAYA');
            gotoxy(25,10);write('===========================');
            gotoxy(25,5);write('NAMA KASIR    : ');readln(namakasir);

Perhatikan bahwa inputan nama kasir berada baris paling bawah, tapi dengan gotoxy lokasinya bisa dirubah ke baris nomer 5.
Demikian pula saat menginputkan data, akan ada keterangan interaktif dibawahnya yang akan berubah-ubah sesuai dengan inputan.

Berikut listing programnya
program kasir;
uses wincrt;
type toko = record
     nama   : string [8];
     barang : string [7];
     member : char;
     jumlah : integer;
     harga  : real;
     diskon : real;
     total  : real;
     bayar  : real;
end;
var
database : file of toko;
data : toko;
selesai : char;
I : real;
nomor : integer;
no : integer;
namakasir : string [8];
procedure baca_data;
begin
     assign(database,'penjualan.txt');{$I-}
     reset(database);{$I+}
end;
begin
     clrscr;
     nomor:=0;
     begin
     assign(database,'database.txt');
     rewrite (database);
     reset(database);
     gotoxy(25,1);write('===========================');
     gotoxy(25,2);write('        LOGIN KASIR');
     gotoxy(25,3);write('---------------------------');
     gotoxy(25,4);write;
     gotoxy(25,6);write;
     gotoxy(25,7);write('===========================');
     gotoxy(25,8);write('      PROGRAM KASIR');
     gotoxy(25,9);write('    TOKO SUSANTO JAYA');
     gotoxy(25,10);write('===========================');
     gotoxy(25,5);write('NAMA KASIR    : ');readln(namakasir);
repeat
     clrscr;
     gotoxy(25,1);write('===========================');
     gotoxy(25,2);write('      FORM INPUT DATA');
     gotoxy(25,3);write('---------------------------');
     gotoxy(25,13);write('---------------------------');
     gotoxy(25,15);write('===========================');
     gotoxy(25,16);write('    TOKO SUSANTO JAYA ');
     gotoxy(25,17);write('===========================');
     inc(nomor);
     gotoxy(25,4);writeln('NOMOR          : ',nomor);
     gotoxy(25,14);write('MEMBER DISKON 10 %    ');
     gotoxy(25,5);write('MEMBER (Y/T)   : ');readln(data.member);
     gotoxy(25,14);write('INPUT NAMA PELANGGAN  ');
     gotoxy(25,6);write('NAMA PELANGGAN : ');readln(data.nama);
     gotoxy(25,14);write('INPUT NAMA BARANG     ');
     gotoxy(25,7);write('NAMA BARANG    : ');readln(data.barang);
     gotoxy(25,14);write('INPUT JUMLAH PEMBELIAN');
     gotoxy(25,8);write('JUMLAH         : ');readln(data.jumlah);
     gotoxy(25,14);write('INPUT HARGA BARANG    ');
     gotoxy(25,9);write('HARGA SATUAN   : ');readln(data.harga);
     data.total:=data.jumlah*data.harga;
     gotoxy(25,10);writeln('TOTAL          : ',data.total:2:0);
     if (data.member='Y') or (data.member='y') then
     data.diskon:=0.1*data.total else data.diskon:=0;
     gotoxy(25,11);write('DISKON         : ',data.diskon:0:0);
     data.bayar:=data.total-data.diskon;
     gotoxy(25,12);write('TOTAL BAYAR    : ',data.bayar:2:0);
     gotoxy(25,14);write('SELESAI INPUT ? (Y/T):');readln(selesai);
     write(database,data);
until (selesai='Y') or (selesai='y');
close(database);
end;
begin
I:=0;
baca_data;
clrscr;
     begin
     writeln('==============================================================================');
     writeln('                       LAPORAN DAFTAR BARANG PENJUALAN');
     writeln('                               TOKO SUSANTO JAYA');
     writeln('                      JALAN PELAN-PELAN BANYAK ANAK-ANAK');
     writeln('==============================================================================');
     writeln('|| NO |  NM.PLG   |  NM.BRG | JML |  HARGA  |  TOTAL  |  DISKON | TOTAL BYR ||');
     writeln('------------------------------------------------------------------------------');
     no:=0;
     while not eof (database) do
                  begin
                       inc(no);
                       read(database,data);
                       writeln('|| ',no:2,' | ',data.nama:8,'  | ',data.barang:7,' | ',
                       data.jumlah:3,' | ',data.harga:7:0,' | ',data.total:7:0,' | ',
                       data.diskon:7:0,' | ',data.bayar:9:0,' ||');
                  end;
     close(database);
     end;
     writeln('==============================================================================');
     writeln;
     writeln('                                                             KASIR');
     writeln;
     writeln;
     writeln;
     writeln('                                                           ( ',namakasir,' )');
     readln;
end;


end.