MANEJO DE ARCHIVOS EN C++



3006_c___language_tutorial-png
Otro trabajo que nos dejaron en vacaciones
Ojo poner los archivos con extensión .H en la carpeta INCLUDE de Borland



/******************************************************************************************************************************
 *                                                                                                                            *
 *             25 de marzo de 2010                                                    *
 *                                                                                                                            *
 *     El programa guarda los datos del conductor en un archivo binario                              *
 *                                                                                                                            *
 * Programador Julio Cesar Leyva Rodriguez    Instituto Tecnologico de Los Mochis                   *
 *                                                                                                                            *
 ******************************************************************************************************************************/
#include <iostream.h>
#include <stdio.h>
#include <conio.h>

struct registro4
{
int  numeroC;
char  nombre[10];
char  domicilio[10];
float  estatura;
float  peso;
char  activo;
}conductores;

void registrandoC()
{

printf("\n\t\t REGISTRO DE CONDUCTORES \n");
cout<<"Nombre ";          gets(conductores.nombre);
cout<<"Domicilio ";   gets(conductores.domicilio);
cout<<"Estatura ";   cin>>conductores.estatura;
cout<<"Peso ";    cin>>conductores.peso;
conductores.activo='a';
}

void registrarConductor()
{
clrscr();

FILE *ra;

ra=fopen("conductores.dat","rb+");

if(ra==NULL)     //Si no existe
 {
 FILE *n;
 fclose(ra);
 n=fopen("conductores.dat","ab+");

 cout<<"\n\tINSERTE LOS DATOS DEL PRIMER CONDUCTOR\n";
 conductores.numeroC=1;

 registrandoC();
 fwrite(&conductores,sizeof(conductores),1,n);
 fclose(n);

 getch();
 }
else
 {
 fclose(ra);
 FILE *c;

 c=fopen("conductores.dat","rb+");

 int k;
 cout<<"\nInserte el numero de auto que desee insertar "; cin>>k;

 fseek(c,(k-1)*sizeof(conductores),SEEK_SET);
 fread(&conductores,sizeof(conductores),1,c);

 if(conductores.domicilio==NULL)
  {
  conductores.numeroC=k;
  registrandoC();
  fseek(c,(k-1)*sizeof(conductores),SEEK_SET);
  fwrite(&conductores,sizeof(conductores),1,c);
  fclose(c);

  getch();
  }
 else
  {

  getch();
  }
 }

}



void reporteConductores()
{
clrscr();
FILE *rep;

rep=fopen("conductores.dat","rb");
fread(&conductores,sizeof(conductores),1,rep);
printf("# CONDUCTOR  \t NOMBRE \t\ DOMICILIO \t ESTATURA\tPESO");

 do
 {
 if(conductores.activo=='a')
         {
  cout<<"\n"<<conductores.numeroC<<"\t\t "<<conductores.nombre<<"\t\t "<<conductores.domicilio<<"\t\t "<<conductores.estatura<<"\t\t"<<conductores.peso;
         }
 fread(&conductores,sizeof(conductores),1,rep);
 }while(!feof(rep));
fclose(rep);
getch();
}

void consultaC(int n)
{

FILE *rep;


rep=fopen("conductores.dat","rb+");

fseek(rep,(n-1)*(sizeof(conductores)),SEEK_SET);
fread(&conductores,sizeof(conductores),1,rep);

if(conductores.activo!=NULL)
 {
 printf("# CONDUCTOR  \t\t NOMBRE \t\t\ DOMICILIO \t ESTATURA");
 if(conductores.activo=='a')
  {
  cout<<"\n"<<conductores.numeroC<<"\t\t\t "<<conductores.nombre<<"\t\t\t "<<conductores.domicilio<<"\t\t "<<conductores.estatura;
         }
 else
  {
  cout<<"\n El conductor no exite";
                getch();
  }
        
 
 }
else
 {
 cout<<"\nEl registro no existe";
 getch();
 }
fclose(rep);  
}



void eliminarC()
{
FILE *reg;
int d;

cout<<"Inserte el conductor que desee dar de baja: "; cin>>d;

reg=fopen("conductor.dat","rb+");

fseek(reg,(d-1)*(sizeof(conductores)),SEEK_SET);
fread(&conductores,sizeof(conductores),1,reg);

if(conductores.activo!=NULL)
 {
 conductores.activo='b';

 fseek(reg,(d-1)*(sizeof(conductores)),SEEK_SET);
 fwrite(&conductores,sizeof(conductores),1,reg);
 fclose(reg);
 }
else
 {
 cout<<"\nEl archivo no esta";
 getch();
        }
}


