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

Tentando fazer um programa para cadastro de pessoas


brunonoia

Pergunta

Galera já não sei mais o que fazer eu to tentando fazer o programa ele compila e grava o cadastro mas na hora de lista os cadastros ele apaga o nome.

vou mandar todo o codigo para que fique mas fácil de visualizar o erro.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

typedef struct dados
{

 char endereco[80];
 char cidade[80];
 char estado[2];
 char nome[100];
 char profissao[30];
char nascimento[15];
char bairro[30];
}T_dados;
 T_dados d[300];

// prototipos
void inclusao(void);
void Listar(void);
void quick_struct(int);
void qs_struct(int,int);
void ordenar(void);
void pesquisar(void);
char Validaresp();

static int qtd = 0;


FILE *fp;


// =================================================================
// ======Incluir dados no arquivo ==================================

void inclusao(void){
     int total = 0, retorno;
     char op = 's';

     if ((fp = fopen("agenda.db", "a")) == NULL)
     {
        printf ("O arquivo da lista não pode ser aberto!\n");
        printf ("Insira dados!\n");
        getch();
        exit(1);
     }
     while ((total < 300) && (op == 's'))
     {
          
           printf ("Digite o nome: ");
           gets(d[total].nome);
           fflush(stdin);
           printf("Digite a data de nascimento:");
           gets(d[total].nascimento);
           fflush(stdin);           
           printf ("Digite a cidade: ");
           gets(d[total].cidade);
           fflush(stdin);
           printf ("Digite a UF do estado: ");
           gets(d[total].estado);
           fflush(stdin);
           printf("Digite o bairro:  ");
           gets(d[total].bairro);
           fflush(stdin);
           printf ("Digite o endereco: ");
           gets(d[total].endereco);
           fflush(stdin);
           printf ("Digite a profissao: ");
           gets(d[total].profissao);
           fflush(stdin);
           


           retorno = fwrite (&d[total], sizeof(struct dados) ,1,fp);

           if (retorno == 1) {
               printf(" \nGravacao ok ! ");
           }
           total++;
           op = Validaresp();
           qtd++;
     }
     fclose (fp);
}

//======================================================================
// ======Valida resposta ===============================================

char Validaresp() {
   char op;
   do {
      printf(" \nDeseja inserir novos dados? [S ou N] ? " );
      op = getch();
      printf("\n" );
   } while (op != 's' && op != 'n');
   return op;
}

//======================================================================
// ======Organizar em ordem alfabetica =================================

void ordenar(void){
      
     T_dados vet;
     int aux,i,j,k,retorno;
     char *str, *str2, *straux;
   
 if ((fp = fopen("agenda.db", "w+")) == NULL){
        printf ("ERRO!\n");
        getch();
        exit(1);
     }
        
         aux = qtd; // aux recebe a quantidade de contatos inscritos
         for ( i = aux ; i <0 ; i-- ){
               str = d.nome;             
               for ( j = i-1 ; j <=0 ; j-- ){
                   str2 = d[j].nome;
                   if ( strcmp ( str, str2 )> 0 ){
                        vet = d;
                        d = d[j];
                        d[j] = vet;
                   }
               }
         }
     for ( k = 0 ; k < aux ; k++ ){
           retorno = fwrite (&d[k], sizeof(struct dados) ,1,fp);
           if (retorno != 1) {
               printf(" \nERRO ! ");
           }
     }
     fclose(fp);
     printf("\nLista Ordenada! \n");
    getch();
}

//======================================================================
// ======Pesquisar pelo nome ===================================

void pesquisar(void){
     int indice = 0, retorno = 1, cont = 0;
     char nome[80],op;

     if ((fp = fopen("agenda.db", "r")) == NULL){
     printf ("O arquivo da lista não pode ser aberto!\n");
     printf ("Insira dados!\n");
     getch();
     exit(1);
     }
     printf ("Digite o nome: ");
     gets(nome);

     retorno = fread(&d[indice], sizeof(struct dados), 1, fp);

        while (retorno == 1){
            if (strcmp(nome, d[indice].nome) == 0 ){
            printf ("\nNome ..: %s\nEndereco ..: %s\nCidade ..: %s\nEstado..:%s\nProfissao..:%s\nNascimento..:%s\nBairro..:%s", d[indice].nome, d[indice].endereco, d[indice].cidade,d[indice].estado,d[indice].profissao,d[indice].nascimento,d[indice].bairro);
            cont++;
            }
            indice++;
            retorno = fread(&d[indice], sizeof(struct dados), 1, fp);
        }
        if(cont == 0){
                     printf("não contatos com este nome!\n");
                     }
        getch();
        fclose(fp);
   }
 
