Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

Code Army Bolivia
Mostrando entradas con la etiqueta Proyectos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Proyectos. Mostrar todas las entradas

29/9/13

Multiplicación de matrices con applet

JAN29

Un aporte de un amigo guatemalteco Luis CMurga, nos deja a disposición un proyecto java/netbeans para multiplicar matrices gráficamente utilizando la tecnología de los applets.

Originalmente desarrollado con java 7, funciona perfectamente en java 6 con minúsculas modificaciones, ademas hace uso de la librería AbsoluteLayout, cuenta con dos clases cada una con una manera diferente de introducir los datos.




Dar las gracias por el aporte a:
Autor: Luis CMurga
Facebook: https://www.facebook.com/luis.cmurga

Descargar proyecto AQUI

continue reading

4/7/13

Detecctar y aplicar Look and Feel

JAN29

Un aporte del amigo Cesar Ramos para detectar y aplicar Look and Feel a una aplicación hecha en Netbeans.

"Este proyecto nos permite apreciar las propiedades de lookAndFeel de java, esta clase, aplica cambios en nuestro frame con configuraciones predeterminadas las cules invocamos segun nuestra necesidad"


El proyecto comprende dos clases para detectar y aplicar el look and feel.

Clase main.java

/*
 * esta es la clase principal donde recibimos las clases lookAndFeel de
 * la clase detectorLookAndFeel y los agregamos a un combobox
 * para que se apliquen los cambios cuando hagamos click
 * en el boton btn1 apreciando los cambios
 * de manera inmediata
 */
package look;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class Main{
    String dir;
    JButton btn1;
    JComboBox cmb1;
    JFrame ventana;
    Main(){
        ventana = new JFrame();
        ventana.setTitle("bienvenido");
        ventana.setSize(600, 600);
        ventana.setDefaultCloseOperation(ventana.EXIT_ON_CLOSE);
        ventana.setLayout(new FlowLayout());
        ini();
        ventana.setVisible(true);
    }
    public void ini(){
        componentes();
        ventana.add(btn1);
        ventana.add(cmb1);
    }
    public void componentes(){
        btn1= new JButton("cambiar apariencia");
        btn1.setSize(100, 20);
        DetectorLookAndFeel detec = new DetectorLookAndFeel();
        detec.nombresDeClasesLAF();
        cmb1 = new JComboBox();
        cmb1.setSize(100, 20);
        for(int i=0; i< detec.nombresDeClasesLAF().length; i++){
            cmb1.addItem(detec.nombresDeClasesLAF()[i]);
        }
        agregarEventos();
    }
    public void agregarEventos(){
        btn1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getActionCommand().equals("cambiar apariencia")){
                    try {
                        UIManager.setLookAndFeel(cmb1.getSelectedItem().toString());
                    SwingUtilities.updateComponentTreeUI(ventana);
                    } catch (Exception ex) {
                    }
                }
            }
        });
    }
    public static void main(String[] args){
        Main ok = new Main();
    }
}

Clase DetectorLookAndFeel.java

/*
 * /
 * esta clase es para detectar los looks and feels instalados en nuestro sistema
 */

package look;

import javax.swing.UIManager;

public class DetectorLookAndFeel {
    String[] clases;
    DetectorLookAndFeel()  {
        UIManager.LookAndFeelInfo[] nop;
        nop=UIManager.getInstalledLookAndFeels();
        clases = new String[nop.length];
        int i=0;
        while(i<nop.length){
            System.out.println(nop[i].getClassName().toString());
            clases[i]=(nop[i].getClassName().toString());
            i++;
        }
    }
    public static void main(String[] args){
        DetectorLookAndFeel ok = new DetectorLookAndFeel();
    }
    public String[] nombresDeClasesLAF(){
        return clases;
    }
}

Descargate el archivo AQUI :)

continue reading

4/9/12

Control de Stock en Java y MVC

JAN29


Un SGA "Sistema de Gestión de Almacenes"  es un programa informático destinado a gestionar las entradas y salidas de productos de un almacén, también es el encargado de gestionar todos los movimientos que se llevan a cabo dentro del almacén, maquinaria, trabajadores, etc . Proviene de la traducción del término inglés "WMS" (Warehouse Management System).

