Certamen 2 DAI4501 [PHP/SESSION/JAVASCRIPT/CAPAS]

Diciembre 7, 2009 estebanfuentealba 1 Comentario

Acá dejo el último certamen de Desarrollo de Aplicaciones para Internet (DAI4501) de la profesora Yasna Meza

Enunciado:

Considerando la siguiente tabla de datos y su correspondiente diccionario de datos:

Se  pide  construir  una  aplicación  en  PHP  usando  capas  que  permita  cumplir  con  los
siguientes requerimientos:
R01 – Inicio y cierre de sesión
R02 – Agregar registros a la tabla de datos
R03 – Modificar registros de la tabla de datos
R04 – Listar todos los registros de la tabla
R05 –  Listar  usando  como  criterio  de  búsqueda  un  rango  de  sueldo.  El  sueldo  del profesor se calcula de acuerdo a la siguiente fórmula:
SUELDO = NÚMERO HORAS * VALOR HORA
OBSERVACIONES
·  DEBERÁ tener en consideración todas las validaciones
·  La base de datos DEBERÁ llamarse C2

Codigo de Fuente:
http://estebanfuentealba.net/archive/Certamen2-DAI-Esteban-Fuentealba.rar

Saludos!

Java Validar Formularios

Aca les dejo una clase que hice para validar si los Formularios están vacios

import java.awt.*;
import javax.swing.*;

public class EFValidacion {
	public static final int INTEGER=0;
	public static final int BYTE=1;
	public static final int LONG=2;
	public static final int DOUBLE=3;

	public static boolean isVacioForm(Component[] cs) {
		for(Component c : cs) {
			if(c instanceof JTextField) {
				if(((JTextField)c).isEnabled())
					if(((JTextField)c).getText().length()<1) return true;
			} else if(c instanceof JComboBox) {
				if(((JComboBox)c).getSelectedIndex() == 0) return true;
			} else if(c instanceof JPanel) {
				if(isVacioForm(((JPanel)c).getComponents())) return true;
			}
		}
		return false;
	}
	public static boolean is(String v,int w) {
		try {
			switch(w) {
				case 0: Integer.parseInt(v); break;
				case 1: Byte.parseByte(v); break;
				case 2: Long.parseLong(v); break;
				case 3: Double.parseDouble(v); break;
			}
			return true;
		} catch(Exception e) {}
		return false;
	}
}

Forma de Uso:

if(EFValidacion.isVacioForm(getContentPane().getComponents())){
	JOptionPane.showMessageDialog(null,"Existen campos vacios");
	return;
}else {
	//...
}

NOTA: Los JCombobox deben tener en la primera posición la descripción y luego los valores
Ejemplo:

Para usar el metodo is es necesario un String y el tipo de dato que se quiere comprobar,
Ejemplo:

if(!EFValidacion.is("CACA",EFValidacion.INTEGER)) {
	System.out.println("No es Numero");
}

Espero que les sirva,

Saludos!

Categorías:Java Etiquetas:, , , , , ,

Java Recorrer Colecciones [ Map ] usando for/while Parte 2

En el Post Anterior Mostre tres formas de recorrer una Collection ahora dejo como recorrer un Map.

En si un Map tiene una Clave y un Valor, por eso es un poco mas complicado recorrerlo

Iterator

Primero Mostrare como recorrer con Iterator

Iterator it = mapList.entrySet().iterator();
    	while(it.hasNext()) {
    		Map.Entry ent = (Map.Entry)it.next();
    		Persona p = (Persona)ent.getValue();
    		System.out.println(p);
    	}

Lo diferente esta en el Map.Entry , esto me permitirá acceder a la key y al value. (Recordemos que el value es el objeto completo).

Simple For

En si, Map no tiene un indice numérico por defecto, como si lo tienen los List, es por eso que para recorrer un Map usando for NO se podrá decir “quiero el objeto en la posición x” pero hay una forma de poder hacerlo, esta forma es convertir el map en array (arreglo) , Esto lo muestro a continuación

for(int i=0; i<mapList.size(); i++) {
    System.out.println(mapList.values().toArray()[i]);
}

Del Map tome todos los valores con el metodo values() esto em devuelve un Set, como no tiene un indice lo convierto a Array y de ese array saco el objeto en la posición “i”

 

Foreach

:

Por ultimo dejo el foreach

for(Persona p : mapList.values()) {
    System.out.println(p);
}

La forma mas sencilla de recorrer un Map…

Acá les dejo el codigo con las tres formas de Recorrer

/**
 * @(#)Persona.java
 *
 *
 * @author Esteban Fuentealba
 * @version 1.00 2009/11/29
 */

import java.util.*;

public class Persona {
	private String rut;
	private String nombre;

	public Persona() {}
    public Persona(String rut,String nombre) {
    	this.rut 	= rut;
    	this.nombre = nombre;
    }
    public void setRut(String val) {
    	this.rut = val;
    }
    public void setNombre(String val) {
    	this.nombre = val;
    }
    public String getRut() {
    	return this.rut;
    }
    public String getNombre() {
    	return this.nombre;
    }

    public String toString() {
    	return "[Rut: "+this.getRut()+"] [Nombre: "+this.getNombre()+"]";
    }
    public static void main(String[] args) {

    	Map<String,Persona> mapList = new HashMap<String,Persona>();
    		Persona pA = new Persona("111-1","Juan");
    		Persona pB = new Persona("222-2","Pedro");
    		Persona pC = new Persona("333-3","Luis");
    	mapList.put(pA.getRut(),pA);
    	mapList.put(pB.getRut(),pB);
    	mapList.put(pC.getRut(),pC);

    	System.out.println("Recorrer Map con Iterator:");
    	Iterator it = mapList.entrySet().iterator();
    	while(it.hasNext()) {
    		Map.Entry ent = (Map.Entry)it.next();
    		Persona p = (Persona)ent.getValue();
    		System.out.println(p);
    	}
    	System.out.println("Recorrer Map con simple for:");
    	for(int i=0; i<mapList.size(); i++) {
    		System.out.println(mapList.values().toArray()[i]);
    	}

    	System.out.println("Recorrer Map con foreach:");
    	for(Persona p : mapList.values()) {
    		System.out.println(p);
    	}

    }
}

Espero que les sirva,

Saludos!

Categorías:Java Etiquetas:, , , , , , , ,

Java Recorrer Colecciones [ Collection ] usando for/while Parte 1

Noviembre 29, 2009 estebanfuentealba 1 Comentario

Bueno aquí pondré algunas formas de recorrer Colecciones, Primero partiré por Las clases que Implementan Collection, son las mas fáciles de recorrer.

Para recorrer ArrayList,Vector,HashSet,TreeSet y todos los List y Set podemos usar lo siguiente:

Primero Crearé una clase y un metodo main que tendrá un ArrayList para poder recorrerlo y mostrar por pantalla lo que tiene dicho ArrayList

/**
 * @(#)Persona.java
 *
 *
 * @author Esteban Fuentealba
 * @version 1.00 2009/11/29
 */

import java.util.ArrayList;
public class Persona {
	private String rut;
	private String nombre;

	public Persona() {}
    public Persona(String rut,String nombre) {
    	this.rut 	= rut;
    	this.nombre = nombre;
    }

    public String getRut() {
    	return this.rut;
    }
    public String getNombre() {
    	return this.nombre;
    }

    public static void main(String[] args) {
    	ArrayList<Persona> lista = new ArrayList<Persona>();
    	lista.add(new Persona("111-1","Juan"));
    	lista.add(new Persona("222-2","Pedro"));
    	lista.add(new Persona("333-3","Luis"));

    }

}

Bien , es un ArrayList Genérico de Persona. Ahora veamos la primera forma de recorrer, es parecida cuando recorremos arrays

