// Programa de archivos secuenciales con objetos // Autor: Ing. Bruno Lopez Takeyas #include #include #include #include class Archivo_Secuencial // Declaracion de la clase para el archivo sec. { public: Archivo_Secuencial(char *n); // Constructor (Crea el archivo si no existe) void Abrir_archivo(); void Cerrar_archivo(); void Leer_registro(); void Grabar_registro(); FILE *alias; //Declaracion del alias del archivo char *nom_archivo; //Variable del nombre del archivo struct { int num; char nombre[25]; //Campos del registro char depto; float sueldo; }Registro; //Declaracion del registro del archivo }; Archivo_Secuencial Archivo("c:\\EMPLEADO.DAT"); // Declaracion global // del objeto Archivo_Secuencial::Archivo_Secuencial(char *n) //Constructor del objeto { strcpy(nom_archivo,n); alias=fopen(n,"rb+"); if(alias==NULL) alias=fopen(n,"wb"); fclose(alias); } void Archivo_Secuencial::Leer_registro() { fread(&Registro,sizeof(Registro),1,alias); } void Archivo_Secuencial::Grabar_registro() { fwrite(&Registro,sizeof(Registro),1,alias); } void Archivo_Secuencial::Abrir_archivo() { alias=fopen(nom_archivo,"rb+"); } void Archivo_Secuencial::Cerrar_archivo() { fclose(alias); } void ALTAS(void) { int num; clrscr(); cout << "\n<<< ALTAS >>>"; Archivo.Abrir_archivo(); cout << "\nNum. del empleado ---> "; cin >> num; Archivo.Leer_registro(); while(!feof(Archivo.alias)) { if(Archivo.Registro.num==num) { cout << "\n\n\nRegistro duplicado !!!"; Archivo.Cerrar_archivo(); getch(); return; } Archivo.Leer_registro(); } Archivo.Registro.num=num; cout << "\nNombre ---> "; gets(Archivo.Registro.nombre); cout << "\nDepto ---> "; Archivo.Registro.depto=getche(); cout << "\nSueldo ---> "; cin >> Archivo.Registro.sueldo; Archivo.Grabar_registro(); Archivo.Cerrar_archivo(); cout << "\n\n\nEmpleado registrado !!!"; getch(); return; } void LISTADO(void) { clrscr(); cout << "\n<<< LISTADO >>>"; Archivo.Abrir_archivo(); Archivo.Leer_registro(); while(!feof(Archivo.alias)) { printf("\n%3d %25s %c %5.2f",Archivo.Registro.num,Archivo.Registro.nombre,Archivo.Registro.depto,Archivo.Registro.sueldo); Archivo.Leer_registro(); } Archivo.Cerrar_archivo(); cout << "\n\n<<< Oprima cualquier tecla para continuar >>>"; getch(); } void main(void) { int op; do { clrscr(); cout << "\n1.-Altas"; cout << "\n2.-Listado"; cout << "\n0.-Salir"; cout << "\n\nOpcion? ---> "; cin >> op; switch(op) { case 1 : ALTAS(); break; case 2 : LISTADO(); break; } }while(op!=0); return; }