//Escribir datos de manera aleatoria en un archivo de acceso aleatorio
#include <iostream>
#include <fstream>
#include <cstdlib>
#include "ClientData.h" // Definicion de la clase ClientData
using namespace std;
int main(){
int accountNumber;
string lastName;
string firstName;
double balance;
fstream outCredit( "credit.dat", ios::in | ios::out | ios::binary );
// salir del programa si fstream no puede abrir el archivo
if ( !outCredit ){
cerr << "El archivo no se pudo abrir." << endl;
exit( 1 );
} // end if
cout << "Ingrese el número de cuenta ( del 1 al 100)";
cout << " 0 para finalizar el ingreso)\n? ";
// Pedir al usuario que especifique un numero de cuenta
ClientData client;
cin >> accountNumber;
// El usuario ingresa información, la cual se copia al archivo
while ( accountNumber > 0 && accountNumber <= 100 ){
// el usuario ingresa el apellido ,el nombre y el saldo
cout << "Ingrese Apellido, Nombre, Saldo\n? ";
cin >> lastName;
cin >> firstName;
cin >> balance;
// Establecer los valores del registro:
// accountNumber, lastName, firstName y balance
client.setAccountNumber( accountNumber );
client.setLastName( lastName );
client.setFirstName( firstName );
client.setBalance( balance );
// Buscar la posición en el archivo del registro
// especificado por el usuario
outCredit.seekp( ( client.getAccountNumber() - 1 ) * sizeof( ClientData ) );
// Escribir la informacion ingresada por el usuario en el archivo
outCredit.write( reinterpret_cast< const char * >( &client ),
sizeof( ClientData ) );
// Permitir al usuario ingresar otra cuenta
cout << "Ingrese el numero de cuenta\n? ";
cin >> accountNumber;
} // end while
} // end main
Gonzales Jose �@
Perez es Juan 33333G�@ Sanchez Pedro 33333K�@ Z Martinez Carlos �b@ _ Lopez z Maria �g@
#ifndef CLIENTDATA_H
#define CLIENTDATA_H
#include <string>
using namespace std;
class ClientData{
public:
// constructor predeterminado de ClientData
ClientData( int accountNumberValue =0,
string lastNameValue="", string firstNameValue="",
double balanceValue =0.0){
setAccountNumber( accountNumberValue );
setLastName( lastNameValue );
setFirstName( firstNameValue );
setBalance( balanceValue );
} // fin del constructor ClientData
// Obtener el valor del numero de cuenta
int getAccountNumber() const{
return accountNumber;
} // fin de la funcion getAccountNumber
// Establecer el valor de account-number
void setAccountNumber( int accountNumberValue ){
accountNumber = accountNumberValue;
} // fin de la funcion setAccountNumber
// Obtener el valor de last-name
string getLastName() const{
return lastName;
} // fin de la funcion getLastName
// Establecer el valor de last-name
void setLastName( string lastNameString ){
// copiar como máximo 15 caracteres de la cadena a lastName
int length = lastNameString.size();
length = ( length < 15 ? length : 14 );
lastNameString.copy( lastName, length );
lastName[ length ] = '\0'; // añadir carácter nulo a lastName
} // fin de la funcion setLastName
// Obtener el valor de first-name
string getFirstName() const{
return firstName;
} // fin de la funcion getFirstName
// Establecer el valor de first-name
void setFirstName( string firstNameString ){
// copiar como máximo 10 caracteres de la cadena a firstName
int length = firstNameString.size();
length = ( length < 10 ? length : 9 );
firstNameString.copy( firstName, length );
firstName[ length ] = '\0'; // añadir carácter nulo a firstName
} // fin de la funcion setFirstName
// Obtener el valor de balance
double getBalance() const{
return balance;
} // fin de la funcion getBalance
// Establecer el valor de balance
void setBalance( double balanceValue ){
balance = balanceValue;
} //fin de la funcion setBalance
private:
int accountNumber;
char lastName[ 15 ];
char firstName[ 10 ];
double balance;
}; // fin de la clase ClientData
#endif