Proyecto #2

  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Proyecto #2 as PDF for free.

More details

  • Words: 2,565
  • Pages: 32
UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS FACULTAD DE INFORMÁTICA ELECTRÓNICA Y COMUNICACIÓN (FIEC) INF.222 PROGRAMACIÓN ORIENTADA A OBJETOS PROYECTO #1 “DIRECTORIOS, SUBDIRECTORIOS Y ARCHIVOS” PROFESOR DIEGO SANTIMATEO ESTUDIANTE ÁNGEL AGUILAR 8-821-2269 MARÍA GONZALEZ 2-721-522 II AÑO II SEMESTRE

2008

INTRODUCCIÓN

Otra experiencia mas que tiene como objetivo seguir en la modularización de la programación, en esta ocasión en el tema de directorios, subdirectorios y archivos, se puede decir en el caso específico de los archivos que es una estructura de datos que facilita el almacenamiento de datos de distintos tipos, es por ello que a la hora de trabajar con esas estructuras, en programación orientada a objetos, implica que se pueden hacer muchas cosas con los archivos, es decir, como lo que pide este laboratorio, crear un archivo, modificar, eliminar, abrir entre otras. Además como es una estructura bastante compleja requiere de la utilización de muchos métodos y clases o cual hace más sencillo aún sus códigos en el sentido de que son segmentos pequeños destinados a hacer una sola tarea en especial.

COMENTARIO DE DESPUES DE LEER E INTERPRETAR LA DIRECCIÓN http://www.leepoint.net/notes-java/io/10file/10readfile.html Después de revisar la dirección se puede decir que se dan a conocer algunas clases y métodos para trabajar con archivos, por supuesto que nos pareció interesante porque básicamente este pequeño tutorial trata de ejemplificar el uso de algunas clases, para poder hacer una copia de un archivo entre otras, se podrí decir que se sienta la bases para satisfacer los requerimientos del proyecto, ya que por nuestra parte nos corresponde investigar mas aún de lo que presenta el facilitador.

DOCUMENTACIÓN ADECUADA DE LAS CLASES Y MÉTODOS En este programa se utilizó una gran cantidad de métodos y algunas clases de las cuales se estarán explicando su funcionalidad poco a poco. CLASES Clase Principal

Clase Directorio

Clase Html Clase Modifica MÉTODOS Esta clase no contiene métodos

Carpeta Carpeta2 Archivo Vercar Vercarr

FUNCIONALIDAD En esta clase es la que se encuentra el main, lo que significa que es donde se controlan o se llaman todos los métodos existentes sin importar las cantidades de clases empleadas. Por su parte esta clase contiene los métodos relacionados con la creación de la ruta en la que se encuentra el archivo, que incluye la creación de la carpeta principal, la subcarpeta y el propio archivo, además de los métodos para verificar la existencia de cada uno de los nombres de la ruta. En esta clase se encuentran el métodos que se encarga de la creación del esqueleto del archivo. A esta clase pertenecen los métodos que permiten modificar el archivo, ya sea su titulo, subtitulo, párrafo y subpárrafos. FUNCIONALIDAD Clase Principal Por su parte en ella es donde se puede hacer la ejecución del programa (donde se encuentra el menú), y se hace la invocación de cada uno de los métodos de las clases que se definen a continuación. Clase Directorio Obtiene el nombre de la carpeta principal desde teclado. Se obtiene el nombre de la subcarpeta también desde teclado. Aquí se captura por el teclado el nombre del archivo. En este método se verifica si la carpeta principal que se desea crear existe o no. En este método se verifica si la subcarpeta que se desea crear dentro de la carpeta

Verarch

Esqueleto

ModTitulo

ModSubTitulo

ModParrafo

principal existe o no. En este método se verifica si el archivo que se desea crear dentro de la subcarpeta existe o no. Clase Html En este método lo que se hace es crear las etiquetas HTML en el archivo recién creado para luego modificarlo. Clase Modifica La función de este método consiste en la creación del titulo del archivo HTML, además se puede cambiar el titulo las veces que se desee, en ella se pide un nombre de un nuevo archivo de salida en el que estará el nuevo titulo. Este método necesita como argumento de entrada los nombres de: la carpeta principal, subcarpeta, archivo (path), el nombre de la carpeta principal y la subcarpeta para hacer la concatenación, es decir, para que el nuevo archivo que contiene el nuevo titulo se cree dentro de las carpetas del path original, luego se elimina el archivo del path original y se retorna la nueva ruta a la clase principal la nueva ruta. La función de este método consiste en la creación del subtitulo del archivo HTML, además se puede cambiar el subtitulo las veces que se desee, en ella se pide un nombre de un nuevo archivo de salida en el que estará el nuevo subtitulo. Este método necesita como argumento de entrada la ruta retornada por el método que crea el titulo (método ModTitulo), que contiene el nombre de la carpeta principal, la subcarpeta y el nuevo archivo con el nuevo titulo, y también el nombre de la carpeta principal y la subcarpeta del path original para hacer la concatenación, es decir, para que el nuevo archivo que contiene el titulo y el nuevo subtitulo se cree dentro de las carpetas del path original, luego se elimina el archivo contenido en el path devuelto por (método ModTitulo) y se retorna la nueva ruta con el nuevo archivo que contiene titulo y subtitulo a la clase principal. La función de este método consiste en la creación del párrafo del archivo HTML, además se puede cambiar el párrafo las veces que se desee, en ella se pide un nombre de un nuevo archivo de salida en el que estará el nuevo párrafo. Este método necesita como argumento de entrada la ruta retornada por el método que crea el subtitulo

ModCaracteristica

(método ModSubTitulo), que contiene el nombre de la carpeta principal, la subcarpeta del path original y el nuevo archivo con el nuevo titulo y subtitulo y también el nombre de la carpeta principal y la subcarpeta del path original para hacer la concatenación, es decir, para que el nuevo archivo que contiene el titulo, subtitulo y el nuevo párrafo se cree dentro de las carpetas del path original, luego se elimina el archivo contenido en el path devuelto por (método ModSubTitulo) y se retorna la nueva ruta con el nuevo archivo que contiene titulo, subtitulo y párrafo a la clase principal y luego se puede abrir el archivo para evidenciar sus cambios. La función de este método consiste en la creación de las características del archivo HTML, además se puede cambiar las veces que se desee, en ella se pide un nombre de un nuevo archivo de salida en el que estarán las nuevas características necesitando como argumento de entrada la ruta retornada por el método que crea el párrafo (método ModParrafo) que contiene el nombre de la carpeta principal, la subcarpeta y el nuevo archivo con el nuevo titulo, subtitulo y párrafo, el nombre de la carpeta principal y la subcarpeta del path original para hacer la concatenación, es decir, para que el nuevo archivo que contiene el titulo, subtitulo, párrafo y las nuevas características se cree dentro de las carpetas del path original, luego se elimina el archivo contenido en el path devuelto por (método ModSubParrafo) y se retorna la nueva ruta con el nuevo archivo que contiene titulo, subtitulo párrafo y características a la clase principal y luego se puede abrir el archivo para evidenciar sus cambios.

CODIGOS FUENTES