Un "control de stock" o "gestión de stock" como se prefiera llamarlo, es un sistema más simple, más reducido que un SGA, y nos sirve para  organizar, planificar y controlar el conjunto de stocks pertenecientes a una empresa.


En esta serie de 5 tutoriales construiremos un sistema de control de stock siguiendo el patrón de diseño MVC (Modelo, Vista y Controlador)



  1. Introducción y construcción de la base de datos
  2. Preparación del proyecto mvc en Netbeans
  3. Construcción de la VISTA
  4. Construcción del MODELO
  5. Construcción del CONTROLADOR


continue reading

25/7/12

Agenda Personal Portable Gratis

JAN29



Completa agenda para organizar tu vida personal y/o profesional, si te olvidas de acontecimientos familiares, citas de trabajo, salir con el/la novi@ o simplemente quieres ir al cine con los amigos, ahora con esta útil herramienta, podras crear y tener a la vista una actividad pendiente en todo momento, ademas de que esta agenda cuenta con una alarma que te informara cada cierto tiempo de que cita tienes cerca. Khipu tambien cuenta con una pequeña agenda de contactos.

Ademas esta agenda es completamente portable por lo que podras llevarla y ejecutarla desde tu memoria USB en cualquier pc que tenga la Maquina Virtual Java. No te preocupes porque esta agenda es fácil de utilizar con interfaz muy intuitiva y en español. ¿Qué más se puede pedir?
  • Requiere: Maquina Virtual Java
  • Portable: Si
  • Ocupa: 6.4 MB
  • Funciona en Sistema Operativo: WinXP/2000/NT/Vista/7
  • Licencia: Freeware
  • Idioma: Español
Más información en la página del autor jc-Mouse

Enlace de descarga directa Khipu Agenda Personal Free Edition

continue reading

11/4/12

Captura de pantalla Java/Robot

JAN29


Este es un pequeño proyecto de un capturador de pantalla escrito en lenguaje java con la ayuda del IDE de Netbeans version 6.9, utilizando la clase Robot de java.


La clase que hace todo el trabajo (de la captura) es la clase capture.java, el código de esta clase es:

package jcapture;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
 * @web http://www.jc-mouse.net
 * @author Mouse
 */
public class Capture {    
   
   private BufferedImage image;   
   private FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivo de Imagen","jpg");
   private JFileChooser fileChooser = new JFileChooser();

   /* CAPTURA LA PANTALLA */
   public void captureScreen(Point p , Dimension screenSize)  {
        try {
            //crea el area de captura
            Rectangle screenRectangle = new Rectangle(p, screenSize);
            Robot robot = new Robot();
            image = robot.createScreenCapture(screenRectangle);            
            Guardar_Foto();
        } catch (Exception ex) {
        }
    }

    private void Guardar_Foto(){
       String file=null;
       fileChooser = new JFileChooser();
       fileChooser.setFileFilter(filter);
       //fileChooser.setCurrentDirectory(new java.io.File("e:/capturas/"));
       int result = fileChooser.showSaveDialog(null);
       if ( result == JFileChooser.APPROVE_OPTION ){
                file = fileChooser.getSelectedFile().toString();
                guardar_imagen(file + ".jpg");
        }
    }

  /* guarda la imagen en disco*/
    private void guardar_imagen(String f){
        try {            
            //se escribe en disco en formato JPG
            ImageIO.write(image, "jpg", new File(f));
            JOptionPane.showMessageDialog(null, "Captura guardada en disco");
 } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "Error: no se pudo guardar la imagen");
 }
   }

}

Un poco de explicación sobre esta clase, cuenta con el método captureScreen el cual recibe dos parámetros de entrada, un Point (origen X,Y)  y Dimension (ancho, alto) que forman un rectangulo imaginario que sirve como parametro para tomar la captura de pantalla, a su vez este metodo hace uso del metodo privado Guardar_Foto(), este método te mostrara una ventana de diálogo "Guardar como..." para que indiques el lugar y el nombre del archivo a guardar y ya para terminar el método "guardar_imagen" que creo que no hace falta indicar para que sirve :)

Bueno, todo esto lo puedes ver en el siguiente video, así queda más claro:




Descargate el proyecto desde el siguiente enlace (jCapture)

continue reading

26/3/12

Proyecto Prestamos con Tojorí

JAN29


