Created
October 25, 2012 20:08
-
-
Save gtcarlos/3955102 to your computer and use it in GitHub Desktop.
Projeto Locadora
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
//#include <conio.h> | |
struct cli | |
{ | |
char nome[50]; | |
int codigo; | |
struct mov *alugados; | |
struct cli *prox; | |
}*Clientes; | |
struct mov | |
{ | |
char filme[50]; | |
int codigo; | |
float valor; | |
} *FilmesDisp; | |
void addCliente() | |
{ | |
char ver_opt; | |
printf("\n\n*****Cadastro de Cliente*****\n\n"); | |
if(Clientes == NULL); | |
(Clientes) = (struct cli*) malloc (sizeof(struct cli)); | |
(Clientes) -> prox = 0; | |
do{ | |
//char aux_nome[50]; | |
printf("\nNome: "); | |
fflush(stdin); | |
gets(Clientes->nome); | |
fflush(stdin); | |
printf("Codigo: "); | |
fflush(stdin); | |
scanf("%d",&Clientes->codigo); | |
fflush(stdin); | |
if(Clientes == NULL){ | |
printf("\nMemória Insuficiente!\n");} | |
else{ | |
printf("\nCliente adicionado com sucesso!\n\n");} | |
/* Chamaremos uma função para verificar se o codigo do cliente ja | |
estava sendo usado anteriormente */ | |
/* verif_cliente(); | |
if(verif_cliente){ | |
//O novo cliente não possui, obviamente, nenhum filme locado. | |
Clientes -> alugados = NULL; */ | |
//void menu(); | |
printf("\n\nVoce deseja adicionar outro cliente (S/N)?\n"); | |
scanf("%c", &ver_opt); | |
}while((ver_opt!='N') && (ver_opt!='n')); | |
start(); | |
} | |
void addFilme() | |
{ | |
char ver_opt; | |
printf("\n\n*****Cadastro de Filmes*****\n\n"); | |
do{ | |
if( FilmesDisp == NULL); | |
(FilmesDisp) = (struct mov*) malloc (sizeof(struct mov)); | |
//char aux_nome[50]; | |
printf("\nNome: "); | |
fflush(stdin); | |
gets(FilmesDisp->filme); | |
fflush(stdin); | |
printf("Codigo: "); | |
fflush(stdin); | |
scanf("%d",&FilmesDisp->codigo); | |
fflush(stdin); | |
printf("Valor: "); | |
fflush(stdin); | |
scanf("%f",&FilmesDisp->valor); | |
fflush(stdin); | |
if(FilmesDisp == NULL){ | |
printf("\nMemória Insuficiente!\n");} | |
else{ | |
printf("\nFilme adicionado com sucesso!\n");} | |
printf("\n\nVoce deseja adicionar outro filme (S/N)?\n"); | |
scanf("%c", &ver_opt); | |
}while((ver_opt!='N') && (ver_opt!='n')); | |
start(); | |
} | |
int verif_cliente(struct cli *Clientes, int codigo_aux) | |
{ | |
//Celula utilizada para percorrer a lista! | |
struct cli *aux = 0; | |
//printf("\n\nCodigo do cliente: "); | |
//scanf("%d",&Clientes->codigo); | |
aux = Clientes; | |
aux->codigo = Clientes->codigo; | |
//if(aux->codigo == Clientes->codigo) | |
if(aux->codigo == codigo_aux) | |
{ | |
printf("\nCliente valido!\n"); | |
return 1; | |
} | |
else | |
{ | |
printf("Cliente invalido!\n"); | |
printf("\nDeseja ir para o menu? (S/N) \n"); | |
char opt_menu; | |
fflush(stdin); | |
scanf("%c",&opt_menu); | |
if(opt_menu != 'N' || opt_menu != 'n') | |
{ | |
start(); | |
} | |
else | |
{ | |
exit(1); | |
return 0; | |
} | |
} | |
} | |
int verif_filme(struct mov *FilmesDisp) | |
{ | |
//Celula utilizada para percorrer a lista! | |
struct mov *aux = 0; | |
printf("\n\nCodigo do filme: "); | |
scanf("%d",&Clientes->codigo); | |
aux = FilmesDisp; | |
aux->codigo = FilmesDisp->codigo; | |
if(aux->codigo == FilmesDisp->codigo)return 1; | |
else return 0; | |
} | |
void alocarFilme() | |
{ | |
int cod; | |
printf("\n\n*****Alocar Filme*****\n\n"); | |
/*Primeiramente, devemos verificar a existencia do cliente atraves, | |
do seu codigo, e para isso utilizaremos uma função auxiliar.*/ | |
struct cli *cli_aux; | |
cli_aux = Clientes; | |
int codigo_aux; | |
printf("Digite o codigo do cliente: "); | |
scanf("%d", &codigo_aux); | |
char codigo_auxS[20],clientes_codigoS[20]; | |
/* O função sprintf transforma o conteúdo do texto (codigo_aux ; Clientes -> codigo) em uma string | |
e aloca em uma variável (codigo_auxS ; clientes_codigoS), onde será comparada com o comando strcmp, que utilizaremos para compararmos as strings*/ | |
sprintf(codigo_auxS, "%d", codigo_aux); | |
sprintf(clientes_codigoS, "%d", Clientes->codigo); | |
printf("/* comparando os parametros %s com %s */\n",codigo_auxS, clientes_codigoS); | |
// VALIDAÇÃO | |
strcmp(codigo_auxS,clientes_codigoS); | |
printf("\n/* Valor da comparacao: %d */\n",strcmp(codigo_auxS,clientes_codigoS)); | |
// VALIDAÇÃO | |
/*if(codigo_aux == Clientes -> codigo) | |
cod = 1; | |
else | |
cod = 0; */ | |
/* Aqui nós usaremos o resultado da comparação das strings para validar a existência do cliente */ | |
verif_cliente(Clientes, codigo_aux); | |
int verifica = verif_cliente(Clientes, codigo_aux) | |
; printf("\nValor de verifica: %d\n",verifica); | |
if (verifica == 0) | |
printf("Cliente inexistente! - alocarFilme\n"); | |
if (verifica == 1) | |
printf("Cliente valido!- alocaFilme\n"); | |
/*Logo após a confirmação do cliente, devemos verificar a existencia do filme, | |
e para isso, utilizaremos uma outra função auxiliar*/ | |
struct mov *mov_aux; | |
mov_aux = FilmesDisp; | |
int codigo_mov_aux; | |
printf("Digite o codigo do filme: "); | |
scanf("%d", &codigo_mov_aux); | |
char codigo_auxF[20],filme_codigoF[20]; | |
/* O função sprintf transforma o conteúdo do texto (codigo_aux ; FilmesDisp -> codigo) em uma string | |
e aloca em uma variável (codigo_auxS ; clientes_codigoS), onde será comparada com o strcmp */ | |
sprintf(codigo_auxF, "%d", codigo_aux); | |
sprintf(filme_codigoF, "%d", FilmesDisp->codigo); | |
strcmp(codigo_auxF,filme_codigoF); | |
/* Aqui nós usaremos o resultado da comparação das strings para validar a existência do filme */ | |
while(strcmp(codigo_auxF,filme_codigoF) == 0) | |
{ | |
verif_filme(FilmesDisp); // <<<<<< PRECISA ACHAR UMA FORMA DE PASSAR OS PARAMETROS PRA FUNÇÃO | |
if (strcmp(codigo_auxF,filme_codigoF) == 0) | |
printf("Filme inexistente!\n"); | |
} | |
} | |
void retirarFilme() | |
{ | |
printf("\n*****Retirar Filme*****\n\n"); | |
/*Assim como na função anterior, verificar o cliente é necessario!*/ | |
} | |
void menu() | |
{ | |
// Lista as opções do programa. | |
printf("\nO que voce deseja fazer:\n"); | |
printf("\n1) Inserir um cliente"); | |
printf("\n2) Inserir um filme"); | |
printf("\n3) Alocar um filme para um cliente"); | |
printf("\n4) Retirar um filme de um cliente"); | |
printf("\n9) Sair do programa\n\n"); | |
printf("CMD: "); | |
} | |
void validacao(int *opt) | |
{ | |
int aux = (int) *opt; | |
switch (aux) | |
{ | |
// Chamar a função de cadastro de clientes. | |
case 1: | |
{ addCliente(); | |
break; } | |
// Chamar a função de cadastro de filmes | |
case 2: | |
{ addFilme(); | |
break; } | |
// Chamar a função de alocação de filmes. | |
case 3: | |
{ alocarFilme(); | |
break; } | |
// Chamar a função de retirada de filmes. | |
case 4: | |
{ retirarFilme(); | |
break; } | |
// Parar a execução e sair do programa. | |
case 9: | |
{ break; } | |
// Caso nenhuma opção acima for escolhida, mostrar mensagem de erro e chamar novamente o menu, receber e validar. | |
default: | |
{ printf("%d", opt); | |
printf("\nOPCAO INVALIDA!\n"); | |
menu(); | |
scanf("%d", &opt); | |
validacao(opt); } | |
} | |
} | |
void printar() | |
{ | |
printf("\nPrintar Filme\n\n"); | |
} | |
main() | |
{ | |
printf("**************** L O C A D O R A ****************\n\n"); | |
// Declaração da variável de escolha do menu. | |
int opt = 0; | |
start(); | |
/*// Call da função menu. | |
menu(); | |
// Receber a opção escolhida do menu. | |
scanf("%d", &opt); | |
// Verificar qual opção foi escolhida e validar. | |
validacao(&opt);*/ | |
system("pause"); | |
} | |
int start() | |
{ | |
printf("\n\n******** Menu ********\n\n"); | |
int opt = 0; | |
// Call da função menu. | |
menu(); | |
// Receber a opção escolhida do menu. | |
scanf("%d", &opt); | |
// Verificar qual opção foi escolhida e validar. | |
validacao(&opt); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment