Pular para o conteúdo

Agenda eletrônica feita em C

Agenda eletrônica feita em C que permite o cadastro de clientes com os seguintes atributos: nome, telefone e e-mail. O programa também permite a listagem de clientes tanto em ordem alfabética quanto por ordem de cadastro. Também é possível a pesquisa de clientes por nome ou por número de cadastro. No final do programa, todos os dados de cadastro de clietes são salvos em arquivo. Obs.: Para compiladores gcc.
Marcus Vinícius marquimsc
Hits: 17.044 Categoria: C/C++ Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Agenda eletrônica feita em C que permite o cadastro de clientes com os seguintes atributos: nome, telefone e e-mail. O programa também permite a listagem de clientes tanto em ordem alfabética quanto por ordem de cadastro. Também é possível a pesquisa de clientes por nome ou por número de cadastro. No final do programa, todos os dados de cadastro de clietes são salvos em arquivo. Obs.: Para compiladores gcc.
Download agenda.c Enviar nova versão

Esconder código-fonte

/*Autor:Marcus Vinícius Souza Costa
Descrição:Agenda eletrônica feita em C que permite o cadastro de Clientes 
com os seguintes atributos:Nome,telefone e e-mail.
    O programa também permite a listagem de clientes tanto em ordem alfabética
quanto por ordem de cadastro.Também é possível a pesquisa de clientes por nome
ou por número de cadastro.
   No final do programa é todos os dados de cadastro de clietes são salvos
no em disco.
OBS:Para compiladores GCC*/

//Declaração das bibliotecas
# include <stdio_ext.h>
# include<stdlib.h>
   // Declaração de variaveis GLOBAIS
   int cont,n=0,o,resp=0,k=0; 
   int pos[200];
   char email[200][50],nome[200][50],aux[1][50],tel[200][50],vet[255];

