• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gil

Alterar e Excluir um registro

4 mensagens neste tópico

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();
    
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que era melhor guardar os dados em memória em vez de usares ficheiros (usavas ficheiros apenas quando saías do programa).

Assim, editar dá um pouco mais de trabalho (embora seja simples de se fazer), mas remover vai ser muito mais complicado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, seria mais fácil guardar em memórias, mas queria gravar em um arquivo, estou cursando e preciso aprender. Se você poder me passar pelo menos a dica para alterar o registro agradeço, vai me ajudar muito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora