Descargar

Aplicación de archivos en Java – Almacenamiento de CDs y DVDs


  1. Informe Funcionamiento del programa
  2. Código del programa
  3. Bibliografía

Informe Funcionamiento del programa

Introduccion.- Este progragra esta enfocada al uso del lenguaje de programacion en java, y que en el cual se aplican archivos, ya que el programa esta efectuado para un ordenamiento de CD,s y DVD,s que uno tiene en su hogar.

Este programa ayuda a dar orden y tener un registro detallado de nuestros discos, ya si mismo dar utilidad y aplicar lo conocimientos adquiridos en programacion en java.

A continuacion presentamos el codigo esplicado por partes es decir para que sirve cada sentencia y codigo utilizado para realizar el programa.

En el código se tiene lo siguiente:

edu.red

Son los objetos del programa

edu.red

Variable "global", se usa para determinar la cantidad de elementos del archivo

edu.red

Se creó un objeto x, también una opción inicializada en 0

edu.red

Se ve parcialmente parte del menú, mediante esto se puede ver que la opción se ingresa mandando el menú como un String a una función op, la opción elegida se manda a un switch

A continuación se presenta cada case con su respectivo funcionamiento

CASE 1:

edu.red

En el case 1 se ingresan los datos en el siguiente orden: Numero, titulo, genero, contenido y detalle

Además el "x.contenido" es ingresado mediante la función contenido:

edu.red

Puesto que se requiere un return de tipo String se declara la función como un String, El usuario puede elegir de una lista predeterminada de categorías la correspondiente al CD o DVD

Volviendo al case 1, se puede ver una función archivar:

edu.red

En este se pueden ver varias características. Primero se crea un archivo lógico, el mismo guarda los datos en un archivo de tipo .txt, además se guardan los datos con sus respectivas características (String, int) además se puede ver que los elementos se guardan los elementos en el respectivo orden en el cual se envían.

CASE 2:

edu.red

Se ingresa el numero del DVD o CD. Una vez obtenido el dato, se procedde a llenar el vector vacio mediante la función copia_archivo_a_vector:

edu.red

Se llenara el vector vacio con los elementos del archivo

edu.red

Puesto que ya se tiene un vector, se eliminara el elemento seleccionado del vector creado, primero se busca la posición del elemento seleccionado, luego se considera la posición seleccionada como límite para la eliminación de una posición de un vector cualquiera

edu.red

Esta función eliminara el archivo ya creado, como ya se tienen los datos almacenados en la función los mismos no se perderán

En el case también se puede ver que como se eliminó un elemento también se reduce en 1 el tamaño del vector

Luego se utiliza la función copia_archivo_a_vector:

edu.red

Mediante esta se almacenan los datos del vector en un archivo que tiene el mismo nombre del archivo en cuestión

Para comprobar que el programa funciona correctamente, se listan los datos del vector mediante la función lista_todo:

edu.red

CASE 3:

edu.red

Se ingresa el numero del CD o DVD que se quiere modificar, puesto que se utilizaron las funciones del Case 2

Se llena el vector vacio con los datos del vector con la función copia_archivo_a_vector, Despues se manda el vector y el numero a una función corregir

edu.red

Luego se elimina el archivo y al igual que en el segundo caso se llena el archivo con los datos modificados del vector

CASE 4:

edu.red

Se llena el vector con los datos del archivo, luego se ordena el vector en cuestión mediante la función ordenar

edu.red

edu.red

Al igual que en casos anteriores se elimina el archivo y se crea el nuevo con los datos ordenados. Luego se copian los datos del vector al archivo y se listan.

CASE 5:

edu.red

Se llena el vector con los datos del archivo, luego para ordenar alfabéticamente por título se usa la función ordena

edu.red

Se ordena el vector comparando los caracteres del título de cada elemento del archivo. Luego se elimina el archivo y se crea el nuevo con los datos ordenados y se lista el archivo

CASE 6:

edu.red

Primero se ingresa el titulo del elemento en cuestión, luego se llena el vector con los elementos del archivo y se busca la información directamente del vector mediante la función info_n

edu.red

Se ve parte de la función, una vez obtenido el nombre se muestra la información comparando el nombre del título en cuestión con cada nombre del archivo

CASE 7:

edu.red

Se ingresa el numero del CD o DVD, luego se llena el vector con los elementos del archivo, luego se manda el vector a la función info_num

edu.red

Se ve parcialmente el código. Al igual que en el case 6 se realiza una comparación para obtener la información pero en este caso se compara el numero ingresado con los números del archivo

Código del programa

import java.io.*;

