//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