//======================================================================
// ======Pesquisar Nascimento ============================================

void pesquisarnascimento(void){
     int indice = 0, retorno = 1, cont = 0;
     char nascimento[15],op;

     if ((fp = fopen("agenda.db", "r")) == NULL){
     printf ("O arquivo da lista não pode ser aberto!\n");
     printf ("Insira dados!\n");
     getch();
     exit(1);
     }
     printf ("Digite o nascimento: ");
     gets(nascimento);

     retorno = fread(&d[indice], sizeof(struct dados), 1, fp);

        while (retorno == 1){
            if (strcmp(nascimento, d[indice].nascimento)==0){
            printf ("%s\nNome ..: %s\nEndereco ..: %s\nCidade ..: %s\nEstado..:%s\nProfissao..:%s\nNascimento..:%s\nBairro..:", d[indice].nome, d[indice].endereco, d[indice].cidade,d[indice].estado,d[indice].profissao,d[indice].nascimento,d[indice].bairro);
            cont++;
            }
            indice ++;
            retorno = fread(&d[indice], sizeof(struct dados), 1, fp);
        }
        if(cont == 0){
                     printf("não contatos com este Nascimento!\n");
                     }
        getch();
        fclose(fp);
   }
 

 
//======================================================================
// ======Lista os contatos cadastrados =================================

void Listar(void){
int i = 0, retorno;

    if ((fp = fopen("agenda.db", "r")) == NULL)
    {
    printf ("O arquivo da lista não pode ser aberto!\n");
    printf ("Insira dados!\n");
    getch();
    exit(1);
    }

    retorno = fread(&d, sizeof(struct dados), 1, fp);
   // fread retorna a quantidade de itens ...

   while ( retorno == 1) {
      printf("\n Nome ..: %s",   d.nome);
      printf("\n Nadcimento ..: %s",    d.nascimento);
      printf("\n Cidade ..: %s",   d.cidade);
      printf("\n Estado ..: %s",    d.estado);
      printf("\n Bairro..:%s",   d.bairro);
      printf("\n Endereco ..: %s",   d.endereco);
      printf("\n Profissao ..: %s\n",    d.profissao);
      i++;
      retorno = fread(&d, sizeof(struct dados), 1, fp);
      }
      printf(" \n\n %d Contatos salvos!\n", i);
      getch();
      fclose(fp);
}

//======================================================================
// ======Menu ==========================================================

void menu(void){
char op;
int teste;

if ((fp = fopen("agenda.db", "r")) != NULL){
        qtd = 0;      
        do {
             teste = fread(&d, sizeof(struct dados), 1, fp);
             qtd++;
        }while ( teste == 1 );
        qtd--;
}

do{
system("cls");
printf("\n(1)Incluir\n(2)Listar\n(3)Ordenar por nome\n(4)Pesquisar por nome\n");
printf("(5)Pesquisar por nascimento\n(6)Qualquer outra tecla para sair\n\n");
op = getch();
switch(op){
case '1':
     inclusao();
break;
case '2':
     Listar();
break;
case '3':
     ordenar();
break;
case '4':
     pesquisar();
break;
case '5':
     pesquisarnascimento();
break;

default:
exit(1);
}
}while (op < '6');
}

int main (){
    int var;
    

    printf("\n\n\n\n\n\n\n\n\n\n");
    printf("                  .::AGENDA ELETRONICA:.  \n\n");
    printf("  Veja todas as funcoes disponiveis no menu   \n");
    printf("  use os numeros para selecionar a opcao desejada  \n");
    printf("  pressione qualquer tecla para continuar ou ESC para sair do programa agora.");
    var=getch();
    if(var == 300){ exit(1);}
menu();
system("pause");
}
 

Espero que alguém possa me ajudar.

Obrigado

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...