viernes, 29 de mayo de 2009

Solución a evaluación de BD

import java.sql.*;
import javax.swing.*;


public class SolucionBD{

public static void main(String[] args) {
try{

JTextArea areasalida = new JTextArea();
String salida="Solución a la evaluación del tema B\n",nombreMenor ="";
String db="D:\\mariu\\Cursos\\Java\\EvaluacionEugenia.mdb";
String url="jdbc:odbc:MS Access Database;DBQ="+db;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
JOptionPane.showMessageDialog(null,"Estableciendo conexión.....");
Connection con=DriverManager.getConnection(url,"","");
JOptionPane.showMessageDialog(null,"conexion establecida con:\""+db+"\".");
Statement select = con.createStatement();
ResultSet datos=select.executeQuery("SELECT * FROM Tabla1 ORDER BY id");
int nom = datos.findColumn("Nombre");
int ape = datos.findColumn("Apellido");
int ed= datos.findColumn("Edad");
int deu = datos.findColumn("Deuda");
int edadUsuario,deudaUsuario,deudaTotalMenores = 0,deudaTotalMayores = 0,nMayores=0,menorDeuda=0,nUsuarios=0;
boolean seguir = datos.next();
while(seguir)
{
nUsuarios ++;
edadUsuario = Integer.parseInt(datos.getString(ed));
deudaUsuario = Integer.parseInt(datos.getString(deu));
if (edadUsuario<=17)
{
deudaTotalMenores += deudaUsuario;
}
else
{
nMayores ++;
deudaTotalMayores += deudaUsuario;
}
if(nUsuarios == 1)
{
menorDeuda = deudaUsuario;
}
else
{
if(menorDeuda > deudaUsuario)
{
menorDeuda = deudaUsuario;
nombreMenor = datos.getString (nom);
}
}
seguir=datos.next();
}
salida += "\nLa deuda total de los menores de edad es:\t" + deudaTotalMenores;
salida += "\nLa deuda promedio de los mayores de edad es: " + (deudaTotalMayores/nMayores);
salida += "\nEl usuario con la menor deuda es: " + nombreMenor + " y debe " + menorDeuda;
areasalida.setText(salida);
JOptionPane.showMessageDialog(null,areasalida);
datos.close();
select.close();
con.close();
JOptionPane.showMessageDialog(null,"\nconexion con:\""+db+"\"finalizada.\n\n");
}
catch(Exception error)
{
JOptionPane.showMessageDialog (null,"\nError al realizar alguna accion del programa\n" + error.getMessage ());
}
}
}

domingo, 17 de mayo de 2009

Solución a evaluación de gráficos en JAVA

