-
#include <iostream.h>
-
#include <stdlib.h>
-
#include <string.h>
-
#include <fstream>
-
-
struct datos
-
{
-
char nombre[50];
-
int telefono;
-
char direccion[50];
-
char email[50];
-
int valido; //valido=1->si existe valido=0->no existe
-
int valido2; //checara si el registro es correcto... siempre sera igual a 1706887114
-
};
-
-
int menu()
-
{
-
int n=0;
-
system("cls");
-
cout<<endl<<endl;
-
cout<<" ==========================================="<<endl;
-
cout<<" || AGENDA PERSONAL ||"<<endl;
-
cout<<" ==========================================="<<endl;
-
cout<<" || 1. AGREGAR NUEVO REGISTRO ||"<<endl;
-
cout<<" || 2. BUSCAR REGISTRO ||"<<endl;
-
cout<<" || 3. MOSTRAR TODOS LOS REGISTROS ||"<<endl;
-
cout<<" || 4. SALIR ||"<<endl;
-
cout<<" ==========================================="<<endl<<endl;
-
while ((n<1) || (n>4))
-
{ cout<<" Introduce un numero de las opciones listadas arriba [1-4]: "; cin>>n; }
-
cout<<endl;
-
return n;
-
}
-
-
void agregar(struct datos d)
-
{
-
char na='s'; //na=preguntar si kiere nuevo registro
-
while (na=='s')
-
{
-
char nn='x'; //nn=verificacion para agregar el registro
-
system ("cls"); //borramos pantalla
-
//guardamos los datos temporalmente en el struct
-
cout<<"Nombre: "; cin>> d.nombre;
-
cout<<"Telefono: "; cin>> d.telefono;
-
cout<<"Direccion: "; cin>> d.direccion;
-
cout<<"Email: "; cin>> d.email; cout<<endl;
-
d.valido=1; //decimos ke el registro si existe
-
d.valido2=1706887114; //con esto garantizamos ke es uno de nuestros registros
-
-
//verificamos si kiere agregar el nuevo registro
-
while ((nn!='s') && (nn!='n'))
-
{ cout<<endl<<"Deseas agregar el nuevo registro? [s-n]: "; cin>>nn; }
-
-
//agregamos
-
if (nn=='s')
-
{
-
ofstream reg("registros.dat", ios::app | ios::binary); //activamos el archivo en modo de escritura tomando en cuenta el parametro "app" para agregar en la ultima posicion del archivo
-
if(!reg) //si no se pudo abrir el archivo
-
{ cout <<"No se puede abrir el fichero."; }
-
reg.seekp(0, ios::end); // Colocar el cursor al final del archivo
-
reg.write((char *) &d, sizeof(d)); //escribimos el nuevo registro
-
reg.close(); //cerramos el archivo
-
cout<<endl<<"Registro agregado exitosamente"<<endl;
-
system("pause");
-
}
-
else
-
{
-
//borramos los datos temporales del struct
-
strcpy(d.nombre,"");
-
d.telefono=0;
-
strcpy(d.direccion,"");
-
strcpy(d.email,"");
-
d.valido=0;
-
d.valido2=0;
-
cout<<endl<<"El Registro NO fue agregado"<<endl;
-
system("pause");
-
}
-
na='x';
-
while ((na!='s') && (na!='n'))
-
{ cout<<endl<<endl<<"Deseas agregar un registro nuevo? [s-n]: "; cin>>na; } //la validacion se hace en el while inicial
-
}//endwhile
-
}
-
-
void modificar(struct datos d, int nm)
-
{
-
char nnm='x';
-
system ("cls"); //borramos pantalla
-
//guardamos los datos temporalmente en el struct
-
cout<<"Nombre: "; cin>> d.nombre;
-
cout<<"Telefono: "; cin>> d.telefono;
-
cout<<"Direccion: "; cin>> d.direccion;
-
cout<<"Email: "; cin>> d.email; cout<<endl;
-
d.valido=1; //decimos ke si existe
-
d.valido2=1706887114;
-
-
//verificamos si kiere modificar el registro
-
while ((nnm!='s') && (nnm!='n'))
-
{ cout<<endl<<"Deseas modificar este registro? [s-n]: "; cin>>nnm; }
-
-
//agregamos
-
if (nnm=='s')
-
{
-
ofstream reg("registros.dat", ios::out | ios::binary); //activamos el archivo en modo de escritura (creamos el objeto 'reg')
-
if(!reg) //si no se pudo abrir el archivo
-
{ cout <<"No se puede abrir el fichero."; }
-
reg.seekp((nm-1)*sizeof(d)); //colocamos el apuntador en la posicion inicial del registro a modificar
-
reg.write((char *) &d, sizeof(d)); //escribimos el nuevo registro
-
reg.close(); //cerramos el archivo
-
cout<<endl<<"Registro modificado exitosamente"<<endl;
-
}
-
else
-
{
-
//borramos los datos temporales del struct
-
strcpy(d.nombre,"");
-
d.telefono=0;
-
strcpy(d.direccion,"");
-
strcpy(d.email,"");
-
d.valido=1;
-
d.valido2=0;
-
cout<<endl<<"El Registro NO fue modificado"<<endl;
-
}
-
system("pause");
-
}
-
-
void eliminar(struct datos d, int ne)
-
{
-
system ("cls"); //borramos pantalla
-
d.valido=0; //modificamos "valid0" del struct para decir ke ese registro no sera tomado en cuenta
-
d.valido2=1706887114; //agregamos nuestra garantia de registro
-
-
//ahora actualizamos el registro
-
ofstream reg("registros.dat", ios::out | ios::binary); //activamos el archivo en modo de escritura (creamos el objeto 'reg')
-
if(!reg) //si no se pudo abrir el archivo
-
{ cout <<"No se puede abrir el fichero."<<endl; system("pause");}
-
reg.seekp((ne-1)*sizeof(d)); //colocamos el apuntador en la posicion inicial del registro a modificar
-
reg.write((char *) &d, sizeof(d)); //escribimos el nuevo registro
-
reg.close(); //cerramos el archivo
-
cout<<endl<<"Registro eliminado"<<endl;
-
system("pause");
-
}
-
-
void buscar(struct datos d)
-
{
-
int nb1=0, nb=-2; //nb1=variable auxiliar para saber si kiere volver a buskar o salir nb=variable ke guarda el #de registro buskado
-
while (nb1<4)
-
{
-
if (nb1==2)
-
{ modificar(d, nb); }
-
else
-
{
-
if (nb1==3)
-
{ eliminar(d, nb); }
-
}
-
system("cls"); //borramos pantalla
-
int nb=-2;
-
while (nb<0)
-
{ cout<<"Introduce el registro a buscar [0 para salir]: "; cin>>nb; }
-
if (nb!=0) //si kiere buskar...
-
{
-
ifstream reg("registros.dat", ios::in | ios::binary); //activa el archivo en modo de lectura (creamos el objeto 'reg')
-
reg.seekg((nb-1)*sizeof(d)); //colocamos el apuntador en la posicion inicial del registro encontrado
-
reg.read((char *) &d, sizeof d); //leemos el registro encontrado
-
//verificamos que el registro es correcto
-
if ((d.valido==1) && (d.valido2==1706887114))
-
{
-
cout<<endl<<endl<<"--------Registro encontrado--------"<<endl;
-
cout<<"Nombre: "<<d.nombre<<endl<<"Telefono: "<<d.telefono<<endl<<"Direccion: "<<d.direccion<<endl<<"Email: "<<d.email<<endl<<endl;
-
cout<<endl; //imprimimos menu de opciones
-
cout<<" ================================"<<endl;
-
cout<<" || OPCIONES ||"<<endl;
-
cout<<" ================================"<<endl;
-
cout<<" || 1. NUEVA BUSQUEDA ||"<<endl;
-
cout<<" || 2. MODIFICAR REGISTRO ||"<<endl;
-
cout<<" || 3. ELIMINAR REGISTRO ||"<<endl;
-
cout<<" || 4. SALIR ||"<<endl;
-
cout<<" ================================"<<endl<<endl;
-
nb1=0;
-
while ((nb1<1) || (nb1>4))
-
{ cout<<" Introduce un numero de las opciones listadas arriba [1-4]: "; cin>>nb1; }
-
cout<<endl;
-
}//endif ((d.valido==1) && (d.valido2==1706887114))
-
else //si el registro encontrado no es correcto
-
{
-
cout<<endl<<"El registro buscado no existe"<<endl;
-
system("pause");
-
nb1=1;
-
}
-
}//endif (nb!=0)
-
else //si ya se kiere salir
-
{ nb1=4; } //igualamos la bandera a 4 para ke se salga
-
} //endwhile
-
}
-
-
void mostrar(struct datos d)
-
{
-
int nb11=0,con=0,nme=0,bandera=0; //nb1=variable auxiliar para saber si kiere volver a buskar o salir nb=variable ke guarda el #de registro buskado
-
while (nb11<3)
-
{
-
if (nb11==1)
-
{ modificar(d, nme); }
-
else
-
{
-
if (nb11==2)
-
{ eliminar(d, nme); }
-
}
-
system("cls"); //borramos pantalla
-
ifstream reg("registros.dat", ios::in | ios::binary); //activa el archivo en modo de lectura (creamos el objeto 'reg')
-
con=0;
-
bandera=0;
-
while (reg && !reg.eof())
-
{
-
reg.seekg((con)*sizeof(d)); //colocamos el apuntador en la posicion inicial del registro encontrado
-
reg.read((char *) &d, sizeof d); //leemos el registro encontrado
-
con++; //incrementamos contador del registro
-
//verificamos que el registro es correcto
-
if ((d.valido==1) && (d.valido2==1706887114))
-
{
-
bandera=1;
-
cout<<endl<<"--------Registro "<<con<<"--------"<<endl;
-
cout<<"Nombre: "<<d.nombre<<endl<<"Telefono: "<<d.telefono<<endl<<"Direccion: "<<d.direccion<<endl<<"Email: "<<d.email<<endl<<endl;
-
}//endif
-
}//endwhile
-
if (bandera==1)
-
{
-
cout<<endl<<endl; //imprimimos menu de opciones
-
cout<<" ================================"<<endl;
-
cout<<" || OPCIONES ||"<<endl;
-
cout<<" ================================"<<endl;
-
cout<<" || 1. MODIFICAR REGISTRO ||"<<endl;
-
cout<<" || 2. ELIMINAR REGISTRO ||"<<endl;
-
cout<<" || 3. SALIR ||"<<endl;
-
cout<<" ================================"<<endl<<endl;
-
nb11=0;
-
//preguntamos por ke opcion kiere realizar
-
while ((nb11<1) || (nb11>3))
-
{ cout<<" Introduce un numero de las opciones listadas arriba [1-4]: "; cin>>nb11; }
-
nme=0;
-
while ((nme<1) && (nb11<3))
-
{ cout<<" Introduce el numero del registro: "; cin>>nme; }
-
}//endif bandera=1
-
else
-
{ cout<<"No existen registros!"<<endl; system("pause"); nb11=3;}
-
} //endwhile
-
}
-
-
int main()
-
{
-
struct datos d;
-
int x=0;
-
fstream ("registros.dat", ios::out | ios::in | ios::binary); //creamos el archivo
-
int n=0,band=0;
-
while (band==0)
-
{
-
n=menu();
-
switch (n)
-
{
-
case 1: agregar(d); break;
-
case 2: buscar(d); break;
-
case 3: mostrar(d); break;
-
case 4: band=1; break;
-
}
-
}
-
system("PAUSE");
-
return 0;
-
}
LUCELY
June 5th, 2008 at 4:54 pm
solo quiero una imagen no una codificacion ….
las codificaciones ya las tengo
ok
kiero imagenes
Angel López
June 6th, 2008 at 6:12 am
:S de que me hablaS??
karen
June 18th, 2008 at 12:05 pm
muy interesante pero como seria en visual basic.net
vacuum pump
August 11th, 2008 at 4:56 am
Products include:vacuum pump hvac,aircraft vacuum pump,auto vacuum pump.
Caleb
September 1st, 2008 at 3:24 pm
Gracias por el aporte estaba buscando informacion de accseso aleatorio a archivos en c++ y lo mejor, es 100% estandar me molesta cuando hace programas con la libreria no estandar de conio.h de verdad quedo muy agradecido
Gustavo
September 16th, 2008 at 9:13 pm
Muy buen programa me ayudara para un proyecto en mi carrera gracias por publicarlo y ponerlo a nuestra dispocicion GRACIAS.
Francisco
October 29th, 2008 at 12:36 am
Esta muy bien pero tiene un pequeño problema. Cuando escribo una palabra que comience con s o n hace un bucle infinito.
Tienes suerte de que quien lo corrigio no se dio cuenta o si?
patricia
July 16th, 2009 at 12:55 pm
tendrias el mismo programa pero en codigo delphi.
Podrias ayudar??
Gracias
dtyjstyjwyt
November 19th, 2009 at 7:56 pm
wtyjwty wryujwry