Simple For:

for(int i=0; i< lista.size(); i++) {
    		System.out.println(lista.get(i));
    	}

Es un for , le damos un contador de donde empezará (Desde la posición 0 de la lista), la condición (que se mantenga el ciclo siempre que nuestro contador sea menor al largo de la lista) y que debe hacer cuando cumpla un ciclo (aumentar el contador para ir a la siguiente posición).
Esto nos debe mostrar por pantalla lo siguiente:

Persona@3e25a5
Persona@19821f
Persona@addbf1

¿ Por que ? Yo quería que mostrara los datos de la persona =(
Mostró eso porque el programa recorre el arraylist, saca un objeto de la posición que este recorriendo, he imprime el objeto, el objeto es de la Clase Persona por lo que el programa va a ir a esa clase y buscará si esta el método toString() y como no lo encuentra imprimirá el toString() del padre, en este caso el de Object (Todo hereda de Object) que me devuelve El nombre de la Clase “Persona” @ “hashCode”.
Para solucionar esto le pondré el método (sobrescrito) toString() a la clase Persona, quedará así:

/**
 * @(#)Persona.java
 *
 *
 * @author
 * @version 1.00 2009/11/29
 */

import java.util.ArrayList;
public class Persona {
	private String rut;
	private String nombre;

	public Persona() {}
    public Persona(String rut,String nombre) {
    	this.rut 	= rut;
    	this.nombre = nombre;
    }

    public String getRut() {
    	return this.rut;
    }
    public String getNombre() {
    	return this.nombre;
    }

    public String toString() {
    	return "[Rut: "+this.getRut()+"] [Nombre: "+this.getNombre()+"]";
    }
    public static void main(String[] args) {
    	ArrayList<Persona> lista = new ArrayList<Persona>();
    	lista.add(new Persona("111-1","Juan"));
    	lista.add(new Persona("222-2","Pedro"));
    	lista.add(new Persona("333-3","Luis"));

    	for(int i=0; i< lista.size(); i++) {
    		System.out.println(lista.get(i));
    	}
    }
}

Compilo y corro el programa, la salida muestra por pantalla lo siguiente:

[Rut: 111-1] [Nombre: Juan]
[Rut: 222-2] [Nombre: Pedro]
[Rut: 333-3] [Nombre: Luis]

Bien Ahora si mostró lo que queríamos que mostrara.

Iterator:

Otra forma de recorrer el arraylist es usando el metodo iterator() del ArrayList , para entender de mejor forma como funciona iterator() dejo la siguiente imagen:

Lo que esta en verde es nuestra lista. Ojo Iterator no tiene índice, pero la mejor forma de entenderlo es imaginandose el indice, es por eso que puse en la imagen.
Lo que hace iterator() es:

  1. Poner el iterador al principio de la lista. (Imaginariamente en la posición -1, fuera de la lista)
  2. Luego con el metodo hasNext() pregunta si hay un elemento siguiente.
  3. Si hay un elemento debo sacarlo con el metodo next() y vuelvo a preguntar con el hashNext(), así hasta que no exista ningún elemento siguiente.

Lo anterior llevado a código quedaría de la siguiente forma:

Iterator it = lista.iterator();
    	while(it.hasNext()) {
    		System.out.println(it.next());
    	}

la salida por pantalla es la siguiente:

[Rut: 111-1] [Nombre: Juan]
[Rut: 222-2] [Nombre: Pedro]
[Rut: 333-3] [Nombre: Luis]

Cumple la misma función que la primera forma de recorrer.

 

Foreach:

La siguiente forma de recorrer es con foreach, desde Java 5 que se incluyó el bucle foreach para iterar sobre colecciones de objetos.
La forma de ocuparlo es la siguiente

for(Clase nombre : lista) {
	//...
}

Donde “lista” es la collection a recorrer,”Clase” es de que clase es la “lista” y “nombre” es un nombre de variable.
Acá llevado al ejemplo de Persona:

for(Persona p : lista) {
    		System.out.println(p);
    	}

La salida por pantalla es:

[Rut: 111-1] [Nombre: Juan]
[Rut: 222-2] [Nombre: Pedro]
[Rut: 333-3] [Nombre: Luis]

Según yo ,foreach, es la forma mas fácil de recorrer colecciones.

 

Bueno ahí puse tres formas de recorrer una Collection (Set,List,Queue)

Espero que les sirva, en el siguiente post pondré como recorrer Map
Acá les dejo el código con las tres formas,

/**
 * @(#)Persona.java
 *
 *
 * @author
 * @version 1.00 2009/11/29
 */

import java.util.ArrayList;
import java.util.Iterator;
public class Persona {
	private String rut;
	private String nombre;

	public Persona() {}
    public Persona(String rut,String nombre) {
    	this.rut 	= rut;
    	this.nombre = nombre;
    }

    public String getRut() {
    	return this.rut;
    }
    public String getNombre() {
    	return this.nombre;
    }

    public String toString() {
    	return "[Rut: "+this.getRut()+"] [Nombre: "+this.getNombre()+"]";
    }
    public static void main(String[] args) {
    	ArrayList<Persona> lista = new ArrayList<Persona>();
    	lista.add(new Persona("111-1","Juan"));
    	lista.add(new Persona("222-2","Pedro"));
    	lista.add(new Persona("333-3","Luis"));

    	System.out.println("Recorrer Collection con simple for:");
    	for(int i=0; i< lista.size(); i++) {
    		System.out.println(lista.get(i));
    	}
    	System.out.println("Recorrer Collection con Iterator:");
    	Iterator it = lista.iterator();
    	while(it.hasNext()) {
    		System.out.println(it.next());
    	}
    	System.out.println("Recorrer Collection con foreach:");
    	for(Persona p : lista) {
    		System.out.println(p);
    	}
    }
}

Saludos!

Categorías:Java Etiquetas:, , , , , , , ,

Preparando Certamen 3 – Ejercicio 2 [POO - Java] PEF2501

Otro Ejercicio de Java para practicar para el cetamen 3 de Programación Orientada a Objetos… Solo Tienen que hacer lo que les piden… Si no piden main y no piden testear la aplicación no lo hagan (Si les sobra tiempo pueden hacerlo).

Enunciado:

Una biblioteca requiere de una aplicación que sea capaz de llevar
un registro de los alumnos de las carreras y los pedidos de libros
que  ellos  realizan.  Para    cubrir  este  requerimiento  se  ha  creado
un conjunto de clases, cuya especificación es la siguiente:

CARRERA
ATRIBUTOS
  nombre: String
  duración: byte
  acreditada: boolean
  registroAlumnos:  HashMap<Alumno>  (considerar  el  RUT  del
alumno como clave primaria (key))

MÉTODOS
  •   Constructor sin parámetros
  •   Constructor  con  parámetros  (que  reciba  todos  los  atributos,  obviando  los  alumnos,  que  deben  ser  ingresados posteriormente)
  •   Accesador para cada atributo
  •   Mutador para cada atributo
  •   Método de impresión
  •   Método  addAlumno  (que  reciba  un  objeto  del  tipo  Alumno  ya inicializado  y  que  valide  la  unicidad  de  registros  mediante un  mensaje  en  caso  de  que  el  alumno  a  ingresar  ya  se encuentre registrado).

ALUMNO

ATRIBUTOS:

RUT: String (máximo 10, los primeros 8 son números, luego el “-” y finalmente un número o una letra)
  tipo:  int  (considerar  uso  de  las  siguientes  constantes
Alumno.ADJUNTO:1,Alumno.REGULAR:2, Alumno.RETIRADO:3)
  ciudad: String
  prestamos: ArrayList<Préstamo>

MÉTODOS:

  •   Constructor sin parámetros
  •   Constructor con parámetros (obviando los préstamos, que deben ser generados posteriormente)
  •   Accesador para cada atributo
  •   Mutador para cada atributo
  •   Método de impresión
  •   Método  addPrestamo,  que  reciba  como  parámetro  un  objeto  del tipo Préstamo ya inicializado.
  •   Método booleano isResponsable, que devuelve true si los tres últimos  préstamos  han  sido  devueltos  en  la  fecha  que corresponde,  false  en  su  defecto,  o  si  no  existen  préstamos registrados.

PRÉSTAMO

ATRIBUTOS:

 fechaPréstamo: date
 fechaDevolución: date (no puede ser inferior a la fecha de
préstamo).
 libro: String
 atrasado: boolean

MÉTODOS:

  •  Constructor sin parámetros
  •  Constructor con parámetros (que reciba todos los atributos, siendo atrasado: false)
  •  Accesador para cada atributo
  •  Mutador para cada atributo, excepto para el caso del atributo atrasado.
  •  Método de impresión
  •  Método devolverLibro() que recibe la fecha efectiva de la devolución y si es mayor a la fecha en la que debía ser devuelto el libro entonces deja el atributo atrasado seteado en true.

Todas  las reglas de negocio deben controlarse con
Excepciones.(Considerar lanzar objetos Exception para el tipo
numérico y para el tipo String por separado, explicando en el
mensaje la regla de negocio no cumplida).

 

Descarga Código de fuente:
http://estebanfuentealba.net/ayudantia/PreparandoCertamen3EjercicioDos.rar

PD: Si quieren Testear El programa aqui les dejo un Main

/**
 * @(#)EjercicioDos.java
 *
 * EjercicioDos application
 *
 * @author Esteban Fuentealba
 * @version 1.00 2009/11/28
 */
import cl.duoc.pef.ejerciciodos.entidades.*;
import cl.duoc.pef.ejerciciodos.exception.*;
import java.util.*;
public class EjercicioDos {

    public static void main(String[] args) {
    	try {
	    	Carrera c = new Carrera("Informatica",(byte)4,true);

	    	Alumno alumnoA = new Alumno("11111111-1",Alumno.REGULAR,"Concepcion");
	    		Prestamo prestamoA = new Prestamo(new Date(2009,6,20),new Date(2009,6,25),"POO Avanzada");
	    		Prestamo prestamoB = new Prestamo(new Date(2009,7,20),new Date(2009,8,25),"Programacion para Principiantes");
	    		Prestamo prestamoC = new Prestamo(new Date(2009,9,20),new Date(2009,9,25),"Como  salir de la Depresión");
	    	alumnoA.addPrestamo(prestamoA);
	    	alumnoA.addPrestamo(prestamoB);
	    	alumnoA.addPrestamo(prestamoC);

	    	Alumno alumnoB = new Alumno("22222222-2",Alumno.ADJUNTO,"Concepcion");
	    		Prestamo prestamoD = new Prestamo(new Date(2009,7,20),new Date(2009,11,25),"Revista caras");
	    	alumnoB.addPrestamo(prestamoD);
	    	Alumno alumnoC = new Alumno("33333333-3",Alumno.REGULAR,"Concepcion");
	    	Alumno alumnoD = new Alumno("44444444-4",Alumno.RETIRADO,"Santiago");

	    	c.addAlumno(alumnoA);
	    	c.addAlumno(alumnoB);
	    	c.addAlumno(alumnoC);
	    	c.addAlumno(alumnoD);

	    	c.imprimir();
	    	prestamoB.devolverLibro(new Date(2010,0,0));
	    	System.out.println("Responsable: "+alumnoA.isResponsable());
    	} catch(NumberException exA) {
    		System.out.println(exA.getMessage());
    	} catch(StringException exB) {
    		System.out.println(exB.getMessage());
    	} catch(Exception exC) {
    		System.out.println(exC.getMessage());
    	}
   	}
}

Saludos!