Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema de Locadora de Veiculos


pvj

Pergunta

Gente!!!

Estou precisando de ajuda! Tenho que fazer um sisteminha de gerenciamento de uma locadora de veículos em linguagem c, gravando em arquivos binário os cadastros e arquivo de texto os relatórios... Mas estou bem perdida e o prazo está se esgotando...

Não consegui fazer alteração e exclusão de clientes nem de Automóveis, nem fiz o Gerencimento de Locações e também estou com dificuldade nos relatórios.

Segue abaixo o Código da parte de alteração de clientes... e um relatório. Se alguém puder dar uma forcinha!

#include "locadora.h"

// Função de cadastro de clientes
void Altera_Clientes()
{
char nomecli[50];


          printf("--------------------------------------------------------------------------------\n");
          printf("                         Alteracao de Clientes\n");
          printf("--------------------------------------------------------------------------------\n");   
        
        cliente *vetclientes; // vetor de clientes
        int n;  // numero de clientes
        FILE *arq_cliente; // arq. de armazenamento
        
        // abre o arquivo para leitura
        arq_cliente=fopen("Cadastro_Cliente.txt","r+b");
        
        if(arq_cliente==NULL)
        {
         // se arquivo não existe abre para escrita              
         arq_cliente=fopen("Cadastro_Cliente.txt","w+b");
         // inicializa num de clientes com 0
         n=0;
        }
        else
        {
         //se arquivo existe le o num de clientes  
         fread(&n,sizeof(int),1,arq_cliente);
                  // e le o vetor de clientes inteiro
         fread(vetclientes,sizeof(cliente),n,arq_cliente);
         printf("Digite o nome do cliente que deseja alterar:\n");
         scanf("%i", &nomecli);
         
        if(nomecli = cliente[n].nome) {
            printf("\nCliente %d",n); 
            printf("\nNome: "); scanf("%s",vetclientes[n].nome);
            fflush(stdin);
            printf("CPF: "); scanf("%i",vetclientes[n].cpf);
            fflush(stdin);
            printf("Endereco: "); scanf("%s",vetclientes[n].endereco);
            fflush(stdin);
            printf("Telefone: "); scanf("%i",vetclientes[n].telefone);
            fflush(stdin);
            printf("Idade: "); scanf("%i",&vetclientes[n].idade);
            printf("\nCliente alterado com sucesso:\n");
            }
        
      
        // fecha o arquivo
        fclose(arq_cliente);
        
        // e em seguida reabre para posicionar no comeco
        arq_cliente=fopen("Cadastro_Cliente.txt","r+b");
        
        //reescreve o numero de clientes atualizado
        fwrite(&n,sizeof(int),1,arq_cliente);   
        fwrite(vetclientes,sizeof(cliente),n,arq_cliente);   
        
        // e fecha o arquivo
        fclose(arq_cliente);
        
        //libera memoria
        free(vetclientes);
  
}
}

/*--------------------------------------------------------------*/
#include "locadora.h"

// Função Relatório de Automóveis
void Relatorio_Automoveis()
{
  printf("--------------------------------------------------------------------------------\n");
  printf("                         Relatorio de Automoveis\n");
  printf("--------------------------------------------------------------------------------\n");   
  automovel *vetautomoveis; // vetor de automóveis
  int i, n;  // numero de automóveis
  FILE *arq_automoveis;
  
  // abre o arquivo para leitura
  arq_automoveis=fopen("Cadastro_Automoveis.bin","r+b");
  
  if(arq_automoveis==NULL)
     // se não existe o arquivo exibe mensagem
     printf("\nArquivo inexistente");
  else
  {
     // se existe lê numero de automóveis  
     fread(&n,sizeof(int),1,arq_automoveis);
     // aloca memória para o vetor
     vetautomoveis = (automovel *)malloc(sizeof(automovel)*n);
     // e le o vetor de automóveis
     fread(vetautomoveis,sizeof(automovel),n,arq_automoveis);
  }
  
  // exibe todos os automóveis do vetor
  for(i=0;i<n;i++)
  {
     printf("\n");
     printf("\nAutomovel %d",i); 
     printf("\nModelo: %s",vetautomoveis[i].modelo);
     printf("\nMarca: %d",vetautomoveis[i].marca);
     printf("\nPlaca: %d",vetautomoveis[i].placa);
     printf("\nCor: %d",vetautomoveis[i].cor);

     fwrite("Automovel ")
     fwrite("Modelo: ", sizeof(char), 20, arq_automoveis);
     fwrite(vetautomoveis[i].modelo, sizeof(char), 1, arq_automoveis); 
     fwrite("Marca: ", sizeof(char), 20, arq_automoveis);
     fwrite(vetautomoveis[i].marca, sizeof(char), 1, arq_automoveis); 
     fwrite("Placa: ", sizeof(char), 20, arq_automoveis);
     fwrite(vetautomoveis[i].placa, sizeof(char), 1, arq_automoveis);
     fwrite("Cor: ", sizeof(char), 20, arq_automoveis);
     fwrite(vetautomoveis[i].cor, sizeof(char), 1, arq_automoveis);
     
    
      


  }
system("PAUSE");
  // fecha o arquivo
  fclose(arq_automoveis);
  
  // libera memória do vetor
  free(vetautomoveis);
}

