Clube de Video – código em Pascal

Pretende-se um programa que faça a gestão dos alugueres num clube de vídeo, escrito em Pascal.

O programa deve trabalhar com 3 arrays de records:
Clientes (Nº Cliente, Nome, Localidade)
DVDs (Nº DVD, Titulo, Duração em Minutos)
Alugueres (Nº Cliente, Nº DVD, Data)
As tabelas devem ser construidas de forma a suportar um máximo de 1000 clientes, 1000 filmes e 1000 alugueres.

O programa deve apresentar o seguinte menu:

1. Novo Cliente
É atribuído um número para o novo cliente, e é introduzido um registo na base de dados com o nome e localidade introduzidos pelo utilizador.

2. Novo DVD
É atribuído um número para o novo DVD, e é introduzido um registo na base de dados com o Título e Duração introduzidos pelo utilizador.

3. Aluguer
É pedido o número do cliente e o número do DVD. O registo é criado na tabela alugueres utilizando a data actual do sistema.

4. Entrega
É pedido o número do DVD. O registo é removido da tabela alugueres.

5. Listagem completa de Clientes

6. Listagem completa de DVDs

7. Listagem de DVDs em loja
Título e Género dos DVDs que não estiverem alugados de momento

8. Listagem de DVDs alugados
Títulos e Nomes dos clientes que têm os DVDs, bem como a data dos alugueres

0. Sair

Solução

Program ClubeDeVideo;

uses dateutils,crt;

var Clientes:array[1..1000] of record
ncliente:integer;
nome:string;
localidade:string;
end;
DVDs:array[1..1000] of record
ndvd:integer;
titulo:string;
duracao:integer;
end;
Alugueres:array[1..1000] of record
ncliente:integer;
ndvd:integer;
data:record
dia:integer;
mes:integer;
ano:integer;
end;
end;
opc,c,d,nf,contador,p:integer;
nclientes,ndvds,nalugueres:integer;

procedure novocliente;
begin
nclientes:=nclientes+1;
readln(clientes[nclientes].nome);
readln(clientes[nclientes].localidade);
clientes[nclientes].ncliente:=nclientes;
writeln('Foi registado com sucesso o cliente numero ',nclientes);
end;

procedure novodvd;
begin
ndvds:=ndvds+1;
readln(dvds[ndvds].titulo);
readln(dvds[ndvds].duracao);
dvds[ndvds].ndvd:=ndvds;
writeln('Foi registado com sucesso o DVD numero ',ndvds);
end;

procedure aluguer;
begin
nalugueres:=nalugueres+1;
readln(alugueres[nalugueres].ncliente);
readln(alugueres[nalugueres].ndvd);
alugueres[nalugueres].data.dia:=dayof(today);
alugueres[nalugueres].data.mes:=monthof(today);
alugueres[nalugueres].data.ano:=yearof(today);
end;

procedure entrega;
begin
readln(nf);
for c:=1 to nalugueres do
begin
if alugueres[c].ndvd=nf then
p:=c;
end;
for c:=p to nalugueres-1 do
alugueres[c]:=alugueres[c+1];
nalugueres:=nalugueres-1;
end;

procedure listaclientes;
begin
for c:=1 to nclientes do
begin
with clientes[c] do
begin
writeln(ncliente,' ',nome,' ',localidade);
end;
end;

end;

procedure listadvds;
begin
for c:=1 to ndvds do
begin
with dvds[c] do
begin
writeln(ndvd,' ',titulo,' ',duracao);
end;
end;
end;

procedure listadvdsloja;
begin
for c:=1 to ndvds do
begin
contador:=0;
for d:=1 to nalugueres do
begin
if dvds[c].ndvd=alugueres[d].ndvd then
contador:=contador+1;
end;
if contador=0 then
with dvds[c] do
begin
writeln(ndvd,' ',titulo,' ',duracao);
end;
end;
end;

procedure listadvdsalugados;
begin
for c:=1 to nalugueres do
begin
for d:=1 to nclientes do
begin
if alugueres[c].ncliente=clientes[d].ncliente then
write(clientes[d].nome,' ');
end;
for d:=1 to ndvds do
begin
if alugueres[c].ndvd=dvds[d].ndvd then
write(dvds[d].titulo,' ');
end;
with alugueres[c].data do
writeln(dia,'/',mes,'/',ano);
end;

end;

begin
nclientes:=0;
nalugueres:=0;
ndvds:=0;
repeat
writeln('0-sair,1-novo cliente,2-novo dvd,3-aluguer,4-entrega');
writeln('5-lista clientes,6-lista dvds,7-lista dvss loja,8-lista dvds alugados');
readln(opc);
case opc of
1:novocliente;
2:novodvd;
3:aluguer;
4:entrega;
5:listaclientes;
6:listadvds;
7:listadvdsloja;
8:listadvdsalugados;
end;
until (opc=0);
end.

Leave a comment