Jump to content
sexys

Programa Final Pascal

Recommended Posts

sexys

programa simples de gestao de salas de cinema, adiciona quantidade de salas, filmes e lugares, e reserva lugares

usei-o no meu programa final, espero ter ajudado

program cinema;
uses crt;
type espaco=record
    filme:string;                                                                                   {defini‡oes de uma variavel para ser usada nos arrays}
    preco:real;
    lugares:integer;
    disp:boolean;
end;
var op,quantsalas,quantfilmes:integer;                                                               {vari veis}
   sala:array[1..50] of espaco;                                                                     {vai inserir em cada casa do array um valor}
procedure inserir(var qts:integer); {1}
var a:integer;
begin
       repeat
               clrscr;
               textcolor(white);
               writeln('Insira a quantidade de salas que o cinema tˆm: (m x.50)');
               readln(qts);                                                                        {este procedimento serve para inserir as salas que o cinema tem.}
               if (qts<=0) or (qts>50) then                                                        {sem este passo feito, nÆo ser  poss¡vel inserir filmes}
               begin
                       textcolor(red);
                       writeln('O m ximo de salas ‚ de 50!!');
                       writeln('CLIQUE ENTER');
                       readln;
               end;
       until (qts>0) and (qts<=50);
       for a:=1 to qts do
       begin
               writeln('Insira o numero de lugares da ',a,'¦ sala:');
               readln(sala[a].lugares);
       end;
end;                                                                                                                          {qts=quantidade salas}
procedure inserir_filmes(var qts:integer; var qtfl:integer);     {2}                                                          {qtfl=quantidade filmes}
var a,b,conta:integer;
   marca:boolean;
begin
       clrscr;
       textcolor(white);
       marca:=false;                                                                               {este procedimento serve para inserir os filmes a estrear, o nome e o respectivo pre‡o avulso}
       for a:=1 to qts do
       begin
       if sala[a].lugares<>0 then
       begin
               marca:=true;
       end;
       end;
       if marca=true then
       begin
               repeat
                       clrscr;
                       textcolor(white);
                       writeln('Quantos filmes deseja inserir?');
                       readln(qtfl);
                       if (qtfl<=0) or (qtfl>qts) then
                       begin
                               textcolor(red);
                               writeln('NÆo pode inserir mais do que ',qts,' filmes!');
                               writeln('CLIQUE ENTER');
                               readln;
                       end;
               until (qtfl>0) and (qtfl<=qts);
               begin
                       conta:=0;
                       repeat
                       conta:=conta+1;
                               repeat
                                       writeln('Insira o numero da sala:');
                                       readln(b);
                                       if (b<1) or (b>qts) then
                                       begin
                                               writeln('Sala inexistente!');
                                               readln;
                                       end;
                                       if sala[b].filme<>'' then
                                       begin
                                               writeln('Essa sala ja tem filmes a estrear!');
                                               readln;
                                       end;
                               until (b>=1) and (b<=qts) and (sala[b].filme='');
                               writeln('Insira o filme a estrear na sala ',b);
                               readln(sala[b].filme);
                               writeln('Insira o respectivo pre‡o/avulso:');
                               readln(sala[b].preco);
                       until conta=qtfl;
               end;
       end;
       if marca=false then
       begin
               writeln('Ainda nÆo existem salas!');
               writeln('CLIQUE ENTER');
               readln;
       end;
end;

procedure listar_lugares(qts:integer);   {6}                                                                   {este procedimento serve para listar uma determinada sala, mostrando logo no inicio as salas e filmes a estrear}
var a,i,x,y,conta:integer;
begin
       clrscr;
       textcolor(white);
       for a:=1 to qts do
       begin
               if sala[a].filme='' then
               begin
                       sala[a].filme:='(por definir)';
               end;
               writeln('SALA ',a,' ir  estrear: ',sala[a].filme,'. Pre‡o/bilhete: ',sala[a].preco:3:2,'. Quantidade Lugares: ',sala[a].lugares);
       end;
       textcolor(white);
       writeln('');
       writeln('Qual ‚ a sala que deseja ver?');
       readln(a);
       for a:=1 to sala[a].lugares do
       begin
               if sala[a].disp=true then
               begin
                       textcolor(red);
                       writeln('Lugar ',a,', ocupado!');
               end;
               if sala[a].disp=false then
               begin
                       textcolor(green);
                       writeln('Lugar ',a,', dispon¡vel!');
               end;
       end;
       readln;
       writeln('CLIQUE ENTER');
       readln;
end;
procedure reservar(qts,qtfl:integer);           {4}                                                        {este procedimento serve para reservar um bilhete para um determinado filme, verificando se o lugar esta disponivel ou nao}
var film:string;
   a,lug:integer;
   marca:boolean;
begin
       marca:=false;
       clrscr;
       textcolor(white);
       for a:=1 to qts do
       begin
               if sala[a].filme<>'' then
               begin
                       marca:=true;
               end;
       end;
       if marca=true then
       begin
               writeln('Deseja reservar bilhete para que filme?');
               readln(film);
               for a:=1 to qts do
               if sala[a].filme=film then
               begin
                       repeat
                               textcolor(white);
                               writeln('O filme ',sala[a].filme,' ir  estrear na sala ',a,' e tem o custo de ',sala[a].preco:3:2,' euros por bilhete');
                               writeln('Qual ‚ o lugar que deseja reservar?');
                               readln(lug);
                               if (lug<=0) or (lug>sala[a].lugares) then
                               begin
                                       writeln('Esta sala apenas tem ',sala[lug].lugares,' lugares!');
                                       writeln('CLIQUE ENTER');
                                       readln;
                               end;
                               if sala[lug].disp=true then
                               begin
                                       textcolor(red);
                                       writeln('Esse lugar j  est  ocupado! Por favor, escolha outro');
                                       readln;
                               end;
                       until (lug>0) and (lug<=sala[a].lugares) and (sala[lug].disp=false);
                       sala[lug].disp:=true;
                       textcolor(green);
                       writeln('Lugar ocupado com sucesso!');
                       writeln('CLIQUE ENTER');
                       readln;
               end;
       end;
       if marca=false then
       begin
               writeln('NÆo existem filmes a estrear!');
               writeln('CLIQUE ENTER');
               readln;
       end;
