Ir ao conteúdo

Vídeo Locadora em Pascal


felipemussii

Posts recomendados

Postado

pessoal estou com um pouco de dificuldade para programar o código do programa abaixo minhas duvidas são : como incluir um novo cliente, Crie uma rotina que remova um cliente, desde que ele não esteja com fitas locadas no momento ;

se puderem me mostrar em pascal ficarei muito grato...

att Felipe de camargo mussi

Faça um programa que gerencie uma locadora de fitas de vídeo. Como é uma locadora nova, ela não deve ter mais de dez clientes. Cada cliente tem os seguintes dados: código, nome, sexo, data de nascimento, RG, CPF, endereço, cidade, estado, número total de fitas já locadas e número de fitas que estão locadas atualmente. O código do cliente é o seu número de registro da locadora.

Faça o seguinte:

a) Crie uma rotina que inclua um novo cliente. O número total de fitas locadas e o número de fitas que estão locadas devem ser zero;

B) Crie uma rotina que mostre os clientes cadastrados;

c) Crie uma rotina que remova um cliente, desde que ele não esteja com fitas locadas no momento;

d) Crie uma rotina que faça locação de novas fitas a um cliente, desde que ele não esteja com nenhuma em seu poder. Deve-se entrar com o código do cliente e solicitar o número de fitas que ele deseja locar ( nesse momento o campo ‘fitas locadas atualmente’ deve ser atualizado);

e) Crie uma rotina para devolução de fitas. Deve-se solicitar o código do cliente e, se esse for encontrado, deve-se perguntar quantas fitas estão sendo devolvidas (o cliente não pode devolver mais fitas que o valor do campo ‘fitas locadas atualmente’). Quando efetivar a devolução, os campos ‘fitas locadas atualmente ‘ e ‘total de fitas já locadas’ devem ser atualizados;

f) Mostre os clientes que estão com fitas locadas.

  • Membro VIP
Postado

Olá felipemussii.

pessoal estou com um pouco de dificuldade para programar o código do programa abaixo minhas duvidas são : como incluir um novo cliente, Crie uma rotina que remova um cliente, desde que ele não esteja com fitas locadas no momento ;

se puderem me mostrar em pascal ficarei muito grato...

att Felipe de camargo mussi

Faça um programa que gerencie uma locadora de fitas de vídeo. Como é uma locadora nova, ela não deve ter mais de dez clientes. Cada cliente tem os seguintes dados: código, nome, sexo, data de nascimento, RG, CPF, endereço, cidade, estado, número total de fitas já locadas e número de fitas que estão locadas atualmente. O código do cliente é o seu número de registro da locadora.

Faça o seguinte:

a) Crie uma rotina que inclua um novo cliente. O número total de fitas locadas e o número de fitas que estão locadas devem ser zero;

B) Crie uma rotina que mostre os clientes cadastrados;

c) Crie uma rotina que remova um cliente, desde que ele não esteja com fitas locadas no momento;

d) Crie uma rotina que faça locação de novas fitas a um cliente, desde que ele não esteja com nenhuma em seu poder. Deve-se entrar com o código do cliente e solicitar o número de fitas que ele deseja locar ( nesse momento o campo ‘fitas locadas atualmente’ deve ser atualizado);

e) Crie uma rotina para devolução de fitas. Deve-se solicitar o código do cliente e, se esse for encontrado, deve-se perguntar quantas fitas estão sendo devolvidas (o cliente não pode devolver mais fitas que o valor do campo ‘fitas locadas atualmente’). Quando efetivar a devolução, os campos ‘fitas locadas atualmente ‘ e ‘total de fitas já locadas’ devem ser atualizados;

f) Mostre os clientes que estão com fitas locadas.

Poste aqui o que já conseguiu fazer e onde está com dúvidas.

PS: O "modo de incluir um novo cliente" vai depender de como está estruturado seu algoritmo, por exemplo, se estiver utilizando um record para os dados dos cliente (nome, telefone, cpf etc) e um array para os cadastros (do tipo record usado para cliente), poderia ser algo mais ou menos assim:

//obtém os dados do novo cliente
...
readln(novoCliente.nome);
...
readln(novoCliente.telefone);
...
...
totalCad:=totalCad+1; //atualizado o total de clientes já cadastrados
...
cadastros[totalCad]:=novoCliente; //insere o cliente no array

Daí você também precisará fazer os controles, como se ainda há espaço no array para um novo cliente, ou se o cliente é repetido etc.

Em fim, poste o que você já conseguiu fazer, como mais ou menos quer que fique e onde você não está conseguindo fazer.

No aguardo.

Abraços

Postado
Olá felipemussii.

Poste aqui o que já conseguiu fazer e onde está com dúvidas.

