Skip to content

Instantly share code, notes, and snippets.

@gtcarlos
Created October 25, 2012 20:08
Show Gist options
  • Save gtcarlos/3955102 to your computer and use it in GitHub Desktop.
Save gtcarlos/3955102 to your computer and use it in GitHub Desktop.
Projeto Locadora
#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