A free template from Joomlashack

A free template from Joomlashack




Descargar todos los ejemplos c de esta web + el manual c
Moviles TDT, relojes movil, boligrafo espia y + en la Tienda de electronica

Home arrow Archivos arrow Directorio telefónico con manejo de archivos
Directorio telefónico con manejo de archivos PDF Imprimir E-Mail
Calificación del usuario: / 51
MaloBueno 

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

 struct DIREC{
 char    nombre[35];
 char    tele[20];
} ;

FILE *pack(FILE *a);
void ordena(FILE *a);
void consulta2(FILE *a);
long busca_Clave2(FILE *a,char buscado[]);
void lee(FILE *a);
void imprime(FILE *a);

void main(){

 char   opcion;
 FILE *archivo;
 archivo=fopen ("TELE.DAT","rb+");   /* usar opción "wb+" para crear el archivo .DAT y después cambiar a "rb+" */

 while(1){
  clrscr();
  textattr(6+5*5);
  clrscr();
  textcolor(YELLOW);
  cprintf("                            DIRECTORIO TELEFONICO");
  printf("\n\n");
  cprintf("          N");
  printf("uevo");
  textcolor(YELLOW);
  cprintf("     L");
  printf("ista");
  textcolor(YELLOW);
  cprintf("     B");
  printf("aja");
  textcolor(YELLOW);
  cprintf("     C");
  printf("onsulta");
  textcolor(YELLOW);
  cprintf("     O");
  printf("rdena");
  textcolor(YELLOW);
  cprintf("     S");
  printf("alir");

  gotoxy(1,25);
  printf("          *** PRESIONE LA LETRA RESALTADA PARA ESCOGER LA OPCION ***");
  gotoxy(1,4);
  opcion=toupper(getch());

  if(opcion=='S')
  break;
  switch(opcion){
 case 'N':{
  lee(archivo);
  break;
 }
 case 'L':{
  imprime(archivo);
  break;
 }
 case 'B':{
  pack(archivo);
  break;
 }
 case 'C':{
  consulta2(archivo);
  break;
 }
 case 'O':{
  ordena(archivo);
  break;
 }
  }
 }
 clrscr();
 fclose (archivo);
 normvideo();
 clrscr();
}

/*********************************************************************/

void imprime(FILE *a){
 int r,y=0,c=1;
 struct DIREC reactivo;
 clrscr();
 textcolor(YELLOW);
 cprintf("NOMBRE                                     TELEFONO");
 normvideo();
 rewind(a);
  while(1){
 r=fread(&reactivo,sizeof(struct DIREC),1,a);
 if(r==0)
  break;

   if((c%2)!=0){
   textattr(6+5*5);
  /* textcolor(LIGHTGRAY);*/
   printf("\n");
   cprintf("%d.- %-30s %16s",c,reactivo.nombre,reactivo.tele);
   normvideo();
  }
  else{
   textattr(6+5*4);
 /*  textcolor(WHITE);*/
   printf("\n");
   cprintf("%d.- %-30s %16s",c,reactivo.nombre,reactivo.tele);
   normvideo();
  }

   if(y==23){
   getch();
   y=0;
  }
    y++;
    c++;
 }
    getch();
}


/*********************************************************************/

void lee(FILE *a){
 struct DIREC reactivo;
 printf("\n\n");

  fflush(stdin);
  printf("Nombre    : ");strupr(gets(reactivo.nombre));
 if(strlen(reactivo.nombre)<30){

 if(busca_Clave2(a,reactivo.nombre)==0){
 printf("Tel‚fono  : ");gets(reactivo.tele);
  fseek(a,0,SEEK_END);
  fwrite (&reactivo,sizeof(struct DIREC),1,a);
   }
   else{
    printf("\n\nYa existen esos datos!!!");
    getch();
   }
  }
   else{
    printf("\n\nM ximo 25 letras por nombre...");
    printf("\n\n­­­El programa puede da¤arse si repite este error!!!");
    getch();
 }
}

/*********************************************************************/

 long busca_Clave2(FILE *a,char buscado[]){
  long p;
  struct DIREC r;
  rewind(a);
 while(1){
  if(fread(&r,sizeof(struct DIREC),1,a)==0)
  break;
   if(strcmp(r.nombre,buscado)==0){
   p=ftell(a)/sizeof(struct DIREC);
   return(p);
 }
  }
 return 0;
 }

/*********************************************************************/

 void consulta2(FILE *a){
  char nombre[30];
  long p;
  struct DIREC r;
 printf("\n\nDame el nombre a buscar: ");
 strupr(gets(nombre));

 p=busca_Clave2(a,nombre);

  if(p!=0){

  fseek(a,(p-1)*sizeof(struct DIREC),SEEK_SET);
  fread(&r,sizeof(struct DIREC),1,a);
  printf("\n\n\n");
  textcolor(LIGHTGRAY);
  cprintf("NOMBRE                                     TELEFONO");
  normvideo();
  printf("\n%-20s %30s",r.nombre,r.tele);
   getch();

  }
 else{
  printf("\n\nLa informaci¢n solicitada no existe ...");
  getch();
 }
  }

