InicioLinuxagenda electronica en C
Bueno quiero compartir con ustedes esto que obtuve después de andar investigando por varias páginas espero les pueda ser de ayuda a mas de uno tanto en uso como para aprender del código. /*Descripción: Agenda electrónica hecha en C que permite el registro de Clientes con los siguientes datos: Nombre, Teléfono, e-mail. El programa también permite listar los clientes tanto en orden alfabético así como por orden de registro, también es posible la búsqueda de clientes por nombre o por numero de registro. Al final del programa todos los datos del registro de clientes son guardados en el disco OBS:Para compiladores GCC*/
//Declaración de las bibliotecas
# include <stdio_ext.h>
# include<stdlib.h>
   // Declaración de variables GLOBALES
   int cont,n=0,o,resp=0,k=0;
   int pos[200];
   char email[200][50],nombre[200][50],aux[1][50],tel[200][50],vet[255];
 
void mostrarcliente(){ // Esta función muestra los clientes en orden de inscripción
   int op,i,j;
   char ch;
   if (n!=0){ //Verfica si existe el registro
      printf("Usted tiene %d cliente(s) registrados hasta ahorann",n);
      printf("Usted desea visualizar todos?(1-para si)|(otra tecla para no): ");
      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 inscripción:%.4dn",pos[i]+1);
                  printf("Nombre:%s",nombre[i]);
                  printf("Telefono:%s",tel[i]);
                  printf("E-mail:%snn",email[i]);
                  j++;
                  goto retorno;
               }
            }
         }
      }
   }else{
      printf("No existen clientes registrados");
   }
   printf("nntttPresione ENTER para volver al menú principal");
   __fpurge(stdin);
   ch=getchar();
   main();
}
void orden(){ // Ordenar por selección (en orden Alfabético)
   int j,i,indi,indj;
   char ch;
   if (n!=0){
      for (i=n-k;i<n;i++){
         for (j=0;j<n;j++){ //Ordena los nombres
            if (nombre[i][0]<nombre[j][0]){
               //Colocando en orden los nombres
               strcpy(aux[0],nombre[i]);
               strcpy(nombre[i],nombre[j]);
               strcpy(nombre[j],aux[0]);
               //Colocando en orden los números de teléfonos
               strcpy(aux[0],tel[i]);
               strcpy(tel[i],tel[j]);
               strcpy(tel[j],aux[0]);
               //Colocando en orden el e-mail
               strcpy(aux[0],email[i]);
               strcpy(email[i],email[j]);
               strcpy(email[j],aux[0]);
               //Colocando en orden el número de candidato
               k=pos[i];
               pos[i]=pos[j];
               pos[j]=k;
            }else if((nombre[i][0]==nombre[j][0]) && (i!=j)){ //Verifica si la primera letra del nombre, si son iguales
               indi=0;
               indj=0;
               while(nombre[i][indi]==nombre[j][indj]){
                  indi++;
                  indj++;
                  again:
                  if (nombre[i][indi]<nombre[j][indj]/* && nombre[i][indi]!='_' && nombre[j][indj]!='_' */) {
                     //Colocando en orden los nombres
                     strcpy(aux[0],nombre[i]);
                     strcpy(nombre[i],nombre[j]);
                     strcpy(nombre[j],aux[0]);
                     //Colocando en orden el número de teléfono
                     strcpy(aux[0],tel[i]);
                     strcpy(tel[i],tel[j]);
                     strcpy(tel[j],aux[0]);
                     //Colocando en orden el e-mail
                     strcpy(aux[0],email[i]);
                     strcpy(email[i],email[j]);
                     strcpy(email[j],aux[0]);
                     //Colocando en orden el número de candidato
                     k=pos[i];
                     pos[i]=pos[j];
                     pos[j]=k;
                  }if (nombre[i][indi]=='_' || nombre[j][indj]=='_'){
                     if (nombre[i][indi]=='_'){
                        indi++;
                     }if (nombre[j][indj]=='_'){
                        indj++;
                     }
                     goto again;
                  }
               }
            }
         }
      }
      system("clear");
      printf("Número de registrottNombrenn");
      for (i=0;i<n;i++){
         printf("t%.4dttt%sn",pos[i]+1,nombre[i]);
      }//fin del for
      k=resp*(-1);
       
   }else{
      printf("No existen clientes registrados: nn");
   }
   printf("nnttttPresione ENTER para volver al menu incial");
   __fpurge(stdin);
   ch=getchar();
   main();
}
void registro (){
   int j,i,conv;
   char ch;
   system("clear");
   printf("n Escriba la cantidad de clientes que desea registrar: ");
   scanf("%d",&resp);
   system("clear");
   for (j=n;j<resp+n;j++){
      repetir:
      system("clear");   
      printf("----------------n");
      printf("| Cliente %.4d |n",j+1);
      printf("----------------nn");
      printf("nEscriba el nombre(sin caracteres especiales): ");
      __fpurge(stdin);// limpa el bufer usado por el teclado (gnu/linux)
      fgets(nombre[j],40,stdin);
      for (i=strlen(nombre[j])-2;i>=0;i--){
         if ((nombre[j][i]<'0') || (nombre[j][i]>'z')){
            printf("No es permitido el uso de caracteres especiales ni espacios en blanco, favor presione ");
            printf("ENTER para insertar otro nombre char %c e i %dn",nombre[j][i],i);
            __fpurge(stdin);
            ch=getchar();
            goto repetir;
         }
      }
      printf("Introduzca el número de teléfono: ");
      fgets(tel[j],20,stdin);
      printf("Introduzca el e-mail: ");
      __fpurge(stdin);
      fgets(email[j],45,stdin);
      pos[j]=j;
   }
   printf("nn");
   n=n+resp;
   k=resp;
       for (i=n-k;i<n;i++){
      for (j=strlen(nombre[i])-2;j>=0;j--)
          nombre[i][j]=toupper(nombre[i][j]);
   }
   main();
}
 
void clientes(){ // Busqueda secuencial
     int j,op,num,cont=0,ch;
   char cliente [255];
   if (n!=0){
      vuelve:
           system("clear");
           printf("Elija una de las opciones:n");
           printf("1-Busqueda por nombren");
           printf("2-Busqueda por numero de registron");
           printf("0-Volver al menú principaln");
           printf("tElija aquí:");
           scanf("%d",&op);
           if ((op<0) || (op>2)){
                 printf("Operación inválida, presione ENTER para continuar con el programan");
                 __fpurge(stdin);
                 ch=getchar();
                 goto vuelve;
           }
           if (op==1){
                    printf("nIntroduzca el nombre para la búsqueda: ");
               __fpurge(stdin); //limpia el buffer del 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,nombre[j])) { //Verifica si existe el nombre en el registro
                 if (cont==0)
                    printf("*********************************n");   
                 printf("Número de registro:%.4dnn",pos[j]+1);
                 printf("Nombre:%sn",nombre[j]);
                 printf("Telefono:%sn",tel[j]);
                 printf("E-mail:%sn",email[j]);
                 cont++;
                       printf("*********************************n");
                 if (j==n-1){
                    printf("nntFueron(Fue) encontrado(s) %d cliente(s)n",cont);
                 }
               }else if((j==n-1) && (cont==0)){
                printf("Cliente inexistente.Favor presione ENTER para continuar con el programan");
               }
                     }
           }else if(op==2){
                    printf("Introduzca el número para la busqueda:");
                    scanf("%d",&num);
                    if (num>n || num<=0){
                       printf("Cliente inexistente.Favor presione ENTER para continuar con el programan");
                       __fpurge(stdin);
                       ch=getchar();
                       goto vuelve;
                    }
                    system("clear");
         for (j=0;j<n;j++){
                        if (pos[j]+1==num){
                              printf("Número de registro:%.4dnn",pos[j]+1);
               printf("Nombre:%sn",nombre[j]);
               printf("Telefono:%sn",tel[j]);
               printf("E-mail:%sn",email[j]);
               break;
            }
                    }//fin del for
           }else{
         main();
      }
   }else{
      printf("nnNo existen clientes registrados, presione ENTER para volver al Menú Principaln");
   }
      printf("nnttPresione ENTER para volver al Menú Principaln");
      __fpurge(stdin);
      ch=getchar();
      main();
} //Fin de la función Clientes
 
void grabarendisco (){ // Función de grabar el programa en el DISCO y salir
       int i;
       FILE *archivo;
       arquivo = fopen ("archivo.txt", "w");
 
       for (i = 0; i <n; i++){
               fprintf (archivo, "%s %s %snn", nombre[i], tel[i], email[i]);
       }
       fclose (archivo);
       printf("n   Archivo Grabado com EXITO");
       printf("nn  Gracias por utilizar el programa! :-)nnnn ");
       exit(0);
}
//FIN DE LA FUNCIÓN CLIENTES
 
int main(){
   char ch;
    do{
      system("clear");
      printf("nnn     ===========================n");
      printf("     =    AGENDA ELECTRONICA =");
      printf("n     ===========================n");
      printf ("n             MENU n");
      printf("        CONTROL DE CLIENTESn");
      printf ("nt1-Registro");
      printf ("nt2-Buscar clientes");
      printf ("nt3-Listar en orden alfabetico");
      printf ("nt4-Mostrar número de clientes");
      printf ("nt5-Salir & Grabar en Disco");
      __fpurge(stdin);
      printf ("nn    Escoja una opción: ");
      scanf ("%d", & cont);
      switch (cont){
       
         case 1:
            registro();
         break;
    
         case 2:
            clientes();
         break;
    
         case 3:
            orden();
         break;
    
         case 4:
            mostrarcliente();
         break;
          
         case 5:
            grabarendisco();
         break;
          
         default:
            printf("ntOpción invalidan");
            printf("Presione ENTER para volver al MENU: ");
            __fpurge(stdin);
            ch=getchar ();
            main();
      } //Fin del switch
   }while((cont<=1)||(cont>=6));
}

Datos archivados del Taringa! original
111puntos
8,486visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
cagl86🇦🇷
Usuario
Puntos0
Posts54
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.