Proyecto java de de base de datos "Prestamos" con MySQL programado en Netbeans 6.9 utilizando la libreria "Tojorí 0.2.8"

El proyecto consta de las siguientes interfaz
Para la creación de este proyecto se hizo uso de las siguientes librerias:


  • MySQL Driver JDBC - "mysql-connector-java" Libreria necesaria para la conexion a la base de datos
  • JCDesktopPane - Contenedor utilizado para crea interfaz multidocumento con imagen de fondo
  • J2Button - JButton con imagenes y multilínea
  • Tojori-0.2.8 - Libreria para creación de base de datos


Para que el proyecto pueda ser ejecutado se deben agregar esas librerias a Netbeans.

Descargate el proyecto "DBPrestamos" completo junto a sus instrucciones de instalación

continue reading

9/2/12

Proyecto Java con MVC

JAN29


Proyecto completo Java implementando el patrón MVC (Modelo, Vista y Controlador) con Base de datos MySQL, manejo de reportes (iReport),formularios MDI con imagen de fondo, desarrollado en Netbeans 6.9.

Puedes ver de que trata el proyecto en el siguiente video
 

Quieres saber mas

continue reading

6/2/12

Colocar imagen a jFrame y JPanel facil

JAN29


jcMousePanel-1.6.9 nueva versión de mi componente swing para el trabajo con imagenes en jPanel de una manera facil sencilla sin escribir codigo fuente extra en las aplicaciones que desarrollemos en netbeans, viene con muchas mejoras y más opciones de personalización.

Puedes agregar una imagen de fondo y ademas otra imagen la cual podras mover  según tus necesidades
Con esta nueva actualización puedes personalizar el efecto de degradado
Transparencias en imagenes y degradado
Mosaico de imagenes
¿QUIERES SABER MÁS?
Quieres saber mas

continue reading

22/7/11

JMF: Captura de video con filtros

JAN29


Dando respuesta a la pregunta de un seguidor del blog, ahora aprenderemos la creacion/implementacion de un proyecto en Java Media Framework  para la captura-filtrado del video de una webcam.

Si se tiene alguna duda en seguir los pasos del tutorial, ya sabes que en el blog/web existe bastante informacion sobre el uso dela libreria de JMF.

¿Que necesitamos?

  • La Libreria de Java Media Framework
  • IDE netbeans
  • Webcam

¿Que obtendremos?

 Quieres saber mas

continue reading

29/5/11

Esteganografia LSB en Java - [Proyecto Completo]

JAN29

Mensajes ocultos utilizando el método de Inserción en el bit menos significativo
(Least Significant Bit Insertion)
El método de Inserción en el Bits Menos Significativo, llamado también método de Sustitución,  consiste en reemplazar el Bits menos significativo de los pixeles de una imagen digital  por otro Bits del mensaje que se quiere ocultar.
¿Cuál es el Bits menos significativo?
El Bits menos significativo o LSB (Abreviatura en ingles) de un numero binario, es el bits que se encuentra al extremo derecho de este

¿Y qué es un pixel?
Un píxel o pixel es la menor unidad homogénea en color que forma parte de una imagen digital, ya sea esta una fotografía, un fotograma de vídeo o un gráfico.

Dicho de otra forma, si se aplica zoom a una imagen digital, se podrá observar que está formada por varios puntos (cuadrados) de colores, esta sucesión de pixeles en forma de una matriz es lo que conocemos como imagen, cada uno de estos pixeles está formado por 3 bytes cada uno de estos almacena un color primario Rojo, Verde, Azul (RGB en ingles) y la variación entre ellas forman los distintos colores que podemos ver en pantalla.

¿Y cómo funciona el método de sustitución?
Si quisieramos esconder la letra A=01000001 que  esta formado por 8 bits, dentro la imagen de abajo, necesitarios utilizar 3 pixeles de la imagen, cada pixel tiene 3 bytes para cada color RGB

Primero debemos extraer los 3 primeros pixeles de la fotografía

Y aplicamos la sustitución LSB de cada número binario por cada bit del carácter “A” (nuestro mensaje)

Como se observa se ha sustituido cada bits LSB (recuadro rojo) por cada bits del carácter “A” formando nuevos valores para los colores RGB, estos nuevos colores no cambian mucho con respecto al original y así no pueden ser distinguidos por el ojo humano, pasando inadvertidos.