/*********************************************************************/

 void ordena(FILE *a){
  int i=0,j=0,s,t;
  struct DIREC r;
  struct DIREC temp[100];
  struct DIREC temporal;
  while(1){
  fseek(a,i*sizeof(struct DIREC),SEEK_SET);
  if(fread(&r,sizeof(struct DIREC),1,a)==0)
  break;
   temp[j]=r;
   i++;
   j++;
  }
   for(s=0;s0){
   temporal=temp[s];
   temp[s]=temp[t];
   temp[t]=temporal;
    }

   s=0;
   i=0;
   while(1){
    if(s>=j)
    break;
   r=temp[s];
   fseek(a,i*sizeof(struct DIREC),SEEK_SET);
   fwrite (&r,sizeof(struct DIREC),1,a);
   s++;
   i++;
    }
   printf("\n\nSus archivos han sido ordenados alfab‚ticamente...");
   getch();

  }


/*********************************************************************/

 FILE *pack(FILE *a){
  int i=0;
  long p;
  char clave[30];
  struct DIREC r;
  FILE *t;
  t=fopen ("TMP.DAT","wb");

 printf("\n\nDame el nombre a dar de baja: ");
 strupr(gets(clave));
 p=busca_Clave2(a,clave);

 if(p!=0){
 while(1){
  fseek(a,i*sizeof(struct DIREC),SEEK_SET);
  if(fread(&r,sizeof(struct DIREC),1,a)==0)
  break;
   if(strcmp(r.nombre,clave)!=0){
   fseek(a,i*sizeof(struct DIREC),SEEK_SET);
   fwrite (&r,sizeof(struct DIREC),1,t);
  }
   i++;
 }
  fclose (t);
  fclose (a);
  remove("TELE.DAT");
  rename("TMP.DAT","TELE.DAT");
   t=fopen ("TELE.DAT","rb+");
     printf("\n\nLa informaci¢n solicitada ha sido dada de baja...");
   getch();
  return(t);
  }
  else{
   printf("\n\nNo existe el nombre...");
   getch();
  }
   return 0;
}

/*********************************************************************/

http://www.geocities.com/SiliconValley/8195/cprog.html

Comentarios
Añadir nuevo Buscar
65756  - 65   |132.248.181.xxx |2009-11-27 12:58:52
hgjgfk
pao  - Ja ja ja ja   |186.16.132.xxx |2009-12-10 13:25:17
ija de puuu que Buenisimo esta pero muuy largo...
y que le vamo a
hacer!!!


te felicito man.!!! esta de la pesada!!!!!!!!!
a por si acaso no
olvidaste ponerle los codigos a tu inicio???
leonardo  - necesito ayuda   |189.181.224.xxx |2009-12-13 18:07:18
oye no puedo hacer que corra el programa me marca estos errores me podrias
ayudar a que corra???

Error PROYECTO.CPP 123: Underfined symbol
´nombre´
Error PROYECTO.CPP 123: Cannot convert ´DIREC´ to ´char *´
Error
PROYECTO.CPP 123: Type mismatch in parameter ´buscando´in call to
´busca_Clave2(FILE *,char *)´
Error PROYECTO.CPP 123: Extra parameter in call
to busca_Clave2(FILE *,char *)
Error PROYECTO.CPP 144: Underfined symbol
´a´
Error PROYECTO.CPP 148: Cannot convert ´char * *´ to ´const char *´
Error
PROYECTO.CPP 148: Type mismatch in parameter ´____s2´in call to `strcmp(const
char *,const char *)´
Warning PROYECTO.CPP 154: Parameter ´buscando´is never
used
Warning PROYECTO.CPP 188: Unreachable code
Error PROYECTO.CPP 192:
Undefined symbol ´s0´
Error PROYECTO.CPP 192: For statement missing ;
Error
PROYECTO.CPP 237: Function ´foten´ should have a prototype
Error PROYECTO.CPP
237: Cannot convert ´int´ to ´F...
Erick  - Nice   |190.72.54.xxx |2010-01-19 23:11:38
Buen programa pero te recomendaria que comentaras mas, cuesta para otra personas
entenderlo un poco debido a tantas funciones, pero excelente muchas gracias
manuel luis ondo  - programacion en c++   |80.24.10.xxx |2010-01-20 15:49:06
hola, por favor puedes ayudarme en un programa utilizando stream el el que
ejemplo si escribo "manuel" imprima en la pantalla "leunam"
osea alreves.
freddy  - preguata   |190.104.161.xxx |2010-03-20 18:11:50
hola, probe el programita y me funciona pero me crea error al dejarlo como esta
en tu codigo la parte del prdenamiento en ese for..
for(s=0;s0){

temporal=temp[s];
temp[s]=temp[t];
temp[t]=temporal;
}

como debe ser
el correcto??
lulu   |186.16.36.xxx |2010-04-11 04:17:21
che arreglana y deci el ejemplos de algunos comandos..esta un poco desordenado
los comandos..
Per te felicito che!
cristina flores  - recepcion de informacion   |190.212.127.xxx |2010-04-12 23:00:40
hola- sabes me gustaria un programa en c, q el programa recepcione informacion
de cualquier tipo ya sea de una empresa un colegio etc.
Anónimo   |186.99.129.xxx |2010-06-18 16:06:18
corrigir   |189.139.47.xxx |2010-08-10 15:57:05
corrigan esta parte del codigoo
for(s=0;s0){

temporal=temp[s];
temp[s
]=temp[t];
temp[t]=temporal;
}
Escribir comentario
Nombre:
Email:
 
Título:
 
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
 
Por favor introduce el código anti-spam que puedes leer en la imagen.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
< Anterior   Siguiente >
Joomla Templates by Joomlashack