Obrigada

Editado por Jonathan Queiroz
Modificar título para descrever melhor a dúvida e adcionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Olá pvj

Bom, li o código e tudo o que encontrei foi o seguinte: A condição if(nomecli = cliente[n].nome) não deveria estar dentro de um for de 1 até N, sendo N o maior valor assumido por n? Ou mesmo um while? Me parece que você deseja, ali, efetuar uma busca, mas não percorre o vetor.

Há variáveis e tipos de variáveis na função não declarados. Imagino que sejam globais. Estou certo?

Quanto aos relatórios, qual o problema com eles? Não me parece ter nada de errado no código. O que acontece?

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

:wacko: Agora estou com outro problema. Na alteração gera o seguinte erro:

"expected primary-expression before '[' token"

Na linha:

if(strcmp(nomecli = cliente[n].nome)==0) {
Segue abaixo função altera_Clientes completa:
#include "locadora.h"

// Função de cadastro de clientes
void Altera_Clientes()
{
char nomecli[50];
int i;


          printf("--------------------------------------------------------------------------------\n");
          printf("                         Alteracao de Clientes\n");
          printf("--------------------------------------------------------------------------------\n");   
        
        cliente *vetclientes; // vetor de clientes
        int n;  // numero de clientes
        FILE *arq_cliente; // arq. de armazenamento
        
        // abre o arquivo para leitura
        arq_cliente=fopen("Cadastro_Cliente.txt","r+b");
        
        if(arq_cliente==NULL)
        {
         // se arquivo não existe abre para escrita              
         arq_cliente=fopen("Cadastro_Cliente.txt","w+b");
         // inicializa num de clientes com 0
         n=0;
        }
        else
        {
         //se arquivo existe le o num de clientes  
         fread(&n,sizeof(int),1,arq_cliente);
         // e le o vetor de clientes inteiro
         fread(vetclientes,sizeof(cliente),n,arq_cliente);
         printf("Digite o nome do cliente que deseja alterar:\n");
         scanf("%i", &nomecli);
         
        for (i=0; i<n; i++)
        { 

            //ERRO!!!!!!!!!!!!
            //NA LINHA ABAIXO DA ERRO! (expected primary-expression before '[' token)


            if(strcmp(nomecli = cliente[n].nome)==0) {
                printf("\nCliente %d",n); 
                printf("\nNome: "); scanf("%s",vetclientes[n].nome);
                fflush(stdin);
                printf("CPF: "); scanf("%i",vetclientes[n].cpf);
                fflush(stdin);
                printf("Endereco: "); scanf("%s",vetclientes[n].endereco);
                fflush(stdin);
                printf("Telefone: "); scanf("%i",vetclientes[n].telefone);
                fflush(stdin);
                printf("Idade: "); scanf("%i",&vetclientes[n].idade);
                printf("\nCliente alterado com sucesso:\n");
                }
            
            }
        // fecha o arquivo
        fclose(arq_cliente);
        
        // e em seguida reabre para posicionar no comeco
        arq_cliente=fopen("Cadastro_Cliente.txt","r+b");
        
        //reescreve o numero de clientes atualizado
        fwrite(&n,sizeof(int),1,arq_cliente);   
        fwrite(vetclientes,sizeof(cliente),n,arq_cliente);   
        
        // e fecha o arquivo
        fclose(arq_cliente);
        
        //libera memoria
        free(vetclientes);
  
}

}

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, modifiquei toda minha função Altera_Clientes, mas agora está ocorrendo um outro erro no sistema, se alguém puder me ajudar a identificar que erro é esse, por favor. Obrigada!

A função é a seguinte

#include "locadora.h"

void Altera_Clientes(){
     
char nomepesq[30];
int achei,apontador;
int a;
char resp;
resp='S';
cliente *vetclientes; // vetor de clientes
int n;  // numero de clientes
FILE *arq_cliente; // arq. de armazenamento

printf("--------------------------------------------------------------------------------\n");
printf("                         Alteracao de Clientes\n");
printf("--------------------------------------------------------------------------------\n");   
        

arq_cliente = fopen("Cadastro_Cliente.bin","r+b"); //abre o arquivo p/ leitura e escrita
if(arq_cliente){
    while ((resp=='S') && (resp=='s')){
        achei=0;
        printf("Digite o nome do cliente que deseja alterar: ");
        fflush(stdin);
        fgets(nomepesq,30,stdin);
        rewind(arq_cliente); //posiciona o apontador de reg no inicio do arquivo
        apontador=0;
        while (!feof(arq_cliente) && achei==0){
            a=fread(&vetclientes,sizeof (cliente),1,arq_cliente); //le registro
            apontador++;
            if(a==1){
    
                if(strcmp(vetclientes[n].nome,nomepesq)==0){ //compara as strings
                    //se o nome foi encontrado, escreve os dados do registro
                    printf("\nNome: %s",&vetclientes[n].nome);
                    printf("\nCPF: %i", &vetclientes[n].cpf);
                    printf("\nEndereco: %s",&vetclientes[n].endereco);
                    printf("\nTelefone: %i",&vetclientes[n].telefone);
                    printf("\nIdade: %i",&vetclientes[n].idade);
                    printf("\nCliente alterado com sucesso:\n");
                    achei = 1;
                    // le os dados a serem alterados
                    printf("Alterar...");
                    printf("\nNome: ");
                    fflush(stdin);
                    fgets(vetclientes[n].nome,30,stdin); //le o nome
                    printf("\nCPF: ");
                    scanf("%i",&vetclientes[n].cpf); //le a idade
                    printf("\nEndereco: ");
                    scanf("%i",&vetclientes[n].endereco); //le a idade
                    printf("\nTelefone: ");
                    scanf("%i",&vetclientes[n].telefone); //le a idade
                    printf("\nIdade: ");
                    scanf("%i",&vetclientes[n].idade); //le a idade
        
                    printf("Confirma a alteracao? S/N ");
                    scanf("%c", resp);;
                    if((resp=='S')&&(resp=='s')){
                    apontador--;
                    
                         //fseek - Comando para posicionamento do “ponteiro de leitura/escrita” em arquivos binários
                         fseek(arq_cliente,apontador * sizeof (cliente),SEEK_SET); 
                         //seek_set movimenta para a posição indicada (começando a contar do zero, primeiro byte do arquivo).

                         a=fwrite(&vetclientes,sizeof (cliente),1,arq_cliente);
                         if(a!=1){
                              printf("Problemas na gravacao.");
                         }
                     }
                 }
                 }
             }
             if(achei==0){
                  printf("Registro não encontrado.");
             }

 }
 fclose(arq_cliente); // fecha o arquivo
 //libera memoria
   free(vetclientes);
  

 }
}

O erro é o seguinte:

multiple definition of `Altera_Clientes()'

first defined here

ld returned 1 exit status

D:\Ulbra\Algorítmos III\G2\Locadora_Veiculos\Makefile.win [build Error][Locadora_Veiculos.exe] Error 1

Valeu!

Já resolvi! Valeu!

Link para o comentário
Compartilhar em outros sites

  • 0

prezado!

Estava acompanhando seu trabalho e achei superimportante... eu gostaria de poder ter estes scripts aqui pra poder estudar eles e ver como você os fez rodar... tem como dar esta colher de chá? como fez o bd. Sou novo nesta área e estou estudando tudo que vocês fazem aqui.

abraços.

betezek@betezek.com.br

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...