end;
procedure anular_reserva(qts,qtfl:integer);    {5}
var film:string;                                                                                                  {este procedimento serve para anular uma reserva. caso o lugar esteja livre, nao anula nada}
   a,lug:integer;
   marca:boolean;
begin
       marca:=false;
       clrscr;
       textcolor(white);
       for a:=1 to qts do
       begin
               if sala[a].filme<>'' then
               begin
                       marca:=true;
               end;
       end;
       if marca=true then
       begin
               writeln('');
               writeln('Deseja anular qual bilhete? Digite o respectivo filme');
               readln(film);
               for a:=1 to qts do
               if sala[a].filme=film then
               begin
                       repeat
                               textcolor(white);
                               writeln('O filme ',sala[a].filme,' ir  estrear na sala ',a,' e tem o custo de ',sala[a].preco:3:2,' euros por bilhete');
                               writeln('Qual ‚ o lugar que deseja remover?');
                               readln(lug);
                               if (lug<=0) or (lug>sala[a].lugares) then
                               begin
                                       writeln('Esta sala apenas tem ',sala[lug].lugares,' lugares!');
                                       writeln('CLIQUE ENTER');
                                       readln;
                               end;
                       until (lug>0) or (lug<=sala[a].lugares) or (sala[lug].disp=true);
                       if sala[lug].disp=false then
                               begin
                                       textcolor(red);
                                       writeln('Esse lugar ainda est  livre!');
                                       readln;
                               end;
                       if sala[lug].disp=true then
                       begin
                               sala[lug].disp:=false;
                               textcolor(green);
                               writeln('Removido com sucesso!');
                               writeln('CLIQUE ENTER');
                               readln;
                       end;
               end;
       end;
       if marca=false then
       begin
               writeln('NÆo existe nada para remover!');
               writeln('CLIQUE ENTER');
               readln;
       end;
end;
procedure anular_filme(qts,qtfl:integer);    {3}                                                                      {este procedimento serve para anular um filme que tenha saido da sala. anula automaticamente todos os lugares, deixando-os dispon¡veis}
var film:string;
   a,b:integer;
   marca:boolean;
begin
       marca:=false;                                                                                                 {esta marca serve para ver se existem filmes. se nao existirem, nao ir  pedir nada}
       clrscr;
       textcolor(white);
       for a:=1 to qts do
       begin
               if sala[a].filme<>'' then
               begin
                       marca:=true;
               end;
       end;
       if marca=true then
       begin
               writeln('Deseja anular qual filme?');
               readln(film);
               for a:=1 to qts do
               if sala[a].filme=film then
               begin
                       sala[a].filme:='';
                       sala[a].preco:=0;
                       for b:=1 to sala[a].lugares do
                       begin
                               sala[b].disp:=false;
                       end;
                       textcolor(green);
                       writeln('Removido com sucesso!');
                       writeln('CLIQUE ENTER');
                       readln;
               end;
       end;
       if marca=false then
       begin
               writeln('NÆo existem filmes para remover!');
               writeln('CLIQUE ENTER');
               readln;
       end;
end;
begin
       repeat
               clrscr;
               textcolor(white);
               writeln('______________________________________');
               writeln('|          Menu - CINEMAS X          |');
               writeln('|____________________________________|');
               writeln('|                                    |');
               writeln('| 1 - Inserir quantidade de salas    |');
               writeln('| 2 - Inserir filmes/pre‡os          |');                                       {menu do programa, que aparece logo ao iniciar}
               writeln('| 3 - Anular filmes                  |');
               writeln('| 4 - Reservar                       |');
               writeln('| 5 - Anular reserva                 |');
               writeln('| 6 - Listar sala/filmes/lugares     |');
               writeln('| 7 - SAIR                           |');
               writeln('|____________________________________|');
               writeln('|         Op‡Æo:___                  |');
               writeln('|____________________________________|');
               gotoxy(18,13);
               readln(op);
               gotoxy(1,1);
               case op of
               1:begin
                       inserir(quantsalas);                                                            {chama o procedimento inserir}
                 end;
               2:begin
                       inserir_filmes(quantsalas,quantfilmes);
                 end;
               3:begin
                       anular_filme(quantsalas,quantfilmes);
                 end;
               4:begin
                       reservar(quantsalas,quantfilmes);
                 end;
               5:begin
                       anular_reserva(quantsalas,quantfilmes);
                 end;
               6:begin
                       listar_lugares(quantsalas);
                 end;
               7:begin
                       clrscr;
                       textcolor(green);
                       writeln('Obrigado por usar este programa!');
                       writeln('CLIQUE ENTER');
                       readln;
                 end
               else
               begin
                       clrscr;
                       textcolor(red);
                       writeln('Op‡Æo inv lida!');                                                  {caso o utilizador nao escolha uma op‡ao que esteja no menu, da mensagem de erro}
                       textcolor(white);
                       writeln('CLIQUE ENTER');
                       readln;
               end;
               end;
       until op=7;
end. 

Share this post


Link to post
Share on other sites
nunopicado

Parabéns pela entrada no forum com essa disposição!  ;):)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.