void menuC()
{
conductores.activo=NULL;
int op;
int b;
while(op!=5)
 {
 clrscr();
 gotoxy(25,1); cout<<"REGISTRO DE CONDUCTORES";
 gotoxy(1,3); cout<<"1.- Registrar conductor";
 gotoxy(1,5); cout<<"2.- Reporte";
 gotoxy(1,7); cout<<"3.- Consulta";
 gotoxy(1,9); cout<<"4.- Eliminar";
 gotoxy(1,11); cout<<"5.- Regresar";
 gotoxy(1,14); cout<<"\t Eliga una opcion [   ]";
 gotoxy(29,14); cin>>op;

 switch(op)
                {
  case 1:
   registrarConductor();
                        
   break;
  case 2:  
   reporteConductores();
                        break;
  case 3:               
   clrscr();
   cout<<"Inserte el numero de conductor que desee consultar "; cin>>b;
   consultaC(b);
   getch();
   break;
  case 4:
   clrscr();
                        eliminarC();
          break;

  }
 }
}
void eslogan()
{
cout<<"   ******      **     *******   *******   ******** *******       **    ";
cout<<"\n  **////**    ****   /**////** /**////** /**///// /**////**     ****   ";
cout<<"\n **    //    **//**  /**   /** /**   /** /**      /**   /**    **//**  ";
cout<<"\n/**         **  //** /*******  /*******  /******* /*******    **  //** ";
cout<<"\n/**        **********/**///**  /**///**  /**////  /**///**   **********";
cout<<"\n//**    **/**//////**/**  //** /**  //** /**      /**  //** /**//////**";
cout<<"\n //****** /**     /**/**   //**/**   //**/********/**   //**/**     /**";
cout<<"\n  //////  //      // //     // //     // //////// //     // //      // ";
}



/************************************************************************************************************
 *                                                                                                          *
 *                                              25 DE MARZO DE 2010                                         *
 *                                                                  *
 *  Programa que almacena los datos de los diferentes tipos de carros y los guarda en un archivo binario    *
 *                                                                                                          *
 *  Programador Julio Cesar Leyva Rodriguez   Instituto Tecnologico de Los Mochis         *
 *                                                                                                          *
 ************************************************************************************************************/
                                          
#include <iostream.h>
#include <stdio.h>
#include <conio.h> 
#include <stdlib.h>

/** Estructura de los datos de los datos */
struct reg
{
int numeroV;
char marca[10];
int anio;
char color[10];
int matricula;
char activo;
}automoviles;

void noExiste()
{
cout<<"\nEl Registro no existe";
}

void espacioOcupado()
{
cout<<"\nEspacio ocupado";
}

void eliminado()
{
cout<<"\nEliminado correctamente";
}

void registrado()
{
cout<<"\nRegistrado correctamente";
}

void registrando()
{
printf("\n\t\t REGISTRO DE AUTOS \n");
cout<<"Marca ";           gets(automoviles.marca);
cout<<"Año ";    cin>>automoviles.anio;
cout<<"Matricula ";                     cin>>automoviles.matricula;
cout<<"Color ";    gets(automoviles.color);
automoviles.activo='a';
}



/** Funcion para registrar los datos en el archivo */
void registrar()                                                        
{
clrscr();

FILE *ra;

ra=fopen("automoviles.dat","rb+");

if(ra==NULL)     //Si no existe
 {
 FILE *n;
        fclose(ra);
 n=fopen("automoviles.dat","ab+");

 cout<<"\n\tINSERTE LOS DATOS DEL PRIMER AUTO\n";
        automoviles.numeroV=1;

 registrando();
 fwrite(&automoviles,sizeof(automoviles),1,n);
 fclose(n);
        registrado();
 getch();
 }
else
 {
        fclose(ra);
 FILE *c;

        c=fopen("automoviles.dat","rb+");

        int k;
 cout<<"\nInserte el numero de auto que desee insertar "; cin>>k;

 fseek(c,(k-1)*sizeof(automoviles),SEEK_SET);
 fread(&automoviles,sizeof(automoviles),1,c);

 if(automoviles.activo==NULL)
  {
  automoviles.numeroV=k;
  registrando();
  fseek(c,(k-1)*sizeof(automoviles),SEEK_SET);
  fwrite(&automoviles,sizeof(automoviles),1,c);
  fclose(c);
  registrado();
  getch();
  }
 else
  {
  espacioOcupado();
                getch();
  }
        }

}





