#include "Cliente.h" Cliente::Cliente(int valorNumeroCuenta, const string &valorApellido, const string &valorPrimerNombre, double valorSaldo) { establecerNumeroCuenta(valorNumeroCuenta); establecerApellido(valorApellido); establecerPrimerNombre(valorPrimerNombre); establecerSaldo(valorSaldo); }//fin del constructor void Cliente::establecerNumeroCuenta(int valorNumeroCuenta) { numeroCuenta = valorNumeroCuenta; }//fin funcion establecerNumeroCuenta int Cliente::obtenerNumeroCuenta()const { return numeroCuenta; }//retorna numeroCuenta void Cliente::establecerApellido(const string &valorApellido) { int longitud = valorApellido.size(); longitud = (longitud < 15 ? longitud : 14); valorApellido.copy(apellido, longitud); apellido[longitud] = '\0'; }//fin funcion establecerApellido string Cliente::obtenerApellido()const { return apellido; }//retorna apellido void Cliente::establecerPrimerNombre(const string &valorPrimerNombre) { int longitud = valorPrimerNombre.size(); longitud = (longitud < 10 ? longitud : 9); valorPrimerNombre.copy(primerNombre, longitud); primerNombre[longitud]= '\0'; }//fin funcion establecerPrimerNombre string Cliente::obtenerPrimerNombre()const { return primerNombre; }//retorna primerNombre void Cliente::establecerSaldo(double valorSaldo) { saldo = valorSaldo; }//fin funcion establecerSaldo double Cliente::obtenerSaldo()const { return saldo; }//retorna saldo //muestra las cabeceras void Cliente::cabeceras() { cout << left << setw(10) << "CUENTA" << setw(16) << "APELLIDO" << setw(14) << "PRIMER NOMBRE" << left << setw(10) << right << "SALDO" << endl; } //fin cabeceras /////////////////////////////////////////////////////////////////////////////// //ingresa numero de cuenta,nombre, apellido y saldo a un archivo binario void Cliente::capturar(fstream &credito){ int numeroCuenta=0; while(numeroCuenta < 1 || numeroCuenta > 100){ cout << " Escriba el numero de cuenta (de 1 a 100)\n"; cin >> numeroCuenta; } credito.seekg((numeroCuenta - 1) *sizeof(Cliente)); Cliente c; credito.read(reinterpret_cast(&c), sizeof(Cliente)); //el usuario proporciona la informacion que se guarda en el archivo if(c.obtenerNumeroCuenta() == 0){ char apellido[15]; char primerNombre[10]; double saldo; cout << " Teclea apellido, primer nombre, saldo \n?"; cin >> setw(15) >> apellido; cin >> setw(10) >> primerNombre; cin >> saldo; // establecer los valores apellido, primerNombre, saldo del registro c.establecerApellido(apellido); c.establecerPrimerNombre(primerNombre); c.establecerSaldo(saldo); c.establecerNumeroCuenta(numeroCuenta); //buscar la posicion en el archivo del registro especificado por el usuario credito.seekp((numeroCuenta -1) *sizeof(Cliente)); //seekp(n,ios::beg); //escribir la informacion especificada por el usuario en el archivo credito.write(reinterpret_cast(&c), sizeof(Cliente)); }//if else cerr << " El numero de cuenta " << numeroCuenta << " ya existe, favor de ingresar otro!\n"; } //fin de ingresar //sobrescribe un registro con un cliente en blanco void Cliente::eliminar(fstream &credito){ int numeroCuenta; cout << " Dame el numero de cuenta que deseas eliminar\n"; cin >> numeroCuenta; credito.seekg((numeroCuenta - 1) * sizeof(Cliente)); Cliente c; credito.read(reinterpret_cast(&c), sizeof(Cliente)); if(c.obtenerNumeroCuenta()!= 0){ Cliente clienteEnBlanco; credito.seekp((numeroCuenta - 1) * sizeof(Cliente)); credito.write(reinterpret_cast(&clienteEnBlanco), sizeof(Cliente)); cout<<"El cliente se ha eliminado "<> nCuenta; credito.seekg((nCuenta - 1) * sizeof(Cliente)); // posiciona en el lugar indicado Cliente c; credito.read(reinterpret_cast(&c), sizeof(Cliente)); // lee el archivo //actualizar el registro, es decir, actualizar el saldo unicamente if(c.obtenerNumeroCuenta() != 0){ c.cabeceras(); credito.seekp((nCuenta - 1) * sizeof(Cliente)); cout << left << setw(10) << c.obtenerNumeroCuenta() << setw(16) << c.obtenerApellido() << setw(14) << c.obtenerPrimerNombre() << setw(10) << setprecision (2) << right << fixed << showpoint << c.obtenerSaldo() << endl; //solicitar al usuario que especifique la transacción cout<<"\nEscriba cargo (+) o abono (-): "; cin>>transaccion; cout<(&c), sizeof(Cliente)); } //fin del if else { cerr<< "El numero de cuenta no existe "<>nCuenta; Cliente c;//un objeto o registro cliente credito.seekg((nCuenta - 1) * sizeof(Cliente)); // nos movemos a la posicion en el archivo fisico credito.read(reinterpret_cast< char *>(&c), sizeof(Cliente)); // lee archivo fisico if(c.obtenerNumeroCuenta() != 0 ){ c.cabeceras(); credito.seekp((numeroCuenta - 1) * sizeof(Cliente)); cout << left << setw(10) << c.obtenerNumeroCuenta() << setw(16) << c.obtenerApellido() << setw(14) << c.obtenerPrimerNombre() << setw(10) << setprecision (2) << right << fixed << showpoint << c.obtenerSaldo() << endl; }//fin de if else { cerr<<"El numero de cuenta no existe"<(&c), sizeof(Cliente)); // lee archivo fisico c.cabeceras(); while(creditoEntrada && !creditoEntrada.eof()){ if(c.obtenerNumeroCuenta() != 0){ cout << left << setw(10) << c.obtenerNumeroCuenta() << setw(16) << c.obtenerApellido() << setw(14) << c.obtenerPrimerNombre() << setw(10) << setprecision (2) << right << fixed << showpoint << c.obtenerSaldo() << endl; }//fin de if creditoEntrada.read(reinterpret_cast< char *>(&c), sizeof(Cliente)); }//fin de while }//consultas generales