Está en la página 1de 16

Universidad Nacional de Trujillo Tecnología de la Programación II

Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

COMPONENTES DE LA INTERFAZ GRÁFICA DE USUARIO


Parte IV - Código

Programación en Capas.
La programación por capas es un estilo de programación en el que el objetivo primordial es la separación de la
lógica de negocios de la lógica de diseño; un ejemplo básico de esto consiste en separar la capa de datos de la
capa de presentación al usuario.
Se utiliza este tipo de programación, pues la ventaja principal de este estilo es que el desarrollo se puede llevar a
cabo en varios niveles y, en caso de que sobrevenga algún cambio, sólo se ataca al nivel requerido sin tener que
revisar entre código mezclado.

Caso Planteado:
Se desea administrar los datos de los empleados de una organización. De cada empleado se conoce su código,
fecha de ingreso a la organización, apellidos, nombres y área en la que trabaja.
Además se conoce el número de horas trabajadas por semana, el número de dependientes, el puesto (Jefe de
área, administrativo o auxiliar), la modalidad (estable o contratado) y sus descuentos (AFP, EsSalud, FNP).
Se considera como horas normales trabajadas 40 horas por semana. Por cada dependiente recibe un adicional de
S/.45.00. Si es Jefe de área tiene un pago por hora normal de S/.50, si es Administrativo S/. 30 y si es Auxiliar
S/. 15. Cada hora extra se paga con un 50% adicional sobre la hora normal. Si es estable recibe un adicional del
20% y si es contratado 10%. Si cotiza en la AFP el descuento es del 8%, en el FNP 5% y en EsSalud 3%.

a.- Capa de Presentación: es la que ve el usuario (también se la denomina "capa de usuario"), presenta el
sistema al usuario, le comunica la información y captura la información del usuario en un mínimo de proceso
(realiza un filtrado previo para comprobar que no hay errores de formato). Esta capa se comunica únicamente
con la capa de negocio. También es conocida como interfaz grafica y debe tener la característica de ser
"amigable" (entendible y fácil de usar) para el usuario.

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -1-


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

// Clase: FrmDatos.java
package capaPresentacion;

import java.io.*;
import java.text.*;

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -2-


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

import static javax.swing.JOptionPane.showMessageDialog;


import capaEntidad.*;
import capaNegocio.*;

