pantallas y clases

33
DOCUMENTACIÓN DEL REGISTRO DEL PERSONAL DE EMPRESA La siguiente aplicación esta construida en el lenguaje de programación JAVA y la base de datos en MYSQL, hemos escogido JAVA debido a que es un lenguaje de programación muy potente, además consta de la característica de ser multiplataformas y de encontrar mucha documentación para la elaboración de cualquier aplicación, y hemos escogido la base de datos MYSQL debido a su facil instalación y utilización, además de ser codigo libre. Esta aplicación resolverá el problema del registro manual del personal de cualquier empresa que allá utilizado esta solución. Se lo resolverá al problema con un software que lleve un registro de la asistencia del personal de una forma sencilla y fácil de entender al usuario, y además le ocupe el menos tiempo posible. La pantalla principal sera la de acceso directo al empleado para su respectivo registro de entrada como de la salida. Este

Upload: javier-ignacio-rojas-cares

Post on 13-Sep-2015

18 views

Category:

Documents


0 download

DESCRIPTION

java

TRANSCRIPT

DOCUMENTACIN DEL REGISTRO DEL PERSONAL DE EMPRESA

La siguiente aplicacin esta construida en el lenguaje de programacin JAVA y la base de datos en MYSQL, hemos escogido JAVA debido a que es un lenguaje de programacin muy potente, adems consta de la caracterstica de ser multiplataformas y de encontrar mucha documentacin para la elaboracin de cualquier aplicacin, y hemos escogido la base de datos MYSQL debido a su facil instalacin y utilizacin, adems de ser codigo libre.

Esta aplicacin resolver el problema del registro manual del personal de cualquier empresa que all utilizado esta solucin. Se lo resolver al problema con un software que lleve un registro de la asistencia del personal de una forma sencilla y fcil de entender al usuario, y adems le ocupe el menos tiempo posible.

La pantalla principal sera la de acceso directo al empleado para su respectivo registro de entrada como de la salida.

Este software consta de un men llamado Archivos el cual tiene un acceso a la ventana de Administracin y uno de salida. Adems consta de una barra de acceso directo a la mismas opciones y un reloj para su propio control.

Al hacer click en el icono para la ventana de administracin

nos aparece la anterior ventana para autentificar que somos el administrador de este software con lo cual nos registramos como administrador, accediendo o negando el usuario. Una vez autentificado el usuario tenemos acceso a la ventana de administracin.

En esta ventana de administracin tenemos tambin un men llamado archivo y una barra de acceso directo a las mismas opciones del men, las opciones son listar, registrar y eliminar . En esta ventana de administracin hemos creado y un panel interno en el cual se van abrir dentro de este todas estas opciones de ventanas ya dichas lo cual ara mas fcil de llevar el manejo de estas.

Al hacer clic en la el icono de acceso directo listar

nos aparece la anterior ventana metida dentro del panel de administracin esta contendr un listado de los empleados y para obtener informacin sobre su asistencia hacemos clic sobre cualquier nombre que queramos aparecindonos mas informacin detallada de todas sus asistencias dentro del a misma venta de listar.

A continuacin se presenta la ventana para registrar un nuevo empleado la cual tambin va ha estar en un un panel interno dentro de la ventana de administracin esta podr hacer accedido mediante el men, registrar o mediante su acceso directo

Acontinuacion se presenta la ventana

En esta ventana se va ingresar los datos personales del empleado, para guardarlos en la base de datos de MYSQL

La ventana siguiente es la ventana de Eliminar empleado la cual proceder a eliminar cualquier empleado mediante su numero de cdula, podemos acceder a esta ventana mediante men, eliminar o mediante su icono de acceso directo en la barra de tareas

La siguiente es la ventana de informe cual puede ser imprimida esta presenta el informe ingresando los datos de cdula, mes y ao del pago correspondiente al mes que se va ha cancelar

Ventanas administracin con ventanas internas.

DOCUMENTACIN DE TODAS LAS CLASES APLICADAS