Se utilizaron 8 bits LSB en total, uno por cada bit del mensaje, los que no se utilizan, se dejan como están.

Para este método de sustitución LSB puede emplearse cualquier formato de imagen fuente (*.JPG, *.PNG, *.BMP) pero este debe ser guardado en formato *.BMP (destino), esto porque los otros formatos tienden a perder información con la compresión, BMP no tiene compresión por eso son más grandes, este método además tiene la ventaja de no alterar el tamaño de la imagen. El tamaño del mensaje que se desee ocultar, dependerá del tamaño de la imagen, se utiliza un promedio de 3 pixeles por carácter lo que en una imagen de 200x200 pixeles nos da para almacenar 13000 caracteres, suficientes creo para guardar mucha información.


Proyecto completo: Codigo Fuente, Tutorial, Demo, Aplicación portable + Bonus
Click para descargar

¿Bonus?
Si, como me gusta fomentar la investigación, dejo en un rar una sopresa (solo para entendidos), esta con contraseña, asi que el que quiera la "llave" ya sabe donde buscar

continue reading

2/5/11

Tu foto en una portada

JAN29

Aprovechando el feriado del primero de mayo y como tambien se vino una helada que no dan ganas de salir ni a la puerta :( me entretuve haciendo una pagina web modificando un proyecto  "TU PORTADA"que ya tenia hecho hace tiempo en un servidor gratuito con muchas limitaciones, pero ahora, estrenando un dominio propio y para testear como anda este nuevo hosting (30 dias de garantia) le hice algunas modificaciones mas de forma que de fondo.
Trate de simplificar el uso de imagenes (el costo por byte es muy caro en mi pais), ademas utilice la maquetacion por el sistema 960 Grid System para apresurar las cosas, lenguaje PHP y JavaScript, dando como resultando una web sencilla de rapido cargado 
No podia falta un video

VISITEN ESTA PAGINA

La dirección es: http://www.tuportada.jc-mouse.net/

continue reading

24/4/11

Factura en Java (Proyecto Completo)

JAN29


Tiempo atras me pidieron un ejemplo de como realizar un reporte con iReport tipo factura, recibo o como le llamen, complicado no es y se resumen en una consulta a la base de datos para luego mostrar este en un reporte previamente formateado, pues bien me hubiera gustado realizar un tutorial paso a paso de como hacer eso, pero "el tiempo" no perdona asi que mejor alternativa que dejarles el codigo fuente de ejemplo para que el que este interesado, explore este y le saque provecho.

¿Que necesitamos?
  • Un IDE, Netbeans 6.9
  • Un gestor de base de datos MySql
  • La libreria necesaria para conectar Mysql con Java (mysql-connector-java-5.1.6-bin - ultima versión a la fecha)
  • Las librerias necesarias para iReport (Añadidas en el RAR al final)
  • JasperReport para realizar el modelado de la Factura
  • Ganas, muchas Ganas!!!
La base de datos.

Como dije hay diferentes formas de realizar una base de datos sobre ventas, y por lo general en una aplicación comercial, estas cuentan con varias tablas y campos, para el ejemplo, utilizaremos una base de datos muy básica, consta de 4 tablas (CLIENTES,FACTURA,PRODUCTO, DETALLE)

Con esta BD tenemos lo necesario para simular una venta de un producto "X" a un cliente "Y" previamente registrado el cual se almacenara en la tabla FACTURA, ademas los diferentes productos que formen parte de la venta, se almacenaran en la tabla DETALLE.
En a la Tabla Factura, podemos ver un campo Vendedor, este campo por lo general cuenta con su propia tabla y sus propios datos, para fines de este ejemplo lo dejamos solamente como un campo.
Repito, esta es una forma, en otras BD la tabla Factura y  Detalle no existe, y los datos de esta son extraidos de varias tablas que forman la base de datos, todo depende de quien diseñe la BD.

Tambien en esta ejemplo podremos ver el trabajo mediante la programacion por "Capas", esto quiere decir que se separa la interfaz de la logica del programa, la clase encargada de realizar la comunicacion entre la interfaz y los datos se llama "Control",
Como algunos recibos muestran el total de la transaccion en numero y en literal, podemos ver una clase Numero_a_Letra.java,  la cual realiza dicha conversion. La clase conectate.java encargada de la conexion MySql con Java, la clase Sql.java, en donde se realizan todas las consultas a la base de datos, la clase iFactura, la encargada de mostrar la factura la cual hace uso de los archivos .Jasper y .jrxml.

Aqui podemos ver la aplicacion en funcionamiento


El enlace de descarga
[Actualizado -2013-  Todo tranquilo y sereno :/ ] 
Click para descargar
Las instrucciones estan adentro

preguntas, dudas, correciones, bugs, etc todas por favor con el mayor irrespeto posible ;)