public class FrmDatos extends javax.swing.JFrame {

public FrmDatos() {
initComponents();
setLocationRelativeTo(null);
}
/** Aqui va el código del método intiComponents. No se ha colocado puesto que
* es generado automáticamente por el IDE.
*/
private void formWindowOpened(java.awt.event.WindowEvent evt) {
try {
txtCodigo.setText(generaCodigo(new EmpleadoBL().getNumeroRegistros()));
} catch(IOException ex) {
showMessageDialog(this, "No se pudo acceder al archivo\n" + ex.getMessage(),
"Aviso", 2);
}
}
private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {
codigoE = null;
try {
if(new EmpleadoBL().listarEmpleadosParaPago().size()>0) {
FrmBuscarEmpleado buscar = new FrmBuscarEmpleado(this, 1);
buscar.setVisible(true);
} else {
showMessageDialog(this,"No existen datos de empleados para pagos","Aviso",2);
activar2(false);
principal.setSelectedIndex(0);
activar(false);
btnNuevo.requestFocus();
}
}catch(IOException ex) {}
}
private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {
try {
int anio = dcbxFecha.getCurrent().get(java.util.Calendar.YEAR);
int mes = dcbxFecha.getCurrent().get(java.util.Calendar.MONTH) + 1;
int dias = dcbxFecha.getCurrent().get(java.util.Calendar.DATE);
String fecha = dias + "/" + mes + "/" + anio;
new EmpleadoBL().setEmpleado(txtCodigo.getText(), fecha, txtApellidos.getText(),
txtNombre.getText(), String.valueOf(cbxArea.getSelectedItem()));
} catch(IOException ex) {
showMessageDialog(this, "No se pudo acceder al archivo\n" + ex.getMessage(),
"Aviso", 2);
}
limpiarCajas();
activar(false);
formWindowOpened(null);
}
private void formWindowActivated(java.awt.event.WindowEvent evt) {
if(principal.getSelectedIndex()== 1) {
txtCodigoE.setText(codigoE);
txtHoras.requestFocus();
} else {
if(principal.getSelectedIndex() == 2 && codigoE != null) {
calcularPagos();
}
}
}
private void calcularPagos() {
DecimalFormat formato = new DecimalFormat("S/ ###,##0.00");
txtCodigoEB.setText(codigoE);

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -3-


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

try {
String datos = new EmpleadoBL().obtenerDatos(codigoE);
txtDatos.setText(datos);
txtHorasNormales.setText(formato.format(new
DatosPagoBL().getPagoHorasNormales(codigoE)));
txtHorasExtras.setText(formato.format(new
DatosPagoBL().getPagoHorasExtras(codigoE)));
txtSueldoBruto.setText(formato.format(new
DatosPagoBL().getSueldoBruto(codigoE)));
txtBonificaciones.setText(formato.format(new
DatosPagoBL().getBonificaciones(codigoE)));
txtDescuentos.setText(formato.format(new DatosPagoBL().getDescuentos(codigoE)));
txtSueldoNeto.setText(formato.format(new DatosPagoBL().getSueldoNeto(codigoE)));
} catch (IOException ex) {
showMessageDialog(this, "No se pudo acceder al archivo", "Error", 0);
}
}
private void btnBuscarEActionPerformed(java.awt.event.ActionEvent evt) {
codigoE = null;
limpiarCajas3();
try {
if(new DatosPagoBL().existenRegistros()) {
FrmBuscarEmpleado buscar = new FrmBuscarEmpleado(this, 2);
buscar.setVisible(true);
} else {
showMessageDialog(this,"No existen datos de pagos de empleados", "Aviso", 2);
principal.setSelectedIndex(1);
activar2(false);
btnNuevoDL.requestFocus();
}
}catch(IOException ex) {}
}
private void btnGuardarDLActionPerformed(java.awt.event.ActionEvent evt) {
int puesto;
float modalidad, afp, essalud, fnp;
if(rbtnJefe.isSelected())
puesto = Puesto.JEFE.getPagoHora();
else
if(rbtnAdmnistrativo.isSelected())
puesto = Puesto.ADMINISTRATIVO.getPagoHora();
else
puesto = Puesto.AUXILIAR.getPagoHora();
if(rbtnContratado.isSelected())
modalidad = Modalidad.CONTRATADO.getBonificacion();
else
modalidad = Modalidad.ESTABLE.getBonificacion();
afp = (chkAfp.isSelected()? Descuento.AFP: Descuento.NINGUNO).getDescuento();
fnp = (chkFnp.isSelected()? Descuento.FNP: Descuento.NINGUNO).getDescuento();
essalud = (chkEsSalud.isSelected()?
Descuento.ESSALUD: Descuento.NINGUNO).getDescuento();
try {
new DatosPagoBL().setDatosPago(txtCodigoE.getText(),
Integer.parseInt(txtHoras.getText()),
Integer.parseInt(txtDependientes.getText()), puesto, modalidad,
afp, essalud, fnp);
} catch(IOException ex) {
showMessageDialog(this, "No se pudo acceder al archivo", "Error", 0);
}
limpiarCajas2();
activar2(false);
}
private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {
activar(true);
}
private void btnNuevoDLActionPerformed(java.awt.event.ActionEvent evt) {
activar2(true);
}
private void btnSalirBPActionPerformed(java.awt.event.ActionEvent evt) {

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -4-


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

System.exit(0);
}
private void btnSalirDLActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void limpiarCajas() {
txtApellidos.setText(null);
txtNombre.setText(null);
cbxArea.setSelectedIndex(0);
}
private void activar(boolean estado) {
dcbxFecha.setEnabled(estado);
txtApellidos.setEnabled(estado);
txtNombre.setEnabled(estado);
cbxArea.setEnabled(estado);
btnGuardar.setEnabled(estado);
btnNuevo.setEnabled(!estado);
txtApellidos.requestFocus();
}
private void limpiarCajas2() {
txtCodigoE.setText(null);
txtHoras.setText(null);
txtDependientes.setText(null);
rbtnJefe.setSelected(true);
rbtnAdmnistrativo.setSelected(false);
rbtnAuxiliar.setSelected(false);
rbtnEstable.setSelected(true);
rbtnContratado.setSelected(false);
chkAfp.setSelected(false);
chkFnp.setSelected(false);
chkEsSalud.setSelected(false);
}
private void activar2(boolean estado) {
txtHoras.setEnabled(estado);
txtDependientes.setEnabled(estado);
rbtnJefe.setEnabled(estado);
rbtnAdmnistrativo.setEnabled(estado);
rbtnAuxiliar.setEnabled(estado);
rbtnEstable.setEnabled(estado);
rbtnContratado.setEnabled(estado);
chkAfp.setEnabled(estado);
chkEsSalud.setEnabled(estado);
chkFnp.setEnabled(estado);
btnBuscar.setEnabled(estado);
btnGuardarDL.setEnabled(estado);
btnNuevoDL.setEnabled(!estado);
}
private void limpiarCajas3() {
txtCodigoEB.setText(null);
txtDatos.setText(null);
txtHorasNormales.setText(null);
txtHorasExtras.setText(null);
txtBonificaciones.setText(null);
txtDescuentos.setText(null);
txtSueldoBruto.setText(null);
txtSueldoNeto.setText(null);
}
private String generaCodigo(int empleados) {
String codigo="";
int numero = String.valueOf(empleados).length();
for(int i=0; i<(5-numero); i++)
codigo += "0";
codigo += (empleados + 1);
return codigo;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -5-


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

new FrmDatos().setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JButton btnBuscar;
private javax.swing.JButton btnBuscarE;
private javax.swing.JButton btnGuardar;
private javax.swing.JButton btnGuardarDL;
private javax.swing.JButton btnNuevo;
private javax.swing.JButton btnNuevoDL;
private javax.swing.JButton btnSalir;
private javax.swing.JButton btnSalirBP;
private javax.swing.JButton btnSalirDL;
private javax.swing.JComboBox cbxArea;
private javax.swing.JCheckBox chkAfp;
private javax.swing.JCheckBox chkEsSalud;
private javax.swing.JCheckBox chkFnp;
private datechooser.beans.DateChooserCombo dcbxFecha;
private javax.swing.ButtonGroup grupoModalidad;
private javax.swing.ButtonGroup grupoPuesto;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel lblApellidos;
private javax.swing.JLabel lblArea;
private javax.swing.JLabel lblBonificaciones;
private javax.swing.JLabel lblCodigo;
private javax.swing.JLabel lblCodigoE;
private javax.swing.JLabel lblCodigoEB;
private javax.swing.JLabel lblDatos;
private javax.swing.JLabel lblDependientes;
private javax.swing.JLabel lblDescuentos;
private javax.swing.JLabel lblFecha;
private javax.swing.JLabel lblHoras;
private javax.swing.JLabel lblHorasExtras;
private javax.swing.JLabel lblHorasNormales;
private javax.swing.JLabel lblNombre;
private javax.swing.JLabel lblSueldoBruto;
private javax.swing.JLabel lblSueldoNeto;
private javax.swing.JPanel panelBoleta;
private javax.swing.JPanel panelDatosL;
private javax.swing.JPanel panelDatosP;
private javax.swing.JPanel panelDescuentos;
private javax.swing.JPanel panelModalidad;
private javax.swing.JPanel panelMontos;
private javax.swing.JPanel panelPago;
private javax.swing.JPanel panelPuesto;
private javax.swing.JTabbedPane principal;
private javax.swing.JRadioButton rbtnAdmnistrativo;
private javax.swing.JRadioButton rbtnAuxiliar;
private javax.swing.JRadioButton rbtnContratado;
private javax.swing.JRadioButton rbtnEstable;
private javax.swing.JRadioButton rbtnJefe;
private javax.swing.JTextField txtApellidos;
private javax.swing.JTextField txtBonificaciones;
private javax.swing.JTextField txtCodigo;
private javax.swing.JTextField txtCodigoE;
private javax.swing.JTextField txtCodigoEB;
private javax.swing.JTextField txtDatos;
private javax.swing.JTextField txtDependientes;
private javax.swing.JTextField txtDescuentos;
private javax.swing.JTextField txtHoras;
private javax.swing.JTextField txtHorasExtras;
private javax.swing.JTextField txtHorasNormales;
private javax.swing.JTextField txtNombre;
private javax.swing.JTextField txtSueldoBruto;
private javax.swing.JTextField txtSueldoNeto;
// End of variables declaration

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -6-


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

public static String codigoE = null;


}

// Clase: FrmBuscarEmpleado.java
package capaPresentacion;

import javax.swing.*;
import java.io.*;
import java.util.*;
import static javax.swing.JOptionPane.showMessageDialog;
import capaEntidad.*;
import capaNegocio.*;
import javax.swing.table.DefaultTableModel;

public class FrmBuscarEmpleado extends javax.swing.JFrame {

public FrmBuscarEmpleado(JFrame parent, int modo) {


initComponents();
setLocationRelativeTo(parent);
this.modo = modo;
llenarTabla();
}
private void llenarTabla() {
ArrayList<Empleado> lista = null;
modelo = new DefaultTableModel();
String cabeceras[] = {"Código", "Apellidos y Nombres"};
modelo.setColumnIdentifiers(cabeceras);
Object fila[] = new Object[cabeceras.length];
try {
switch(modo) {
case 1:
lista = new EmpleadoBL().listarEmpleadosParaPago();
break;
case 2:
lista = new EmpleadoBL().listarDatosEmpleadosParaPago();
break;
}
Iterator iterador = lista.iterator();
while(iterador.hasNext()) {
Empleado empleado = (Empleado)iterador.next();

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -7-


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

fila[0] = empleado.getCodigo();
fila[1] = empleado.getApellidos() + ", " + empleado.getNombre();
modelo.addRow(fila);
}
tblEmpleados.setModel(modelo);
} catch(IOException ex) {
showMessageDialog(this, "No se pudo acceder al archivo\n" + ex.getMessage(),
"Aviso", 2);
}
}
/** Aqui va el código del método initComponents
*/
private void tblEmpleadosMouseClicked(java.awt.event.MouseEvent evt) {
FrmDatos.codigoE =
String.valueOf(tblEmpleados.getValueAt(tblEmpleados.getSelectedRow(), 0));
this.dispose();
}
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblMensaje;
private javax.swing.JTable tblEmpleados;
// End of variables declaration
private DefaultTableModel modelo;
private int modo;
}

b.- Capa de Negocio: es donde residen los programas que reciben las peticiones del usuario y se envían las
respuestas tras el proceso. Se denomina capa de negocio (e incluso de lógica del negocio) porque es aquí donde
se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentación, para
recibir las solicitudes y presentar los resultados, y con la capa de datos, para solicitar al gestor de datos para
almacenar o recuperar datos de él. Puede dividirse esta capa en 2 Módulos: Entidades (clases) y Negocios
(funciones o Lógica).

// Clase: Empleado.java
package capaEntidad;

public class Empleado {


private String codigo;
private String fechaIngreso;
private String apellidos;
private String nombre;
private String area;

public Empleado(String codigo, String fechaIngreso, String apellidos,


String nombre, String area) {
setCodigo(codigo);
setFechaIngreso(fechaIngreso);
setApellidos(apellidos);
setNombre(nombre);
setArea(area);
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getFechaIngreso() {
return fechaIngreso;
}
public void setFechaIngreso(String fechaIngreso) {
this.fechaIngreso = fechaIngreso;
}
public String getApellidos() {
return apellidos;

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -8-


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public int tamaño() {
return (codigo.length() + fechaIngreso.length() + apellidos.length() +
nombre.length() + area.length())*2;
}
}

// tipoEnumerado: Puesto.java
package capaEntidad;

public enum Puesto {


AUXILIAR(15), ADMINISTRATIVO(30), JEFE(50);
private int pagoHora;
Puesto(int pagoHora) {
this.pagoHora = pagoHora;
}
public int getPagoHora() {
return this.pagoHora;
}
}

// tipoEnumerado: Modalidad.java
package capaEntidad;

public enum Modalidad {


CONTRATADO(0.10f), ESTABLE(0.20f);
private float bonificacion;
Modalidad(float bonificacion) {
this.bonificacion = bonificacion;
}
public float getBonificacion() {
return this.bonificacion;
}
}

// tipoEnumerado: Descuento.java
package capaEntidad;

public enum Descuento {


NINGUNO(0.0f), ESSALUD(0.03f), FNP(0.05f), AFP(0.08f);
private float descuento;
Descuento(float descuento) {
this.descuento = descuento;
}
public float getDescuento() {
return this.descuento;
}
}

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -9-


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

// Clase: DatosPago.java
package capaEntidad;

public class DatosPago {


private String codigoEmpleado;
private int horasTrabajadas;
private int numeroDependientes;
private int puesto;
private float modalidad;
private float afp;
private float essalud;
private float fnp;

public DatosPago(String codigoEmpleado, int horasTrabajadas, int numeroDependientes,


int puesto, float modalidad, float afp, float essalud, float fnp) {
setCodigoEmpleado(codigoEmpleado);
setHorasTrabajadas(horasTrabajadas);
setNumeroDependientes(numeroDependientes);
setPuesto(puesto);
setModalidad(modalidad);
setAfp(afp);
setEssalud(essalud);
setFnp(fnp);
}
public String getCodigoEmpleado() {
return codigoEmpleado;
}
public void setCodigoEmpleado(String codigoEmpleado) {
this.codigoEmpleado = codigoEmpleado;
}
public int getHorasTrabajadas() {
return horasTrabajadas;
}
public void setHorasTrabajadas(int horasTrabajadas) {
this.horasTrabajadas = horasTrabajadas;
}
public int getNumeroDependientes() {
return numeroDependientes;
}
public void setNumeroDependientes(int numeroDependientes) {
this.numeroDependientes = numeroDependientes;
}
public int getPuesto() {
return puesto;
}

public void setPuesto(int puesto) {


this.puesto = puesto;
}
public float getModalidad() {
eturn modalidad;
}
public void setModalidad(float modalidad) {
this.modalidad = modalidad;
}

public float getAfp() {


return afp;
}
public void setAfp(float afp) {
this.afp = afp;
}
public float getEssalud() {
return essalud;
}
public void setEssalud(float essalud) {
this.essalud = essalud;

Ing. Zoraida Yanet Vidal Melgarejo, Mg. - 10 -


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

}
public float getFnp() {
return fnp;
}
public void setFnp(float fnp) {
this.fnp = fnp;
}
public int tamaño() {
return codigoEmpleado.length()*2 + 28;
}
}

// Clase: EmpleadoBL.java
package capaNegocio;

import java.io.*;
import capaEntidad.*;
import capaDatos.*;
import java.util.ArrayList;
import static javax.swing.JOptionPane.showMessageDialog;

public class EmpleadoBL {


public void setEmpleado(String codigo, String fechaIngreso, String apellidos,
String nombre, String area) throws IOException {
if(codigo.trim().length()>0 && fechaIngreso.trim().length()>0
&& apellidos.trim().length()>0 && nombre.trim().length()>0
&& area.trim().length()>0) {
Empleado empleado=new Empleado(codigo, fechaIngreso, apellidos, nombre, area);
String mensaje = new EmpleadoDAL().añadirEmpleado(empleado);
if(mensaje.compareTo("ok")==0) {
showMessageDialog(null, "Empleado registrado", "Guardar Empleado", 1);
} else {
showMessageDialog(null, mensaje, "Error", 0);
}
} else {
showMessageDialog(null, "Datos no validos", "Ingreso de datos", 2);
}
}
public int buscarEmpleado(String codigo, int pos) throws IOException {
return new EmpleadoDAL().buscarEmpleado(codigo, pos);
}
public Empleado getEmpleado(int i) throws IOException {
return new EmpleadoDAL().getEmpleado(i);
}
public ArrayList<Empleado> listarEmpleados() throws IOException {
return new EmpleadoDAL().listarEmpleados();
}
public ArrayList<Empleado> listarEmpleadosParaPago() throws IOException {
return new EmpleadoDAL().listarEmpleadosParaPago();
}
public ArrayList<Empleado> listarDatosEmpleadosParaPago() throws IOException {
return new EmpleadoDAL().listarDatosEmpleadosParaPago();
}
public String obtenerDatos(String codigo) throws IOException {
return new EmpleadoDAL().obtenerDatos(codigo);
}
public int getNumeroRegistros() throws IOException {
return new EmpleadoDAL().getNumeroRegistros();
}
public boolean existenRegistros() throws IOException {
return new EmpleadoDAL().existenDatos();
}
}

Ing. Zoraida Yanet Vidal Melgarejo, Mg. - 11 -


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

// Clase: DatosPagoBL.java
package capaNegocio;

import java.io.*;
import capaEntidad.*;
import capaDatos.*;
import java.util.ArrayList;
import static javax.swing.JOptionPane.showMessageDialog;

public class DatosPagoBL {


private final int HORASNORMALES = 40;
private final int PAGOPORDEPENDIENTE = 45;

public void setDatosPago(String codigoEmpleado, int horasTrabajadas,


int numeroDependientes, int puesto, float modalidad, float afp,
float essalud, float fnp) throws IOException {
if(codigoEmpleado.trim().length()>0 && horasTrabajadas>0 && numeroDependientes>=0
&& puesto>0 && modalidad>0.0f && afp>=0.0f && essalud>=0.0f && fnp>=0) {
DatosPago datosPago = new DatosPago(codigoEmpleado, horasTrabajadas,
numeroDependientes, puesto, modalidad, afp, essalud, fnp);
String mensaje = new DatosPagoDAL().añadirDatosPago(datosPago);
if(mensaje.compareTo("ok")==0) {
showMessageDialog(null, "Registro guardado", "Guardar Datos Laborales", 1);
} else {
showMessageDialog(null, mensaje, "Error", 0);
}
} else {
showMessageDialog(null, "Datos no validos", "Ingreso de datos", 2);
}
}
public DatosPago getDatosPago(int i) throws IOException {
return new DatosPagoDAL().getDatosPago(i);
}
public int getPagoHorasNormales(String codigo) throws IOException {
int pos = buscarDatosPago(codigo, 0);
return getDatosPago(pos).getHorasTrabajadas() * getDatosPago(pos).getPuesto();
}
public float getPagoHorasExtras(String codigo) throws IOException {
int pos = buscarDatosPago(codigo, 0);
if(getDatosPago(pos).getHorasTrabajadas() > HORASNORMALES)
return ((getDatosPago(pos).getHorasTrabajadas() - HORASNORMALES) *
getDatosPago(pos).getPuesto()) * 1.5f;
return 0;
}
public float getSueldoBruto(String codigo) throws IOException {
return getPagoHorasNormales(codigo) + getPagoHorasExtras(codigo);
}
public float getBonificaciones(String codigo) throws IOException {
int pos = buscarDatosPago(codigo, 0);
return getDatosPago(pos).getNumeroDependientes() * PAGOPORDEPENDIENTE +
getDatosPago(pos).getModalidad() * getSueldoBruto(codigo);
}
public float getDescuentos(String codigo) throws IOException {
int pos = buscarDatosPago(codigo, 0);
return (getDatosPago(pos).getAfp() + getDatosPago(pos).getEssalud() +
getDatosPago(pos).getFnp()) * getSueldoBruto(codigo);
}
public float getSueldoNeto(String codigo) throws IOException {
return getSueldoBruto(codigo) + getBonificaciones(codigo) - getDescuentos(codigo);
}
public int buscarDatosPago(String codigo, int pos) throws IOException {
return new DatosPagoDAL().buscarPagoEmpleado(codigo, pos);
}
public ArrayList<DatosPago> listarDatosPagos() throws IOException {
return new DatosPagoDAL().listarDatosPagos();
}
public boolean existenRegistros() throws IOException {

Ing. Zoraida Yanet Vidal Melgarejo, Mg. - 12 -


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

return new DatosPagoDAL().existenDatos();


}
}

c.- Capa de Datos: es donde residen los datos y es la encargada de acceder a los mismos. Está formada por uno
o más gestores de archivos de datos que realizan todo el almacenamiento de datos, reciben solicitudes de
almacenamiento o recuperación de información desde la capa de negocio.

// Clase: AccesoAleatorio.java
package capaDatos;

import java.io.*;

public class AccesoAleatorio {


private static RandomAccessFile flujo = null;

public static RandomAccessFile conexionEmpleado() throws IOException {


File archivo = new File("empleado.txt");
if(archivo.exists() && !archivo.isFile())
throw new IOException(archivo.getName() + " no es un archivo");
flujo = new RandomAccessFile(archivo, "rw");
return flujo;
}
public static RandomAccessFile conexionDatosPago() throws IOException {
File archivo = new File("datospago.txt");
if(archivo.exists() && !archivo.isFile())
throw new IOException(archivo.getName() + " no es un archivo");
flujo = new RandomAccessFile(archivo, "rw");
return flujo;
}
}

// Clase: EmpleadoDAL.java
package capaDatos;

import java.io.*;
import java.util.*;
import static javax.swing.JOptionPane.showMessageDialog;
import capaEntidad.*;

public class EmpleadoDAL {


private RandomAccessFile flujo;
private int numeroRegistros;
private int tamañoRegistro = 160;

public EmpleadoDAL() throws IOException {


flujo = AccesoAleatorio.conexionEmpleado();
numeroRegistros = (int)Math.ceil((double)flujo.length() /(double)tamañoRegistro);
}
public void cerrar() throws IOException {
flujo.close();
}
public int getNumeroRegistros() {
return numeroRegistros;
}
public String setEmpleado(int i, Empleado empleado) throws IOException {
String mensaje = null;
if(i>=0 && i<=numeroRegistros) {
if(empleado.tamaño() + 10 > tamañoRegistro) {
mensaje = "Tamaño de registro excedido";
} else {
flujo.seek(i * tamañoRegistro);
flujo.writeUTF(empleado.getCodigo());
flujo.writeUTF(empleado.getFechaIngreso());

Ing. Zoraida Yanet Vidal Melgarejo, Mg. - 13 -


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

flujo.writeUTF(empleado.getApellidos());
flujo.writeUTF(empleado.getNombre());
flujo.writeUTF(empleado.getArea());
mensaje = "ok";
}
} else
mensaje = "Número de registro no válido";
return mensaje;
}
public Empleado getEmpleado(int i) throws IOException {
if(i>=0 && i<=numeroRegistros) {
flujo.seek(i * tamañoRegistro);
String codigo, fechaIngreso, apellidos, nombre, area;
codigo = flujo.readUTF();
fechaIngreso = flujo.readUTF();
apellidos = flujo.readUTF();
nombre = flujo.readUTF();
area = flujo.readUTF();
return new Empleado(codigo, fechaIngreso, apellidos, nombre, area);
} else {
showMessageDialog(null, "Número de registro no válido", "Error", 0);
return null;
}
}
public String añadirEmpleado(Empleado empleado) throws IOException {
String mensaje = "";
mensaje = setEmpleado(numeroRegistros, empleado);
if(mensaje.compareTo("ok") == 0) {
numeroRegistros++;
}
return mensaje;
}
public ArrayList<Empleado> listarEmpleados() throws IOException {
ArrayList<Empleado> empleados = new ArrayList<Empleado>();
for(int i=0; i<getNumeroRegistros(); i++) {
flujo.seek(i * tamañoRegistro);
empleados.add(getEmpleado(i));
}
return empleados;
}
public ArrayList<Empleado> listarEmpleadosParaPago() throws IOException {
ArrayList<Empleado> empleados = new ArrayList<Empleado>();
ArrayList<Empleado> auxiliar = new ArrayList<Empleado>();
empleados = listarEmpleados();
Iterator iterador = empleados.iterator();
while(iterador.hasNext()) {
Empleado empleado = (Empleado)iterador.next();
if(new DatosPagoDAL().buscarPagoEmpleado(empleado.getCodigo(),0) == -1) {
auxiliar.add(empleado);
}
}
return auxiliar;
}
public ArrayList<Empleado> listarDatosEmpleadosParaPago() throws IOException {
ArrayList<Empleado> auxiliar = new ArrayList<Empleado>();
ArrayList<DatosPago> lista = new DatosPagoDAL().listarDatosPagos();
Iterator iterador = lista.iterator();
while(iterador.hasNext()) {
DatosPago datosPago = (DatosPago)iterador.next();
int pos = buscarEmpleado(datosPago.getCodigoEmpleado(), 0);
if(pos != -1) {
Empleado empleado = getEmpleado(pos);
auxiliar.add(empleado);
}
}
return auxiliar;
}
public int buscarEmpleado(String dato, int pos) throws IOException {

Ing. Zoraida Yanet Vidal Melgarejo, Mg. - 14 -


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

String codigo;
if(dato == null)
return -1;
if(pos < 0)
pos = 0;
for(int i=pos; i<getNumeroRegistros(); i++) {
codigo = getEmpleado(i).getCodigo();
if(codigo.indexOf(dato) > -1)
return i;
}
return -1;
}
public String obtenerDatos(String dato) throws IOException {
String datos="";
int pos = buscarEmpleado(dato, 0);
if(pos != -1) {
Empleado empleado = getEmpleado(pos);
datos = empleado.getApellidos() + ", " + empleado.getNombre();
}
return datos;
}
public boolean existenDatos() throws IOException {
if(getNumeroRegistros()==0)
return false;
else
return true;
}
}

// Clase: DatosPagoDAL.java
package capaDatos;

import java.io.*;
import java.util.*;
import static javax.swing.JOptionPane.showMessageDialog;
import capaEntidad.*;

public class DatosPagoDAL {


private RandomAccessFile flujo;
private int numeroRegistros;
private int tamañoRegistro = 50;

public DatosPagoDAL() throws IOException {


flujo = AccesoAleatorio.conexionDatosPago();
numeroRegistros = (int)Math.ceil((double)flujo.length() /(double)tamañoRegistro);
}
public void cerrar() throws IOException {
flujo.close();
}
public int getNumeroRegistros() {
return numeroRegistros;
}
public String setDatosPago(int i, DatosPago datosPago) throws IOException {
String mensaje = null;
if(i>=0 && i<=numeroRegistros) {
if(datosPago.tamaño() + 2 > tamañoRegistro) {
mensaje = "Tamaño de registro excedido";
} else {
flujo.seek(i * tamañoRegistro);
flujo.writeUTF(datosPago.getCodigoEmpleado());
flujo.writeInt(datosPago.getHorasTrabajadas());
flujo.writeInt(datosPago.getNumeroDependientes());
flujo.writeInt(datosPago.getPuesto());
flujo.writeFloat(datosPago.getModalidad());
flujo.writeFloat(datosPago.getAfp());
flujo.writeFloat(datosPago.getEssalud());

Ing. Zoraida Yanet Vidal Melgarejo, Mg. - 15 -


Universidad Nacional de Trujillo Tecnología de la Programación II
Ingeniería de Sistemas Componentes Interfaz Gráfica de Usuario – Parte IV

flujo.writeFloat(datosPago.getFnp());
mensaje = "ok";
}
} else
mensaje = "Número de registro no válido";
return mensaje;
}
public DatosPago getDatosPago(int i) throws IOException {
if(i>=0 && i<=numeroRegistros) {
flujo.seek(i * tamañoRegistro);
String codigoEmpleado;
int horasTrabajadas, numeroDependientes, puesto;
float modalidad, afp, essalud, fnp;
codigoEmpleado = flujo.readUTF();
horasTrabajadas = flujo.readInt();
numeroDependientes = flujo.readInt();
puesto = flujo.readInt();
modalidad = flujo.readFloat();
afp = flujo.readFloat();
essalud = flujo.readFloat();
fnp = flujo.readFloat();
return new DatosPago(codigoEmpleado, horasTrabajadas, numeroDependientes,
puesto, modalidad, afp, essalud, fnp);
} else {
showMessageDialog(null, "Número de registro no válido", "Error", 0);
return null;
}
}
public String añadirDatosPago(DatosPago datosPago) throws IOException {
String mensaje = "";
mensaje = setDatosPago(numeroRegistros, datosPago);
if(mensaje.compareTo("ok") == 0) {
numeroRegistros++;
}
return mensaje;
}
public ArrayList<DatosPago> listarDatosPagos() throws IOException {
ArrayList<DatosPago> pagos = new ArrayList<DatosPago>();
for(int i=0; i<getNumeroRegistros(); i++) {
flujo.seek(i * tamañoRegistro);
pagos.add(getDatosPago(i));
}
return pagos;
}
public int buscarPagoEmpleado(String dato, int pos) throws IOException {
String codigo;
if(dato == null)
return -1;
if(pos < 0)
pos = 0;
for(int i=pos; i<getNumeroRegistros(); i++) {
codigo = getDatosPago(i).getCodigoEmpleado();
if(codigo.indexOf(dato) > -1)
return i;
}
return -1;
}
public boolean existenDatos() throws IOException {
if(getNumeroRegistros()==0)
return false;
else
return true;
}
}

Ing. Zoraida Yanet Vidal Melgarejo, Mg. - 16 -

También podría gustarte