Para desarrollar esta aplicacin la primera clase que cree fue la clases de la conexin a la base de datos de MYSQL para lo cual me descargue de internet la librera que controla la conexin a MYSQL.

Para su mayor facilidad he creado un paquete en donde solo pondr las clases que voy ha utilizar y aparte las clases que implementan interfaz grfica, adems de un paquete para todas las imgenes que se utilice.

La Clase Conexion

/*La primera linea importa la librera sql para trabajar con MYSQL y sus respectivas sentencias

La clase Conexion que se la va a utilizar por defecto la cual contiene las siguientes variables que seran estaticas y de tipo string bd que contiene el nombre de la base de datos para la conexion a esta, la variable del mismo tipo login que contiene el login con el cual la clase Conexion va ha tener acceso a mysql, la variable password del mismo tipo que va contener la clave de acceso a mysql y por ultimo la variable url por la cual mysql va ha escuchar las peticiones a esta y que va ha ser del mismo tipo de las anteriores

la varialble url especifica que es una conexin a la base de datos de mysql por la direccin o ip 127.0.0.1 la cual es igual al localhost y que va ha escuchar las peticiones por el puerto 3306*/

import java.sql.*;

public class Conexion {

static String bd = "resgistro_del_personal_empresarial";

static String login = "root";

static String password = "creedyeli1234";

static String url = "jdbc:mysql://127.0.0.1:3306/"+bd;

Connection conn = null; /** Crea una nueva instancia del Conexin */

/* En el constructor de la clase Conexion carga los drivers y se hace la conexin y se hace pone un capturador de posibles errores o ecepciones y la imprime en consola*/

public Conexion(){

try{

//obtenemos el driver de para mysql

Class.forName("com.mysql.jdbc.Driver");

//obtenemos la conexin

conn = DriverManager.getConnection(url,login,password);

if (conn!=null){

System.out.println("Coneccin a base de datos "+bd+" OK");

}else

System.out.println("Error onectando a la base de datos "+bd);

}catch(SQLException e){

System.out.println(e);

}catch(ClassNotFoundException e){

System.out.println(e);

}

}

/* El mtodo getConexion devuelve un objeto Connection que especifica que se ha conectado*/

public Connection getConexion(){

return conn;

}

/* este mtodo desconecta la conexin que se ha hecho a la base de datos*/

public void desconectar(){

conn = null;

System.out.println("Desconectado");

}

/* Este es un metodo que sirve de prueba para la clase Conexion */

public static void main(String args[]){

Conexion conec=new Conexion();

}

}

La Clase ConecAdmin

/*En esta clase importamos la librera sql con todas sus clases para trabajar tambien con la base de datos*/

import java.sql.*;

/*Esta clase va ha conectarse a la base de datos y a la stabla que contiene los usuarios y contraseas de administracin. En esta clase creamos un objeto de tipo Conexion el cual hace la conexion a la base de datos */

