uses crt;
const max=10;
type larik1=array[1..max]of string;
larik2=array[1..max] of byte;
larik3=array[1..max] of real;
type bioskop=record
judul_film,jam_tayang:string;
no_kursi:larik2;
status:larik1;
tarif:larik3;
jum_penonton:byte;
pendapatan:real;
end;
larik_bioskop=array[1..4]of bioskop;
var xx1:larik_bioskop; i,j,pil,pilih:byte;
procedure inisialisasi(var x:larik_bioskop);
begin
writeln('Mengisi data theatre');
for j:=1 to 4 do
begin
write('Masukan judul film yang akan diputar di theatre: ',j,' : ');readln(x[j].judul_film);
write('Masukan jam tayangnya : ');readln(x[j].jam_tayang);
for i:=1 to max do
begin x[j].no_kursi[i]:=i;
if x[j].no_kursi[i]<=3 then x[j].tarif[i]:=30000 else if x[j].no_kursi[i]<=7 then x[j].tarif[i]:=40000
else x[j].tarif[i]:=50000;
x[j].status[i]:='kosong';
x[j].jum_penonton:=0;
end;
end;
end;
procedure cetak_bioskop(var x:larik_bioskop);
begin
writeln('Cetak kondisi kursi bioskop XX1');
writeln;
for j:=1 to 4 do
begin
writeln('judul film di theatre ',j,' :',x[j].judul_film);
writeln('jam tayang :',x[j].jam_tayang);writeln;
writeln('--------------------------------------');
writeln('No kursi Status Tarif');
writeln('--------------------------------------');
for i:=1 to max do
writeln(x[j].no_kursi[i]:4,' ',x[j].status[i]:6,' ','Rp',x[j].tarif[i]:6:2);
writeln('--------------------------------------');
writeln('Jumlah penonton di XX1 saat ini : ',x[j].jum_penonton,' orang');
writeln('enter untuk melanjutkan');
readln;
end;
end;
procedure cetak_pendapatan(var x:larik_bioskop);
begin
writeln('Cetak pendapatan di Bioskop XX1');
writeln;
for j:=1 to 4 do
begin
writeln('Pendapatan di theatre ',j);
writeln('judul film :',x[j].judul_film);
writeln('jam tayang :',x[j].jam_tayang);writeln;
writeln('--------------------------------------');
writeln('No kursi Status Tarif');
writeln('--------------------------------------');
for i:=1 to max do
begin
writeln(x[j].no_kursi[i]:4,' ',x[j].status[i]:6,' ','Rp',x[j].tarif[i]:6:2);
if x[j].status[i]='isi' then x[j].pendapatan:=x[j].pendapatan+x[j].tarif[i]
end;
writeln('--------------------------------------');
writeln('Jumlah penonton di XX1 saat ini : ',x[j].jum_penonton,' orang');
writeln('Pendapatan saat ini : Rp',x[j].pendapatan:6:2);
writeln('enter untuk melanjutkan');readln;
end;
writeln('Pendapatan total XX1 :Rp ',x[1].pendapatan+x[2].pendapatan+x[3].pendapatan+x[4].pendapatan:8:2);
end;
procedure cetak_bioskop_per_thetare(var y:bioskop);
begin
writeln('Judul film :',y.judul_film);
write('Jam tayang :',y.jam_tayang);writeln;
writeln('--------------------------------------');
writeln('No kursi Status Tarif');
writeln('--------------------------------------');
for i:=1 to max do
writeln(y.no_kursi[i]:4,' ',y.status[i]:6,' ','Rp',y.tarif[i]:6:2);
writeln('--------------------------------------');
writeln('Jumlah penonton di XX1 saat ini : ',y.jum_penonton,' orang');
end;
procedure beli_tiket(var y:bioskop);
var beli,no:byte;bayar,jum:real;
label ulang,ulang1;
begin
jum:=0;
writeln('Menu beli tiket');
write('Selamat datang di bioskop XX1');
cetak_bioskop_per_thetare(y);
write('Berapa tiket yang akan anda beli : ');readln(beli);
if(max-y.jum_penonton)<beli then writeln('Jumlah tiket tidak cukup')
else
begin
for i:=1 to beli do
begin
ulang:
write('pilih nomor kursi :');readln(no);
if(no<1)or(no>max) then begin writeln('Nomor kursi tidak valid, ulangi');goto ulang;end;
if y.status[no]='isi' then begin writeln('Nomor kursi telah terisi, ulang');goto ulang;end;
y.status[no]:='isi';jum:=jum+y.tarif[no];inc(y.jum_penonton);
end;
ulang1:
write('Bayar : Rp.');readln(bayar);
if (bayar<jum) then begin writeln('Pembayaran kurang,ulang');goto ulang1;end;
writeln('kembali :Rp',bayar-jum:8:2);
writeln('Terimakasih sudah membelintiket di XX1');
end;
end;
function penuh(y:bioskop):boolean;
begin if y.jum_penonton=max then penuh:=true else penuh:=false;end;
function kosong(y:bioskop):boolean;
begin if y.jum_penonton=0 then kosong:=true else kosong:=false;end;
procedure nonton(var x:larik_bioskop);
begin
writeln('Membeli tiket bioskop');
writeln('1. Beli tiket di theatre 1 Judul film :',x[1].judul_film);
writeln('2. Beli tiket di theatre 2 Judul film :',x[2].judul_film);
writeln('3. Beli tiket di theatre 3 Judul film :',x[3].judul_film);
writeln('4. Beli tiket di theatre 4 Judul film :',x[4].judul_film);
writeln('0. Tidak jadi beli tiket');
write('Masukan pilihan anda');readln(pilih);
case pilih of
1:if penuh(x[pilih]) then writeln('theatre 1 sudah penuh')else beli_tiket(x[pilih]);
2:if penuh(x[pilih]) then writeln('tiket di theatre 2 sudah penuh')else beli_tiket(x[pilih]);
3:if penuh(x[pilih]) then writeln('tiket di theatre 3 sudah penuh')else beli_tiket(x[pilih]);
4:if penuh(x[pilih]) then writeln('tiket di theatre 4 sudah penuh')else beli_tiket(x[pilih]);
0:writeln('enter untuk kembali ke menu utama')else writeln('salah pilih mas');
end;
end;
procedure cetak_bioskop_satuan(var x:larik_bioskop);
begin
writeln('pilihan percetakan');
writeln('1. Cetak Theatre 1');
writeln('2. Cetak Theatre 2');
writeln('3. Cetak Theatre 3');
writeln('4. Cetak Theatre 4');
writeln('masukan pilihan anda');readln(pilih);
case pilih of
1:cetak_bioskop_per_thetare(x[pilih]);
2:cetak_bioskop_per_thetare(x[pilih]);
3:cetak_bioskop_per_thetare(x[pilih]);
4:cetak_bioskop_per_thetare(x[pilih]);
else writeln('anda salah memilih mas');
end;
writeln('enter untuk kembali ke menu utama');
end;
begin
repeat
clrscr;
writeln('Pengelolaan bioskop xx1');
writeln('1. Buat Bioskop');
writeln('2. Cetak bioskop');
writeln('3. Beli tiket');
writeln('4. Cetak pendapatan');
writeln('5. Cetak bioskop per thetare');
writeln('0. Selesai');
write('pilih menu :');readln(pil);
case pil of
1:inisialisasi(xx1);
2:cetak_bioskop(xx1);
3:nonton(xx1);
4:cetak_pendapatan(xx1);
5:cetak_bioskop_satuan(xx1);
0:writeln('Terimakasih')else writeln('Anda salah memilih menu');
end;
readln;
until pi=0;
end.