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
CONDUCTO.H
   1: /******************************************************************************************************************************
   2:  *                                                                                                                            *
   3:  *                               25 de marzo de 2010                                                                          *
   4:  *                                                                                                                            *
   5:  *                 El programa guarda los datos del conductor en un archivo binario                                           *
   6:  *                                                                                                                            *
   7:  * Programador Julio Cesar Leyva Rodriguez                Instituto Tecnologico de Los Mochis                                 *
   8:  *                                                                                                                            *
   9:  ******************************************************************************************************************************/
  10: #include <iostream.h>
  11: #include <stdio.h>
  12: #include <conio.h>
  13:  
  14: struct registro
  15: {
  16: int     numeroC;
  17: char     nombre[10];
  18: char     domicilio[20];
  19: float     estatura;
  20: char     activo;
  21: }conductores;
  22:  
  23: void registrarConductor()
  24: {
  25: clrscr();
  26: printf("\t\t REGISTRO DE CONDUCTORES \n");
  27: cout<<"Numero de conductor ";         cin>>conductores.numeroC;   
  28: cout<<"Nombre ";                gets(conductores.nombre);
  29: cout<<"Domicilio ";            gets(conductores.domicilio);
  30: cout<<"Estatura ";            cin>>conductores.estatura;
  31:  
  32: conductores.activo='a';
  33:  
  34: FILE *registro;
  35:  
  36: registro=fopen("conductores.dat","ab");
  37: fwrite(&conductores,sizeof(conductores),1,registro);
  38: fclose(registro);
  39: }
  40:  
  41: void reporteConductores()
  42: {
  43: clrscr();
  44: FILE *rep;
  45:  
  46: rep=fopen("conductores.dat","rb");
  47: fread(&conductores,sizeof(registro),1,rep);
  48: printf("# CONDUCTOR  \t\t NOMBRE \t\t\ DOMICILIO \t ESTATURA");
  49:  
  50:     do
  51:     {
  52:     if(conductores.activo=='a')
  53:             {
  54:         cout<<"\n"<<conductores.numeroC<<"\t\t\t "<<conductores.nombre<<"\t\t\t "<<conductores.domicilio<<"\t\t "<<conductores.estatura;
  55:             }
  56:     fread(&conductores,sizeof(registro),1,rep);
  57:     }while(!feof(rep));
  58: fclose(rep);
  59: getch();
  60: }
  61:  
  62: void consultaC(int n)
  63: {
  64: clrscr();
  65: FILE *rep;
  66:  
  67:  
  68: rep=fopen("conductores.dat","rb");
  69:  
  70: fseek(rep,(n-1)*(sizeof(conductores)),SEEK_SET);
  71: fread(&conductores,(n)*(sizeof(conductores)),1,rep);
  72:  
  73: printf("# CONDUCTOR  \t\t NOMBRE \t\t\ DOMICILIO \t ESTATURA");
  74: if(conductores.activo=='a')
  75:     {
  76:     cout<<"\n"<<conductores.numeroC<<"\t\t\t "<<conductores.nombre<<"\t\t\t "<<conductores.domicilio<<"\t\t "<<conductores.estatura;
  77:         }
  78: else
  79:     {
  80:     cout<<"\n El conductor no exite";
  81:         }
  82: fclose(rep);
  83: }
  84:  
  85:  
  86:  
  87: void eliminarC()
  88: {
  89: FILE *reg;
  90: int d;
  91:  
  92: cout<<"Inserte el conductor que desee dar de baja: ";    cin>>d;
  93:  
  94: reg=fopen("conductor.dat","rb+");
  95:  
  96: fseek(reg,(d-1)*(sizeof(conductores)),SEEK_SET);
  97: fread(&conductores,(d)*(sizeof(conductores)),1,reg);
  98:  
  99:  
 100: conductores.activo='b';
 101:  
 102: fseek(reg,(d-1)*(sizeof(conductores)),SEEK_SET);
 103: fwrite(&conductores,sizeof(conductores),1,reg);
 104: fclose(reg);
 105: }
 106:  
 107:  
 108: void menuC()
 109: {
 110: conductores.activo=NULL;
 111: int op;
 112: int b;
 113: while(op!=5)
 114:     {
 115:     clrscr();
 116:     gotoxy(25,1);    cout<<"REGISTRO DE CONDUCTORES";
 117:     gotoxy(1,3);    cout<<"1.- Registrar conductor";
 118:     gotoxy(1,5);    cout<<"2.- Reporte";
 119:     gotoxy(1,7);    cout<<"3.- Consulta";
 120:     gotoxy(1,9);    cout<<"4.- Eliminar";
 121:     gotoxy(1,11);    cout<<"5.- Regresar";
 122:     gotoxy(1,14);    cout<<"\t Eliga una opcion [   ]";
 123:     gotoxy(24,14);    cin>>op;
 124:  
 125:     switch(op)
 126:                 {
 127:         case 1:
 128:             registrarConductor();
 129:                         
 130:             break;
 131:         case 2:        
 132:             reporteConductores();
 133:                         break;
 134:         case 3:               
 135:             clrscr();
 136:             cout<<"Inserte el numero de conductor que desee consultar ";    cin>>b;
 137:             consultaC(b);
 138:                         getch();
 139:             break;
 140:         case 4:
 141:             clrscr();
 142:                         eliminarC();
 143:                 break;
 144:  
 145:         }
 146:     }
 147: }
 148: void eslogan()
 149: {
 150: cout<<"   ******      **     *******   *******   ******** *******       **    ";
 151: cout<<"\n  **////**    ****   /**////** /**////** /**///// /**////**     ****   ";
 152: cout<<"\n **    //    **//**  /**   /** /**   /** /**      /**   /**    **//**  ";
 153: cout<<"\n/**         **  //** /*******  /*******  /******* /*******    **  //** ";
 154: cout<<"\n/**        **********/**///**  /**///**  /**////  /**///**   **********";
 155: cout<<"\n//**    **/**//////**/**  //** /**  //** /**      /**  //** /**//////**";
 156: cout<<"\n //****** /**     /**/**   //**/**   //**/********/**   //**/**     /**";
 157: cout<<"\n  //////  //      // //     // //     // //////// //     // //      // ";
 158: }
 159:  