void mostrarcliente(){ // Essa função mostra os clientes em ordem de inscrição
   int op,i,j;
   char ch;
   if (n!=0){ //Verfica se existe cadsatro
      printf("Você possui %d cliente(s) cadastrados até agora\n\n",n);
      printf("Você deseja visualizar todos?(1-para sim)|(outra tecla para não): ");
      scanf("%d",&op);
      system("clear");
      if (op==1){
         j=0;
         while(j<n){
            retorno:
            for (i=0;i<n;i++){
               if (j==pos[i]){
                  printf("Número de inscrição:%.4d\n",pos[i]+1);
                  printf("Nome:%s",nome[i]);
                  printf("Telefone:%s",tel[i]);
                  printf("E-mail:%s\n\n",email[i]);
                  j++;
                  goto retorno;
               }
            }
         }
      }
   }else{
      printf("Não há clientes cadastrados");
   }
   printf("\n\n\t\t\tAperte ENTER para voltar ao menu principal");
   __fpurge(stdin);
   ch=getchar();
   main();
}
void ordem(){ // Ordenação por Seleção (em ordem Alfabética)
   int j,i,indi,indj;
   char ch;
   if (n!=0){
      for (i=n-k;i<n;i++){
         for (j=0;j<n;j++){ //Ordena os nomes
            if (nome[i][0]<nome[j][0]){
               //Colocando em ordem os nomes
               strcpy(aux[0],nome[i]);
               strcpy(nome[i],nome[j]);
               strcpy(nome[j],aux[0]);
               //Colocando em ordem o número de telefone
               strcpy(aux[0],tel[i]);
               strcpy(tel[i],tel[j]);
               strcpy(tel[j],aux[0]);
               //Colocando em ordem o e-mail
               strcpy(aux[0],email[i]);
               strcpy(email[i],email[j]);
               strcpy(email[j],aux[0]);
               //Colocando em ordem o número do candidato
               k=pos[i];
               pos[i]=pos[j];
               pos[j]=k;
            }else if((nome[i][0]==nome[j][0]) && (i!=j)){ //Verfica se a primeira letra do nome,se forem iguais
               indi=0;
               indj=0;
               while(nome[i][indi]==nome[j][indj]){
                  indi++;
                  indj++;
                  again:
                  if (nome[i][indi]<nome[j][indj]/* && nome[i][indi]!='_' && nome[j][indj]!='_' */) {
                     //Colocando em ordem os nomes
                     strcpy(aux[0],nome[i]);
                     strcpy(nome[i],nome[j]);
                     strcpy(nome[j],aux[0]);
                     //Colocando em ordem o número de telefone
                     strcpy(aux[0],tel[i]);
                     strcpy(tel[i],tel[j]);
                     strcpy(tel[j],aux[0]);
                     //Colocando em ordem o e-mail
                     strcpy(aux[0],email[i]);
                     strcpy(email[i],email[j]);
                     strcpy(email[j],aux[0]);
                     //Colocando em ordem o número do candidato
                     k=pos[i];
                     pos[i]=pos[j];
                     pos[j]=k;
                  }if (nome[i][indi]=='_' || nome[j][indj]=='_'){
                     if (nome[i][indi]=='_'){
                        indi++;
                     }if (nome[j][indj]=='_'){
                        indj++;
                     }
                     goto again;
                  }
               }
            }
         }
      }
      system("clear");
      printf("Número de inscrição\t\tNome\n\n");
      for (i=0;i<n;i++){
         printf("\t%.4d\t\t\t%s\n",pos[i]+1,nome[i]);
      }//fim do for
      k=resp*(-1);
      
   }else{
      printf("Não existem clientes cadastrados: \n\n");
   }
   printf("\n\n\t\t\t\tPressione ENTER para voltar ao menu incial");
   __fpurge(stdin);
   ch=getchar();
   main();
}
void cadastro (){
   int j,i,conv;
   char ch;
   system("clear"); 
   printf("\n Digite a quantidade de clientes que deseja cadastrar: ");
   scanf("%d",&resp);
   system("clear");
   for (j=n;j<resp+n;j++){
      repeticao:
      system("clear");   
      printf("----------------\n");
      printf("| Cliente %.4d |\n",j+1);
      printf("----------------\n\n");
      printf("\nEntre com o nome(sem caracteres especiais): ");
      __fpurge(stdin);// limpa o bufer usado pelo teclado (linux)
      fgets(nome[j],40,stdin);
      for (i=strlen(nome[j])-2;i>=0;i--){
         if ((nome[j][i]<'0') || (nome[j][i]>'z')){
            printf("Não é permitido o uso de caracteres especias e nem de espaço em branco,favor aperte ");
            printf("ENTER para inserir outro nome no char %c e i %d\n",nome[j][i],i);
            __fpurge(stdin);
            ch=getchar();
            goto repeticao;
         }
      }
      printf("Entre com o telefone: ");
      fgets(tel[j],20,stdin);
      printf("Entre com o email: ");
      __fpurge(stdin);
      fgets(email[j],45,stdin);
      pos[j]=j;
   }
   printf("\n\n");
   n=n+resp;
   k=resp;
       for (i=n-k;i<n;i++){
      for (j=strlen(nome[i])-2;j>=0;j--)
          nome[i][j]=toupper(nome[i][j]);
   }
   main();
}

void clientes(){ // Pesquisa Sequêncial
     int j,op,num,cont=0,ch;
   char cliente [255];
   if (n!=0){
      volta:
           system("clear");
           printf("Escolha uma das opções:\n");
           printf("1-Pesquisa por nome\n");
           printf("2-Pesquisa por número de cadastro\n");
           printf("0-Voltar ao Menu principal\n");
           printf("\tEscolha aqui:");
           scanf("%d",&op);
           if ((op<0) || (op>2)){
                 printf("Operação inválida,aperte ENTER para continuar o programa\n");
                 __fpurge(stdin);
                 ch=getchar();
                 goto volta;
           }
           if (op==1){
                    printf("\nDigite o nome para a pesquisa: ");
               __fpurge(stdin); //limpa o buffer do teclado
                    fgets(cliente,40,stdin);
                    for (j=strlen(cliente)-2;j>=0;j--)
            cliente[j]=toupper(cliente[j]);
         system("clear");
         for (j=0;j<n;j++){
               if (0==strcmp(cliente,nome[j])) { //Verifica se há o nome no cadastro
                 if (cont==0)
                    printf("*********************************\n");   
                 printf("Número de cadastro:%.4d\n\n",pos[j]+1);
                 printf("Nome:%s\n",nome[j]);
                 printf("Telefone:%s\n",tel[j]);
                 printf("E-mail:%s\n",email[j]);
                 cont++;
                       printf("*********************************\n");
                 if (j==n-1){
                    printf("\n\n\tForam(foi) encontrado(s) %d cliente(s)\n",cont);
                 }
               }else if((j==n-1) && (cont==0)){
                printf("Cliente inexistente.Favor aperte ENTER para continuação do programa\n");
               }
                     }
           }else if(op==2){
                    printf("Digite o número para pesquisa:");
                    scanf("%d",&num);
                    if (num>n || num<=0){
                       printf("Cliente inexistente.Favor aperte ENTER para continuação do programa\n");
                       __fpurge(stdin);
                       ch=getchar();
                       goto volta;
                    }
                    system("clear");
         for (j=0;j<n;j++){
                        if (pos[j]+1==num){
                              printf("Número de cadastro:%.4d\n\n",pos[j]+1);
               printf("Nome:%s\n",nome[j]);
               printf("Telefone:%s\n",tel[j]);
               printf("E-mail:%s\n",email[j]);
               break;
            }
                    }//fim do for
           }else{
         main();
      }
   }else{
      printf("\n\nNão há clientes cadastrados,aperte ENTER para retornar ao Menu Principal\n");
   }
      printf("\n\n\t\tAperte ENTER para retornar ao Menu Principal\n"); 
      __fpurge(stdin);
      ch=getchar();
      main();
} //Fim da função clientes

