Ir ao conteúdo
  • Cadastre-se

Trabalho pra faculdade


grapejr

Posts recomendados

Poderiam me ajudar a resolver os problemas que enfrento no programa que eu fiz?

O programa é um gerenciador de uma video locadora.

Estou com problemas na opcao 3(locacao) em q independente da data de aniversario, aparece o recibo de aniversario..

no 4, 5 e 6 eu nao consigo voltar ao menu e nao funcionam muito bem..

alguem poderia me ajudar a corrigir meus erros?

Obrigado desde já


#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct cadastrodvd {
int cod;
char nomefilme[60];
char genero[20];
int classificacaoetaria;
int situacao;
int daqui;
int maqui;
int aaqui;
};
struct endereco_cliente{
char rua[20];
int num;
char bairro[15];
char cidade[20];
char estado[10];
char cep[15];
};
struct cadastrocliente{
char nome[30];
char telefone[30];
char cpf[30];
endereco_cliente endereco;
int dnasc;
int mnasc;
int anasc;
int dvdLocado;
};
struct locacoes{
char dvd_desejado[30];
char cpf_cliente[30];
};


int d;/*Dia atual*/
int m;/*Mes atual*/
int a;/*Ano atual*/
int i=0;/*Contador de cadastro dos DVDs*/
int j=0;/*Contador de clientes e endereços*/
float precoDVD;
int menu=1;/*Opcao do menu principal*/
int opcaoajuda;/*Opcao do menu de ajuda*/
int quantdvds=0;/*Quantidade de DVDs no estoque*/
char dvdalocar[30];/*DVD que se deseja locar para comparacao*/
char dvdDevolver[30];
char cpf_cliente[30];/*CPF do cliente que quer locar um DVD*/
cadastrodvd cadastroD[200];/*Até 200 cadastros de DVDs, armazenados em vetor.*/
cadastrocliente Cliente[300];/*Até 300 cadastros de clientes, armazenados em vetor*/
endereco_cliente endereco[300];/*Até 300 endereços de clientes, armazenados em vetor*/
int verificarIdade;
int verificarTempoDeVida;


void espera(){
printf (".");
for(i=0;i<100000000;i++);
printf (".");
for(i=0;i<100000000;i++);
printf (".\n");
for(i=0;i<100000000;i++);
printf ("\n");
}


void exibirmenu() {
system("cls");
printf (".____________________________________.\n");
printf ("| MENU |\n");
printf ("| 1 . CADASTRAR DVD |\n");
printf ("| 2 . CADASTRAR CLIENTE |\n");
printf ("| 3 . LOCAR DVD |\n");
printf ("| 4 . VISUALIZAR TEMPO DE VIDA DO DVD|\n");
printf ("| 5 . ESTOQUE |\n");
printf ("| 6 . DEVOLUCAO DE DVD |\n");
printf ("| 0 . SAIR |\n");
printf (".____________________________________.\n");
printf ("Digite a opcao desejada: ");
}

void exibirajuda(){
printf ("Deseja continuar? Digite 1 para continuar ou 0 para voltar ao menu: ");
}

int ajuda(int x){
exibirajuda();
x=opcaoajuda;
scanf("%d",&opcaoajuda);
while ((opcaoajuda<0)||(opcaoajuda>1)){
printf ("Erro.\nPressione ENTER para continuar.");
getch();
system("cls");
exibirajuda();
scanf ("%d",&opcaoajuda);
}
system("cls");
return (opcaoajuda);
}


void exibircliente(cadastrocliente Cliente,endereco_cliente endereco){
printf(" Os dados do cliente sao:\n\n");
printf("Nome: ");
fflush(stdin);
puts(Cliente.nome);
printf("CPF: ");
fflush(stdin);
puts(Cliente.cpf);
printf("Telefone: ");
fflush(stdin);
puts(Cliente.telefone);
printf("Data de nascimento: ");
printf("%d / %d / %d",Cliente.dnasc,Cliente.mnasc,Cliente.anasc);
printf("\nSituacao de locacao(0-livre/1-locacao pendente): ");
printf("%d",Cliente.dvdLocado);
printf("\n\n --Endereco-- \n");
printf("Cidade: ");
fflush(stdin);
puts(endereco.cidade);
printf("Estado(UF): ");
fflush(stdin);
puts(endereco.estado);
printf("Bairro: ");
fflush(stdin);
puts(endereco.bairro);
printf("CEP: ");
fflush(stdin);
puts(endereco.cep);
printf("Rua: ");
fflush(stdin);
puts(endereco.rua);
printf("Numero: ");
printf("%d",endereco.num);

printf("\n\nENTER para continuar.");
getch();
system("cls");
}