continue reading

12/2/11

Procesamiento de Imágenes en Java2d (Los Colores)

JAN29

Un archivo de imagen está compuesto dependiendo de las dimensiones de este archivo, en cientos y miles de pixeles, un pixel es un punto de color que varían en su tonalidad de un pixel a otro, creando así la imagen digital.

Si se realiza un zoom a una imagen cualquiera, puede verse como este esta pixelado

Un pixel está compuesto por los colores básicos RGB en sus siglas en ingles (Red, Green, Blue) en español, ROJO, VERDE, AZUL, estos tres colores básicos combinados en diferentes valores (0 a 255) forman una amplia gama de tonalidades los cuales combinados forman la imagen. Entonces una imagen no es más que una matriz de dos dimensiones de tamaño mXn donde cada elemento de la matriz M(i,j) es un pixel.


JAVA2D
Como cada pixel contiene valores RGB, Java2d nos permite manipular estos valores cargando una imagen en memoria, utilizando la clase BufferedImage,  para poder manipular  los archivos de imagen, esta clase cuenta con varios métodos. Entre ellos tenemos:
  • imagen.getRGB(x,y);
  • imagen.setRGB(x,y,Color_RGB);
El primero no permite obtener el valor RGB de un pixel, dadas sus coordenadas (X,Y) dentro de la matriz.
El segundo método, nos permite asignar un nuevo valor RGB a un pixel, dados sus coordenadas RGB dentro de la mtriz.
Entonces, para poder cambiar los colores de una imagen, solamente debemos obtener sus valores RGB y reemplazarlos por unos nuevos, esto se logra recorriendo toda la matriz pixel por pixel y cambiando sus valores RGB.

Este proceso no es complicado, además no es muy interesante, en cambio si es más interesante, seleccionar un solo color y con este color como referencia, reemplazar todos los pixeles que se encuentren con valores iguales o similares por otro color. Más o menos lo que se realiza con el programa Photoshop, utilizando la varita mágica se selecciona un rango de pixeles y con la herramienta bote de pintura, se reemplaza por otro color.

En la imagen podemos ver todo ese proceso, además, photoshop dado un parámetro de “Tolerancia” (0-255) selecciona no solo el pixel del color donde se hizo un clic, sino todas las tonalidades de ese color, osea, según el parámetro de tolerancia, a mayor tolerancia mayor será el área seleccionada.

¿Cómo logramos esto en Java2d?
Se cargara una imagen en memoria utilizando la clase BufferedImage.

De esta imagen se extrae un pixel al azar con valores RGB (187,13, 14) en una posición (x,y)


Esta imagen forma una matriz mxn donde cada celda es un pixel


[rgb] [rgb] [rgb] [rgb] [rgb] [rgb]
[rgb] [rgb] [rgb] [rgb] [rgb] [rgb]
[rgb] [rgb] [rgb] [rgb] [rgb] [rgb]
[rgb] [rgb] [rgb] [rgb] [rgb] [rgb]


Para cambiar un color de toda la matriz (imagen), se debe recorrer esta mediante ciclos buscando los pixeles que sean iguales al color buscado, y reemplazarlo por otro color. El seudocódigo que hace esto es:
Este seudocódigo, tiene un problema, y es que aunque el ojo humano no pueda percibirlo, un color que para nosotros  puede ser igual, este está compuesto por varias tonalidades, asi es que cuando seleccionamos un color RGB (187,13, 14), la comparación se realiza solo para este color.
Esto hace que el área afectada por el cambio de color sea relativamente pequeña y dependa de la uniformidad de colores de la imagen.
Para solucionar este problema, se introduce un nuevo término, “Tolerancia” y su valor va de 0 a 255, este valor nos ayuda a determinar un rango de matices que se aproximen a nuestro color RGB
Para determinar qué valores ingresan en el rango de “tolerancia”, se utiliza la “distancia euclidiana” cuya fórmula es:

Este valor (d) es la distancia que existe entre dos puntos en el espacio, mientras más corta sea el valor de (d), más pequeña es la distancia entre dos puntos, esto también se aplica a los colores.
Mientras más pequeña sea el valor de (d) los colores son más similares entre si, modificamos el seudocódigo y queda de la siguiente forma:

Abrimos photoshop y utilizamos la herramienta “varita mágica” para seleccionar un color, podemos ver como con distintos valores de tolerancia, seleccionamos más y más aéreas de la imagen.
Aplicando nuestro seudocódigo en java y ya con la aplicación lista, procedemos a seleccionar un color de la imagen y la reemplazamos por otra, los resultados son similares.
 Es lógico que Photoshop utiliza algoritmos mucho más complejos e inteligentes para aplicar sus filtros, por ejemplo, photoshop selecciona solos los colores similares que estén cerca del punto donde se hizo un clic, en cambio, el código que nosotros aplicamos es simple y selecciona todos las tonalidades del color elegido estén donde estén, esto se aprecia mejor en la tercera imagen de ayanami donde aplicamos tolerancia 100, se puede ver como se selecciono el fondo de la imagen, pero también parte del ojo y del cuello que también son de color rojo, se seleccionaron también.


Enlace de descarga del Proyecto
[actualizado]
Click para descargar

continue reading

30/1/11

Base de Datos Access+Java "Control de Notas" (Proyecto Completo)

JAN29

Como regalo de año nuevo (aunque muy tarde) dejo a disposicion de la comunidad de programadores un proyecto Access+Java para su estudio y critica (critica constructiva claro) el cual consiste en una programa para el registro de Alumnos, registro de Asignaturas, Matriculacion del aAumno en una asignatura y su posterior control y registro de Notas del semestre.

La base de datos elegida es Access 2007 (*.accdb), pero claro la migracion hacia otra base de datos como MySQL o Postgress no es cosa del otro mundo, el trabajo solo consiste en modificar algunas instrucciones SQL que se encuentran en el codigo, mas propiamente en la clase SQL.java.

El programa:

El programa hace uso de una interfaz tipo formulario MDI, (Multiplie Document Interface) y de la libreria Substance para aplicar un skin a la interfaz, asi tambien para aplicar imagenes de fondo a los objetos JPanel, se hace uso de mi componente jcMousePanel.jar, estas librerias deben estar instaladas y configuradas en el IDE para poder ejecutar el codigo fuente correctamente. Tambien se utiliza el componente de Netbeans JFormattedTextField, componente que nos permite añadir una mascara de entrada (texto formateado) para ingresar correctamente los codigos (Carnet Univesitario, Codigo Asignatura) desde la interfaz.

La base de datos consta de tres tablas:
La interfaz cuenta con 4 formularios del tipo JInternalFrame:

JInternalFrame : Registro de Alumnos

JInternalFrame : Registro de Asignaturas
JInternalFrame : Matriculacion de Alumnos en Asignaturas
Para maticular a un alumno, se debe elegir  el codigo de la asigantura, el carnet del universitario y la gestion del curso, (01/11 = primer semestre del año 2011)

 JInternalFrame : Registro de Notas
 La logica es muy simple, cada examen vale 100 puntos pero se ponderan por el 50% , entonces la nota final sera la suma ponderada del examen 1 y el examen 2, notas menores a 51 (nota minima de aprobacion), aparecen en color ROJO (reprobaron), notas mayores o iguales a 51 y menores a 71 de color Amarillo, (Aprobaron), notas mayores o iguales a 71 de color Verde (unos NERD o llunkus de los docentes) pasaron con las mejores notas (pero aprendieron algo??????).

Demo

Enlace de Descarga
Click para descargar


Esta en un archivo RAR, sin password, contiene el codigo fuente en Netbeans 6.0, las librerias necesarias, la base de datos en Access 2007 y la aplicacion terminada.
Nivel: Intermedio - Avanzado
EL codigo esta bastante comentado, alguna duda pues pregunten.

continue reading

Post recomendado