public class proyecto_final

{

public static class guardar

{

String contenido;

String titulo;

String detalle;

String genero;

int numero = 0;

}

static int ta = 0;

public static void main (String[] arg) throws IOException

{

guardar x = new guardar ();

guardar[] vector;

int opcion = 0;

BufferedReader w = new BufferedReader (new InputStreamReader (System.in));

do

{

opcion = op ("n*** TRABAJO CON ARCHIVOS ***nn1. Registrar CD o DVDn2. Borrar un CD o DVD dañadon3. Corregir informacion registrada n4. Listado general por numeron5. Listado ordenado por titulon6. Informacion por titulon7. Informacion por numeron8. Salir ");

switch (opcion)

{

case 1:

try

{

int cond = 0;

do

{

x.numero = op ("Ingrese el numero del cd o dvd");

cond = verifica (x.numero);

if (cond == 0)

{

System.out.println ("Numero repetido, ingrese otro para continuar!");

}

}

while (cond == 0);

System.out.println ("Escriba el titulo: ");

x.titulo = w.readLine ();

System.out.println ("Escriba el genero: ");

x.genero = w.readLine ();

System.out.println ("Elija el contenido");

x.contenido = contenido ();

System.out.println ("Detalle del CD o DVD: ");

x.detalle = w.readLine ();

archivar (x);

}

catch (NumberFormatException ex)

{

System.out.println (" ");

}

break;

case 2:

System.out.println ("Ingrese el numero del CD o DVD que desea eliminar");

int n = Integer.parseInt (w.readLine ());

vector = copia_archivo_a_vector ();

vector = elimina (vector, n);

borrar_todo ();

ta–;

copia_del_vector_al_archivo (vector);

lista_todo ();

break;

case 3:

System.out.println ("Ingrese el numero del CD o DVD que desea corregir");

int ni = Integer.parseInt (w.readLine ());

vector = copia_archivo_a_vector ();

vector = corregir (vector, ni);

borrar_todo ();

copia_del_vector_al_archivo (vector);

lista_todo ();

break;

case 4:

vector = copia_archivo_a_vector ();

vector = ordenar (vector);

borrar_todo ();

copia_del_vector_al_archivo (vector);

lista_todo ();

break;

case 5:

vector = copia_archivo_a_vector ();

vector = cambiar_min (vector);

vector = ordena (vector);

borrar_todo ();

copia_del_vector_al_archivo (vector);

lista_todo ();

break;

case 6:

int cond1 = 0;

String bus_peli = " ";

do

{

System.out.println ("Ingrese el titulo del DVD o CD");

bus_peli = w.readLine ();

String mayus = bus_peli.charAt (0) + "";

mayus = mayus.toUpperCase ();

bus_peli = bus_peli.replaceFirst (bus_peli.charAt (0) + "", mayus);

cond1 = verifica1 (bus_peli);

if (cond1 == 0)

{

System.out.println ("El CD o DVD no existe! Ingrese otro para continuar");

}

}

while (cond1 == 0);

vector = copia_archivo_a_vector ();

info_n (vector, bus_peli);

break;

case 7:

int cond2 = 0;

int num4 = 0;

do

{

num4 = op ("Ingrese el numero del DVD o CD");

cond2 = verifica2 (num4);

if (cond2 == 0)

{

System.out.println ("Numero no existe! Ingrese otro para continuar");

}

}

while (cond2 == 0);

vector = copia_archivo_a_vector ();

info_num (vector, num4);

break;

case 8:

System.out.println ("ADIOS 🙂 ");

}

}

while (opcion != 8);

}

public static guardar[] ordenar (guardar m[])

{

guardar aux = new guardar ();

for (int i = 0 ; i < ta – 1 ; i++)

{

guardar menor = m [i];

int pos = i;

for (int j = i + 1 ; j < ta ; j++)

{

if (m [j].numero < menor.numero)

{

menor = m [j];

pos = j;

}

}

m [pos] = m [i];

m [i] = menor;

}

return (m);

}

public static String contenido () throws IOException

{

BufferedReader w = new BufferedReader (new InputStreamReader (System.in));

String r = " ";

int op1 = 0;

do

{

op1 = op ("Categorias de contenido:n1. Peliculan2. Musican3. Pdfn4. Fotografiasn5. Programacion");

if (op1 == 1)

{

r = "Pelicula";

}

if (op1 == 2)

{

r = "Musica";

}

if (op1 == 3)

{

r = "Pdf";

}

if (op1 == 4)

{

r = "Fotografias";

}

if (op1 == 5)

{

r = "Programacion";

}

}

while (op1 > 6);

return (r);

}

public static int op (String t) throws IOException

{

BufferedReader w = new BufferedReader (new InputStreamReader (System.in));

System.out.println (t);

int t4 = Integer.parseInt (w.readLine ());

return (t4);

}

//————————————–

public static void archivar (guardar z) throws IOException

{

FileOutputStream archivo_logico = new FileOutputStream ("Almacenamiento.TXT", true);

DataOutputStream data = new DataOutputStream (archivo_logico);

data.writeInt (z.numero);

data.writeUTF (z.titulo);

data.writeUTF (z.genero);

data.writeUTF (z.contenido);

data.writeUTF (z.detalle);

archivo_logico.close ();

}

//—————————————————————–

public static void lista_todo ()

{

guardar z = new guardar ();

try

{

FileInputStream fi = new FileInputStream ("Almacenamiento.TXT");

System.out.println ("Listado:");

DataInputStream data = new DataInputStream (fi);

while (true)

{

z.numero = data.readInt ();

z.titulo = data.readUTF ();

z.genero = data.readUTF ();

z.contenido = data.readUTF ();

z.detalle = data.readUTF ();

System.out.println (z.numero + "t" + z.titulo + "t" + z.genero + "t" + z.contenido + "t" + z.detalle);

}

}

catch (FileNotFoundException e)

{

System.out.println ("+++ El archivo no existe!!!!!");

}

catch (EOFException e)

{

System.out.println (" ");

}

catch (IOException e)

{

System.out.println (" ");

}

}

//——————————————————

public static void borrar_todo () throws IOException

{

FileOutputStream archivo_logico;

archivo_logico = new FileOutputStream ("Almacenamiento.TXT");

archivo_logico.close ();

}

//——————————————————–

public static guardar[] copia_archivo_a_vector ()

{

guardar[] z = new guardar [20];

ta = 0;

try

{

FileInputStream fi = new FileInputStream ("Almacenamiento.TXT");

DataInputStream data = new DataInputStream (fi);

while (true)

{

z [ta] = new guardar ();

z [ta].numero = data.readInt ();

z [ta].titulo = data.readUTF ();

z [ta].genero = data.readUTF ();

z [ta].contenido = data.readUTF ();

z [ta].detalle = data.readUTF ();

ta++;

}

}

catch (FileNotFoundException e)

{

System.out.println ("+++ El archivo no existe!!!!!");

}

catch (EOFException e)

{

System.out.println (" ");

}

catch (IOException e)

{

System.out.println (" ");

}

return (z);

}

//——————————————————–

public static void copia_del_vector_al_archivo (guardar z[]) throws IOException

{

FileOutputStream archivo_logico = new FileOutputStream ("Almacenamiento.TXT", true);

DataOutputStream data = new DataOutputStream (archivo_logico);

for (int i = 0 ; i < ta ; i++)

{

data.writeInt (z [i].numero);

data.writeUTF (z [i].titulo);

data.writeUTF (z [i].genero);

data.writeUTF (z [i].contenido);

data.writeUTF (z [i].detalle);

}

archivo_logico.close ();

}

//———————————————————

public static guardar[] ordena (guardar z[])

{

guardar aux = new guardar ();

for (int i = 0 ; i < ta ; i++)

{

for (int j = i ; j < ta ; j++)

{

if (z [i].titulo.compareTo (z [j].titulo) > 0)

{

aux = z [i];

z [i] = z [j];

z [j] = aux;

}

}

}

return (z);

}

public static guardar[] cambiar_min (guardar z[])

{

guardar aux = new guardar ();

for (int i = 0 ; i < ta ; i++)

{

String mayus = z [i].titulo.charAt (0) + "";

mayus = mayus.toUpperCase ();

z [i].titulo = z [i].titulo.replaceFirst (z [i].titulo.charAt (0) + "", mayus);

}

return (z);

}

//———————————————————

public static void info_n (guardar z[], String n)

{

guardar aux = new guardar ();

for (int i = 0 ; i < ta ; i++)

{

if (z [i].titulo.compareTo (n) == 0)

{

System.out.println ("Numero: " + z [i].numero + "nTitulo: " + z [i].titulo + "nGenero: " + z [i].genero + "nContenido: " + z [i].contenido + "nDetalle: " + z [i].detalle);

}

}

}

public static void info_num (guardar z[], int n)

{

guardar aux = new guardar ();

for (int i = 0 ; i < ta ; i++)

{

if (z [i].numero == n)

{

System.out.println ("Numero: " + z [i].numero + "nTitulo: " + z [i].titulo + "nGenero: " + z [i].genero + "nContenido: " + z [i].contenido + "nDetalle: " + z [i].detalle);

}

}

}

public static guardar[] elimina (guardar z[], int n)

{

guardar aux = new guardar ();

int pos = 0;

for (int i = 0 ; i < ta ; i++)

{

if (z [i].numero == n)

{

pos = i;

}

}

for (int i = pos ; i < ta ; i++)

{

z [i] = z [i + 1];

}

return (z);

}

public static guardar[] corregir (guardar z[], int n) throws IOException

{

BufferedReader w = new BufferedReader (new InputStreamReader (System.in));

int op1 = 0, pos = 0;

for (int i = 0 ; i < ta ; i++)

{

if (z [i].numero == n)

{

pos = i;

}

}

do

{

op1 = op ("Elija una caracteristica de la pelicula que desea corregir:n1. Numero n2. Titulon3. Generon4. Contenidon5. Detallen6. Finalizo la correccion");

switch (op1)

{

case 1:

int cond = 0;

do

{

z [pos].numero = op ("Ingrese el numero del cd o dvd");

cond = verifica (z [pos].numero);

if (cond == 0)

{

System.out.println ("Numero repetido, ingrese otro para continuar!");

}

}

while (cond == 0);

break;

case 2:

System.out.println ("Escriba el titulo: ");

z [pos].titulo = w.readLine ();

break;

case 3:

System.out.println ("Escriba el genero: ");

z [pos].genero = w.readLine ();

break;

case 4:

System.out.println ("Elija el contenido");

z [pos].contenido = contenido ();

break;

case 5:

System.out.println ("Detalle del CD o DVD: ");

z [pos].detalle = w.readLine ();

break;

}

}

while (op1 != 6);

return (z);

}

 

public static int verifica (int numero)

{

guardar z = new guardar ();

int condicion = 1;

try

{

FileInputStream fi = new FileInputStream ("Almacenamiento.TXT");

DataInputStream data = new DataInputStream (fi);

while (true)

{

z.numero = data.readInt ();

z.titulo = data.readUTF ();

z.genero = data.readUTF ();

z.contenido = data.readUTF ();

z.detalle = data.readUTF ();

if (numero == z.numero)

{

condicion = 0;

}

}

 

}

catch (FileNotFoundException e)

{

System.out.println ("+++ El archivo no existe!!!!!");

}

catch (EOFException e)

{

System.out.println (" ");

}

catch (IOException e)

{

System.out.println (" ");

}

return (condicion);

}

public static int verifica1 (String titulo)

{

guardar z = new guardar ();

int condicion = 0;

try

{

FileInputStream fi = new FileInputStream ("Almacenamiento.TXT");

DataInputStream data = new DataInputStream (fi);

while (true)

{

z.numero = data.readInt ();

z.titulo = data.readUTF ();

z.genero = data.readUTF ();

z.contenido = data.readUTF ();

z.detalle = data.readUTF ();

if (z.titulo.compareTo (titulo) == 0)

{

condicion = 1;

}

}

}

catch (FileNotFoundException e)

{

System.out.println ("+++ El archivo no existe!!!!!");

}

catch (EOFException e)

{

System.out.println (" ");

}

catch (IOException e)

{

System.out.println (" ");

}

return (condicion);

}

public static int verifica2 (int numero)

{

guardar z = new guardar ();

int condicion = 0;

try

{

FileInputStream fi = new FileInputStream ("Almacenamiento.TXT");

DataInputStream data = new DataInputStream (fi);

while (true)

{

z.numero = data.readInt ();

z.titulo = data.readUTF ();

z.genero = data.readUTF ();

z.contenido = data.readUTF ();

z.detalle = data.readUTF ();

if (z.numero == numero)

{

condicion = 1;

}

}

}

catch (FileNotFoundException e)

{

System.out.println ("+++ El archivo no existe!!!!!");

}

catch (EOFException e)

{

System.out.println (" ");

}

catch (IOException e)

{

System.out.println (" ");

}

return (condicion);

}

}

Bibliografía

Introduccion a la programacion en java -"John S. Dean, Raymond H. Dean"

 

 

Autor:

Maquera Nina Jose Luis

UNIVERSIDAD CATÓLICA BOLIVIANA "SAN PABLO"

FACULTAD DE CIENCIAS EXACTAS E INGENIERÍA

PROGRAMACION I

PROYECTO FINAL

edu.red

DOCENTE: PRADO VILLARROEL IRMA

PARALELO: 1

FECHA DE ENTREGA: 3 – DICIEMBRE

LA PAZ BOLIVIA

1-2013