void exibirdvd(cadastrodvd cadastroD){
system("cls");
printf("\n DVD encontrado no estoque:\n\n");
printf("Nome: ");
fflush(stdin);
puts(cadastroD.nomefilme);
printf("\nCodigo: %d", cadastroD.cod);
printf("\nGenero: ");
fflush(stdin);
puts(cadastroD.genero);
printf("\nClassificacao etaria: +%d",cadastroD.classificacaoetaria);
printf("\nData de aquisicao: %d / %d / %d",cadastroD.daqui,cadastroD.maqui,cadastroD.aaqui);
printf("\nSituacao (1=LOCADO/2=LIVRE): %d",cadastroD.situacao);
}

void reciboLocacao(){
system("cls");
printf(".--------------------RECIBO--------------------.\n\n");
cadastroD[i].situacao=1;
printf("Nome: ");
fflush(stdin);
puts(cadastroD[i].nomefilme);
printf("\n\n");
printf("Valor da locacao: %.2f",precoDVD);
printf("\nRealizou a locacao no dia: %d / %d / %d",d,m,a);
int dialimite;
dialimite=d+2;
printf("\nDevera devolver ate o dia: %d / %d / %d",dialimite,m,a);
printf("\nCaso contrario devera pagar R$3,00 por dia ate a devolucao.\n\n");
printf(".----------------------------------------------.\n\n");
printf("Locacao feita com sucesso!");
}

void reciboNiver(){
system("cls");
printf(".--------------------RECIBO--------------------.\n\n");
printf(".-------Parabens, hoje e seu aniversario!------.\n\n");
cadastroD[i].situacao=1;
printf("Nome: ");
fflush(stdin);
puts(cadastroD[i].nomefilme);
printf("\n\n");
float valorNiver=precoDVD/2;
printf("Valor da locacao: %.2f \n- voce vai pagar metade do preco como presente!",valorNiver);
printf("\nRealizou a locacao no dia: %d / %d / %d",d,m,a);
int dialimite;
dialimite=d+2;
printf("\nDevera devolver ate o dia: %d / %d / %d",dialimite,m,a);
printf("\nCaso contrario devera pagar R$3,00 por dia ate a devolucao.\n\n");
printf(".----------------------------------------------.\n\n");
printf("Locacao feita com sucesso!");
}

void cadastrarClientes(){
if(opcaoajuda==1){
for (int j=0;j<300;j++) {
printf ("2 . CADASTRAR CLIENTE:\n\n");
printf ("Digite\n");
printf ("a) Nome completo: ");
fflush(stdin);
gets(Cliente[j].nome);
printf ("\n");
printf("b) CPF (xxx.xxx.xxx-xx): ");
fflush(stdin);
gets(Cliente[j].cpf);
while((Cliente[j].cpf[3]!='.')or(Cliente[j].cpf[7]!='.')or(Cliente[j].cpf[11]!='-')) {
system("cls");
printf("CPF invalido, informe-o novamente,");
printf("no formato xxx.xxx.xxx-xx : ");fflush(stdin);
gets(Cliente[j].cpf);
}
printf ("\n");
printf ("c) Data de nascimento: \n");
printf(" Dia: ");
scanf("%d",&Cliente[j].dnasc);
printf(" Mes: ");
scanf("%d",&Cliente[j].mnasc);
printf(" Ano: ");
scanf("%d",&Cliente[j].anasc);
while((Cliente[j].dnasc<=0)||(Cliente[j].dnasc>31)||(Cliente[j].mnasc>12)){//restringe a data digitada do cliente a uma data valida
printf("Data invalida, tente novamente: ");
fflush(stdin);
printf(" Dia: ");
scanf("%d",&Cliente[j].dnasc);
printf(" Mes: ");
scanf("%d",&Cliente[j].mnasc);
printf(" Ano: ");
scanf("%d",&Cliente[j].anasc);
}
printf ("\n");
printf ("d) Telefone: ");
fflush(stdin);
gets(Cliente[j].telefone);
printf ("\n");
printf ("e) Endereco: \n");
printf (" Estado(UF): ");
fflush(stdin);
gets(endereco[j].estado);
printf ("\n Cidade: ");
fflush(stdin);
gets(endereco[j].cidade);
printf ("\n CEP: ");
fflush(stdin);
gets(endereco[j].cep);
printf ("\n Bairro: ");
fflush(stdin);
gets(endereco[j].bairro);
printf ("\n Rua: ");
fflush(stdin);
gets(endereco[j].rua);
printf ("\n Numero: ");
scanf("%d",&endereco[j].num);
Cliente[j].dvdLocado=0;
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0)
break;
}

}
}