PS: O "modo de incluir um novo cliente" vai depender de como está estruturado seu algoritmo, por exemplo, se estiver utilizando um record para os dados dos cliente (nome, telefone, cpf etc) e um array para os cadastros (do tipo record usado para cliente), poderia ser algo mais ou menos assim:

//obtém os dados do novo cliente
...
readln(novoCliente.nome);
...
readln(novoCliente.telefone);
...
...
totalCad:=totalCad+1; //atualizado o total de clientes já cadastrados
...
cadastros[totalCad]:=novoCliente; //insere o cliente no array

Daí você também precisará fazer os controles, como se ainda há espaço no array para um novo cliente, ou se o cliente é repetido etc.

Em fim, poste o que você já conseguiu fazer, como mais ou menos quer que fique e onde você não está conseguindo fazer.

No aguardo.

Abraços

Bem em primeiro lugar obrigado pela ajuda e a paciência que você tem como nós leigos mas em busca de aprendizagem....

Bom vamos la...

o código que fiz esta a baixo me parece funcionar tudo ok só tinha uma pequena duvida no procedimento de "remover cliente" gostaria q você me encaminha-se sobre isso e se achar mais algo errado ...

valeu abraços


uses wincrt,Strings;
type
registro=record
rg,cpf,estado:string[20];
cidade,endereco,nome:string[35];
data,sexo:string[10];
codigo,fitas_loc_atual,fitas_ja_loc:integer;
end;
vet=array[1..10] of registro;

procedure valida(var a:integer; b:integer);
begin
while (a<1) or (a>B) do
begin
write('Valor inválido, entre com um valor válido: ');
readln(a);
end;
end;


procedure cadastro(var a:vet; var b:integer);
var
cont:char;
begin
b:=b+1;
if (b>0) and (b<10) then
begin
gotoxy(15,2);writeln ('\\----------CADASTRO--------//');
writeln;
a[b].codigo:=b;
writeln('Código: ',a[b].codigo);
write('Nome: ');
readln(a[b].nome);
write('Sexo Feminino/Masculino : ');
readln(a[b].sexo);
write('Data de Nascimento: ');
readln(a[b].data);
write('Rg: ');
readln(a[b].rg);
write('CPF: ');
readln(a[b].cpf);
write('Endereço: ');
readln(a[b].endereco);
write('Cidade: ');
readln(a[b].cidade);
write('Estado: ');
readln(a[b].estado);
a[b].fitas_loc_atual:=0;
a[b].fitas_ja_loc:=0;
end;
writeln;
writeln('Pressione qualqer tecla para voltar ao menu.....');
readkey;
end;

procedure lista_cliente(a:vet; b:integer);
var
i:integer;
begin
gotoxy(15,2);writeln('\\------- Clientes Cadastrados ---------//');
for i:= 1 to b do
begin
if a[i].codigo > 0 then
begin
writeln;
writeln('Cliente: ',a[i].nome);
writeln('Código: ',a[i].codigo);
end;
end;
writeln;
writeln('Pressione qualqer tecla para voltar ao menu.....');
readkey;
end;

procedure remover (var a :vet);
var
cont:char;
b:integer;
begin
clrscr;
gotoxy(25,2);writeln('\\---------- REMOVER CLIENTE ----------//');
writeln;
write('Código do cliente: ');
readln(B);
if (a[b].codigo = B) and (a[b].fitas_loc_atual = 0) then
begin
a[b].codigo:=0;
a[b].nome:=' ';
a[b].sexo:=' ';
a[b].data:=' ';
a[b].rg:=' ';
a[b].cpf:=' ';
a[b].endereco:=' ';
a[b].cidade:=' ';
a[b].estado:=' ';
a[b].fitas_loc_atual:=0;
a[b].fitas_ja_loc:=0;
writeln (' \\--------- Cliente excluído ----------//');
end
else
Writeln('Cliente em posse de fitas ');

writeln;
writeln('Pressione qualqer tecla para voltar ao menu.....');
readkey;
end;

procedure locacao(var a :vet ) ;
var
cont:char;
qtd,b:integer;
begin
clrscr;
gotoxy(25,2);Writeln('\\--------- LOCAÇÃO DE FITAS --------//');
writeln;
write('Código do cliente: ');
readln(B);
valida(b,10);
if a[b].fitas_loc_atual = 0 then
begin
write('Quantidade de fitas, máximo 3 fitas por locação: ');
readln(qtd);
valida(qtd,3);
a[b].fitas_loc_atual:=qtd;
end;
writeln;
writeln('Pressione qualqer tecla para voltar ao menu.....');
readkey;
end;