public class ConecAdmin {

Conexion conec;

/** Creamos el contructor de la clase ConecAdmin la cual inicializa la conexin*/

public ConecAdmin() {

conec = new Conexion();

}

/* Este mtodo retorna si los datos de usuario y contraseas fueron correctos y estn almacenados en la tabla administradores, esto lo hace mediante la devolucin de una variable booleana

En este mtodo resive 2 variables de tipo String la cuales contiene el usuario y el password ha comparar con la de la tabla de administrador para ser autentificado*/

public boolean comparacion(String usuario, String passw){

boolean aceptacion=false;

try{

/*crea una variable Statement que con la variable de tipo conexion van a permitir hacer las consultas ha la tabla*/

Statement stm = conec.getConexion().createStatement();

/*con esta sentencia extrae los datos de todos los campos de la tabla administradores y luego los extrae en una variable de tipo metadatos llamada resultado, con la cual se va ha obtener los datos que necesitamos para comparar el ingreso del administrador*/

ResultSet resultado=stm.executeQuery("SELECT * FROM administradores");

ResultSetMetaData metaDatos= resultado.getMetaData();

//Con este while recorremos la tabla fila por fila la cual cada fila es un usuario administrador

while(resultado.next()){

//la variable i indica el campo en la tabla de meta datos

int i=2;

/*imprimimos en consola que datos estamos sacando para estar seguros, y los datos que saquemos que deben ser el usuario y el password los almacenamos en unas variables de tipo String usuabd y passwbd la cual

System.out.println(resultado.getString(i)+resultado.getString(i+1));

String usuabd=resultado.getString(i);

String passwbd=resultado.getString(i+1);

/*En este if comparamos si existe una coincidencia con algn usuario administrador si es la autenticacin de usuario fue correcta, cambiamos la variable aceptacin por verdadero y terminamos la busqueda y retornamos el valor */

if(usuabd.equals(usuario)&& passwbd.equals(passw)){

aceptacion=true;

break;

}else{

aceptacion=false;

}

}

}catch(SQLException e){

System.out.println(e);

}

if(aceptacion==true){

System.out.println("estan bien las contraseas");

}else{

System.out.println("estan mal las contraseas");

}

return aceptacion;

}

//Este es un metodo de prueba de la clase

public static void main(String args[]){

ConecAdmin nuevo=new ConecAdmin();

boolean ver=false;

ver=nuevo.comparacion("admin","admin");

}

public void desconectar(){

conec.desconectar();

}

}

La Clase NuevoEmpleado

// Importamos las libreras de java que contiene las clases para tratarse con las base de datos

import java.sql.*;

/*Esta clase crea en la tabla de empleados un nuevo empleado, el cual tiene la informacin de este la cual consiste en nombre, apellido, cdula, sexo, correo, direccin, area y horas que va ha ser por defecto de inicializacin cero, y todos de tipo private*/

/* Adems creamos un objeto de tipo Conexion para la conexin a la base de datos

public class NuevoEmpleado {

private String nombre;

private String apellido;

private int cedula;

private String horas="0:0:0";

private String sexo;

private String correo;

private String direccion;

private String area;

Conexion conec;

/** Creamos el constructor de la clase la cual recibe los datos que se van ha ingresar en la tabla de empleados, pero antes los guardamos en las variables globales */

public NuevoEmpleado(String nombre, String apellido, int cedula, String sexo, String correo, String direccion, String area ) {

this.nombre=nombre;

this.apellido=apellido;

this.cedula=cedula;

this.correo=correo;

this.area=area;

this.sexo=sexo;

this.direccion=direccion;

conec = new Conexion();

insertarEnTabla();

}

/*Este mtodo inserta en la tabla los datos de las variables globales declarados en la clase de acuerdo al orden de la sentencia sql

public void insertarEnTabla(){

try{

//boolean aceptacion=false;

Statement stm = conec.getConexion().createStatement();

stm.executeUpdate("INSERT INTO empleados (nombres, apellidos, area, cedula, email, sexo, direccion, horas) VALUES ('"+ this.nombre+ "','" +this.apellido+ "','" +this.area+ "','" +this.cedula+ "','" +this.correo+ "','" +this.sexo+ "','" +this.direccion+ "','" +this.horas+ "' )");

}catch(SQLException e){

System.out.println(e);

}

}

}

La Clase Eliminar

// Importamos las libreras de java que contiene las clases para tratarse con las base de datos

import java.sql.*;

/*La clase Eliminar hace eso elimina el empleado de la tabla empleados mediante el numero de cdula. */

/*Esta clase tiene una variable global cdula la cual va ha almacenar la cdula para luego ser comparada con los datos del campos cdula de tabla empleado si es igual a alguno de los datos de ese campo lo elimina. Con la sentencia sql comparamos y eliminamos* /

public class Eliminar {

private String cedula;

Conexion conec;

/** Creates a new instance of Eliminar */

public Eliminar(String cedula) {

this.cedula=cedula;

conec = new Conexion();

try{

//boolean aceptacion=false;

Statement stm = conec.getConexion().createStatement();

stm.executeUpdate("DELETE FROM empleados WHERE cedula="+this.cedula);

}catch(SQLException e){

System.out.println(e);

}

}

}