void cadastroDVD(){
if(opcaoajuda==1){
for (int i=0;i<200;i++){
system("cls");
printf ("1 . CADASTRO DE DVD:\n\n");
printf ("Digite\n");
printf ("a) Codigo numerico para o DVD: ");
scanf ("%d",&cadastroD[i].cod);
printf ("\n");
printf ("b) Nome do filme: ");
fflush (stdin);
gets (cadastroD[i].nomefilme);
printf ("\n");
printf ("c) Genero (ACAO/COMEDIA/EROTICO/FICCAO/INFANTIL/ROMANCE/TERROR): ");
fflush (stdin);
gets (cadastroD[i].genero);
printf ("\n");
printf ("d) Classificacao etaria: +");
scanf ("%d", &cadastroD[i].classificacaoetaria);
printf ("\n");
printf ("e) Data de aquisicao: \n");
printf(" Dia: ");
scanf("%d",&cadastroD[i].daqui);
printf(" Mes: ");
scanf("%d",&cadastroD[i].maqui);
printf(" Ano: ");
scanf("%d",&cadastroD[i].aaqui);
while((cadastroD[i].daqui<=0)||(cadastroD[i].daqui>31)||(cadastroD[i].maqui>12)){
printf("Data invalida, tente novamente: ");
fflush(stdin);
printf(" Dia: ");
scanf("%d",&cadastroD[i].daqui);
printf(" Mes: ");
scanf("%d",&cadastroD[i].maqui);
printf(" Ano: ");
scanf("%d",&cadastroD[i].aaqui);
}
printf ("\n");
printf ("f) Situacao (1=LOCADO/2=LIVRE): ");
scanf ("%d",&cadastroD[i].situacao);
while ((cadastroD[i].situacao<1)||(cadastroD[i].situacao>2)){
printf ("Erro na situacao.\n Digite a situacao do DVD novamente: ");
scanf ("%d",&cadastroD[i].situacao);
}
printf("--CADASTRO DE DVD FEITO COM SUCESSO--\n");
printf("ENTER para continuar.");
getch();
system("cls");
quantdvds++;
ajuda(opcaoajuda);
if (opcaoajuda==0)
break;
}
}
}

void locacao(){
if(opcaoajuda==1){
if(Cliente[0].cpf[0] == '\0'){
char sn='\0';
system("cls");
printf("voce ainda nao cadastrou nenhum cliente. \nPor favor, cadastre. \n Deseja ir para o menu de cadastro? (s/n)");
fflush(stdin);
scanf("%c",&sn);
if(sn == 's'){
system("cls");
getchar();
cadastrarClientes();
}//fecha if do s/n
else
opcaoajuda=0;
}/*fecha if do cliente.cpf*/
else{

printf ("3 . LOCAR DVD:\n\n");
printf ("Informe o CPF do cliente para verificarmos se ja esta cadastrado\n(xxx.xxx.xxx-xx): ");
fflush(stdin);
gets(cpf_cliente);
espera();
while((cpf_cliente[3]!='.')or(cpf_cliente[7]!='.')or(cpf_cliente[11]!='-')){
system("cls");
printf("CPF invalido. Digite novamente");
printf("no formato xxx.xxx.xxx-xx :");
fflush(stdin);
gets(cpf_cliente);
}
for(j=0;j<300;j++){
if (strcmp(cpf_cliente,Cliente[j].cpf)==0){
system("cls");
printf("\n\nCliente ja cadastrado.");
exibircliente(Cliente[j], endereco[j]);
if (Cliente[j].dvdLocado==1) {
system("cls");
printf("O cliente possui uma locacao pendente, devolva o DVD antes de realizar a locacao.\n\n");
ajuda(opcaoajuda);
if (opcaoajuda==0) break;//resolver
}
system("cls");
printf("Qual DVD deseja locar? ");
fflush(stdin);
gets(dvdalocar);
break;//parar o for do vetor de clientes.
}
else if (strcmp(cpf_cliente,Cliente[j].cpf)!=0){
printf ("Cliente nao cadastrado, volte ao menu e cadastre-o.");
printf ("\n\nENTER para continuar");
getch();
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0){ break;opcaoajuda=0;}//resolver problema pra voltar ao menu
}
}
for(i=0;i<200;i++){
if (strcmp(dvdalocar,cadastroD[i].nomefilme)==0){
printf("Possuimos esse DVD no estoque.\n");
exibirdvd(cadastroD[i]);
printf("\n\nPressione ENTER para continuar");
getch();
system("cls");

//parar o for do vetor de dvds.
}
if (cadastroD[i].situacao==2){
char sn='\0';
printf ("O DVD esta disponivel.\n");
printf ("Deseja realizar a locacao? (s/n) ");
fflush(stdin);
scanf("%c",&sn);
if(sn == 's'){
system("cls");
verificarIdade=a-Cliente[j].anasc;
if(verificarIdade<cadastroD[i].classificacaoetaria){

printf ("O cliente nao possui idade para assistir esse filme.\nENTER para continuar. Por favor, volte ao menu.");
getch();
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0) break;
}
else{
if ((d==Cliente[j].dnasc)&&(m==Cliente[j].mnasc)) {
cadastroD[i].situacao=1;
Cliente[j].dvdLocado=1;
reciboNiver();
getch();
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0) break;

}
else {
cadastroD[i].situacao=1;
Cliente[j].dvdLocado=1;
reciboLocacao();
getch();
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0) break;}}


}
else {
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0)
break;}

}//fecha if
else {if (strcmp(dvdalocar,cadastroD[i].nomefilme)!=0){
system("cls");
printf ("Nao possuimos esse DVD no estoque.\nEnter para continuar. Por favor, volte ao menu.");
getch();
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0) break;
}//fecha o if
}//fecha o else
}//fecha o for do contador de dvds

}//fecha o else
}//fecha o if inicial
else{ ajuda(opcaoajuda);
if (opcaoajuda==0){
system("cls");
}}
}//fecha a funcao

