Jump to content

Alterar e Excluir um registro


Gil

Recommended Posts

fiz um programinha de cadastro de automoveis e tenho que por uma opção para alterar um registro e outra para excluir, só que não faço ideia de como se faz isso. Alguem ai pode me dar uma ajuda, ou uma ideia de como posso fazer??? O código é esse abaixo, mas observe qua a função alterar e excluir esta em branco, pois não sei fazer!

/*
  Programa: Cadastro de Automoveis
  Data....: 11/11/2007
*/

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

//Estrutura
struct automoveis {
       int codigo;
       char placa[15];
       char estado[3];
       char cidade [30];
       char modelo [25];
       char cor [15];
       char fabricante [20];
       int ano;
       int del;
}autom;
       
//Protótipos
int menu (void);
void inserir (void);
void alterar (void);
void pesquisa (void);
void excluir (void);
void sobre (void);

// Programa principal

int main(){ 
    //Variáveis
    int opcao; 

    do{ 
        system ("cls"); 
        opcao = menu(); 

            switch (opcao) { 
                case 1: 
                    inserir(); 
                break; 
                case 2: 
                    alterar(); 
                break; 
                case 3: 
                    pesquisa(); 
                break; 
                case 4:
                     excluir();
                case 5:
                     sobre();
                break;
                case 9: 
                    printf ("Saindo....\n"); 
                    printf ("Aperte uma tecla para continuar....."); 
                    getchar(); 
                    exit(0); 
                default: 
                    printf ("Opção invalida!!!\n"); 
                    printf ("Aperte uma tecla para continuar...."); 
                    getchar(); 
                } 
    }while(1); 

return 0; 
}

//**************
// Função Menu *
//**************
int menu (void){ 
    // Declaração de variáveis
    int opc;

    printf ("---------------------------------------------------------\n");
    printf ("      Sistema para Cadastramento de Automóveis\n"); 
    printf ("---------------------------------------------------------\n\n");
    printf ("              << MENU PRINCIPAL >>\n\n"); 
    printf ("      1 - Incluir novos registros\n"); 
    printf ("      2 - Alterar um registro existente\n"); 
    printf ("      3 - Pesquisar por código\n"); 
    printf ("      4 - Excluir um registro existente\n");
    printf ("      5 - Sobre este sistema\n");
    printf ("      9 - Sai do Programa\n\n"); 
    printf ("---------------------------------------------------------\n");
    printf ("Sua Opção: ");
    scanf ("%d", &opc); 
    printf ("---------------------------------------------------------\n");
    getchar(); 

return opc; 
}

//*****************
// Função Inserir *
//*****************
void inserir (void){ 

     //variaveis
     int voltas;
     

      FILE *arquivo; 

      system("cls"); 


      printf ("Entre com os Dados:\n"); 
      printf ("Código...........: ");
      scanf ("%d", &autom.codigo);
      fflush (stdin); 
      printf ("Placa do Veículo.: "); 
      gets (autom.placa);
      printf ("Estado...........: "); 
      gets (autom.estado); 
      printf ("Cidade...........: "); 
      gets (autom.cidade);
      printf ("Modelo...........: ");
      gets (autom.modelo);
      printf ("Cor do Veículo...:");
      gets (autom.cor);
      printf ("Fabricante.......:");
      gets (autom.fabricante);
      printf ("Ano de fabricação:");
      scanf ("%d", &autom.ano); 
      autom.del=1;

      //Tenta abrir o arquivo 

      if ((arquivo=fopen("f:\\cadastro.dat","a+"))==NULL) 
      { 
        printf ("ERRO!!!!\n"); 
        printf ("Aperte uma tecla para continuar....\n"); 
        getchar(); 
        return; 
      }
      //Grava os dados 
      fwrite(&autom, sizeof(struct automoveis),1,arquivo); 

      //Fecha arquivo 
      fclose(arquivo); 
      
}
//****************
//Função Alterar *
//****************
void alterar (void){ 


} 

//******************
// Função Pesquisa *
//******************
void pesquisa (void){ 

    FILE *arquivo; 

    int codigo; 
    int achei=0; 

    system ("cls"); 

    printf ("Codigo: "); 
    scanf ("%d", &codigo); 
    getchar(); 

// Tenta abrir o arquivo 

if ((arquivo=fopen("f:\\cadastro.dat","r"))==NULL) 
{ 
    printf ("ERRO!!!!\n"); 
    printf ("Aperte uma tecla para continuar....\n"); 
    getchar(); 

    return; 
} 

while (1) { 
    fread(&autom,sizeof(struct automoveis),1,arquivo); 
        if (feof(arquivo)) 
    break; 

    if (codigo == autom.codigo) 
    { 
        printf ("%-6s %-30s %-15s\n" ,"Código", "Modelo", "Placa");
        printf ("%-6d %-30s %-15s\n\n" ,autom.codigo, autom.modelo, autom.placa); 
        printf ("\nAperte uma tecla para continuar..."); 
        getchar(); 
        achei = 1; 
        break; 
    } 
} 

if (!achei) 
{ 
    printf ("Código informado não encontrado!\n"); 
    printf ("Aperte uma tecla para continuar...."); 
    getchar(); 
} 

    fclose(arquivo); 

} 

//*************************
//Função Excluir Registro *
//*************************
void excluir (void){ 


}

//***********************
// Função Sobre Sistema *
//***********************
void sobre (void){
     system ("cls");
     printf ("Integrantes do Grupo:\n\n");
     printf ("RA: 0722126 - Giuliano Santos\n");
     printf ("RA: 0000000 - Elemento 02\n");
     printf ("RA: 0000000 - Elemento 03\n");
     printf ("RA: 0000000 - Elemento 04\n");
     printf ("RA: 0000000 - Elemento 05\n");
     printf ("Aperte uma tecla para voltar ao MENU...");
     getchar();
    
}
Link to comment
Share on other sites

O de alterar pode ser feito de forma semelhante ao de procurar. Só que quando (e se) encontrares o registos, utilizas o fseek, para voltar atrás um registo (porque depois de o leres, o cursor posiciona-se no próximo registo), e escreveres o nome por cima do antigo.

O de remover, a sugestão que dou, é ires buscar o último, o escrevê-lo por cima do que queres remover.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.