La Clase Ingreso

/*Esta clase va ha permitir que un empleado registre tanto su hora de ingreso, digitando su numero de cdula para este propsito, captura la hora del sistema en el momento del registro y la guarda en la tabla de registro*/

import java.sql.*;

import javax.swing.JOptionPane;

public class Ingreso {

int id;

String cedula;

int hora;

String fecha;

int minuto;

int segundo;

String entrada;

String salida="0:0:0", total="0:0:0";

Conexion conec= new Conexion();

/** Crea una nueva instancia de Ingreso */

public Ingreso(String cedula, int hora, int minuto, int segundo, String fecha) {

this.cedula=cedula;

this.hora=hora;

this.minuto=minuto;

this.segundo=segundo;

this.entrada=hora+":"+minuto+":"+segundo;

this.fecha=fecha;

if(comprobarEmpleado()==true){

insertarEnTabla();

}else{

JOptionPane.showMessageDialog(null, "Se quiere registrar un intruso","Alerta",1);

}

}

//Este es el metodo en el que insertamos en la tabla registro

public void insertarEnTabla(){

try{

//boolean aceptacion=false;

Statement stm = conec.getConexion().createStatement();

stm.executeUpdate("INSERT INTO registro VALUES ('"+this.id+" ','"+this.cedula+"','"+this.fecha+"','"+this.entrada+"','"+this.salida+"','"+this.total+"')");

}catch(SQLException e){

System.out.println(e);

}

}

//En este metodo comprobamos que el usuario este en la tabla de empleados, mediante el numero de //cedula, si consta procede a insertar

public boolean comprobarEmpleado(){

boolean aceptacion=false;

try{

//boolean aceptacion=false;

Statement stm = conec.getConexion().createStatement();

ResultSet resultado=stm.executeQuery("SELECT * FROM empleados");

//StringBuffer resultados=new StringBuffer();

ResultSetMetaData metaDatos= resultado.getMetaData();

//int numerodecolumnas = metaDatos.getColumnCount();

while(resultado.next()){

int i=4;

System.out.println(resultado.getString(i));

String cedulabd=resultado.getString(i);

//String passwbd=resultado.getString(i+1);

if(cedulabd.equals(this.cedula)){

aceptacion=true;

break;

}else{

aceptacion=false;

}

}

}catch(SQLException e){

System.out.println(e);

}

return aceptacion;

}

}

La Clase Salida

/*En esta clase procedemos a ingresar el numero de cedula para comprobar la salida del empleado*/

import java.sql.*;