void Estoque(){
if (opcaoajuda==1){
printf("5 . ESTOQUE:\n\n");
espera();
printf("ENTER para visualizar");
for (int i=0;i<200;i++){
exibirdvd(cadastroD[i]);
printf("\n\nDeseja continuar?(s/n): ");
char sn='\0';
fflush(stdin);
scanf("%c",&sn);
if(sn == 'n') break;

}
printf ("\nTotal no Estoque: %d\n",quantdvds);
printf("\n ENTER para poder voltar ao menu.");
getch();
system("cls");
ajuda(opcaoajuda);
}
}

void TempoDeVida(){
if(opcaoajuda==1){
for (int i=0;i<200;i++) {
printf("4 . VISUALIZAR TEMPO DE VIDA DO DVD\n\n");
printf("O sistema fara uma busca daqueles DVDs com mais de 1 ano.\n");
espera();
printf("\nPressione ENTER para ver o resultado.\n");
getch();
verificarTempoDeVida=a-cadastroD[i].aaqui;
if (verificarTempoDeVida>=1){
printf("\n--------ENCONTRADO(s)--------\n");
fflush(stdin);
printf(" Codigo: %d",cadastroD[i].cod);
printf("\n Nome do filme: ");
fflush(stdin);
puts(cadastroD[i].nomefilme);
printf("\n Data de aquisicao: %d / %d / %d",cadastroD[i].daqui,cadastroD[i].maqui,cadastroD[i].aaqui);
printf("\n Por favor, efetue a troca do DVD");
printf("\n\n ENTER para poder voltar ao menu.");
getch();
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0)
break;
}else {
printf("\n-------NAO FOI ENCONTRADO NENHUM DVD-------\n");
printf("\nEnter para poder voltar ao menu.");
getch();
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0)
break;
}

}

}
}