Soluciones correctas, presentadas por estudiantes durante la evaluación:

  • Primer punto, (Jairo Vélez y Alejandro Rúiz):

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class uno extends JFrame implements ActionListener
{
private JTextField cajaCol;
private JButton miColor1, miColor2;
private String c;
public uno()
{
super("Colores");
Container c = getContentPane();
c.setLayout(new GridLayout(3, 2));
c.add(new JLabel("Color 1"));
miColor1 = new JButton ("Azul");
c.add(miColor1);
miColor1.addActionListener(this);
c.add(new JLabel("Color 2"));
miColor2 = new JButton ("Negro");
c.add(miColor2);
miColor2.addActionListener(this);
c.add(new JLabel("Seleccion"));
cajaCol = new JTextField();
c.add(cajaCol);
setSize(475, 100);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String argumento = e.getActionCommand();
if (argumento == "Azul")
{
c = "Azul";
cajaCol.setText(String.valueOf(c));
}
else
{
c = "Negro";
cajaCol.setText(String.valueOf(c));
}
}
public static void main(String[] args)
{
uno ME = new uno();
ME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}


  • Primer punto, (Juan Esteban Morales y José Manuel Rendón):

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

public class Botones extends JFrame

implements ActionListener
{
private JTextField micolor;

public Botones()
{
super("Escoger Colores");
Container contenedor = getContentPane();
contenedor.setLayout(new GridLayout(3,3));

contenedor.add(new JLabel("Boton 1"));
JButton miboton = new JButton("Rojo");
contenedor.add(miboton);
miboton.addActionListener(this);

contenedor.add(new JLabel("Boton 2"));
JButton miboton1 = new JButton("Negro");
contenedor.add(miboton1);
miboton1.addActionListener(this);

contenedor.add(new JLabel("Seleccion"));
micolor = new JTextField();
contenedor.add(micolor);


setSize(200,300);
setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
String argumento = e.getActionCommand();

if (argumento.equals("Rojo"))

micolor.setText(String.valueOf("Rojo"));

else //(argumento.equals("Negro"))

micolor.setText(String.valueOf("Negro"));


}

public static void main (String [] args)
{
Botones aplicacion = new Botones();
aplicacion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}



  • Segundo punto, (Jairo Vélez y Alejandro Rúiz):

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class dos
{
public static void main(String[] args) {
JFrame frame = new JFrame();
Container cp = frame.getContentPane();
cp.setLayout (new FlowLayout());
ActionListener escuchador = new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
if (e.getActionCommand() == "Verde")
{
JOptionPane.showMessageDialog(null, "Rey de copas");
}
else
{
JOptionPane.showMessageDialog(null, "El poderoso");
}
};
};

ButtonGroup group = new ButtonGroup();
String[] sa = {"Verde","Rojo"};
for (int i=0; i<=sa.length-1;++i)
{
JRadioButton b= new JRadioButton (sa [i]);
group.add(b);
cp.add(b);
b.addActionListener(escuchador);
}
frame.pack ();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}



  • Segundo punto, (Juan Esteban Morales y José Manuel Rendón):

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

class RadioBoton
{
public static void main(String [] args)
{
JFrame frame = new JFrame();
Container contenedor = frame.getContentPane();
contenedor.setLayout(new FlowLayout());

ActionListener listener = new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
String a = e.getActionCommand();
if (a.equals("Nacional"))
JOptionPane.showMessageDialog(null,"Rey de Copas");
else
JOptionPane.showMessageDialog(null,"El Poderoso");
}
};

ButtonGroup grupo = new ButtonGroup();
String[] sa = {"Nacional","Medellin"};

for(int i=0; i<=sa.length-1; i++)
{
JRadioButton b = new JRadioButton(sa[i]);
grupo.add(b);
contenedor.add(b);
b.addActionListener(listener);
}
frame.setSize(300,60);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

martes, 12 de mayo de 2009

Algunos ejemplos de aplicaciones gráficas en JAVA

Páginas sugeridas:



Descargar los 4 ejemplos (en JAVA), con la imagen:




EjemploBoton.java
import javax.swing.*;
public class EjemploBoton{
public static void main(String[] args){
JFrame miMarco = new JFrame();
JButton miBoton = new JButton("hola");

miMarco.getContentPane().add(miBoton);
miMarco.pack();
miMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
miMarco.setVisible(true);
}
}
/*En la línea 5 se crea el botón
*en la línea 11 el botón es agregado al contenido del JFrame miMarco
*el método pack() hace que el tamaño del marco se ajuste al tamaño de los controles que contiene*/


BotonConImagen
import javax.swing.*;
import java.awt.*;
public class BotonConImagen extends JFrame{
public static void main(String[] args){
new BotonConImagen();
}
public BotonConImagen(){
super("Ejemplo de botones con imágenes y con texto");
Container contenedor = getContentPane(); // crea el contenedor
contenedor.setBackground(Color.blue);//color de fondo del contenedor
contenedor.setLayout(new FlowLayout());//crear un "flujo de controles"
JButton boton1 = new JButton("Hola");//crear un botón con texto
contenedor.add(boton1);//adicionar el botón al contenedor

//crear un ícono llamado mami, y dar su ubicación:
ImageIcon mami = new ImageIcon("D:/mariu/Cursos/IUSH/JAVA/mami.gif");
JButton boton2 = new JButton(mami);//crear un botón con imagen
contenedor.add(boton2);

JButton boton3 = new JButton("Retrato hablado", mami);//crear un botón con imagen y texto
contenedor.add(boton3);

pack();
setVisible(true);

}
}



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

public class EjemploRadioButton extends JFrame{
public static void main(String[] args){
ActionListener escuchador = new ActionListener(){
public void actionPerformed(ActionEvent evento){
JOptionPane.showMessageDialog(null,evento.getActionCommand());
}
};

Box caja = new Box(BoxLayout.Y_AXIS);
ButtonGroup grupoBotones = new ButtonGroup();
String[] frutas = {"granadilla","mandarina","melón","piña"};

for (int i=0; i<=frutas.length-1;i++){
JRadioButton opciones = new JRadioButton(frutas[i]);
grupoBotones.add(opciones);
caja.add(opciones);
opciones.addActionListener(escuchador);
}//fin del for

JFrame miMarco = new JFrame("Frutas tropicales");
miMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
miMarco.getContentPane().add(caja);
miMarco.pack();
miMarco.setVisible(true);
}
}


EjemploJCheckBox
import java.awt.Container;
import java.awt.event.*;
import javax.swing.*;
public class EjemploJCheckBox{
public static void main(String[] args){
JFrame miMarco = new JFrame();
miMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contenedor = miMarco.getContentPane();
Box caja = new Box(BoxLayout.Y_AXIS);
contenedor.add(caja);
caja.add(new JLabel("Seleccione un deporte..."));

String[] deportes = {"Béisbol","Natación", "Taekwondo"};
JCheckBox[] casillas = new JCheckBox[deportes.length];

for(int i=0; i<= deportes.length-1;i++){
casillas[i] = new JCheckBox(deportes[i]);
caja.add(casillas[i]);
casillas[i].addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent eventoClic){
JCheckBox controlCasilla = (JCheckBox)eventoClic.getSource();
if(controlCasilla.isSelected())
JOptionPane.showMessageDialog(null,controlCasilla.getText() + " Seleccionado");
else
JOptionPane.showMessageDialog(null,controlCasilla.getText() + " Des_Seleccionado");
}
});
}
miMarco.pack();
miMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
miMarco.setVisible(true);
}
}