AUTOMOVI.H


   1: /************************************************************************************************************
   2:  *                                                                                                          *
   3:  *                                              25 DE MARZO DE 2010                                         *
   4:  *                                                                                                          *
   5:  *  Programa que almacena los datos de los diferentes tipos de carros y los guarda en un archivo binario    *
   6:  *                                                                                                          *
   7:  *  Programador Julio Cesar Leyva Rodriguez            Instituto Tecnologico de Los Mochis                  *
   8:  *                                                                                                          *
   9:  ************************************************************************************************************/
  10:                                           
  11: #include <iostream.h>
  12: #include <stdio.h>
  13: #include <conio.h> 
  14: #include <stdlib.h>
  15:  
  16: /** Estructura de los datos de los datos */
  17: struct reg
  18: {
  19: int numeroV;
  20: char marca[10];
  21: int anio;
  22: char color[10];
  23: int matricula;
  24: char activo;
  25: }automoviles;
  26:  
  27:  
  28: /** Funcion para registrar los datos en el archivo */
  29: void registrar()
  30: {
  31:  
  32: clrscr();
  33: printf("\t\t REGISTRO DE AUTOS \n");
  34: cout<<"Numero de vehiculo ";         cin>>automoviles.numeroV;
  35: cout<<"Marca ";                    gets(automoviles.marca);
  36: cout<<"Año ";                cin>>automoviles.anio;
  37: cout<<"Matricula ";                     cin>>automoviles.matricula;
  38: cout<<"Color ";                gets(automoviles.color);
  39:  
  40: automoviles.activo='a';              //Marca que el archivo no esta eliminado logicamente
  41:  
  42:  
  43: FILE *registro1;
  44:  
  45: registro1=fopen("automoviles.dat","ab+");
  46: fseek(registro1,(automoviles.numeroV)-1*(sizeof(automoviles)),SEEK_SET);     //Posicionar el puntero en un lugar definido por la variable vehiculoV
  47: fwrite(&automoviles,sizeof(automoviles),1,registro1);                        //Escrive en el archivo
  48: fclose(registro1);
  49:  
  50: }
  51:  
  52: /** Muestra todos los registros del archivo en forma de reporte */
  53: void reporte()
  54: {
  55: clrscr();
  56: FILE *rep;
  57:  
  58: rep=fopen("automoviles.dat","rb+");
  59: fread(&automoviles,sizeof(automoviles),1,rep);
  60: printf("# VEHICULO \t\t MARCA \t\t AÑO \t MATRICULA \t COLOR");
  61:  
  62:     do
  63:     {
  64:     if(automoviles.activo=='a')
  65:         {
  66:         cout<<"\n "<<automoviles.numeroV<<"\t \t\t "<<automoviles.marca<<"\t\t "<<automoviles.anio<<"\t "<<automoviles.matricula<<"\t\t "<<automoviles.color;
  67:         }
  68:     fread(&automoviles,sizeof(automoviles),1,rep);
  69:     }while(!feof(rep));
  70: fclose(rep);
  71: getch();
  72: }
  73:  
  74: /** Consulta un solo registro en el archivo */
  75: void consultaVehiculo(int n)
  76: {
  77: FILE *rep;
  78:  
  79:  
  80:  
  81: rep=fopen("automoviles.dat","rb");
  82:  
  83: fseek(rep,(n-1)*(sizeof(automoviles)),SEEK_SET);
  84: fread(&automoviles,(n)*(sizeof(automoviles)),1,rep);
  85:  
  86: printf("\n # VEHICULO \t\t MARCA \t\t AÑO \t MATRICULA \t COLOR");
  87: if(automoviles.activo=='a')
  88:     {
  89:     cout<<"\n "<<automoviles.numeroV<<"\t \t\t "<<automoviles.marca<<"\t\t "<<automoviles.anio<<"\t "<<automoviles.matricula<<"\t\t "<<automoviles.color;
  90:     }
  91: else
  92:     {
  93:     cout<<"\n El automovil no existe";
  94:     }
  95: fclose(rep);
  96: }
  97:  
  98: /* Modifica un registro señalado */
  99: void modificar()
 100: {
 101: clrscr();
 102: FILE *reg;
 103: int d;
 104:  
 105: cout<<"Inserte el dato que desee modificar: ";    cin>>d;
 106:  
 107: reg=fopen("automoviles.dat","rb+");
 108:  
 109: printf("\t\t REGISTRO DE AUTOS \n");
 110: cout<<"Numero de vehiculo ";     cin>>automoviles.numeroV;
 111: cout<<"Marca ";                gets(automoviles.marca);
 112: cout<<"Año ";            cin>>automoviles.anio;
 113: cout<<"Matricula ";        cin>>automoviles.matricula;
 114: cout<<"Color ";            gets(automoviles.color);
 115:  
 116: automoviles.activo='a';
 117:  
 118: fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
 119: fwrite(&automoviles,sizeof(automoviles),1,reg);
 120: fclose(reg);
 121: }
 122:  
 123: /* Elimina el registro seleccionado "logicamente" */
 124: void eliminar()
 125: {
 126: FILE *reg;
 127: int d;
 128:  
 129: cout<<"Inserte el registro que desee Eliminar: ";    cin>>d;
 130:  
 131: reg=fopen("automoviles.dat","rb+");
 132:  
 133: fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
 134: fread(&automoviles,(d)*(sizeof(automoviles)),1,reg);
 135:  
 136:  
 137: automoviles.activo='b';
 138:  
 139: fseek(reg,(d-1)*(sizeof(automoviles)),SEEK_SET);
 140: fwrite(&automoviles,sizeof(automoviles),1,reg);
 141: fclose(reg);
 142: }
 143:  
 144:  
 145: /* Menu de opciones */
 146: void menuA()
 147: {
 148: int a;
 149: int op;
 150: while(op!=5)
 151:         {
 152:     automoviles.activo=NULL;
 153:         clrscr();
 154:     gotoxy(25,1);    cout<<"REGISTRO DE AUTOMOTORES";
 155:     gotoxy(1,3);    cout<<"1.- Registrar automotor";
 156:     gotoxy(1,5);    cout<<"2.- Reporte";
 157:     gotoxy(1,7);    cout<<"3.- Consultar";
 158:     gotoxy(1,9);    cout<<"4.- Eliminar";
 159:         gotoxy(1,11);    cout<<"5.- Regresar";
 160:     gotoxy(1,14);    cout<<"\t Eliga una opcion [   ]";
 161:     gotoxy(23,14);    cin>>op;
 162:     cout<<"\n";
 163:         eslogan();
 164:  
 165:     switch(op)
 166:                 {
 167:         case 1:
 168:             registrar();
 169:                         
 170:             break;
 171:         case 2:
 172:             reporte();                        
 173:                         break;
 174:         case 3:               
 175:             clrscr();
 176:                  cout<<"Inserte el numero de automovil que desee consultar";    cin>>a;    
 177:             consultaVehiculo(a);                      
 178:                         getch();
 179:             break;
 180:         case 4:
 181:             clrscr();
 182:                         eliminar();
 183:                 break;
 184:  
 185:         }
 186:     }
 187: }
 188:  


