Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Alisson Pavinhaski

C Como Criar sistema de cadastro de clientes e locação de veículos?

Recommended Posts

Olá, 

Gostaria de saber como é feito um programa em c, sobre cadastro de clientes, relatório e locação de veículos, tenho que desenvolver um programa para a faculdade com essa base e não estou conseguindo, alguém poderia me ajudar, a respeito do mesmo, com um exemplo feito.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alisson Pavinhaski  Por se tratar de um exercício ninguém pode dar código pronto ou modelo a não ser que você poste sua tentativa.
 Sistema de registro e login você pode fazer usando struct.
 Locação relatorio e etc... Você vai ter que criar um código que crie arquivos e salve nesses arquivo depois você só tem que fazer a leitura

Na questão do sistema de login com struct isso te ajuda ↓
http://www.clubedohardware.com.br/forums/topic/1249435-comparar-login-e-senha-a-partir-de-arquivo-txt/?page=2


 Faz uma tentativa e posta seu código que a galera te ajuda :atirador:

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • @Xaws O código feito por mim, não está completo não consigo fazer a inserção do cadastro de clientes nele peguei um exemplo e modifiquei completamente pra depois criar o meu próprio programa, segue o código abaixo.

     

    #include<stdio.h>
    #include<malloc.h>
    #include<string.h>
    #include <stdio.h>
    #include <stdlib.h>

    char c;
    typedef struct veic{                    /* Estrutura de Veiculo */
      char placa[8];
      char marca[15];
      char modelo[30];
      int ano;
      struct veic* prox;
    } tveic;

    typedef tveic* veiculo;

    typedef struct data{
      int dia;
      int mes;
      int ano;
    } tdata;

    typedef struct manut{                    /* Estrutura de Manutencao */
      int km;
      tdata data;
      double valor;
      char placa[8];
      struct manut* prox;
    } tmanut;
    typedef tmanut* manutencao;

    void flush_in (){                    /* Funcao para limpar o buffer */
      int ch;
      while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){}
    }

    void inputs (char *prompt, char *s, int count){        /* Funcao para receber strings com o gets e verificar se cabem dentro do vetor */
      char p[255];

      do {
        printf(prompt);
        gets(p);
        if(strlen(p)>count) printf("\nmuito longo\n");
      } while (strlen(p)>count);
      strcpy(s, p);
    }

    void criarv (veiculo *L){                /* Funcao que cria a lista encadeada vazia veiculo */
      *L = NULL;
    }

    void criarm (manutencao *L){                /* Funcao que cria a lista encadeada vazia manutencao */
      *L = NULL;
    }

    int vaziaveiculo (veiculo L){                    /* Funcao que verifica se a lista veiculo esta vazia */
      return (L == NULL);
    }

    int vaziamanut (manutencao L){                    /* Funcao que verifica se a lista manutencao esta vazia */
      return (L == NULL);
    }
    /* Menu do aplicativo */
    void menu(){                    
       system("cls"); 
       printf("|-------------------------------------------------------------------------|\n");
       printf("|                            MENU PRINCIPAL                               |\n");
       printf("|-------------------------------------------------------------------------|\n");
       printf("| Entre com a opcao desejada:                                             |\n");
       printf("|                                                                         |\n"); 
       printf("|  (1) : Cadastrar veiculo                                                |\n");
       printf("|  (2) : Cadastrar manutencao                                             |\n");
       printf("|  (3) : Listar veiculo cadastrado                                        |\n");
       printf("|  (4) : Localizar dados do veiculo ( pela placa)                         |\n");
       printf("|  (5) : Listar as manutencoes de um veiculo                              |\n");
       printf("|  (6) : Calcular valor dos gasto com manutencoes de um veiculo           |\n");
       printf("|  (7) : Remover dado de uma manutencao de um veiculo                     |\n");
       printf("|  (8) : Remover cadastro de um veiculo.                                  |\n");
       printf("|  (9) : Alterar cadastro de um veiculo                                   |\n");
       printf("|  (10): Alterar cadastro de uma manutencao de um veiculo                 |\n");
       printf("|  (11): Exibir um relatorio                                              |\n");
       printf("|  (12): Sair                                                             |\n");
       printf("|-------------------------------------------------------------------------|\n");
       printf("    opcao:  ");
    }

    int cadveiculo(veiculo *L){                /* Funcao que insere dados de veiculos*/
      veiculo novo;

      novo = (veiculo) malloc(sizeof(tveic));
      if (*L == NULL) {                    /* 1a. insersao */
        if (novo == NULL) return 0;                /* erro: memoria insuficiente */
        inputs("Digite a placa: ", novo->placa, 7);
        inputs("Digite a marca: ", novo->marca, 14);
        inputs("Digite a modelo: ",novo->modelo, 29);
        printf("Digite o ano: ");
        scanf("%d",&novo->ano);
        novo->prox = NULL;
        *L = novo;
        return 1;
      }
      else {                        /* insersao na primeira posisao em uma lista nao vazia */
        if (novo == NULL) return 0;                /* erro: memoria insuficiente */
        inputs("Digite a placa: ", novo->placa, 7);
        inputs("Digite a marca: ", novo->marca, 15);
        inputs("Digite a modelo: ",novo->modelo, 30);
        printf("Digite o ano: ");
        scanf("%d",&novo->ano);
        novo->prox = *L;
        *L = novo;
        return 1;
      } 
    }

    int cadmanutencao(manutencao *Lm, veiculo *Lv){                /*Funcao que insere dados de manutensoes*/
      manutencao novo;
      veiculo lista;
      int c1=1;
      int e;

      novo = (manutencao) malloc(sizeof(tmanut));
      if(vaziaveiculo(*Lv)){
        printf("\nA lista de veiculos? vazia!\n");
        printf("\n\n\nTecle Enter para retornar ao menu");
        scanf("%c",&c);
        return 0;
      }

      for(lista=*Lv;lista!=NULL;lista=lista->prox){
        printf("%d - %s\n",c1,lista->placa);
        c1++;
      }
      printf("\n\nInforme um numero para cadastrar a manutencao: ");
      scanf("%d",&e);
      lista=*Lv;
      for(c1=1;c1<e;c1++) lista=lista->prox;
        strcpy(novo->placa,lista->placa);
        printf("%s\n",novo->placa);

      if (*Lm == NULL) {                    /* 1a. insersao */
        if (novo == NULL) return 0;                /* erro: memoria insuficiente */
          printf("Digite a quilometragem: ");
          scanf("%d",&novo->km);
          printf("Digite o dia: "); 
          scanf("%d",&novo->data.dia);
          printf("Digite o mes: ");
          scanf("%d",&novo->data.mes);
          printf("Digite o ano: ");
          scanf("%d",&novo->data.ano);
          printf("Digite o valor: ");
          scanf("%lf",&novo->valor);
          novo->prox = NULL;
          *Lm = novo;
          return 1;
      }
      else {                        /* insersao na primeira posicao em uma lista nao vazia */
        if (novo == NULL) return 0;                /* erro: memoria insuficiente */
          printf("Digite a quilometragem: ");
          scanf("%d",&novo->km);
          printf("Digite o dia: ");
          scanf("%d",&novo->data.dia);
          printf("Digite o mes: ");
          scanf("%d",&novo->data.mes);
          printf("Digite o ano: ");
          scanf("%d",&novo->data.ano);
          printf("Digite o valor: ");
          scanf("%lf",&novo->valor);
          novo->prox = *Lm;
          *Lm = novo;
          return 1;
      } 
    }

    void imprimirveiculos(veiculo L){
      int n;
      veiculo temp=L;
      char ch;

      if(vaziaveiculo(temp)){
        printf("\nA lista esta? vazia!\n");
         printf("\n\n\nTecle Enter para retornar ao menu");
        scanf("%c",&ch);
      }
      else {
        system("cls"); 
        printf("\n\n\n");
        printf("|-------------------------------------------------------|\n");
        printf("|               Listar Veiculo Cadastrado               |\n");
        printf("|-------------------------------------------------------|\n");
        printf("|    Placa    |       Marca  |   Modelo   |  Ano        |\n");
        printf("|-------------------------------------------------------|\n");
        while(temp!=NULL){
          printf("| %7s     |     %6s   |%10s  |  %3d       |\n",temp->placa, temp->marca, temp->modelo, temp->ano);
          temp=temp->prox;
        }
        printf("|-------------------------------------------------------|\n");
        printf("\n\n\nTecle Enter para retornar ao menu");
        scanf("%c",&ch);
      }
    }


    int removerveiculo (veiculo *Lv, manutencao *Lm){
      veiculo atualv, anteriorv;
      manutencao atualm, anteriorm;
      char excluir[8];
     
      atualv=anteriorv->prox;

      if(vaziaveiculo(*Lv)) return 0; //Lista esta? vazia

      inputs("Informe a placa do veiculo a ser excluido: ", excluir, 7);
      if(*Lm!=NULL){
        anteriorm=*Lm;
        atualm=anteriorm->prox;
        while(atualm!=NULL) {
          if(!strcmp(excluir,anteriorm->placa)) {
           *Lm=anteriorm->prox;
            free(anteriorm);
          }
          else {
            if(!strcmp(excluir,atualm->placa)){
              anteriorm->prox=atualm->prox;
            }
            else {
              anteriorm=anteriorm->prox;
              atualm=atualm->prox;
            }
          }
        }
      }

      while(atualv!=NULL) {
        if(!strcmp(excluir,anteriorv->placa)) {
         *Lv=anteriorv->prox;
          free(anteriorv);
          return (1);
        }
        else {
          if(!strcmp(excluir,atualv->placa)){
            anteriorv->prox=atualv->prox;
            return (1);
          }
          else {
            anteriorv=anteriorv->prox;
            atualv=atualv->prox;
          }
        }
      }
      return (0);
    }

    int localizavei(veiculo *L){   //Localizar veiculos cadastrados 
      veiculo temp;
      char local[8];

      system("cls");
      if(vaziaveiculo(*L)) {
        printf("Lista Vazia!\n");
        return (1);
      }
      inputs("Informe a placa do veiculo a ser localizado: ", local, 8);
      system("cls");
      for(temp=*L;temp!=NULL;temp=temp->prox){
        if(!strcmp(local,temp->placa)) {
          printf("\n\n\n");
          printf("|-----------------------------------------------|\n");
          printf("|        Listar Veiculo Cadastrado(Placa)       |\n");
          printf("|-----------------------------------------------|\n");
          printf("|  Placa  |    Marca      |   Modelo  |  Ano    |\n");
          printf("|-----------------------------------------------|\n");
          printf("|%7s  |   %6s      |%10s | %3d    |\n",temp->placa, temp->marca, temp->modelo, temp->ano);
          printf("|-----------------------------------------------|\n");
          printf("\n\n\nTecle <Enter> para retornar ao menu");
          scanf("%c",&c);
          return (0);
        }
      }
      return (1);
    }
    /*  
    int calculagasto(manutencao L, char pplaca[8]){
        int total;
        total=0;
        manutencao p;
        p = L;
        if (L == NULL){
          printf("\nA lista esta vazia!\n");
          printf("\n\n\nTecle Enter para retornar ao menu");
          scanf("%c",&c);
          return total;
        }
        while (p != NULL) {
          if (!strcmp(p->placa, pplaca)) {
            total+=p->valor;
          }   
          p = p->prox;
        }
       return total;
    }
    */
    void relatorioveiculos (veiculo Lv, manutencao Lm){
      veiculo listav;
      manutencao listam;
      int count;
      system("cls"); 
      for(listav=Lv;listav!=NULL;listav=listav->prox){
          printf("\n\n\n");
          printf("|-----------------------------------------------------|\n");
          printf("|                    Relatorio                        |\n");                                            
          printf("|-----------------------------------------------------|\n");
          printf("|  Placa  |    Marca      |   Modelo  |  Ano3         |\n");
          printf("|-----------------------------------------------------|\n");
          printf("| %s    | %s          |  %s     |  %d         |\n",listav->placa, listav->marca, listav->modelo, listav->ano);
          count=1;
          for(listam=Lm;listam!=NULL;listam=listam->prox){
             printf("|-----------------------------------------------------|\n");
             printf("| Manut.  |  Kilometragem |   Data    |   Valor       |\n");
             printf("|-----------------------------------------------------|\n");                                    
            if(!strcmp(listam->placa,listav->placa)){
               printf("|   %d     |    %d        | %d/%d/%d | %5.2f   |\n",count, listam->km, listam->data.dia, listam->data.mes, listam->data.ano, listam->valor);
               count++;
            }
          }
      }
      printf("|-----------------------------------------------------|\n");
      printf("\n\n\nTecle Enter para retornar ao menu");
      scanf("%c",&c);
    }

    void relatoriomanutencao (veiculo Lv, manutencao Lm){
      veiculo listav;
      manutencao listam;
      int count;
      system("cls"); 
       count=1; 
       for(listav=Lv;listav!=NULL;listav=listav->prox){
          printf("\n\n\n");
          printf("|------------------------------------------------------|\n");
          printf("|               Lista de Manutencoes                   |\n");                                            
          printf("|------------------------------------------------------|\n");
          printf("|  Manut.  |  Kilometragem |   Data    |   Valor       |\n");
          printf("|------------------------------------------------------|\n");       
          for(listam=Lm;listam!=NULL;listam=listam->prox){
             if(!strcmp(listam->placa,listav->placa)){
                printf("|    %d     |    %d        | %d/%d/%d | %5.2f   |\n",count, listam->km, listam->data.dia, listam->data.mes, listam->data.ano, listam->valor);
                count++;
             }
           }
      }    
      printf("|------------------------------------------------------|\n");
      printf("\n\n\nTecle Enter para retornar ao menu");
      scanf("%c",&c);
    }

    /*int removemnt(tlistamnt *L, char pplaca[8]){
      tlistamnt a, p;
      int n;
      if (*L == NULL) return 0; /* erro: lista vazia 
      p = *L;
      n = 1;
      while ((!strcmp(p->placa,pplaca)) && (p!=NULL)) {
        a = p;
        p = p->prox;
        n++;
      }
      if (p == NULL) return 0; /* erro: placa não encontrada 
      if (n == 1)
        *L = p->prox;
      else  
        a->prox = p->prox;
      free(p);
      return(1);
    }
    */


    int main() {
      veiculo cadveic;                    /* variavel cadastro de veiculos */
      manutencao cadman;               /* declaracao da variavel cadastro de manutencoes */
      int opcao;                        /* opcao digitada pelo usuário */
      int fim = 0;                        /* encerra o laço do-while e por consequência o programa */
      char placavei[8];
      criarv(&cadveic);
      criarm(&cadman);
         
      while (!fim){
        menu();
        opcao = 0;   
        scanf("%d", &opcao); 
        flush_in(); 
        switch(opcao){
          case 1: if(cadveiculo(&cadveic)){
                    printf("Veiculo cadastrado com sucesso!\n");
                    scanf("%c",&c);  
                  }
                  break;
          case 2: if(cadmanutencao(&cadman,&cadveic)){
                    printf("Manutencao cadastrada com sucesso!\n");
                    scanf("%c",&c);  
                  }
                  break;
          case 3: imprimirveiculos(cadveic);
                  break;
          case 4: if(localizavei(&cadveic)){
                    printf("Veiculo nao localizado!\n");
                    scanf("%c",&c);  
                  }
                  break;
                  
          case 5: relatoriomanutencao(cadveic, cadman);
     //    case 6: calculagasto(cadman, pplaca[8]);
       //             break;
          case 7://  printf("Informe um numero da placa para remover a manutencao: ");
                // gets(placavei);
                 // removemnt(&cadman, placavei);
                  //printf("Manutencao removida com sucesso!\n");
                  break;
          case 8: if(removerveiculo(&cadveic, &cadman))//{
                  printf("Veiculo removido com sucesso!\n");
                  break;
          case 9: printf("\n Em desenvolvimento\n");
                  break;
          case 10: printf("\n Em desenvolvimento\n");
                  break;
          case 11: relatorioveiculos(cadveic, cadman);
                  break;
          case 12: fim = 1;
                  break;    
                  scanf("%c",&c);     
          default: printf("\n\nERRO: A opcao Invalida. Tente novamente...\n");
        }
      }
      return(0);
    }

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @Alisson Pavinhaski  Segue o código incrementado com o sistema de login..Tem que salvar o arquivo como .c se não ele não funciona (foi o mesmo problema que eu tava enfrentando)

     

    #include<stdio.h>
    #include<malloc.h>
    #include<string.h>
    #include <stdlib.h>
    char c;
    typedef struct veic{                    /* Estrutura de Veiculo */
      char placa[8];
      char marca[15];
      char modelo[30];
      int ano;
      struct veic* prox;
    } tveic;
    typedef tveic* veiculo;
    typedef struct data{
      int dia;
      int mes;
      int ano;
    } tdata;
    typedef struct manut{                    /* Estrutura de Manutencao */
      int km;
      tdata data;
      double valor;
      char placa[8];
      struct manut* prox;
    } tmanut;
    typedef tmanut* manutencao;
    void flush_in (){                    /* Funcao para limpar o buffer */
      int ch;
      while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){}
    }
    void inputs (char *prompt, char *s, int count){        /* Funcao para receber strings com o gets e verificar se cabem dentro do vetor */
      char p[255];
      do {
        printf(prompt);
        gets(p);
        if(strlen(p)>count) printf("\nmuito longo\n");
      } while (strlen(p)>count);
      strcpy(s, p);
    }
    void criarv (veiculo *L){                /* Funcao que cria a lista encadeada vazia veiculo */
      *L = NULL;
    }
    void criarm (manutencao *L){                /* Funcao que cria a lista encadeada vazia manutencao */
      *L = NULL;
    }
    int vaziaveiculo (veiculo L){                    /* Funcao que verifica se a lista veiculo esta vazia */
      return (L == NULL);
    }
    int vaziamanut (manutencao L){                    /* Funcao que verifica se a lista manutencao esta vazia */
      return (L == NULL);
    }
    
    int total_contas = 0, arq_tamanho = 0, op = 0, i;
    
        struct usuarios_cadastrados {
            char login[10];
            char senha[10];
        };
    struct usuarios_cadastrados usuario_cadastrado, *lista_de_contas;
    FILE* logs;
    /* Menu do aplicativo */
    void menu(){ 
    volta:
    while (op != 3){
            printf("\n 1 - Cadastrar nova conta\n");
            printf(" 2 - Fazer login\n");
            printf(" 3 - Sair\n");
            
            printf("\nOpcao: ");
            scanf("%d%*c", &op);
    
            switch(op){
                case 1:
                    logs = fopen ("contas.db","ab");
                    if(logs == NULL)
                    {
                        printf("\nErro ao tentar abrir o arquivo.\n\n");
                        goto volta;
                    }
                    else
                    {
                        memset(&usuario_cadastrado,0,sizeof(struct usuarios_cadastrados));
                        printf("Cadastrar usuario: ");
                        scanf("%s", usuario_cadastrado.login);
                        printf("Cadastrar senha: ");
                        scanf("%s", usuario_cadastrado.senha);
                        fwrite(&usuario_cadastrado, sizeof usuario_cadastrado, 1, logs);
                        fclose(logs);
                        goto volta;
                    }
                    break;
                    
                case 2:
                    memset(&usuario_cadastrado, 0, sizeof(struct usuarios_cadastrados));
                    printf("USUARIO: ");
                    scanf("%s", usuario_cadastrado.login);
                    printf("SENHA: ");
                    scanf("%s", usuario_cadastrado.senha);
                    
                    logs = fopen ("contas.db","rb");
                    if(logs == NULL)
                    {
                        printf("\nErro ao tentar abrir o arquivo.\n\n");
                        goto volta;
                    }
                    else
                    {
                        fseek(logs,0,SEEK_END);
                        arq_tamanho = ftell(logs);
                        total_contas = arq_tamanho / sizeof (struct usuarios_cadastrados);
                        rewind(logs);
                        lista_de_contas = malloc(arq_tamanho);
                        if(fread(lista_de_contas, sizeof usuario_cadastrado, total_contas, logs) != total_contas)
                        {
                            printf("Falha ao tentar ler contas\n");
                            fclose(logs);
                            free(lista_de_contas);
                        }
                        fclose(logs);
                        for (i=0; i<total_contas; i++){
                            if(memcmp(&usuario_cadastrado, &lista_de_contas[i], sizeof(struct usuarios_cadastrados)) == 0)
                            {
                                printf("\n LOGADO COM SUCESSO\n");
                                goto start;
                                break;
                            }
                        }
                        if(i == total_contas)
                        {
                            printf("\n NEGADO\n");
                            goto volta;
                        }
                        free(lista_de_contas);
                    }
                    break;
                    
                case 3:
                    exit(0);
                    
                default:
                    printf("\n Opcao invalida!\n");
            } 
    }
    	system("CLS");
       start:                   
       system("cls"); 
       printf("|-------------------------------------------------------------------------|\n");
       printf("|                            MENU PRINCIPAL                               |\n");
       printf("|-------------------------------------------------------------------------|\n");
       printf("| Entre com a opcao desejada:                                             |\n");
       printf("|                                                                         |\n"); 
       printf("|  (1) : Cadastrar veiculo                                                |\n");
       printf("|  (2) : Cadastrar manutencao                                             |\n");
       printf("|  (3) : Listar veiculo cadastrado                                        |\n");
       printf("|  (4) : Localizar dados do veiculo ( pela placa)                         |\n");
       printf("|  (5) : Listar as manutencoes de um veiculo                              |\n");
       printf("|  (6) : Calcular valor dos gasto com manutencoes de um veiculo           |\n");
       printf("|  (7) : Remover dado de uma manutencao de um veiculo                     |\n");
       printf("|  (8) : Remover cadastro de um veiculo.                                  |\n");
       printf("|  (9) : Alterar cadastro de um veiculo                                   |\n");
       printf("|  (10): Alterar cadastro de uma manutencao de um veiculo                 |\n");
       printf("|  (11): Exibir um relatorio                                              |\n");
       printf("|  (12): Sair                                                             |\n");
       printf("|-------------------------------------------------------------------------|\n");
       printf("    opcao:  ");
    }
    int cadveiculo(veiculo *L){                /* Funcao que insere dados de veiculos*/
      veiculo novo;
      novo = (veiculo) malloc(sizeof(tveic));
      if (*L == NULL) {                    /* 1a. insersao */
        if (novo == NULL) return 0;                /* erro: memoria insuficiente */
        inputs("Digite a placa: ", novo->placa, 7);
        inputs("Digite a marca: ", novo->marca, 14);
        inputs("Digite a modelo: ",novo->modelo, 29);
        printf("Digite o ano: ");
        scanf("%d",&novo->ano);
        novo->prox = NULL;
        *L = novo;
        return 1;
      }
      else {                        /* insersao na primeira posisao em uma lista nao vazia */
        if (novo == NULL) return 0;                /* erro: memoria insuficiente */
        inputs("Digite a placa: ", novo->placa, 7);
        inputs("Digite a marca: ", novo->marca, 15);
        inputs("Digite a modelo: ",novo->modelo, 30);
        printf("Digite o ano: ");
        scanf("%d",&novo->ano);
        novo->prox = *L;
        *L = novo;
        return 1;
      } 
    }
    int cadmanutencao(manutencao *Lm, veiculo *Lv){                /*Funcao que insere dados de manutensoes*/
      manutencao novo;
      veiculo lista;
      int c1=1;
      int e;
      novo = (manutencao) malloc(sizeof(tmanut));
      if(vaziaveiculo(*Lv)){
        printf("\nA lista de veiculos? vazia!\n");
        printf("\n\n\nTecle Enter para retornar ao menu");
        scanf("%c",&c);
        return 0;
      }
      for(lista=*Lv;lista!=NULL;lista=lista->prox){
        printf("%d - %s\n",c1,lista->placa);
        c1++;
      }
      printf("\n\nInforme um numero para cadastrar a manutencao: ");
      scanf("%d",&e);
      lista=*Lv;
      for(c1=1;c1<e;c1++) lista=lista->prox;
        strcpy(novo->placa,lista->placa);
        printf("%s\n",novo->placa);
      if (*Lm == NULL) {                    /* 1a. insersao */
        if (novo == NULL) return 0;                /* erro: memoria insuficiente */
          printf("Digite a quilometragem: ");
          scanf("%d",&novo->km);
          printf("Digite o dia: "); 
          scanf("%d",&novo->data.dia);
          printf("Digite o mes: ");
          scanf("%d",&novo->data.mes);
          printf("Digite o ano: ");
          scanf("%d",&novo->data.ano);
          printf("Digite o valor: ");
          scanf("%lf",&novo->valor);
          novo->prox = NULL;
          *Lm = novo;
          return 1;
      }
      else {                        /* insersao na primeira posicao em uma lista nao vazia */
        if (novo == NULL) return 0;                /* erro: memoria insuficiente */
          printf("Digite a quilometragem: ");
          scanf("%d",&novo->km);
          printf("Digite o dia: ");
          scanf("%d",&novo->data.dia);
          printf("Digite o mes: ");
          scanf("%d",&novo->data.mes);
          printf("Digite o ano: ");
          scanf("%d",&novo->data.ano);
          printf("Digite o valor: ");
          scanf("%lf",&novo->valor);
          novo->prox = *Lm;
          *Lm = novo;
          return 1;
      } 
    }
    void imprimirveiculos(veiculo L){
      int n;
      veiculo temp=L;
      char ch;
      if(vaziaveiculo(temp)){
        printf("\nA lista esta? vazia!\n");
         printf("\n\n\nTecle Enter para retornar ao menu");
        scanf("%c",&ch);
      }
      else {
        system("cls"); 
        printf("\n\n\n");
        printf("|-------------------------------------------------------|\n");
        printf("|               Listar Veiculo Cadastrado               |\n");
        printf("|-------------------------------------------------------|\n");
        printf("|    Placa    |       Marca  |   Modelo   |  Ano        |\n");
        printf("|-------------------------------------------------------|\n");
        while(temp!=NULL){
          printf("| %7s     |     %6s   |%10s  |  %3d       |\n",temp->placa, temp->marca, temp->modelo, temp->ano);
          temp=temp->prox;
        }
        printf("|-------------------------------------------------------|\n");
        printf("\n\n\nTecle Enter para retornar ao menu");
        scanf("%c",&ch);
      }
    }
    
    int removerveiculo (veiculo *Lv, manutencao *Lm){
      veiculo atualv, anteriorv;
      manutencao atualm, anteriorm;
      char excluir[8];
     
      atualv=anteriorv->prox;
      if(vaziaveiculo(*Lv)) return 0; //Lista esta? vazia
      inputs("Informe a placa do veiculo a ser excluido: ", excluir, 7);
      if(*Lm!=NULL){
        anteriorm=*Lm;
        atualm=anteriorm->prox;
        while(atualm!=NULL) {
          if(!strcmp(excluir,anteriorm->placa)) {
           *Lm=anteriorm->prox;
            free(anteriorm);
          }
          else {
            if(!strcmp(excluir,atualm->placa)){
              anteriorm->prox=atualm->prox;
            }
            else {
              anteriorm=anteriorm->prox;
              atualm=atualm->prox;
            }
          }
        }
      }
      while(atualv!=NULL) {
        if(!strcmp(excluir,anteriorv->placa)) {
         *Lv=anteriorv->prox;
          free(anteriorv);
          return (1);
        }
        else {
          if(!strcmp(excluir,atualv->placa)){
            anteriorv->prox=atualv->prox;
            return (1);
          }
          else {
            anteriorv=anteriorv->prox;
            atualv=atualv->prox;
          }
        }
      }
      return (0);
    }
    int localizavei(veiculo *L){   //Localizar veiculos cadastrados 
      veiculo temp;
      char local[8];
      system("cls");
      if(vaziaveiculo(*L)) {
        printf("Lista Vazia!\n");
        return (1);
      }
      inputs("Informe a placa do veiculo a ser localizado: ", local, 8);
      system("cls");
      for(temp=*L;temp!=NULL;temp=temp->prox){
        if(!strcmp(local,temp->placa)) {
          printf("\n\n\n");
          printf("|-----------------------------------------------|\n");
          printf("|        Listar Veiculo Cadastrado(Placa)       |\n");
          printf("|-----------------------------------------------|\n");
          printf("|  Placa  |    Marca      |   Modelo  |  Ano    |\n");
          printf("|-----------------------------------------------|\n");
          printf("|%7s  |   %6s      |%10s | %3d    |\n",temp->placa, temp->marca, temp->modelo, temp->ano);
          printf("|-----------------------------------------------|\n");
          printf("\n\n\nTecle <Enter> para retornar ao menu");
          scanf("%c",&c);
          return (0);
        }
      }
      return (1);
    }
    /*  
    int calculagasto(manutencao L, char pplaca[8]){
        int total;
        total=0;
        manutencao p;
        p = L;
        if (L == NULL){
          printf("\nA lista esta vazia!\n");
          printf("\n\n\nTecle Enter para retornar ao menu");
          scanf("%c",&c);
          return total;
        }
        while (p != NULL) {
          if (!strcmp(p->placa, pplaca)) {
            total+=p->valor;
          }   
          p = p->prox;
        }
       return total;
    }
    */
    void relatorioveiculos (veiculo Lv, manutencao Lm){
      veiculo listav;
      manutencao listam;
      int count;
      system("cls"); 
      for(listav=Lv;listav!=NULL;listav=listav->prox){
          printf("\n\n\n");
          printf("|-----------------------------------------------------|\n");
          printf("|                    Relatorio                        |\n");                                            
          printf("|-----------------------------------------------------|\n");
          printf("|  Placa  |    Marca      |   Modelo  |  Ano3         |\n");
          printf("|-----------------------------------------------------|\n");
          printf("| %s    | %s          |  %s     |  %d         |\n",listav->placa, listav->marca, listav->modelo, listav->ano);
          count=1;
          for(listam=Lm;listam!=NULL;listam=listam->prox){
             printf("|-----------------------------------------------------|\n");
             printf("| Manut.  |  Kilometragem |   Data    |   Valor       |\n");
             printf("|-----------------------------------------------------|\n");                                    
            if(!strcmp(listam->placa,listav->placa)){
               printf("|   %d     |    %d        | %d/%d/%d | %5.2f   |\n",count, listam->km, listam->data.dia, listam->data.mes, listam->data.ano, listam->valor);
               count++;
            }
          }
      }
      printf("|-----------------------------------------------------|\n");
      printf("\n\n\nTecle Enter para retornar ao menu");
      scanf("%c",&c);
    }
    void relatoriomanutencao (veiculo Lv, manutencao Lm){
      veiculo listav;
      manutencao listam;
      int count;
      system("cls"); 
       count=1; 
       for(listav=Lv;listav!=NULL;listav=listav->prox){
          printf("\n\n\n");
          printf("|------------------------------------------------------|\n");
          printf("|               Lista de Manutencoes                   |\n");                                            
          printf("|------------------------------------------------------|\n");
          printf("|  Manut.  |  Kilometragem |   Data    |   Valor       |\n");
          printf("|------------------------------------------------------|\n");       
          for(listam=Lm;listam!=NULL;listam=listam->prox){
             if(!strcmp(listam->placa,listav->placa)){
                printf("|    %d     |    %d        | %d/%d/%d | %5.2f   |\n",count, listam->km, listam->data.dia, listam->data.mes, listam->data.ano, listam->valor);
                count++;
             }
           }
      }    
      printf("|------------------------------------------------------|\n");
      printf("\n\n\nTecle Enter para retornar ao menu");
      scanf("%c",&c);
    }
    /*int removemnt(tlistamnt *L, char pplaca[8]){
      tlistamnt a, p;
      int n;
      if (*L == NULL) return 0; /* erro: lista vazia 
      p = *L;
      n = 1;
      while ((!strcmp(p->placa,pplaca)) && (p!=NULL)) {
        a = p;
        p = p->prox;
        n++;
      }
      if (p == NULL) return 0; /* erro: placa não encontrada 
      if (n == 1)
        *L = p->prox;
      else  
        a->prox = p->prox;
      free(p);
      return(1);
    }
    */
    
    int main() {
      veiculo cadveic;                    /* variavel cadastro de veiculos */
      manutencao cadman;               /* declaracao da variavel cadastro de manutencoes */
      int opcao;                        /* opcao digitada pelo usuário */
      int fim = 0;                        /* encerra o laço do-while e por consequência o programa */
      char placavei[8];
      criarv(&cadveic);
      criarm(&cadman);
         
      while (!fim){
        menu();
        opcao = 0;   
        scanf("%d", &opcao); 
        flush_in(); 
        switch(opcao){
          case 1: if(cadveiculo(&cadveic)){
                    printf("Veiculo cadastrado com sucesso!\n");
                    scanf("%c",&c);  
                  }
                  break;
          case 2: if(cadmanutencao(&cadman,&cadveic)){
                    printf("Manutencao cadastrada com sucesso!\n");
                    scanf("%c",&c);  
                  }
                  break;
          case 3: imprimirveiculos(cadveic);
                  break;
          case 4: if(localizavei(&cadveic)){
                    printf("Veiculo nao localizado!\n");
                    scanf("%c",&c);  
                  }
                  break;
                  
          case 5: relatoriomanutencao(cadveic, cadman);
     //    case 6: calculagasto(cadman, pplaca[8]);
       //             break;
          case 7://  printf("Informe um numero da placa para remover a manutencao: ");
                // gets(placavei);
                 // removemnt(&cadman, placavei);
                  //printf("Manutencao removida com sucesso!\n");
                  break;
          case 8: if(removerveiculo(&cadveic, &cadman))//{
                  printf("Veiculo removido com sucesso!\n");
                  break;
          case 9: printf("\n Em desenvolvimento\n");
                  break;
          case 10: printf("\n Em desenvolvimento\n");
                  break;
          case 11: relatorioveiculos(cadveic, cadman);
                  break;
          case 12: fim = 1;
                  break;    
                  scanf("%c",&c);     
          default: printf("\n\nERRO: A opcao Invalida. Tente novamente...\n");
        }
      }
      return(0);
    }

     

    Editado por Xaws

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @Xaws Velho você me ajudou muito cara, obrigado mesmo, mais minha dificuldade não é cadastrar usuários no sistema de Login, e sim (cadastrar clientes).

     

    mesmo assim você me deu uma força, obrigado.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×