/** Muestra todos los registros del archivo en forma de reporte */
void reporte()
{
clrscr();
FILE *rep;

rep=fopen("automoviles.dat","rb+");
fread(&automoviles,sizeof(automoviles),1,rep);
printf("# VEHICULO \t\t MARCA \t\t AÑO \t MATRICULA \t COLOR");

 do
 {
 if(automoviles.activo=='a')
  {
  cout<<"\n "<<automoviles.numeroV<<"\t \t\t "<<automoviles.marca<<"\t\t "<<automoviles.anio<<"\t "<<automoviles.matricula<<"\t\t "<<automoviles.color;
  }
 fread(&automoviles,sizeof(automoviles),1,rep);
 }while(!feof(rep));
fclose(rep);
getch();
}

/** Consulta un solo registro en el archivo */
void consultaVehiculo(int n)
{
FILE *rep;



rep=fopen("automoviles.dat","rb");

fseek(rep,(n-1)*(sizeof(automoviles)),SEEK_SET);
fread(&automoviles,sizeof(automoviles),1,rep);

if(automoviles.activo!=NULL)
 {
 printf("\n # VEHICULO \t\t MARCA \t\t AÑO \t MATRICULA \t COLOR");
 if(automoviles.activo=='a')
  {
  cout<<"\n "<<automoviles.numeroV<<"\t \t\t "<<automoviles.marca<<"\t\t "<<automoviles.anio<<"\t "<<automoviles.matricula<<"\t\t "<<automoviles.color;
  }
 else
  {
  noExiste();
                getch();
  }
 }
else
 {
 noExiste();
 getch();
        }
fclose(rep);
}

/* Modifica un registro señalado */
void modificar()
{
clrscr();
FILE *reg;
int d;

cout<<"Inserte el dato que desee modificar: "; cin>>d;

reg=fopen("automoviles.dat","rb+");

printf("\t\t REGISTRO DE AUTOS \n");
cout<<"Numero de vehiculo ";  cin>>automoviles.numeroV;
cout<<"Marca ";          gets(automoviles.marca);
cout<<"Año ";   cin>>automoviles.anio;
cout<<"Matricula ";  cin>>automoviles.matricula;
cout<<"Color ";   gets(automoviles.color);

automoviles.activo='a';

fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);

fwrite(&automoviles,sizeof(automoviles),1,reg);
fclose(reg);
}

/* Elimina el registro seleccionado "logicamente" */
void eliminar()
{
FILE *reg;
int d;

cout<<"Inserte el registro que desee Eliminar: "; cin>>d;

reg=fopen("automoviles.dat","rb+");

fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
fread(&automoviles,(d)*(sizeof(automoviles)),1,reg);
if(automoviles.activo!=NULL)
        {
 fread(&automoviles,(d)*(sizeof(automoviles)),1,reg);




 automoviles.activo='b';

 fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
 fwrite(&automoviles,sizeof(automoviles),1,reg);
 fclose(reg);
 eliminado();
        getch();
        }
else
 {
 noExiste();
        getch();
        }
}


/* Menu de opciones */
void menuA()
{
int a;
int op;
while(op!=5)
        {
 automoviles.activo=NULL;
        clrscr();
 gotoxy(25,1); cout<<"REGISTRO DE AUTOMOTORES";
 gotoxy(1,3); cout<<"1.- Registrar automotor";
 gotoxy(1,5); cout<<"2.- Reporte";
 gotoxy(1,7); cout<<"3.- Consultar";
 gotoxy(1,9); cout<<"4.- Eliminar";
        gotoxy(1,11); cout<<"5.- Regresar";
 gotoxy(1,14); cout<<"\t Eliga una opcion [   ]";
 gotoxy(29,14); cin>>op;
 cout<<"\n";
        eslogan();

 switch(op)
                {
  case 1:
   registrar();
                        
   break;
  case 2:
   reporte();                     
                        break;
  case 3:               
   clrscr();
        cout<<"Inserte el numero de automovil que desee consultar"; cin>>a; 
   consultaVehiculo(a);                      
                        getch();
   break;
  case 4:
   clrscr();
                        eliminar();
          break;

  }
 }
}




