ayuda con archivos.java

g0nzui
24 de Junio del 2006
hola amigos, me encargaron un proyecto en la escuela en el cual hago un programa para una rentade videos, entonces ya hice lom que pude pero no me guarda el registro, por ejemplo, numero de socio 001, peliculas rentadas 2
otra operacion si
numero de socio 001
peliculas rentadas 2
total 4 (esto no me sale)
ayudenme les pongo el codigo y sialguien me quiere ayudar me escribe o agrega a [email protected], no me importa que me cobre pero que me ayude a resolver mi problema )....

public class Video {
private int numSocio;
private double peliculas;

public Video (int unNumSocio ) {
numSocio = unNumSocio;
peliculas = 0;


}

public int getNumSocio ( ) {
return numSocio;
}

public void rentar (double cantidad) {
double nuevoPeliculas = peliculas + cantidad;
peliculas = nuevoPeliculas;

}
public void devolver (double cantidad) {
double nuevoPeliculas = peliculas - cantidad;
peliculas = nuevoPeliculas;
}

public double getPeliculas(){

return peliculas;

}
}





import java.io.IOException;
import java.io.RandomAccessFile;

/**
Esta clase es un conducto a un archivo de acceso aleatorio que contiene
datos de cuenta de bancaria.
*/
public class DatosVideo {

private RandomAccessFile archivo;

public static final int LONGITUD_INT = 4;
public static final int LONGITUD_DOUBLE = 8;
public static final int LONGITUD_REGISTRO = LONGITUD_INT + LONGITUD_DOUBLE;

/**
Construye un objeto DatosCuentas que no está asociado con un archivo
*/
public DatosVideo( ) {
archivo = null;
}

/**
Abre un archivo de datos.
@param nombreArchivo es el nombre del archivo que contiene la información
de las cuentas bancarias
*/
public void open( String nombreArchivo ) throws IOException {
if ( archivo != null )
archivo.close( );
archivo = new RandomAccessFile( nombreArchivo, "rw");
}

/**
Obtiene el número de cuentas en el archivo.
@return el número de cuentas
*/
public int size( ) throws IOException {
return ( int ) ( archivo.length( ) / LONGITUD_REGISTRO );
}

/**
Cierra el archivo de datos.
*/
public void close() throws IOException {
if ( archivo != null )
archivo.close( );
archivo = null;
}

/**
Lee un registro de cuenta bancaria.
@param n es el índice de la cuenta en el archivo
@return un objeto cuenta bancaria inicializado con los datos del archivo
*/
public Video read( int n ) throws IOException {
archivo.seek( n * LONGITUD_REGISTRO );
int numSocio = archivo.readInt( );
double peliculas = archivo.readDouble( );
return new Video ( numSocio );
}

/**
Encuenta la posición de una cuenta bancaria con número específico
@param numCuenta es el número de cuenta a encontrar
@return la posición de la cuenta con el número especificado,
o -1 si no existe tal cuenta
*/
public int find( int numSocio ) throws IOException {
for (int i = 0; i < size(); i++)
{
archivo.seek( i * LONGITUD_REGISTRO );
int a = archivo.readInt( );
if ( a == numSocio ) // Encontró una coincidencia
return i;
}
return -1; // No encontró coincidencia en todo el archivo
}

/**
Escribe un registro de cuenta bancaria en el archivo de datos
@param n es el índice de la cuenta en el archivo de datos
@param cuenta es la cuenta bancaria a escribir
*/
public void write( int n, Video cuenta ) throws IOException {
archivo.seek( n * LONGITUD_REGISTRO );
archivo.writeInt( cuenta.getNumSocio( ) );
archivo.writeDouble( cuenta.getPeliculas( ) );
}
}






import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;

/**
Este programa prueba el acceso aleatorio a archivos. Puedes acceder a cuentas
cuentas existentes y depositar o retirar dinero o crear nuevas cuentas.
Las cuentas se guardan en un archivo de acceso aleatorio.
*/
public class DatosVideoDemo {

public static void main( String[] args ) throws IOException {

Scanner consola = new Scanner( System.in );
DatosVideo datos = new DatosVideo();

try {
datos.open( "banco.dat" );

boolean terminado = false;
while ( !terminado ) {
System.out.print("Número de socio: ");
int numSocio = consola.nextInt( );
System.out.print("Numero de peliculas a rentar: ");
double cantidad = consola.nextInt();


int posicion = datos.find( numSocio );
Video cuenta;
if ( posicion >= 0 ) {
cuenta = datos.read( posicion );
cuenta.rentar( cantidad );
System.out.println("Peliculas rentadas = " + cuenta.getPeliculas( ) );
}
else { // Añadir una cuenta
cuenta = new Video( numSocio );
posicion = datos.size( );
System.out.println("agregando una nueva cuenta...");
}
datos.write( posicion, cuenta );

System.out.print("¿Realizar otra operación? (S/N): ");
String respuesta = consola.next( );
if ( respuesta.equalsIgnoreCase( "N" ) )
terminado = true;
}
}
finally {
datos.close( );
}
}
}