Kamis, 11 September 2014

"Program Travel

//Program Travel
uses crt;
const max=12;
type bus=record
            no_kursi:1..max;
            status:string;
            end;
            larik_bus=array[1..max] of bus;
           
type pointer=^transaksi;
     transaksi=record
     nama,member:string;
     no_korsi:1..12;
     harga:real;
     next:pointer;
     end;
    
var armada:larik_bus;
awal,akhir:pointer;pil:0..4;tot:real;
i,j:byte;label lagi;

function full(x:larik_bus):boolean;
begin
for i:=1 to max do begin
if x[i].status='SUDAH ADA' then
full:=true else full:=false;end;
end;


procedure isi_kursi(var x:larik_bus);
begin
for i:=1 to max do
begin
            x[i].no_kursi:=i;
            x[i].status:='kosong';
           
end;
end;

procedure cetak_kursi(var x:larik_bus);
begin
clrscr;
writeln('DAFTAR SEAT SAAT INI  ');
writeln('================================');
writeln('NO SEAT     STATUS     ');
writeln('================================');
for i:=1 to max do
begin
writeln(i:2,' ',x[i].status:10);
end;
end;

procedure layanan_beli(var x:pointer;var y:larik_bus);
var baru:pointer;
            mau:char;
            label ulang,ulang1;
begin
ulang:
new(baru);
clrscr;
writeln('melayani pembelian tiket');
ulang1:
write('Beli kursi nomor berapa => ');readln(baru^.no_korsi);
if (baru^.no_korsi>i) then
            begin
            writeln('Nomor kursi yang dimasukkan salah/telah terisi, ulang'); goto ulang1;
            end;
if (y[i].status='SUDAH ADA') and (baru^.no_korsi=i) then
            for i:=1 to max do
            begin
            writeln('Kursi sudah terisi'); goto ulang1;
            end;
write('apakah memiliki member ? ');readln(mau);
            if ((mau='y') or (mau='Y')) then
            begin
                        writeln('Masukkan Nomor Member ');readln(baru^.member);
                        writeln('masukkan nama ');readln(baru^.nama);
                        baru^.harga:=35000-(0.15*35000);
                        baru^.next:=nil;
                        for i:=1 to max do begin
                        if baru^.no_korsi=y[i].no_kursi then y[i].status:='SUDAH ADA';end;
                        end
            else
            begin
            write('Masukkan Nama => ');readln(baru^.nama);
            baru^.harga:=35000;
            for i:=1 to max do begin
                        if baru^.no_korsi=y[i].no_kursi then y[i].status:='SUDAH ADA';end;
            end;
            if awal=nil then
            begin
                        awal:=baru;
                        x:=baru;
            end
            else
begin
x^.next:=baru;
x:=baru;
end;
end;
           
           
procedure cetak_transaksi(var l:pointer);
var bantu:pointer;
begin
    tot:=0;
            new(bantu);
            bantu:=l;
            j:=0;
            writeln(' Daftar Transakasi Pembelian TIKET          : ');
            writeln('==============================================');
            writeln('no   NAMA PEMBELI     NO KURSI       BIAYA  ');      
            writeln('==============================================');
            while bantu<> nil do
begin
            tot:=tot+bantu^.harga;
            inc(j);
            writeln(j:2,'  ',bantu^.nama:15,' ',bantu^.no_korsi:4,' ',bantu^.harga:7:2);
            bantu:=bantu^.next;   
end;
end;


begin
new(awal);new(akhir);
awal:=nil;akhir:=nil;
isi_kursi(armada);
repeat
begin
lagi:
clrscr;
writeln('Data travel bus');
writeln('===============');
writeln('1.Cetak kuri & status kosong atau isi ');
writeln('2.Cayanan pembelian tiket');
writeln('3.Cetak transaksi ');
writeln('4.Cetak Pendapatan ');
writeln('0.TUTUP ');
writeln;
writeln('Pilih 0-4');readln(pil);
case pil of
1: cetak_kursi(armada);
2:if full(armada) then writeln('TIDAK ADA KURSI YANG KOSONG') else layanan_beli(akhir,armada);
3: if awal=nil then writeln('belum ada transaksi') else
            cetak_transaksi(awal);
4: if awal=nil then writeln('Belum ada transaksi') else
   begin
   clrscr;
   writeln('Pendapatan hari ini ');
   writeln('Total Pendapatan Hari ini Rp',tot:7:2)
   end;
0: writeln('terima kasih');
            end;
            readln;
            end
until (pil=0);
end.


0 komentar:

Posting Komentar