Para el desarrollo de este proyecto hicimos uso de cuatro clases como ya se había manifestado de las cuales a continuación les presentamos sus respectivos códigos. CODIGO DE LA CLASE PRINCIPAL import java.lang.String.*; import java.io.*; import javax.swing.*; import javax.swing.JOptionPane; class Principal{ public static void main(String[] args)throws IOException{ Directorio ruta=new Directorio();// se crea un objeto de Directorio para llamar los métodos de esta clase Htlm ruto=new Htlm();// se crea un objeto de Html para llamar los métodos de esta clase ModificaTitlle rat=new ModificaTitlle(); //ModificaSubTitlle rot=new ModificaSubTitlle(); //Praga des=new Praga();// se crea un objeto de Modifica para llamar los métodos de esta clase int opc=2; String u="";//todas estas variables son declaradas de esta manera ya que ella son asiganadas al momento String t="";//de la invocación de los métodos que contiene la carpeta, subcarpeta, archivo, archivos con String p="";//nuevo titulo,subtitulo y parrafo,ademas es necesaria esta declaración ya que la ruta del directorio la necesitan otros métodos. String a=""; String b=""; String e=""; String r=""; String y=""; String m=""; String num; do{ num=JOptionPane.showInputDialog(null," MENU PRINCIPAL\n\n1-) CREAR CARPETA PRINCIPAL\n2-) CREAR SUBCARPETA\n3-) CREAR ARCHIVO\n4-) MODIFICAR ARCHIVO\n5-) SALIR DE SISTEMA\n\n ¡ ELIGE UNA OPCION !"); opc=Integer.parseInt(num); switch(opc) { case 1: u=ruta.Carpeta();//invocacion de los metodos que captura el nombre de la carpeta principal ruta.Vercar();// y el metodo que verifica si existe la carpeta o no break; case 2: t=ruta.Carpeta2();//invocacion de los metodos que captura el nombre de la subcarpeta ruta.Vercarr(); // y el metodo que verifica si existe la subcarpeta o no break; case 3: p=ruta.Archivo();//invocacion de los metodos que captura el nombre del archivo ruta.Verarch();// y el metodo que verifica si existe el archivo o no

JOptionPane.showMessageDialog(null,"LA RUTA ES "+p); ruto.Esqueleto(p);//crea las etiquetas en el archivo break; case 4: int opcion=2; do{ String elegir=JOptionPane.showInputDialog(null," MENU DE LA MODIFICACION\n\n1-) CAMBIAR TITULO\n2-) CAMBIAR SUBTITULO\n3-) CAMBIAR PARRAFO\n4-) CAMBIAR SUBTEMAS\n5-) SALIR DE LA MODIFICACION\n\n ¡ ELIGE UNA OPCION !"); opcion=Integer.parseInt(elegir); switch(opcion) { case 1: a=rat.ModTitulo(p,t);//invocando el metodo que cambia el titulo p=a; break; case 2: e=rat.ModSubTitulo(a,t);//invocando el metodo que cambia el subtitulo a=e; break; case 3: y=rat.ModParrafo(e,t);//invocamdo el metodo que cambia el parrafo e=y; break; case 4: m=rat.ModCaracteristica(y,t); y=m; } }while(opcion!=5); break; case 5: JOptionPane.showMessageDialog (null,"!HASTA PRONTO!", "BY ANGELL & ASUMARY", JOptionPane.INFORMATION_MESSAGE); break; } } while(opc!=5);//fin del while }//fin delmain }//fin de la clase CODIGO DE LA CLASE DIRECTORIO import java.io.File; import javax.swing.*; import java.lang.String.*; class Directorio{ String y; String carpeta,subcarpeta,arch; // metodo crea la carpeta public String Carpeta(){

try{ carpeta= JOptionPane.showInputDialog("INDIQUE EL NOMBRE DE LA CARPETA"); File directorio = new File(carpeta); if(directorio.mkdirs()) JOptionPane.showMessageDialog(null,"CARPETA CREADA CON EXITO"); else JOptionPane.showMessageDialog(null,"ESTA CARPETA YA EXISTE"); } catch (Exception e){ } return(carpeta); } // metodo crea la subcarpeta en la carpeta principal public String Carpeta2(){ try{ subcarpeta = JOptionPane.showInputDialog("INDIQUE LA RUTA Y EL NOMBRE DE LA SUBCARPETA"); File subdir= new File(subcarpeta); if(subdir.mkdirs()) JOptionPane.showMessageDialog(null,"SUBCARPETA CREADA CON EXITO"); else JOptionPane.showMessageDialog(null,"LA SUBCARPETA YA EXISTE"); } catch (Exception e) { } return(subcarpeta); } // metodo verifica si la carpeta principal existe public boolean Vercar(){ boolean exists=(new File(carpeta)).exists(); return(exists); } // metodo verifica si la subcarpeta exixte public boolean Vercarr(){ boolean exists=(new File(subcarpeta)).exists(); return(exists); } // metodo que crea el archivo en la subcarpeta public String Archivo(){ try { this.y=JOptionPane.showInputDialog(null,"INDIQUE LA RUTA Y EL NOMBRE DEL ARCHIVO");

File file = new File(y); boolean r = file.createNewFile(); if (r) JOptionPane.showMessageDialog(null,"EXITOSAMENTE SE HA CREADO SU ARCHIVO"); else JOptionPane.showMessageDialog(null,"EL ARCHIVO EXISTE"); } catch (Exception e) { } return(y); } //metodo que verifica si el archivo existe public boolean Verarch(){ boolean exists=(new File(this.y)).exists(); return(exists); } } CODIGO DE LA CLASE HTML import java.io.*; import java.lang.String.*; import javax.swing.JOptionPane; import java.util.*; class Htlm { String nombrearchivo; //metodo que crea en el archivo el esqueleto HTML public void Esqueleto(String der)throws IOException { this.nombrearchivo=der; try{ this.nombrearchivo=der; PrintWriter dato = new PrintWriter(nombrearchivo); dato.println(""); dato.println(""); dato.println(""); dato.println("