EVENTO.H




   1: /******************************************************************************************************************************
   2:  *                                                                                                                            *
   3:  *                               25 de marzo de 2010                                                                            *
   4:  *                                                                                                                            *
   5:  *        Elprograma graba el folio y el numero de conductor y vechiculo para consultar sus datos y registrar sus tiempo         *                                          *
   6:  *                                                                                                                            *
   7:  * Programador Julio Cesar Leyva Rodriguez                Instituto Tecnologico de Los Mochis                                   *
   8:  *                                                                                                                            *
   9:  ******************************************************************************************************************************/
  10: #include <iostream.h>
  11:  
  12: struct evento
  13: {
  14: int folio;
  15: int nC;
  16: int nV;
  17: int tiempo;
  18: }carrera;
  19:  
  20:  
  21:  
  22: void ultimo();
  23:  
  24:  
  25: void borrar()
  26: {
  27: carrera.folio=NULL;
  28: carrera.nC=NULL;
  29: carrera.nV=NULL;
  30: carrera.tiempo=NULL;
  31: }
  32: //REGISTRAR AUTO Y CONDUCTOR
  33:  
  34: void registrarParticipante()
  35: {
  36:  
  37: borrar();
  38: FILE *e;
  39: FILE *a;
  40: int size;
  41:  
  42: borrar();
  43: e=fopen("evento.dat","ab+");
  44: a=fopen("evento.dat","rb+");
  45:  
  46:  
  47: size=sizeof(carrera);
  48:  
  49: fseek(a,-size,SEEK_END);
  50: fread(&carrera,size,1,a);
  51:  
  52: carrera.tiempo=NULL;
  53: carrera.folio=(carrera.folio)+1;
  54:  
  55: cout<<"\nINSERTE EL NUMERO DEL PILOTO ";    cin>>carrera.nC;
  56:  
  57: cout<<"\nINSERTE EL NUMERO DEL VEHICULO ";    cin>>carrera.nV;
  58:  
  59: fwrite(&carrera,sizeof(carrera),1,e);
  60:  
  61: fclose(e);
  62: fclose(a);
  63:  
  64: }
  65:  
  66:  
  67:  
  68: //ULTIMO REGISTRO
  69:  
  70: void ultimo()
  71: {
  72: FILE *final;
  73:  
  74: borrar();
  75: final=fopen("evento.dat","ab+");
  76:  
  77: do
  78:     {
  79:     fread(&carrera,sizeof(carrera),1,final);
  80:     }while(!feof(final));
  81:  
  82: }
  83:  
  84: //REPORTE
  85:  
  86: void reporteEvento()
  87: {
  88: borrar();
  89: FILE *reporte1;
  90:  
  91: reporte1=fopen("evento.dat","rb+");
  92:  
  93: do
  94:     {
  95:         if(carrera.folio!=NULL)
  96:             {
  97:             cout<<"\n"<<"FOLIO "<<carrera.folio<<" NUMERO DE VEHICULO "<<carrera.nV<<" NUMERO DE CONDUCTOR "<<carrera.nC<<" TIEMPO "<<carrera.tiempo ;
  98:             }
  99:     fread(&carrera,sizeof(carrera),1,reporte1);
 100:     }while(!feof(reporte1));
 101: }
 102:  
 103:  
 104:  
 105: void registrarTiempo()
 106: {
 107: FILE *tiempo;
 108: tiempo=fopen("evento.dat","rb+");
 109: int folio;
 110:  
 111: borrar();
 112: cout<<"\n\nINSERTE EL FOLIO DEL PILOTO QUE DESEE INGRESAR EL TIEMPO ";
 113: cin>>folio;
 114:  
 115: fseek(tiempo,(folio-1)*(sizeof(carrera)),SEEK_SET);
 116: fread(&carrera,sizeof(carrera),1,tiempo);
 117:  
 118: cout<<"\n\nINGRESE EL TIEMPO ";cin>>carrera.tiempo;
 119:  
 120: fseek(tiempo,(folio-1)*(sizeof(carrera)),SEEK_SET);
 121: fwrite(&carrera,sizeof(carrera),1,tiempo);
 122: fclose(tiempo);
 123: }
 124:  
 125:  
 126: /* Menu de opciones */
 127: void menuE()
 128: {
 129: int a;
 130: int op;
 131: while(op!=5)
 132:     {
 133:     automoviles.activo=NULL;
 134:     clrscr();
 135:     gotoxy(25,1);    cout<<"EVENTO";
 136:     gotoxy(1,3);    cout<<"1.- Registrar participante";
 137:     gotoxy(1,5);    cout<<"2.- Reporte";
 138:     gotoxy(1,7);    cout<<"3.- Modificar tiempo";
 139:     gotoxy(1,9);    cout<<"4.- Consulta participante";
 140:     gotoxy(1,11);    cout<<"5.- Regresar";
 141:     gotoxy(1,13);    cout<<"\t Eliga una opcion [   ]";
 142:     gotoxy(26,13);    cin>>op;
 143:  
 144:     switch(op)
 145:         {
 146:         case 1:
 147:             clrscr();
 148:             registrarParticipante();
 149:             getch();
 150:             break;
 151:         case 2:
 152:             reporteEvento();
 153:             getch();
 154:             break;
 155:         case 3:
 156:             clrscr();
 157:             registrarTiempo();
 158:             getch();
 159:             break;
 160:  
 161:         case 4:
 162:             cout<<"\n INSERTE EL NUMERO DEL PARTICIPANTE QUE DESEE CONSULTAR ";     cin>>a;
 163:             consultaVehiculo(a);
 164:             cout<<"\n";
 165:             getch();
 166:             consultaC(a);
 167:             cout<<"\nPresione cualquier tecla para continuar";
 168:             getch();
 169:             break;
 170:         case 5:
 171:                     break;
 172:         default:
 173:             cout<<"OPCION NO VALIDA";
 174:             getch();
 175:             break;
 176:         }
 177:     }
 178: }
 179:  

