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.