/************************************************************************************************************
 *                                                                                                          *
 *                                              25 DE MARZO DE 2010                                         *
 *                                                                  *
 *  Programa que almacena los datos de los diferentes tipos de carros y los guarda en un archivo binario    *
 *                                                                                                          *
 *  Programador Julio Cesar Leyva Rodriguez   Instituto Tecnologico de Los Mochis         *
 *                                                                                                          *
 ************************************************************************************************************/
                                          
#include <iostream.h>
#include <stdio.h>
#include <conio.h> 
#include <stdlib.h>

/** Estructura de los datos de los datos */
struct reg
{
int numeroV;
char marca[10];
int anio;
char color[10];
int matricula;
char activo;
}automoviles;

void noExiste()
{
cout<<"\nEl Registro no existe";
}

void espacioOcupado()
{
cout<<"\nEspacio ocupado";
}

void eliminado()
{
cout<<"\nEliminado correctamente";
}

void registrado()
{
cout<<"\nRegistrado correctamente";
}

void registrando()
{
printf("\n\t\t REGISTRO DE AUTOS \n");
cout<<"Marca ";           gets(automoviles.marca);
cout<<"Año ";    cin>>automoviles.anio;
cout<<"Matricula ";                     cin>>automoviles.matricula;
cout<<"Color ";    gets(automoviles.color);
automoviles.activo='a';
}



/** Funcion para registrar los datos en el archivo */
void registrar()                                                        
{
clrscr();

FILE *ra;

ra=fopen("automoviles.dat","rb+");

if(ra==NULL)     //Si no existe
 {
 FILE *n;
        fclose(ra);
 n=fopen("automoviles.dat","ab+");

 cout<<"\n\tINSERTE LOS DATOS DEL PRIMER AUTO\n";
        automoviles.numeroV=1;

 registrando();
 fwrite(&automoviles,sizeof(automoviles),1,n);
 fclose(n);
        registrado();
 getch();
 }
else
 {
        fclose(ra);
 FILE *c;

        c=fopen("automoviles.dat","rb+");

        int k;
 cout<<"\nInserte el numero de auto que desee insertar "; cin>>k;

 fseek(c,(k-1)*sizeof(automoviles),SEEK_SET);
 fread(&automoviles,sizeof(automoviles),1,c);

 if(automoviles.activo==NULL)
  {
  automoviles.numeroV=k;
  registrando();
  fseek(c,(k-1)*sizeof(automoviles),SEEK_SET);
  fwrite(&automoviles,sizeof(automoviles),1,c);
  fclose(c);
  registrado();
  getch();
  }
 else
  {
  espacioOcupado();
                getch();
  }
        }

}





/** Muestra todos los registros del archivo en forma de reporte */
void reporte()
{
clrscr();
FILE *rep;

rep=fopen("automoviles.dat","rb+");
fread(&automoviles,sizeof(automoviles),1,rep);
printf("# VEHICULO \t\t MARCA \t\t AÑO \t MATRICULA \t COLOR");

 do
 {
 if(automoviles.activo=='a')
  {
  cout<<"\n "<<automoviles.numeroV<<"\t \t\t "<<automoviles.marca<<"\t\t "<<automoviles.anio<<"\t "<<automoviles.matricula<<"\t\t "<<automoviles.color;
  }
 fread(&automoviles,sizeof(automoviles),1,rep);
 }while(!feof(rep));
fclose(rep);
getch();
}

/** Consulta un solo registro en el archivo */
void consultaVehiculo(int n)
{
FILE *rep;



rep=fopen("automoviles.dat","rb");

fseek(rep,(n-1)*(sizeof(automoviles)),SEEK_SET);
fread(&automoviles,sizeof(automoviles),1,rep);

if(automoviles.activo!=NULL)
 {
 printf("\n # VEHICULO \t\t MARCA \t\t AÑO \t MATRICULA \t COLOR");
 if(automoviles.activo=='a')
  {
  cout<<"\n "<<automoviles.numeroV<<"\t \t\t "<<automoviles.marca<<"\t\t "<<automoviles.anio<<"\t "<<automoviles.matricula<<"\t\t "<<automoviles.color;
  }
 else
  {
  noExiste();
                getch();
  }
 }
else
 {
 noExiste();
 getch();
        }
fclose(rep);
}