miércoles, 18 de marzo de 2009

TALLER SOBRE OBJETOS

1. Cree una clase llamada Empleado, en la que existan los recursos necesarios para efectuar las siguientes acciones:
• Obtener el número de horas trabajadas por el empleado
• Obtener el valor de cada hora trabajada por el empleado
• Obtener el valor de la comisión del empleado
• Calcular y Entregar el pago total del empleado
• Obtener/Entregar el nombre del empleado (En C# esto es una propiedad)
Restricciones de implementación:
• Asuma que si el empleado trabajó más de 48 horas, las horas extra se le cancelan con un porcentaje del 50% adicional al valor de la hora normal.
• No deben existir valores negativos en los argumentos de llamada a los elementos de la clase.
• Se debe permitir al usuario decidir en qué momento desea terminar de ejecutar la aplicación.
Cree una clase llamada PruebaEmpleado que utilice la clase Empleado

2. Cree una clase llamada Poligonos, en la que existan los recursos necesarios para efectuar las siguientes acciones:
• Obtener el valor del lado de un cuadrado
• Obtener el valor del los dos lados diferentes de un rectángulo
• Obtener los dos valores (base y altura) de un triángulo
• Calcular y Entregar el área de un cuadrado
• Calcular y Entregar el área de un rectángulo
• Calcular y Entregar el área de un triángulo
Restricciones de implementación:
• No deben existir valores negativos en los argumentos de llamada a los elementos de la clase.
• Se debe permitir al usuario decidir en qué momento desea terminar de ejecutar la aplicación.
Cree una clase llamada PruebaFiguras que utilice la clase Poligonos

lunes, 16 de marzo de 2009

Soluciones propuestas en JAVA a evaluación 2

Enunciado 1
Dado un arreglo unidimensional de tamaño N, encuentre la moda. Es decir, el valor que se presenta más número de veces entre sus elementos. Imprima el vector y el valor que más se repite.

import javax.swing.*;
public class modaVectorial{
public static void main(String args[]){
String tamaño,dato,salidaV="Vector\n",repetido = "\nNúmero que más se repite ",veces = "\nNúmero de veces que se repite ";
int magnitud,valor,repetidoA,veces_repetidoA,repetidoB,veces_repetidoB,i,p,k=2,iguales=0;
JTextArea areaSalida = new JTextArea();
tamaño = JOptionPane.showInputDialog("Ingrese el tamaño del vector");
magnitud = Integer.parseInt(tamaño);
int A[] = new int[magnitud];

for(i=0;i<=magnitud-1;i++){//Llenar el vector con datos proporcionados por el usuario
dato = JOptionPane.showInputDialog("Ingrese el valor para la posición" + (i+1));
valor = Integer.parseInt(dato);
A[i] = valor;
salidaV += valor + ", ";
}
p=0;
repetidoA = A[p];//Asume que el primer valor del vector es el que está repetido
veces_repetidoA = 1;
for(i=1;i<=magnitud-1;i++){//Busca y cuenta las veces que se encuentra repetido el elemento de la posición 1
if(repetidoA == A[i]){
veces_repetidoA ++;
}
}
p=1;

while(p<=magnitud-1){//Se asegura de no desbordarse del vector

repetidoB = A[p];//Asume que el primer valor del vector es el que está repetido
veces_repetidoB = 1;
for(i=p+1;i<=magnitud-1;i++){//Busca y cuenta las veces que se encuentra repetido el elemento de las demás posiciones
if(repetidoB == A[i]){
veces_repetidoB ++;
}
}
if(veces_repetidoA < veces_repetidoB){
repetidoA = repetidoB;
veces_repetidoA = veces_repetidoB;
iguales = 0;
}
else if(veces_repetidoA == veces_repetidoB){
iguales = 1;
}
p++;
}

if (veces_repetidoA == 1 || iguales != 0){
//JOptionPane.showMessageDialog(null,"ningún número se repite más que los demás\n" + );
areaSalida.setText(salidaV);
areaSalida.append("\nningún número se repite más que los demás");
JOptionPane.showMessageDialog(null,areaSalida);

}
else{
repetido += repetidoA;
veces += veces_repetidoA;
areaSalida.setText(salidaV);
areaSalida.append(repetido);
areaSalida.append(veces);

JOptionPane.showMessageDialog(null,areaSalida);
}

}
}


Enunciado 2
Elabore una aplicación que forme una matriz de orden NxM y la llene de datos enteros, (toda esta información la proporciona el usuario), a continuación obtenga e imprima:
a. Suma de cada fila impar
b. Número de valores iguales a cero


import javax.swing.*;
public class sumaFilasImpares{
public static void main(String args[]){
String M,N,dato,matrizA = "Matriz A\n",vectorB = "Suma de cada fila impar:\n",igualesCero = "\nCantidad de ceros\n";
int filas,columnas,valor,i,j,valoresCero = 0;
M = JOptionPane.showInputDialog(null,"Ingrese el número de filas");
N = JOptionPane.showInputDialog(null,"Ingrese el número de columnas");
filas = Integer.parseInt(M);
columnas = Integer.parseInt(N);
int A[][] = new int [filas][columnas];
int B[] = new int[filas];
for(i=0;i<=filas-1;i++){
for(j=0;j<=columnas-1;j++){
dato = JOptionPane.showInputDialog(null,"Ingrese el valor para la posición [" + (i+1) + "]" + "[" + (j+1) + "]");
valor = Integer.parseInt(dato);
A[i][j]= valor;//Llenar la matriz
if(i%2 != 0){//Comprobar si la fila actual es impar
B[i] += valor;
}
if(valor == 0){//Comprobar si el valor actual es 0
valoresCero ++;
}
matrizA += valor + "\t";
}
matrizA += "\n";
vectorB += "[" + i + "] " + B[i] + "\n";
}
igualesCero += valoresCero;
JTextArea areaSalida = new JTextArea();
areaSalida.setText(matrizA);
areaSalida.append(vectorB);
areaSalida.append(igualesCero);
JOptionPane.showMessageDialog(null,areaSalida);
}
}


Enunciado 3
Hacer una aplicación que forme un vector del que no se sabe el número de elementos (el tamaño y los datos los indica el usuario). Calcule el promedio de todos los elementos y forme dos nuevos arreglos, uno con los elementos menores o iguales al promedio y otro con los superiores. Imprima los dos nuevos arreglos

import javax.swing.*;
public class vectorPromedio{
public static void main(String args[]){
String tamaño,dato,Original="Vector original:\n",Vpromedio="\n\nValor promedio:",Vmenores = "\n\nVector con los datos menores o iguales al promedio:\n",Vmayores = "\n\nVector con los datos mayores al promedio:\n";
int magnitud,valor,i,suma=0,p=0,q=0;
double promedio;
tamaño = JOptionPane.showInputDialog("Ingrese el tamaño del vector");
magnitud = Integer.parseInt(tamaño);
int V[] = new int[magnitud];
//como no conocemos cuántos serán mayores o menores, se declaran 2 vectores de tamaño magnitud
double menores[] = new double[magnitud];
double superiores[] = new double[magnitud];
for(i=0;i<=magnitud-1;i++){
dato = JOptionPane.showInputDialog("Ingrese valor para la posición " + "[" + i + "]");
valor = Integer.parseInt(dato);
V[i] = valor;
suma += valor;
Original += valor + "\t";//Ingresar cada dato al String de salida (para imprimir)
}
promedio = suma/magnitud;
Vpromedio += promedio + "\n";
for(i=0;i<=magnitud-1;i++){
if(V[i] <= promedio){ //evalúa cada valor de V y lo compara con elpromedio, si es menor o igual, va llenando menores[]
menores[p] = V[i];
Vmenores += V[i] + "\t";//Ingresar cada dato al String de salida (para imprimir)
p++;
}
else{//si el valor de V no es menor que el promedio, entonces lo lleva a superiores[]
superiores[q] = V[i];
Vmayores += V[i] + "\t";//Ingresar cada dato al String de salida (para imprimir)
q++;
}
}
JTextArea areaSalida = new JTextArea();
areaSalida.setText(Original);
areaSalida.append(Vpromedio);
areaSalida.append(Vmenores);
areaSalida.append(Vmayores);
JOptionPane.showMessageDialog(null,areaSalida);
}
}


Enunciado 4
Utilice el operador módulo (%) en una aplicación que entre un arreglo unidimensional, y calcule e imprima:
El número de valores impares
El número de valores pares


import javax.swing.*;
public class ParesImpares{
public static void main(String [] args){
String tamaño, dato;
int magnitud,valor,pares=0,impares=0,i;
tamaño = JOptionPane.showInputDialog("Digite el tamaño del vector");
magnitud = Integer.parseInt(tamaño);
int V[] = new int [magnitud];
for(i=0;i<=magnitud-1;i++){
dato = JOptionPane.showInputDialog("Digite el valor para la posición [" + i + "]" );
valor = Integer.parseInt(dato);
V[i]=valor;
if(valor % 2 != 0){
impares ++;
}
else{
pares ++;
}
}
JOptionPane.showMessageDialog(null,"Cantidad de pares:" + pares + "\nCantidad de impares: " + impares);
}
}


Enunciado 5
Elabore una aplicación que forme una matriz de orden NxM y la llene de datos enteros, (toda esta información la proporciona el usuario), luego encuentre el elemento mayor y el menor, así como sus posiciones. En caso de haber datos repetidos, se toma el primer dato que encuentre.

import javax.swing.*;
public class MayorMenor{
public static void main(String args[]){
String f,c,dato;
int filas, columnas, valor, mayor=0, menor=0, i,j,fMayor = 0,cMayor = 0,fMenor = 0,cMenor = 0;
f=JOptionPane.showInputDialog("Digite el número de filas para la matriz");
c=JOptionPane.showInputDialog("Digite el número de columnas para la matriz");
filas = Integer.parseInt(f);
columnas = Integer.parseInt(c);
int A[][] = new int [filas][columnas];
for(i=0;i <= filas-1;i++){
for(j=0;j <= columnas-1; j++){
dato = JOptionPane.showInputDialog("Digite el dato para la posición [" + i + "][" + j + "]");
valor = Integer.parseInt(dato);
A[i][j] = valor;
if(i==0 && j==0){ //A las variables mayor y menor les asignamos el primer valor de la matriz
mayor = A[i][j];
menor = A[i][j];
}
else{//Iniciamos la comparación de mayor y menor con cada dato de la matriz
if(A[i][j] > mayor){
mayor = A[i][j];
fMayor = i;
cMayor = j;
}
else if(A[i][j] < menor){
menor = A[i][j];
fMenor = i;
cMenor = j;
}
}
}
}
JOptionPane.showMessageDialog(null,"El mayor valor es : " + mayor + " que está ubicado en la posición [" + fMayor
+ "][" + cMayor + "]" + "\nEl menor valor es : " + menor + " que está ubicado en la posición [" + fMenor
+ "][" + cMenor + "]" );
}
}

Enunciado 6
Elabore una aplicación que convierta una matriz 3x4 (llena), en un arreglo unidimensional. La conversión debe hacerse por columnas, es decir, mover la primera columna al vector, a continuación la segunda columna y así sucesivamente. Imprima ambos arreglos.

import javax.swing.*;
public class MueveColumnas{
public static void main(String args[]){
int A[][] = {{2,5,6,4},{7,8,9,3},{1,3,2,0}};
int V[] = new int[12];
int filas,columnas,k=0;
String matriz = "Matriz A:\n", vector = "Vector V:\n";
for (columnas = 0; columnas <= 3; columnas ++){
for (filas = 0; filas <= 2; filas ++){
V[k] = A[filas][columnas];
vector += A[filas][columnas]+ "\t";

}
}
for (filas = 0; filas <= 2; filas ++){
for (columnas = 0; columnas <= 3; columnas ++){
matriz += A[filas][columnas] + "\t";
}
matriz += "\n";
}

JTextArea areaSalida = new JTextArea();
areaSalida.setText(matriz);
areaSalida.append(vector);
JOptionPane.showMessageDialog(null,areaSalida);
}
}