"); dato.println("

"); dato.println("
  • "); dato.println(""); dato.println(""); dato.close(); } catch (Exception e) { } } } CODIGO DE LA CLASE QUE MODIFICA EL ARCHIVO import java.io.*; import java.lang.String.*; import javax.swing.JOptionPane; import java.util.*; class Modifica//clase que contiene los métodos que cambian el contenido del archivo

    { String nombreruta; private String NombreArchivo; private String NombreRuta; //metodo que cambia el titulo de archivo public String ModTitulo(String rut,String rute){ this.NombreArchivo=rut; String r=null; try{ String archsalida =JOptionPane.showInputDialog(null,"ESCRIBE EL NOMBRE DEL ARCHIVO"); PrintWriter salida = new PrintWriter(""+rute+"\\"+archsalida+""); String titulo = JOptionPane.showInputDialog(null,"ESCRIBE EL TITULO"); FileReader arch = new FileReader(""+NombreArchivo+""); BufferedReader in = new BufferedReader(arch); String s = new String(); while((s = in.readLine())!=null){ int x = s.indexOf(""); if (x>=0) salida.println("<title>"+titulo+"") ; else salida.println(s); }//Fin del while JOptionPane.showMessageDialog(null,"EL TITULO SE HA CREADO"); in.close(); salida.close(); r =(""+rute+"\\"+archsalida+""); File borra1 = new File(""+NombreArchivo+""); if(borra1.delete()) JOptionPane.showMessageDialog(null,"EL ARCHIVO CON EXITO FUE ELIMINADO"); else JOptionPane.showMessageDialog(null,"EL ARCHIVO NO SE HA ELIMINADO"); } catch (IOException e){ System.out.println("!!!error"); } return(r); } //metodo que cambia el subtitulo de archivo public String ModSubTitulo(String rit,String rot){ this.NombreArchivo=rit; String w=null; try{ String archsalida =JOptionPane.showInputDialog(null,"ESCRIBE EL NOMBRE DEL ARCHIVO DE SALIDA"); PrintWriter salida_2 = new PrintWriter(""+rot+"\\"+archsalida+""); String subtitulo = JOptionPane.showInputDialog(null,"ESCRIBE EL SUBTITULO"); FileReader arch = new FileReader(""+NombreArchivo+""); BufferedReader in = new BufferedReader(arch); String s = new String(); while((s = in.readLine())!=null){ int x = s.indexOf("

    "); if (x>=0) salida_2.println("

    "+subtitulo+"

    ") ; else

    salida_2.println(s); }//Fin del while JOptionPane.showMessageDialog(null,"EL SUBTITULO SE HA CREADO"); in.close(); salida_2.close(); w =(""+rot+"\\"+archsalida+"."); File borra1 = new File(""+NombreArchivo+""); if(borra1.delete()) JOptionPane.showMessageDialog(null,"EL ARCHIVO CON EXITO FUE ELIMINADO"); else JOptionPane.showMessageDialog(null,"EL ARCHIVO NO SE HA ELIMINADO"); } catch (IOException e){ System.out.println("!!!error"); } return(w); } //metodo que cambia el parrafo de archivo public String ModParrafo(String ruta,String ruta_2){ this.NombreArchivo=ruta; String q=null; try{ String archsalida =JOptionPane.showInputDialog(null,"ESCRIBE EL NOMBRE DEL ARCHIVO DE SALIDA"); PrintWriter salida_3 = new PrintWriter(""+ruta_2+"\\"+archsalida+""); String parrafo = JOptionPane.showInputDialog(null,"ESCRIBE EL PARRAFO"); FileReader arch = new FileReader(""+NombreArchivo+""); BufferedReader in = new BufferedReader(arch); String s = new String(); while((s = in.readLine())!=null){ int x = s.indexOf("=0) salida_3.println("

    "+parrafo+"

    ") ; else salida_3.println(s); }//Fin del while JOptionPane.showMessageDialog(null,"EL PARRAFO SE HA CREADO"); in.close(); salida_3.close(); q =(""+ruta_2+"\\"+archsalida+""); File borra1 = new File(""+NombreArchivo+""); if(borra1.delete()) JOptionPane.showMessageDialog(null,"EL ARCHIVO CON EXITO FUE ELIMINADO"); else JOptionPane.showMessageDialog(null,"EL ARCHIVO NO SE HA ELIMINADO"); } catch (IOException e){ System.out.println("!!!error"); } return(q); } ///// public String ModCaracteristica(String rutt,String ruta_3){ this.NombreArchivo=rutt; String l=null; try{

    String archsalida =JOptionPane.showInputDialog(null,"ESCRIBE EL NOMBRE DEL ARCHIVO DE SALIDA"); PrintWriter salida_4 = new PrintWriter(""+ruta_3+"\\"+archsalida+""); String caract = JOptionPane.showInputDialog(null,"ESCRIBE CARACTERISTICAS"); FileReader arch = new FileReader(""+NombreArchivo+""); BufferedReader in = new BufferedReader(arch); String s = new String(); while((s = in.readLine())!=null){ int x = s.indexOf("
  • "); if (x>=0) salida_4.println("
  • "+caract+"
  • ") ; else salida_4.println(s); }//Fin del while JOptionPane.showMessageDialog(null,"LA CARACTERISTICAS SE HAN CREADO"); in.close(); salida_4.close(); l =(""+ruta_3+"\\"+archsalida+""); File borra1 = new File(""+NombreArchivo+""); if(borra1.delete()) JOptionPane.showMessageDialog(null,"EL ARCHIVO CON EXITO FUE ELIMINADO"); else JOptionPane.showMessageDialog(null,"EL ARCHIVO NO SE HA ELIMINADO"); } catch (IOException e){ System.out.println("!!!error"); } return(l); } }

    RESULTADOS DE LA EJECUCIÓN

    RESULTADO FINAL AL ABRIR EL ARCHIVO

    CODIGO DEL ESQUELETO MODIFICADO

    REFLEXIONES INDIVIDUALES DEL PROYECTO Ángel Aguilar: fue una labor un poco complicada ya que no encontrábamos algunos métodos bien entendibles pero en conjunto trabajamos para terminar el proyecto. Una de las dificultades es que no podíamos modificar el archivo lo cual nos tomó algo de tiempo. Ya por experiencias anteriores puedo decir que la mejor manera de tratar de hacer las tareas en esta materia es investigando sobre el dominio del problema e ir poco a poco observando las herramientas necesarias a utilizar. María González Para este proyecto la creación de directorios y subdirectorios fu algo difícil al principio, por que al manejar un nuevo lenguaje se debe manejar nuevos métodos. A pesar de que este proyecto fue bastante difícil y un poco extenso nos queda el aprendizaje y las experiencia aprendidas. PD: Le pedimos disculpas por los nombres de las variables utilizadas en los distintas clases y métodos ya que es evidente que sus nombres no tienen relación con el tema a tratar por que al ojo por ciento cuando hacíamos los códigos le poníamos cualquier nombre.

    CONCLUSIÓN

    Una de las características de la programación orientada a objetos es que la mayoría de las utilidades o cosas que uno quiera hacer ya están prácticamente determinados, es decir ya están programados lo cual no exige tanta programación o mejor dicho no tenemos que crear los códigos a punta de lógica, ya que solo requiere tener muy buena interpretación o análisis de los documentos proporcionados por el facilitador el cual nos proporciona una idea o las bases para empezar a implementar los requerimientos de un problema planteado.

    Related Documents

    Proyecto 2
    August 2019 15
    Proyecto 2
    November 2019 18
    Proyecto[2]
    November 2019 8
    Proyecto 2
    May 2020 8
    Proyecto 2
    November 2019 26
    Proyecto #2
    December 2019 14