VACACION.CPP


   1: /******************************************************************************************************************************
   2:  *                                                                                                                            *
   3:  *                                   11 de abril de 2010                                                                      *
   4:  *                                                                                                                            *
   5:  *                 Paquete de programas para el proyecto de la carrera                                                        *
   6:  *                                                                                                                            *
   7:  * Programador Julio Cesar Leyva Rodriguez                Instituto Tecnologico de Los Mochis                                 *
   8:  *                                                                                                                            *
   9:  ******************************************************************************************************************************/
  10: #include <iostream.h>
  11: #include <conducto.h>
  12: #include <automovi.h>
  13: #include <evento.h>
  14:  
  15:  
  16: void main()
  17: {
  18: int op;
  19: while(op!=4)
  20:     {
  21:     clrscr();
  22:     eslogan();
  23:     gotoxy(25,15);    cout<<"PRINCIPAL";
  24:     gotoxy(1,18);    cout<<"1.- Vehiculos";
  25:     gotoxy(1,20);    cout<<"2.- Conductores";
  26:     gotoxy(1,22);    cout<<"3.- Evento";
  27:     gotoxy(1,24);    cout<<"4.- Salir";
  28:     gotoxy(1,26);    cout<<"\t Eliga una opcion [   ]";
  29:     gotoxy(22,26);    cin>>op;
  30:  
  31:     switch(op)
  32:         {
  33:         case 1:
  34:             clrscr();
  35:             menuA();
  36:  
  37:             break;
  38:         case 2:
  39:             menuC();                        
  40:                         break;
  41:         case 3:               
  42:             clrscr();
  43:             menuE();
  44:             break;
  45:         case 4:
  46:             clrscr();
  47:             break;
  48:         case 5:
  49:             cout<<"\nOPCION INCORRECTA";
  50:             break;
  51:  
  52:         }
  53:     }
  54: }
0