Doubt when passing information from one struct to another

0

I have created a system for studies, something very simple just to take a doubt, that I am already at a time. The following code is from a vehicle lease system (Since the focus is purely didactic and for the code not to get so large I've tried to just put the insertion code of each struct, which has already been tested and is working).

Note below that there is a method called Locacao* inserir_locacao(Locacao *primeiraLocacao){ this method should contain the name of the vehicle and the name of the client already registered, I will probably have to do some type of struct search that I have already created, however I have no idea how to do this, could anyone help me?

//Livrarias do sistema

#include <stdio.h>
//#include <conio.h>
#include <string.h>
#include <stdlib.h>

typedef struct cliente{
    unsigned long int codigo;
    char nome[50];
    struct cliente* prox;
}Cliente;

typedef struct veiculo {
    unsigned int codigo;
    char modelo[50];
    struct veiculo* prox;
}Veiculo;

typedef struct locacao {
    unsigned long int codigo;
    int codCliente;
    char nomeCliente[50];
    int cod_veiculo;
    char modelo[50];
    struct locacao* prox;
}Locacao;

//Declaracao de Funcoes

//Funcoes de gerenciamento de clientes
Cliente* inserir_cliente(Cliente* primeiro);

//Funcoes de gerenciamento de veiculos
Veiculo* inserir_veiculo(Veiculo* primeiro);

//Funcoes de gerenciamento de locacao
//Locacao* nova_locacao(Locacao* primeiro);

void main(){

  //Declaracao de variaveis
  char opcao;
  Cliente *primeiroCliente = NULL;
  Veiculo *primeiroVeiculo = NULL;
  //Locacao *primeiraLocacao = NULL;

  while (opcao != 's') {
  //Menu de opcoes

  printf(" @----------------------------------------------------------------------------@\n");
  printf(" | ");printf("\t\t\t     SISTEMA DE LOCACAO DE VEICULOS");printf("\t\t      |\n");
  printf(" @----------------------------------------------------------------------------@\n");
  printf("\n");
  printf(" @----------------------------------------------------------------------------@\n");
  printf(" | <A> -> Inserir Cliente                                                      |\n");
  printf(" @----------------------------------------------------------------------------@\n");
  printf(" | <B> -> Inserir Veiculo                                                     |\n");
  printf(" |----------------------------------------------------------------------------|\n");
  printf(" | <C> -> Inserir Locacao                                                     |\n");
  printf(" |----------------------------------------------------------------------------|\n");

  //Lendo a opcao do menu
  fflush(stdin);
  opcao = getch();

  //Menu de opcoes
  switch (opcao)
  {
      //Nova locacao
      case 'a':
      case 'A':
        fflush(stdin);
        system("cls");
        printf(" %c----------------------------------------------------------------------------%c\n",201,187);
        printf(" | ");printf("\t\t\t          Inserir Cliente   ");printf("\t\t\t      |\n");
        printf(" %c----------------------------------------------------------------------------%c\n",200,188);
        primeiroCliente = inserir_cliente(primeiroCliente);
        getch();
        system("cls");
      break;

      //Alterar dados da locacao
      case 'b':
      case 'B':
        fflush(stdin);
        system("cls");
        printf(" %c----------------------------------------------------------------------------%c\n",201,187);
        printf(" | ");printf("\t\t\t          Inserir Veiculo     ");printf("\t\t\t      |\n");
        printf(" %c----------------------------------------------------------------------------%c\n",200,188);
        primeiroVeiculo = inserir_veiculo(primeiroVeiculo);
        getch();
        system("cls");
      break;

      //Listar locacao
      case 'c':
      case 'C':
        fflush(stdin);
        system("cls");
        printf(" %c----------------------------------------------------------------------------%c\n",201,187);
        printf(" | ");printf("\t\t\t          Inserir Locacao    ");printf("\t\t\t      |\n");
        printf(" %c----------------------------------------------------------------------------%c\n",200,188);
        //primeiraLocacao = inserir_locacao(primeiraLocacao);
        getch();
        system("cls");
      break;
      //Sair do programa
     case 's':
     case 'S':
          opcao = 's';

     break;

      //Previne a situacao de um usuario qualquer, digitar uma opcao nao fornecida.
     default:
          system("cls");
     break;

  }

}
}

//Inserir Locacao
/*
Locacao* inserir_locacao(Locacao *primeiraLocacao){
    Locacao locacao;
    Locacao *atual = primeiraLocacao;
    char identificador = 'F';
}

//Lendo as informacoes da locacao
printf(" Codigo da locacao: ");
scanf("%u", &locacao.codigo); printf("\n");
printf("%s\n","  " );
fflush(stdin); fgets(locacao.nome, 40, stdin); printf("\n");
*/

//Inserindo veiculo
Veiculo* inserir_veiculo(Veiculo *primeiroVeiculo){
    Veiculo veiculo;
    Veiculo *atual = primeiroVeiculo;
    char identificador = 'F' ;

    //Lendo as informacoes do veiculo.
    printf(" Codigo do Veiculo: ");
    scanf("%u", &veiculo.codigo); printf("\n");
    printf(" Modelo: ");
    fflush(stdin); fgets(veiculo.modelo, 40, stdin); printf("\n");


    //Verificando se o cadastro ja existe.
    for(atual=primeiroVeiculo; atual!=NULL; atual=atual->prox){
        if(atual->codigo==veiculo.codigo){
            identificador = 'V';
            break;
        }
    }

    if(identificador!='V' && (strlen(veiculo.modelo)!=1)){
        //Alocando espacos e guardando informacoes do veiculo.
        Veiculo* NovoVeiculo=(Veiculo*) malloc(sizeof(Veiculo));
        strcpy(NovoVeiculo->modelo, veiculo.modelo);
        NovoVeiculo->codigo = veiculo.codigo;
        NovoVeiculo->prox = primeiroVeiculo;
        printf(" Cadastro realizado com sucesso.");
        printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
        return NovoVeiculo;
    }else{
        printf(" Cadastro inv%clido.", 160);
        printf(" \n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
        return primeiroVeiculo;
    }

}

//Inserindo clientes
Cliente* inserir_cliente(Cliente *primeiroCliente){
    Cliente cliente;
    Cliente *atual = primeiroCliente;
    char identificador = 'F' ;

    //Lendo as informacoes do cliente.
    printf(" Codigo do cliente: ");
    scanf("%u", &cliente.codigo); printf("\n");
    printf(" Nome: ");
    fflush(stdin); fgets(cliente.nome, 40, stdin); printf("\n");


    //Verificando se o cadastro ja existe.
    for(atual=primeiroCliente; atual!=NULL; atual=atual->prox){
        if(atual->codigo==cliente.codigo){
            identificador = 'V';
            break;
        }
    }

    if(identificador!='V' && (strlen(cliente.nome)!=1)){
        //Alocando espacos e guardando informacoes do cliente.
        Cliente* NovoCliente=(Cliente*) malloc(sizeof(Cliente));
        strcpy(NovoCliente->nome, cliente.nome);
        NovoCliente->codigo = cliente.codigo;
        NovoCliente->prox = primeiroCliente;
        printf(" Cadastro realizado com sucesso.");
        printf("\n\n PRESSIONE QUALQUER TECLA PARAVA VOLTAR AO MENU PRINCIPAL.");
        return NovoCliente;
    }else{
        printf(" Cadastro inv%clido.", 160);
        printf(" \n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
        return primeiroCliente;
    }
}
    
asked by anonymous 21.05.2018 / 22:38

0 answers