void Devolucao(){
if(opcaoajuda==1){
if(Cliente[0].cpf[0] == '\0'){
char sn='\0';
system("cls");
printf("voce ainda nao cadastrou nenhum cliente para fazer uma devolucao. \nPor favor, cadastre. \n Deseja ir para o menu de cadastro? (s/n)");
fflush(stdin);
scanf("%c",&sn);
if(sn == 's'){
system("cls");
getchar();
cadastrarClientes();
}//fecha if do s/n
else
opcaoajuda=0;
}/*fecha if do cliente.cpf*/
else{

printf ("6 . DEVOLVER DVD:\n\n");
printf ("Informe o CPF do cliente para verificarmos se ja esta cadastrado\n(xxx.xxx.xxx-xx): ");
fflush(stdin);
gets(cpf_cliente);
espera();
while((cpf_cliente[3]!='.')or(cpf_cliente[7]!='.')or(cpf_cliente[11]!='-')){
system("cls");
printf("CPF invalido. Digite novamente");
printf("no formato xxx.xxx.xxx-xx :");
fflush(stdin);
gets(cpf_cliente);
}
for(j=0;j<300;j++){
if (strcmp(cpf_cliente,Cliente[j].cpf)==0){
system("cls");
printf("\n\nCliente ja cadastrado.");
exibircliente(Cliente[j], endereco[j]);
if (Cliente[j].dvdLocado==1) {
system("cls");
printf("Devolucao do DVD: \n\n");
printf("Qual DVD deseja devolver? ");
fflush(stdin);
gets(dvdDevolver);
break;//parar o for do vetor de clientes.
}
else if (strcmp(cpf_cliente,Cliente[j].cpf)!=0){
printf ("Cliente nao cadastrado, volte ao menu e cadastre-o.");
printf ("\n\nENTER para continuar");
getch();
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0){ break;opcaoajuda=0;}//resolver problema pra voltar ao menu
}
}
for(i=0;i<200;i++){
if (strcmp(dvdDevolver,cadastroD[i].nomefilme)==0){
getch();
printf("O DVD esta pendente, iniciar devolucao.\n");
cadastroD[i].situacao=2;
exibirdvd(cadastroD[i]);
printf("\n\nDevolucao feita com sucesso. Enter para continuar");
getch();
system("cls");
break;
}//fecha if
else {if (strcmp(dvdDevolver,cadastroD[i].nomefilme)!=0){
system("cls");
printf ("Nao possuimos esse DVD no estoque.\nEnter para continuar. Por favor, volte ao menu.");
getch();
system("cls");
ajuda(opcaoajuda);
if (opcaoajuda==0) break;
}//fecha o if
}//fecha o else
}//fecha o for do contador de dvds

}//fecha o else
}//fecha o if inicial
}else{ ajuda(opcaoajuda);
if (opcaoajuda==0){
system("cls");
}}
}


int switchmenu(int x) {
scanf("%d",&menu);
while((menu<0)||(menu>6)){
printf("Numero invalido. Digite um menu valido: ");
scanf("%d",&menu);
}
system("cls");
switch (menu){
case 0:
printf("Programa sendo encerrado\nAdeus!");
break;

case 1:

system("cls");
ajuda(opcaoajuda);
while(opcaoajuda==1){
cadastroDVD();
}
break;

case 2:
system("cls");
ajuda(opcaoajuda);
while (opcaoajuda==1){
cadastrarClientes();
}
system("cls");
break;
case 3:
system("cls");
ajuda(opcaoajuda);
while(opcaoajuda==1){
locacao();
}
break;
case 4:
system("cls");
ajuda(opcaoajuda);
while(opcaoajuda==1){
TempoDeVida();
}
break;
case 5:
system("cls");
ajuda(opcaoajuda);
while (opcaoajuda==1){
Estoque();
}
break;
case 6:
system("cls");
ajuda(opcaoajuda);
while (opcaoajuda==1){
Devolucao();
}
break;
}
return (menu);
}

int main () {
Cliente[0].cpf[0] = '\0' ;
printf ("----Bem vindo ao Gerenciador de Locacoes de DVDs----\n");
printf ("Por favor, informe a data atual.\n");
printf (" Dia: ");
scanf ("%d",&d);
printf (" Mes: ");
scanf ("%d",&m);
printf (" Ano: ");
scanf ("%d",&a);
printf ("Verificando a data ");
espera();
while((d<=0)||(d>31)||(m>12)){
system("cls");
printf("Data invalida, tente novamente:\n ");
fflush(stdin);
printf(" Dia: ");
scanf("%d",&d);
printf(" Mes: ");
scanf("%d",&m);
printf(" Ano: ");
scanf("%d",&a);
(espera);
}
printf ("DATA, OK.\n");
printf ("\nAgora, digite o valor de cada DVD para locacao: R$");
scanf ("%f",&precoDVD);
while (precoDVD<=0) {
printf ("\nPreco invalido.\n Digite novamente o valor: R$");
scanf ("%f",&precoDVD);
}
printf ("\nObrigado, dados armazenados.\n");
printf ("_INICIANDO O PROGRAMA_\n");
espera();
while((menu>0)&&(menu<4)){
exibirmenu();
switchmenu(menu);
}
getch ();
return 0;
}
#include <stdio.h>

Link para o comentário
Compartilhar em outros sites

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!