Ir ao conteúdo
  • Cadastre-se

Ajuda com Algoritmo de Agenda em C


danilosk10

Posts recomendados

Bom Galera, estou tentando fazer um agenda um C já fiz o código quase todo, só que não estou conseguindo criar a função pro usuário excluir algum contato, já procurei no fórum e como ninguém tem o caso semelhante ao meu, resolvi criar um novo tópico.

 

Segue abaixo meu código.

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
 
struct Cadastro{
       int num;
       char nome[100];
       char endereco[100];
       char email[100];
       char data[30];
       char tel[10];
       };
       
FILE *arquivo;
struct Cadastro C;
 
char menu(){
    system ("cls");
    printf("______________________________ *** AGENDA ***________________________________\n\n");
    printf("1- Cadastrar\n");
    printf("2- Listar\n");
    printf("3- Buscar\n");
    printf("4- Alterar\n");
    printf("5- Sair\n\n");
    printf("\nOpcao:\n");
    system ("color c");
    return (getchar());
     
   
}
/* Buscar Clientes*/
  /* A função fread() permite a 
leitura de um bloco de bytes em arquivos, sendo usadas 
- preferencialmente - com arquivos binários.
  */
 
 
int busca(int n){
    fread(&C, sizeof©, 1, arquivo);
    while(!feof(arquivo)){
         if(C.num==n){
                      fseek(arquivo, sizeof©, SEEK_CUR);
                      return 1;
         }
                      fread(&C, sizeof©, 1, arquivo);
    }
                      return 0;
}
 
/*Cadastro de Clientes*/
 
void cad(){
    arquivo = fopen ("agenda.txt", "a+b");
    if(arquivo==NULL){
           printf("\nErro ao abrir o arquivo \n");
           return;
    }    
    printf("\n\nNumero de Inscricao:");
    C.num++;
    printf("000%d",C.num);        
           printf("\n\nNome:");
           fflush(stdin);
           gets(C.nome);
           printf("\nData de Nascimento:");
           fflush(stdin);    
           gets(C.data);
           printf("\nEndereco:");
           fflush(stdin);
           gets(C.endereco);
           printf("\nEmail:");
           fflush(stdin);
           gets(C.email);
           printf("\nTelefone:");
           fflush(stdin);
           gets(C.tel);
           fwrite(&C, sizeof©, 1, arquivo);
           getchar();
                fclose(arquivo);          
}
 
/*Listar*/
/*feof indica o fim do arquivo. ele pode retornar numero diferente de 
 zero se o arquivo tiver chegado no fim caso contrario terona 0 */
 
void listar(){
     int i=0;
     arquivo= fopen("agenda.txt","rw");
     if(arquivo==NULL){
                       printf("Erro ao abrir o arquivo");
                       return;
     }
     fread(&C, sizeof©, 1, arquivo);
     printf("\nRelacao de Clientes\n");
     while(!feof(arquivo)){
         i++;
         printf("\n");
         printf("\nInscricao: %d\nNome: %s\nEndereco: %s\nEmail: %s\nTelefone: %s\nData de Nascimento: %s", C.num, C.nome, C.endereco, C.email, C.tel, C.data);
         printf("\n");
         fread(&C, sizeof©, 1, arquivo);
         if(feof(arquivo) || (i==20)){
                          break;
                          getchar();
                          getchar();
         /*
        A função getchar() lê um caractere e retorna um inteiro que é:
    o código do caractere, ou
    o valor -1 que corresponde a fim de ficheiro
        */
 
         }
     }
     fclose(arquivo);
}
 
/*Buscar Clientes*/
/*Buscar Clientes 
procedimento usado para buscar o cliente a partir da inscrição 
do cliente gerada na hora que começa o cadastro.
*/
 
 
void buscar(){
     int insc;
     arquivo = fopen("agenda.txt","rw");
     if(arquivo==NULL){
                       printf("\nErro ao abrir o arquivo\n");
     }
     printf("\n");
     printf("\nDigite o Numero da Inscricao do Cliente\n");
     scanf("%d",&insc);
     /*Busca(insc)*/
     /* A função fread() permite a 
leitura de um bloco de bytes em arquivos, sendo usadas 
- preferencialmente - com arquivos binários.
*/
 
     if(busca(insc == 0))
                      printf("\nNumero de inscricao invalido\n");
                      else{
                      fread(&C, sizeof©, 1, arquivo);
                      printf("\nInscricao: %d\n", C.num);
                      printf("Nome: %s\n", C.nome);
                      printf("\nData de Nascimento: %s\n", C.data);
                      printf("Endereco: %s\n", C.endereco);
                      printf("Email: %s\n", C.email);
                      printf("Telefone: %s\n", C.tel);
                      getchar();
                      getchar();
                      }
     
     fclose(arquivo);
}
 
void alterar(){
     int i=0;
     arquivo= fopen("agenda.txt","wb");
     if(arquivo==NULL){
                       printf("Erro ao abrir o arquivo");
                       return;
     }
    printf("\nAlteracao de Cadastro\n");  
    printf("\n\nNumero de Inscricao:");
    scanf("%d",&C.num);
  //fseek usado para fazer procuras a partir de um ponto determinado
//no caso ai a partir da struct arquivo, seek_cur é a ponte correndo do arquivo 
//ou seja indica que é para percorrer a partir do inicio do arquivo.
 
           printf("\n\nNome:");
           fflush(stdin);
           gets(C.nome);
           printf("\nData de Nascimento:");
           fflush(stdin);    
           gets(C.data);
           printf("\nEndereco:");
           fflush(stdin);
           gets(C.endereco);
           printf("\nEmail:");
           fflush(stdin);
           gets(C.email);
           printf("\nTelefone:");
           fflush(stdin);
           gets(C.tel);
           fseek(arquivo, sizeof©, SEEK_CUR);                            
 fwrite(&C, sizeof©, 1, arquivo);
 fread(&C, sizeof©, 1, arquivo);
 fclose(arquivo);
}
//fseek usado para fazer procuras a partir de um ponto determinado
//no caso ai a partir da struct arquivo, seek_cur é a ponte correndo do arquivo 
//ou seja indica que é para percorrer a partir do inicio do arquivo.
     
     
void sair(){
       int i;
       printf("\nFinalizandoo");
       for (i=0; i<35; i++){
           _sleep(500);
       system ("color a");
       printf(". ");
       }
       exit(1);
       }
//sleep estimula um tempo para o encerramento do programa.    
main(){
      char op;
          while(op!='s'){
                     op = menu();
                     switch(op){
                                case'1': cad(); break;
                                case'2': listar(); break;
                                case'3': buscar(); break;
                                case'4': alterar(); break;
                                case'5': sair(); break;
                             
                               
                     }
       getchar();
       getchar();
       }
}     

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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