Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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.

  • Obrigado 1
Link para o comentário
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 ↓
https://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:

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@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 2
Link para o comentário
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);
}

 

Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...
Em 25/09/2017 às 11:49, Xaws disse:

@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 ↓
https://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:

bom dia pode me ajudar 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Em 27/09/2017 às 18:00, Alisson Pavinhaski disse:

mais minha dificuldade não é cadastrar usuários no sistema de Login, e sim (cadastrar clientes).

 

Acho que pretendia escrever "mas" e não "mais". Um cadastro é só um cadastro, uma lista de coisas. Porque faz diferença no seu caso serem clientes ou "usuários" ??

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...