public class Salida {

double Ttotal2;

double Ttotal;

String cedula;

private int hora;

String fecha;

private int minuto;

private int segundo;

String entrada;

private String salida;

String total;

String compara = "00:00:00";

Conexion conec;

Calculo_ingreso_horas_total totalhoras;

public Salida(String cedula, int hora, int minuto, int segundo, String fecha) {

this.cedula = cedula;

this.hora = hora;

this.minuto = minuto;

this.segundo = segundo;

this.salida = hora + ":" + minuto + ":" + segundo;

this.fecha = fecha;

conec = new Conexion();

if (sacaDatos() == true) {

totalhoras=new Calculo_ingreso_horas_total(this.entrada, this.hora, this.minuto, this.segundo);

this.total=totalhoras.subtotal();

actualizar();

}

}

/*Este metodo verifica que la cedula sea la correcta, y el campo salida este vacio dentro de la tabla registro, pasa al metodo actualizar*/

public boolean sacaDatos() {

boolean aceptacion = false;

try {

Statement stm = conec.getConexion().createStatement();

ResultSet resultado = stm.executeQuery("SELECT * FROM registro");

while (resultado.next()) {

int i = 2;

String cedulabd = resultado.getString(i);

String salidabd = resultado.getString(i + 3);

if (cedulabd.equals(this.cedula)&& salidabd.equals(this.compara)) {

aceptacion = true;

this.entrada = resultado.getString(i + 2);

break;

} else {

aceptacion = false;

}

}

} catch (SQLException e) {

System.out.println(e);

}

return aceptacion;

}

/* En este metodo, se actualiza los datos del ultimo registro de un empleado y ademas en la tabla empleados hace que se sume las nuevas horas ingresadas, al total del tiempo acumulado en el campo total de la tabla empleados */

public void actualizar() {

try {

Statement stm = conec.getConexion().createStatement();

stm.executeUpdate("UPDATE registro SET salida='"+this.salida+"', total='"+this.total+"' WHERE salida='"+this.compara+"' AND cedula='"+this.cedula+"'");

ResultSet resultado = stm.executeQuery("SELECT * FROM empleados");

while (resultado.next()) {

int i = 4;

String cedulabd = resultado.getString(i);

System.out.println(cedulabd);

if (cedulabd.equals(this.cedula)) {

Ttotal2=Integer.parseInt(resultado.getString(8));

System.out.println(Ttotal2);

break;

}

}

this.Ttotal= totalhoras.horas() + Ttotal2;

System.out.println(Ttotal+" "+Ttotal2);

stm.executeUpdate("UPDATE empleados SET horas='"+this.Ttotal+"' WHERE cedula='"+this.cedula+"'");

} catch (SQLException e) {

System.out.println(e);

}

}

}

La Clase Ingreso_horas_total

/*En esta clase, se hace el calculo de las horas, minutos y segundos que necesita la clase salida, y ademas transforma ese tiempo a horas */

public class Calculo_ingreso_horas_total {

int Thoras,Tminutos,Tsegundos,ME,SE,HE,aux;

String subtotal;

/*Este metodo extrae recibe un String de las horas de entrada y recibe los demas datos de la hora de salida como enteros, y los suma para calcular el numero de horas, minutos y segundos que realizo en es entrada y salida*/

public Calculo_ingreso_horas_total(String entrada,int hora,int minuto,int segundo){

HE=Integer.parseInt(entrada.substring(0,2));

ME=Integer.parseInt(entrada.substring(3,5));

SE=Integer.parseInt(entrada.substring(6,8));

System.out.println(HE+":"+ME+":"+SE);

System.out.println(hora+":"+minuto+":"+segundo);

if(segundo60){

min-=60;

hras++;

}

String tfhras=hras+":"+min+":"+seg;

return tfhras;

}

/*Este mtodo devuelve una variable double de formato hora*/

public double getTotalHoras(){

double tot;

tot= (double)hras+((double)min/60)+((double)seg/3600);

return tot;

}

La Clase Impresora

/*importamos las librerias de para el tipo de fuente, y las librerias para impresin*/

import java.awt.*;

/*En esta clase vamos a poner todos los datos en un objeto tipo Graphics para que dibuje la impresora y mediante un objeto PrintJob enviarle a imprimir el trabajo.

public class Impresora

{

Font fuente = new Font("Dialog", Font.PLAIN, 10);

PrintJob pj;

Graphics pagina;

/*A continuacin el constructor de la clase. Aqu lo nico que hago es tomar un objeto de impresin.*/

public Impresora()

{

pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "SCAT", null);

}

/* A continuacin el mtodo "imprimir(String)", el encargado de colocar en el objeto grfico la cadena que se le pasa como parmetro y se imprime.*/

public void imprimir(String Cadena)

{

/*LO COLOCO EN UN try/catch PORQUE PUEDEN CANCELAR LA IMPRESION*/

try

{

pagina = pj.getGraphics();

pagina.setFont(fuente);

pagina.setColor(Color.black);

pagina.drawString(Cadena, 60, 60);

pagina.dispose();

pj.end();

}catch(Exception e)

{

System.out.println("LA IMPRESION HA SIDO CANCELADA...");

}

}

//FIN DEL PROCEDIMIENTO imprimir(String...)

}//FIN DE LA CLASE Impresora