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:
Son los objetos del programa
Variable "global", se usa para determinar la cantidad de elementos del archivo
Se creó un objeto x, también una opción inicializada en 0
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:
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:
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:
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:
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:
Se llenara el vector vacio con los elementos del archivo
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
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:
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:
CASE 3:
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
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:
Se llena el vector con los datos del archivo, luego se ordena el vector en cuestión mediante la función ordenar
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:
Se llena el vector con los datos del archivo, luego para ordenar alfabéticamente por título se usa la función ordena
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:
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
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:
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
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
DOCENTE: PRADO VILLARROEL IRMA
PARALELO: 1
FECHA DE ENTREGA: 3 – DICIEMBRE
LA PAZ – BOLIVIA
1-2013