/* Modifica un registro señalado */
void modificar()
{
clrscr();
FILE *reg;
int d;

cout<<"Inserte el dato que desee modificar: "; cin>>d;

reg=fopen("automoviles.dat","rb+");

printf("\t\t REGISTRO DE AUTOS \n");
cout<<"Numero de vehiculo ";  cin>>automoviles.numeroV;
cout<<"Marca ";          gets(automoviles.marca);
cout<<"Año ";   cin>>automoviles.anio;
cout<<"Matricula ";  cin>>automoviles.matricula;
cout<<"Color ";   gets(automoviles.color);

automoviles.activo='a';

fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);

fwrite(&automoviles,sizeof(automoviles),1,reg);
fclose(reg);
}

/* Elimina el registro seleccionado "logicamente" */
void eliminar()
{
FILE *reg;
int d;

cout<<"Inserte el registro que desee Eliminar: "; cin>>d;

reg=fopen("automoviles.dat","rb+");

fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
fread(&automoviles,(d)*(sizeof(automoviles)),1,reg);
if(automoviles.activo!=NULL)
        {
 fread(&automoviles,(d)*(sizeof(automoviles)),1,reg);




 automoviles.activo='b';

 fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
 fwrite(&automoviles,sizeof(automoviles),1,reg);
 fclose(reg);
 eliminado();
        getch();
        }
else
 {
 noExiste();
        getch();
        }
}


/* Menu de opciones */
void menuA()
{
int a;
int op;
while(op!=5)
        {
 automoviles.activo=NULL;
        clrscr();
 gotoxy(25,1); cout<<"REGISTRO DE AUTOMOTORES";
 gotoxy(1,3); cout<<"1.- Registrar automotor";
 gotoxy(1,5); cout<<"2.- Reporte";
 gotoxy(1,7); cout<<"3.- Consultar";
 gotoxy(1,9); cout<<"4.- Eliminar";
        gotoxy(1,11); cout<<"5.- Regresar";
 gotoxy(1,14); cout<<"\t Eliga una opcion [   ]";
 gotoxy(29,14); cin>>op;
 cout<<"\n";
        eslogan();

 switch(op)
                {
  case 1:
   registrar();
                        
   break;
  case 2:
   reporte();                     
                        break;
  case 3:               
   clrscr();
        cout<<"Inserte el numero de automovil que desee consultar"; cin>>a; 
   consultaVehiculo(a);                      
                        getch();
   break;
  case 4:
   clrscr();
                        eliminar();
          break;

  }
 }
}




/******************************************************************************************************************************
 *                                                                                                                            *
 *                 11 de abril de 2010                                                    *
 *                                                                                                                            *
 *     Paquete de programas para el proyecto de la carrera                                           *
 *                                                                                                                            *
 * Programador Julio Cesar Leyva Rodriguez    Instituto Tecnologico de Los Mochis                   *
 *                                                                                                                            *
 ******************************************************************************************************************************/
#include <iostream.h>
#include <conducto.h>
#include <automovi.h>
#include <evento.h>


void main()
{
int op;
while(op!=5)
 {
 clrscr();
 eslogan();
 gotoxy(25,10); cout<<"PRINCIPAL";
 gotoxy(1,13); cout<<"1.- Vehiculos";
 gotoxy(1,15); cout<<"2.- Conductores";
 gotoxy(1,17); cout<<"3.- Evento";
 gotoxy(1,19); cout<<"4.- Reporte";
 gotoxy(1,21); cout<<"\t Eliga una opcion [   ]";
 gotoxy(29,21); cin>>op;

 switch(op)
  {
  case 1:
   clrscr();
   menuA();

   break;
  case 2:
   menuC();                     
                        break;
  case 3:               
   clrscr();
   menuE();
   break;
  case 4:
   clrscr();
                        reporteEvento();
   getch();
   break;
  case 5:
                        clrscr();
   cout<<"Salir";
                        break;

  default:
   cout<<"\nOPCION INCORRECTA";
   break;

  }
 }
}

Comentarios

Entradas populares