void gravaremdisco (){ // Função de Salvar o porgrama em DISCO e sair
       int i;
       FILE *arquivo;
       arquivo = fopen ("arquivo.txt", "w");

       for (i = 0; i <n; i++){
               fprintf (arquivo, "%s %s %s\n\n", nome[i], tel[i], email[i]);
       }
       fclose (arquivo);
       printf("\n   Arquivo Gravado com SUCESSO");
       printf("\n\n  Obrigado por utilizar o programa! :-)\n\n\n\n ");
       exit(0);
}
//FIM DA FUNÇÃO CLIENTES

int main(){
   char ch;
    do{
      system("clear");
      printf("\n\n\n     ===========================\n");
      printf("     =    AGENDA ELETRÔNICA    =");
      printf("\n     ===========================\n");
      printf ("\n             MENU \n");
      printf("        CONTROLE DE CLIENTES\n");
      printf ("\n\t1-Cadastro");
      printf ("\n\t2-Pesquisar clientes");
      printf ("\n\t3-Listar em ordem alfabetica");
      printf ("\n\t4-Mostrar número de clientes");
      printf ("\n\t5-Sair & Gravar em Disco");
      __fpurge(stdin);
      printf ("\n\n    Escolha uma opcao: ");
      scanf ("%d", & cont);
      switch (cont){
      
         case 1:
            cadastro();
         break;
   
         case 2:
            clientes();
         break;
   
         case 3:
            ordem();
         break;
   
         case 4:
            mostrarcliente();
         break;
         
         case 5:
            gravaremdisco();
         break;
         
         default:
            printf("\n\tOpcao invalida\n");
            printf("Pressione ENTER para Retornar ao MENU: ");
            __fpurge(stdin);
            ch=getchar ();
            main();
      } //Fim do switch
   }while((cont<=1)||(cont>=6));
}

livraria

Gerenciamento de Área de Alocação Dinâmica (Listas Encadeadas)

Função "Partição de Inteiros" Recursiva SEM Tabela Estática em C

A tabuada em C!

Fibbonacci com Memoization - O(n)

#1 Comentário enviado por tryvon em 08/07/2008 - 02:21h
Muito bom, esse código vai me ajudar muito em outros programas.
#2 Comentário enviado por andrezc em 24/04/2009 - 19:43h
Muito bom mesmo amigo, ta de parabéns !
#3 Comentário enviado por cesar em 23/07/2009 - 11:33h
O único problema é que ao salvar o arquivo .txt você utiliza "w" ou seja, ele sempre irá criar o arquivo, mesmo que ele já exista e o arquivo atual será deletado!

Apenas algumas modificações e fica bom :}

Parabéns!

[]'s
#4 Comentário enviado por andrezc em 22/08/2009 - 16:09h
Muito bom, só não gostei desse "goto" qur você usou, fora isso ta bem completo.

Contribuir com comentário

Entre na sua conta para comentar.