procedure devolucao(var a:vet);
var
cont:char;
qtd,b:integer;
begin
clrscr;
gotoxy(25,2);Writeln('\\---------- DEVOLUÇÃO DE FITAS ----------//');
writeln;
write('Código do cliente: ');
readln(B);
valida(b,10);
writeln('Fitas atualmente locadas: ',a[b].fitas_loc_atual);
write('Quantidade de fitas devolvida: ');
readln(qtd);
valida(qtd,3);
while qtd > a[b].fitas_loc_atual do
begin
writeln('Você não pode devolver mais fitas do que foram locada');
writeln;
write('Entre com valor válido de locação: ');
readln(qtd);
end;
a[b].fitas_loc_atual:=a[b].fitas_loc_atual-qtd;
a[b].fitas_ja_loc:=a[b].fitas_ja_loc+qtd;

if a[b].fitas_loc_atual = 0 then
begin
writeln('Todas fitas devolvidas');
end
else
writeln('Faltam ',a[b].fitas_loc_atual,' Fitas ');

writeln;
writeln('Pressione qualqer tecla para voltar ao menu.....');
readkey;
end;

procedure cli_com_fitas_locadas (a:vet; b:integer);
var
i:integer;
begin
gotoxy(15,2);writeln('\\----- Lista de clientes com fitas locadas -----//');
writeln;
for i:=1 to b do
begin
if a[i].fitas_loc_atual <> 0 then
begin
writeln('Cliente: ',a[i].nome);
writeln('Fitas locadas: ',a[i].fitas_loc_atual);
end;
end;
writeln;
writeln('Pressione qualqer tecla para voltar ao menu.....');
readkey;
end;


var
cliente:vet;
posicao:integer;
op:integer;
Begin
posicao:=0;
repeat
clrscr;
gotoxy(15,2);writeln('##**##**##**##**##**##**##**##**##**##**##**##**##**##');
gotoxy(15,3);writeln('## Menu ##');
gotoxy(15,4);writeln('## 1-Cadastrar novo cliente ##');
gotoxy(15,5);writeln('## 2-Lista de Clientes ##');
gotoxy(15,6);writeln('## 3-Remover Cliente ##');
gotoxy(15,7);writeln('## 4-Locar fitas ##');
gotoxy(15,8);writeln('## 5-Devolução de fitas ##');
gotoxy(15,9);writeln('## 6-Lista de clientes com fitas locadas ##');
gotoxy(15,10);writeln('## 7-Sair do programa ##');
gotoxy(15,11);writeln('##**##**##**##**##**##**##**##**##**##**##**##**##**##');
write('Escolha uma opção: ');
readln(op);
valida(op,7);
case op of
1:begin
clrscr;
cadastro(cliente,posicao);
end;
2:begin
clrscr;
lista_cliente(cliente,posicao); clrscr;
end;
3:begin
clrscr;
remover(cliente); clrscr;
end;
4:begin
clrscr;
locacao(cliente); clrscr;
end;
5:begin
clrscr;
devolucao(cliente); clrscr;
end;
6:begin
clrscr;
cli_com_fitas_locadas(cliente,posicao); clrscr;
end
else
writeln;
writeln('Obrigado por Utilizar nosso programa ......');

end;
until op = 7 ;

End.
Program Video_Locadora ;

  • Membro VIP
Postado

Olá felipemussii.

Bem em primeiro lugar obrigado pela ajuda e a paciência que você tem como nós leigos mas em busca de aprendizagem...

Agradeço por mim e pelos outros colaboradores... :lol:

Bom vamos la...

o código que fiz esta a baixo me parece funcionar tudo ok só tinha uma pequena duvida no procedimento de "remover cliente" gostaria q você me encaminha-se sobre isso e se achar mais algo errado ...

Como é fácil notar, o procedimento de exclusão está intimamente relacionado com o procedimento de inclusão. A depender de como está estruturando uma coisa, você pode fazer a outra ou até mesmo se ajustarem em si para fazer funcionar determinada lógica. Então, na computação, as exclusões são geralmente tratadas a em nível lógico (e não físico), ou seja, não se exclui os dados de verdade, mas apenas os tornam "indisponíveis" ou "invisíveis". (experimente copiar um filme para o computador e depois excluir... - A exclusão é quase que instantânea!! ^_^)

Então, basicamente bastaria você você apagar o código por exemplo. Uma outra forma seria usar mais um campo, nos dados do cliente, que contenha a informação se está ativa ou não.

ex. "ativo :boolean;".

Da forma que você fez estaria certa, só não precisaria apagar os outros dados. Falta também ajustar o else do if, já que está tratando de duas possibilidade (código=posição e fitas locadas =0), mas está dando a mesma mensagem de erro para os dois casos.

Abraços

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!