CONTENIDO DE LA LECCIÓN 8

CONTENIDO DE LA LECCIÓN 8 CONTENIDO DE LA LECCIÓN 8

azul2.bnct.ipn.mx
from azul2.bnct.ipn.mx More from this publisher
06.05.2013 Views

MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo 7.26 Considere el siguiente planteamiento de un problema: Cree un programa de procesamiento de crédito que sea capaz de almacenar hasta 100 registros de longitud fija para una compañía que puede tener hasta 100 clientes. Cada registro deberá consistir de un número de cuenta que se utilizará como clave del registro, un apellido, un nombre y un saldo. El programa deberá ser capaz de actualizar una cuenta, agregar una nueva cuenta, borrar una cuenta y listar todos los registros de cuenta en un archivo de texto formateado para impresión. Las siguientes secciones presentan las técnicas necesarias para crear este programa de procesamiento de crédito. Llamemos al programa ALEATORIO.CPP. /* Este es un archivo de cabecera llamado clntdata.h utilizados por los programas. Se define la estructura datoCliente que se utiliza en los programas ALEATORIO.CPP, ESCRIALEA.CPP, LECSEC.CPP. */ #ifndef CLNDATA_H #define CLNDATA_H struct datoCliente { int numeroCuenta; char apellido[15]; char nombre[10]; float balance; }; #endif /* El siguiente programa: ALEATORIO.CPP, crea secuencialmente un archivo accesado aleatoriamente. El archivo de cabecer clntdata.h se encuentra definido en otro archivo. */ #include //Para cout y cin #include //Para crear el objeto creditoSalida #include //Para exit() #include "c:\apuntes1 c++\programas fuentes\leccion 07\clntdata.h" int main(void) { ofstream creditoSalida("credito.dat", ios::out); if(!creditoSalida) { cerr

MIGUEL Á. TOLEDO MARTÍNEZ El programa ALEATORIO.CPP, ilustra la apertura de un archivo de acceso aleatorio, la definición del formato del registro utilizando una struct (definida en el archivo de encabezado clntdata.h) y la escritura de datos en el disco. Este programa inicializa los 100 registros del archivo credito.dat con struct vacías mediante la función write. Cada struct vacía contiene 0 en el número de cuenta, la cadena nula (representada por comillas vacías) para el apellido, la cadena nula para el nombre y 0.0 para el saldo. El archivo se inicializa con la cantidad adecuada de espacio vacío en donde se almacenarán los datos de las cuentas y para determinar en programas subsecuentes si cada registro está vacío o contiene datos. En dicho programa, las instrucciones: creditoSalida.write(reinterpret_cast(&clienteBlanco), sizeof(datoCliente)); causan que la estructura clienteBlanco de tamaño sizeof(datoCliente) se escriba en el archivo credito.dat que está asociado con el objeto creditoSalida de ofstream. Recuerde que el operador sizeof devuelve el tamaño en byte del objeto que está contenido entre paréntesis. Observe que el primer argumento de la función write debe ser de tipo const char *. Sin embargo, el tipo de dato de &clienteBlanco es datoCliente *. Para convertir &clienteBlanco al tipo de apuntador adecuado, la expresión: reinterpret_cast(&clienteBlanco) utiliza el operador de conversión mediante cast reinterpret_cast para convertir la dirección de clienteBlanco a const char *, de modo que la llamada write compile sin emitir un error de sintaxis. ESCRITURA ALEATORIA DE DATOS A UN ARCHIVO DE ACCESO ALEATORIO Ejemplo 7.27 for(int i = 0; i < 100; i++) creditoSalida.write(reinterpret_cast(&clienteBlanco), sizeof(datoCliente)); return 0; }//Fin de main() El siguiente programa: ESCRIALEA.CPP, escribe datos hacia el archivo credito.dat. Utiliza la combinación de las funciones seekp y write de ostream para almacenar datos en localidades exactas del archivo. La función seekp establece el apuntador de posición de archivo colocar a una localidad específica del archivo y luego write envía los datos a la salida. Observe que el programa incluye el archivo de encabezado clntdata.h. /* El siguiente programa: ESCRIALEA.CPP, ilustra la escritura a un archivo de acceso aleatorio.*/ #include //Para cout y cin #include //Para crear el objeto creditoSalida #include //Para exit() #include "c:\apuntes1 c++\programas fuentes\leccion 07\clntdata.h" FUNDAMENTOS – LECCIÓN 7 7-47

MIGUEL Á. TOLEDO MARTÍNEZ<br />

Ejemplo 7.26<br />

Considere el siguiente planteamiento de un problema:<br />

Cree un programa de procesamiento de crédito que sea capaz de almacenar hasta 100 registros<br />

de longitud fija para una compañía que puede tener hasta 100 clientes. Cada registro deberá<br />

consistir de un número de cuenta que se utilizará como clave del registro, un apellido, un nombre<br />

y un saldo. El programa deberá ser capaz de actualizar una cuenta, agregar una nueva cuenta,<br />

borrar una cuenta y listar todos los registros de cuenta en un archivo de texto formateado para<br />

impresión.<br />

Las siguientes secciones presentan las técnicas necesarias para crear este programa de<br />

procesamiento de crédito. Llamemos al programa ALEATORIO.CPP.<br />

/* Este es un archivo de cabecera llamado clntdata.h utilizados por los programas.<br />

Se define la estructura datoCliente que se utiliza en los programas ALEATORIO.CPP,<br />

ESCRIALEA.CPP, LECSEC.CPP.<br />

*/<br />

#ifndef CLNDATA_H<br />

#define CLNDATA_H<br />

struct datoCliente<br />

{<br />

int numeroCuenta;<br />

char apellido[15];<br />

char nombre[10];<br />

float balance;<br />

};<br />

#endif<br />

/* El siguiente programa: ALEATORIO.CPP, crea secuencialmente un archivo accesado<br />

aleatoriamente.<br />

El archivo de cabecer clntdata.h se encuentra definido en otro archivo.<br />

*/<br />

#include //Para cout y cin<br />

#include //Para crear el objeto creditoSalida<br />

#include //Para exit()<br />

#include "c:\apuntes1 c++\programas fuentes\leccion 07\clntdata.h"<br />

int main(void)<br />

{<br />

ofstream creditoSalida("credito.dat", ios::out);<br />

if(!creditoSalida)<br />

{<br />

cerr

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!