Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

O feioso

Agenda em C

Recommended Posts

Seguinte.. recebi um trabalho para fazer na faculdade, uma agenda e tal. Até agora eu criei só o esqueleto dela, minha dúvida está na parte de pesquisar e excluir um contato dela. Também tenho que ordenar os contatos em ordem alfabética. Queria que vcs me dessem uma luz quanto as funções, pelo menos um caminho, estou totalmente perdido :( (Ainda tem que guardar tudo isso em um arquivo)

#include <stdio.h>
#include <stdlib.h>
// Protótipos das Funções
void abrir (void);
void inserir (void);
void pesquisar (void);
void pesquisar_nome (void);
void pesquisar_cidade (void);
void pesquisar_estado (void);
void apagar (void);

int q=0, i;
FILE *fp;

//----------------------------------------------------------------------------------

// Estrutura de Dados
struct agenda{       
         char nome[20];
         char sobrenome[30];
         char endereco[40];
         char numero[10];
         char complemento[20];
         char bairro[20];
         char cidade[20];
         char estado[20]; 
         char telefone[20];
         char celular[20];
         }x[5];

//------------------------------------------------------

// Função para Abrir Arquivo


//------------------------------------------------------

// Função para Inserir Contato
void inserir()
{    
     fp = fopen ("arquivo.txt", "a");
     if (fp == NULL){
            printf ("Erro na abertura do arquivo!\n\n");
            }
// Leitura de dados     
     for (i=0; i<3; i++){
     
     fflush(stdin);
     printf ("\nNome: ");
     gets (x[q].nome);
     printf ("Sobrenome: ");
     gets (x[q].sobrenome);
     printf ("Endereco: ");
     gets (x[q].endereco);
     printf ("Numero: ");
     gets (x[q].numero);
     printf ("Complemento: ");
     gets (x[q].complemento);
     printf ("Bairro: ");
     gets (x[q].bairro);
     printf ("Cidade: ");
     gets (x[q].cidade);
     printf ("Estado: ");
     gets (x[q].estado);
     printf ("Telefone: ");
     gets (x[q].telefone);
     printf ("Celular: ");
     gets (x[q].celular);
     printf ("\n\n");

// Gravação de Dados no Arquivo

     fprintf (fp, "\nNome: %s\n", x[q].nome);
     fprintf (fp, "Sobrenome: %s\n", x[q].sobrenome);
     fprintf (fp, "Endereco: %s\n", x[q].endereco);
     fprintf (fp, "Numero: %s\n", x[q].numero);
     fprintf (fp, "Complemento: %s\n", x[q].complemento);
     fprintf (fp, "Bairro: %s\n", x[q].bairro);
     fprintf (fp, "Cidade: %s\n", x[q].cidade);
     fprintf (fp, "Estado: %s\n", x[q].estado);
     fprintf (fp, "Telefone: %s\n", x[q].telefone);
     fprintf (fp, "Celular: %s\n", x[q].celular);
     }
     
     fclose(fp);
}

//------------------------------------------------------------

// Função para Pesquisar Contato
void pesquisar()
{
     int op_2;
     
     printf ("\n===========================\n");
     printf ("Escolha uma opcao:\n\n");
     printf ("1. Pesquisar por nome\n");
     printf ("2. Pesquisar por cidade\n");
     printf ("3. Pesquisar por estado\n");
     printf ("4. Voltar ao Menu Principal\n");
     printf ("===========================\n\n");
     printf ("* Opcao: ");
     scanf ("%d", &op_2);
     printf ("\n");
     
     switch (op_2){
            case 1:
                 //printf ("Funciona!\n");
                 pesquisar_nome();
                 break;
            case 2:
                 //pesquisar_cidade();
                 break;
            case 3:
                 //pesquisar_estado();
                 break;
            case 4:
                 main();
                 break;
            default:
                 printf ("Opcao Invalida - Tente Novamente\n");
                 pesquisar();
                 break;
            }
     
}

//------------------------------------------------------------

// Função Pesquisar Contato por Nome
void pesquisar_nome ()
{
     char nome_1[30];
     
     printf ("Digite o nome que voce deseja pesquisar: ");
     scanf ("%s", &nome_1);
 
     for (q=0; q<3; q++){
         if (strcmp (nome_1, x[q].nome)== 0){ // Aqui é comparada a string "nome_1" com a string "x[q].nome", se elas forem iguais, a função retorna 0, e então se printa os dados na tela.
                    
                    printf ("\nNome: %s\n", x[q].nome);
                    printf ("Sobrenome: %s\n", x[q].sobrenome);
                    printf ("Endereco: %s\n", x[q].endereco);
                    printf ("Numero: %s\n", x[q].numero);
                    printf ("Complemento: %s\n", x[q].complemento);
                    printf ("Bairro: %s\n", x[q].bairro);
                    printf ("Cidade: %s\n", x[q].cidade);
                    printf ("Estado: %s\n", x[q].estado);
                    printf ("Telefone: %s\n", x[q].telefone);
                    printf ("Celular: %s\n\n", x[q].celular);
                    printf ("Pesquisa Concluida !\n\n");
                     
                    }
     }
     
} 

// Função para Excluir Dados
void apagar ()
{    
}

// -----------------------------------------------------------


int main()
{   
  int op;
  
  do{       
  printf ("======== Menu ========\n");
  printf ("1. Abrir Arquivo\n");
  printf ("2. Inserir Contato\n");
  printf ("3. Pesquisar Contato\n");
  printf ("4. Apagar Contato\n");
  printf ("5. Sair\n");
  printf ("======================\n\n");
  printf ("* Escolha sua opcao: ");
  scanf ("%d", &op);
  
  switch (op){
         case 1:
              //abrir();
              break;
         case 2:
              inserir();
              break;
         case 3:
              pesquisar();
              break;
         case 4:
              //apagar();
              break;       
         case 5:
              printf ("\nFim do programa\n");
              break;
         default:
              printf ("Opcao Invalida - Tente Novamente\n\n");
              break;
              }
         
  }while(op != 5);

//------------------------------------------------------------         
  
  system("PAUSE");	
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

É tera que trabalhar os contatos em blocos..

sempre usará uma struct para armazenar os dados lidos do txt..

para ordenar veja sobre o comando strcoll;

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.