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.