proyecto 2 parcial empleados ulisesgarciaramos

28
1 28-12-2014 REPORTE DE PRÁCTICA Alumno: Ulises García Ramos Grupo: 512 Informática Materia: Paradigmas de programación II Profe: M. en C. José Francisco Delgado Orta Archivos aleatorios

Upload: arcangel-ugr

Post on 07-Dec-2015

213 views

Category:

Documents


1 download

DESCRIPTION

Proyecto realizado en la universidad del mar, campus puerto escondido, oaxaca.

TRANSCRIPT

1

28-12-2014

REPORTE DE PRÁCTICA Alumno: Ulises García Ramos

Grupo: 512 Informática

Materia: Paradigmas de programación II

Profe: M. en C. José Francisco Delgado

Orta

Archivos aleatorios

2

Índice de contenidos

Contenido Archivos aleatorios ............................................................................................................................ 1

Índice de contenidos .......................................................................................................................... 2

2. Análisis del problema ..................................................................................................................... 4

2.1 Objetos identificados en el problema ...................................................................................... 4

3. Implementación .............................................................................................................................. 2

3.1 Diagrama de clases ................................................................................................................... 2

4. Implementación en el Lenguaje JAVA. .......................................................................................... 2

4.1 Pruebas ................................................................................................................................... 17

5. Bibliografía .................................................................................................................................... 25

Índice de Figuras Figura 1 Definicion de objetos ............................................................................................................ 4

Figura 2 Diseño de la solucion ............................................................................................................. 5

Índice de ilustraciones

Ilustración 1 Diagrama de clases para la jerarquia de empleados ...................................................... 2

Ilustración 2 El acceso al compilador puede variar dependiendo del S.O. ....................................... 17

Ilustración 3 clic en ok ....................................................................................................................... 18

Ilustración 4 Procederemos a abrir nuestro proyecto ................................................................ …….18

Ilustración 5 Compilar y ejecutar………………………………………………………………………………………………….19

Ilustración 6 Interfaz de la aplicación……………………………………………………………………………………………19

Ilustración 7 Inicializando el archivo. ……………………………………………………………………………………………20

Ilustración 8 Archivo Inicializado ………………………………………………………………………………………………….20

Ilustración 9 Registrando un tipo de empleado. …………………………………………………………………………..21

Ilustración 10 La función hash nos mostrará la posición en donde se guardara el registro……………21

Ilustración 11 Insertaremos el identificador del usuario a buscar…………………………………………………22

Ilustración 12 posición hash en donde el registro se guardó. ………………………………………………………22

Ilustración 13 botones de navegación: estos botones permiten ver los registros que se encuentran

almacenados en el archivo. ………………………………………………………………………………………………………….23

Ilustración 14 una vez que el archivo se encuentre lleno, se deshabilitaran todos los campos a

excepción de tipo de cuenta. ……………………………………………………………….……………………………………..23

Ilustración 15 campos deshabilitados……………………………………………………………………………………………24

3

INTRODUCCION

Los archivos de acceso aleatorio permiten acceso no secuencial, o aleatorio, a los contenidos de un archivo.

La clase java.io.RandomAccessFile implementa tanto las interfaces DataInput y DataOutput y por eso puede usarse tanto para leer y escribir. RandomAccessFile es similar a FileInputStream y FileOutputStream en que el usuario especifica un archivo en el sistema de archivos nativo para abrir cuando lo crea. Cuando crea un RandomAccessFile, debe indicar si solo leerá el archivo o también escribirá a este. (Tiene que ser capaz de leer un archivo a fin de escribirlo.) El siguiente código crea un RandomAccessFile para leer el archivo llamado Empleado.txt:

new RandomAccessFile("Empleado.txt", "r");

Y este abre el mismo archivo tanto para leer y escribir:

new RandomAccessFile("Empleado.txt", "rw");

Campo Contenido Tamaño

Nombre Empleado 20 caracteres 40 bytes

Apellidos Empleado 15 caracteres 30 bytes

NSS Empleado 10 caracteres 20 bytes

Salario Empleado 10 caracteres 20 bytes

Ventas Empleado 6 caracteres 12 bytes

Tarifa Empleado 6 caracteres 12 bytes

Horas Empleado 2 int 8 bytes

Total= 142 bytes

A continuación se detallara un problema para poner en práctica lo explicado anteriormente.

Registrar un empleado de cualquier tipo y realizar las operaciones básicas del software.

4

2. Análisis del problema

2.1 Objetos identificados en el problema

Figura 1 Definición de objetos.

2

3. Implementación

Figura 2 Diseño de la solución.

3.1 Diagrama de clases

Ilustración 1 Diagrama de clases para la jerarquia de empleados.

4. Implementación en el Lenguaje JAVA. La aplicación fue desarrollada utilizando el JDK (Java Developement Kit) versión 1.7, distribución 03, utilizando la aplicación Eclipse versión 4.2.2 para la captura del código fuente. Los requerimientos mínimos para el funcionamiento adecuado de la aplicación son:

3

Sistema operativo Microsoft Windows xp sp2 o superior

Computadora personal o portátil con 512 MB en RAM y 100 MB de disco duro.

JDK versión 1.7 distribución 3 instalado en el equipo La aplicación está organizada en clases que se define a continuación:

que contiene la interfaz de la aplicación.

y escritura para un archivo.

OperacionesArchivoAleatorio.java contiene la longuitud en bytes para el manejo de

archivo.

El programa fue probado en una pc con las siguientes características.

Windows 7 ultímate x 64 sp1

Procesador Intel Pentium cpu b2940 @ 2.0 ghz (2 cpus)

4 Gb ram DDR3

Disco Duro 320 Gb

Antes de iniciar con la prueba del ejercicio, se muestra el código fuente del programa.

Nota: Tener cuidado al copiar el código fuente ya que por error se puede copiar el

número de página y por ende marcaría un error de sintaxis al momento de compilar.

/////////////////////////////////////////////////////////////////////////////////////////////////////

////// Código fuente GUI EMPLEADOS

////////////ULISES GARCIA RAMOS

/////////////INFORMATICA 412

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.Window;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

4

import java.io.FileNotFoundException;

import java.io.IOException;

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JComboBox;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.border.TitledBorder;

import javax.swing.filechooser.FileNameExtensionFilter;

public class GUIEmpleados extends JFrame implements ActionListener {

JFileChooser selector;

EmpleadoBaseMasComision empleado;

CreacionArchivosAleatorios archivos;

String ruta;

OperacionesArchivoAleatorio ugr;

int indice;

int contar=1;

int disminuye=1;

JTextField

identificador,campoSueldo,campoHoras,campoSalarioBase,campoVentasBrutas,campoTarifaComi

sion;

JLabel

lblIdentificador,lblTipoCuenta,lblSueldo,lblHoras,lblSalarioBase,lblVentasBrutas,lblTarifaComisio

n;

JLabel lblNumRegistro, lblNombre, lblApellido, lblNSS, lblSalario;

JTextField campoNumRegistro, campoNombreEmpleado, campoApellidoEmpleado,

campoNSS, campoSalario;

JButton aplicar,botonAbrir, botonGuardar, botonBuscar, botonAnterior, botonSiguiente,

botonNuevo, botonBorrar;

JTextArea contenidoArchivo;

JPanel panelEntradas,panelComandos,panelContenidoArchivo;

Container contenedor;

JTextField tipoCuenta;

5

GUIEmpleados()

{

super("Interfaz de control de nómina de empleados");

contenedor = this.getContentPane();

contenedor.setLayout(new FlowLayout());

panelEntradas = new JPanel();

lblTipoCuenta = new JLabel("Seleccione Tipo");

//

lblIdentificador=new JLabel("Identificador");

lblNumRegistro = new JLabel("Registro No.");

lblNombre = new JLabel("Nombre del empleado");

lblApellido = new JLabel("Apellido del empleado");

lblNSS = new JLabel("NSS del empleado");

lblSalario= new JLabel("Salario semanal");

//

lblSueldo=new JLabel("Sueldo");

lblHoras=new JLabel("Horas");

lblSalarioBase=new JLabel("Salario Base");

lblVentasBrutas=new JLabel("Ventas Brutas");

lblTarifaComision=new JLabel("Tarifa Comision");

tipoCuenta=new JTextField(15);

identificador=new JTextField(5);

campoNumRegistro = new JTextField(2);

campoNombreEmpleado = new JTextField(20);

campoApellidoEmpleado = new JTextField(15);

campoNSS = new JTextField(10);

campoSalario= new JTextField(10);

campoSueldo= new JTextField(15);

campoHoras= new JTextField(15);

campoSalarioBase= new JTextField(15);

campoVentasBrutas= new JTextField(15);

campoTarifaComision= new JTextField(15);

panelEntradas.setLayout(new GridLayout(12,2));

panelEntradas.add(lblTipoCuenta);

panelEntradas.add(tipoCuenta);

panelEntradas.add(lblIdentificador);

panelEntradas.add(identificador);

panelEntradas.add(lblNumRegistro);

panelEntradas.add(campoNumRegistro);

panelEntradas.add(lblNombre);

panelEntradas.add(campoNombreEmpleado);

panelEntradas.add(lblApellido);

6

panelEntradas.add(campoApellidoEmpleado);

panelEntradas.add(lblNSS);

panelEntradas.add(campoNSS);

panelEntradas.add(lblSalario);

panelEntradas.add(campoSalario);

panelEntradas.add(lblSueldo);

panelEntradas.add(campoSueldo);

panelEntradas.add(lblHoras);

panelEntradas.add(campoHoras);

panelEntradas.add(lblSalarioBase);

panelEntradas.add(campoSalarioBase);

panelEntradas.add(lblVentasBrutas);

panelEntradas.add(campoVentasBrutas);

panelEntradas.add(lblTarifaComision);

panelEntradas.add(campoTarifaComision);

contenedor.add(panelEntradas);

panelComandos = new JPanel();

aplicar=new JButton("Aplicar");

botonAbrir = new JButton("Abrir");

botonNuevo = new JButton ("Nuevo");

botonGuardar = new JButton("Guardar");

botonBorrar = new JButton("Borrar");

botonBuscar = new JButton("Buscar");

botonAnterior = new JButton("<<");

botonSiguiente = new JButton(">>");

aplicar.addActionListener(this);

botonAbrir.addActionListener(this);

botonGuardar.addActionListener(this);

botonNuevo.addActionListener(this);

botonBorrar.addActionListener(this);

botonBuscar.addActionListener(this);

botonAnterior.addActionListener(this);

botonSiguiente.addActionListener(this);

panelComandos.add(aplicar);

panelComandos.add(botonAnterior);

panelComandos.add(botonSiguiente);

panelComandos.add(botonAbrir);

panelComandos.add(botonNuevo);

panelComandos.add(botonBorrar);

panelComandos.add(botonGuardar);

panelComandos.add(botonBuscar);

contenedor.add(panelComandos);

panelContenidoArchivo = new JPanel();

7

//panelContenidoArchivo.add(new JLabel("Contenido del archivo"));

panelContenidoArchivo.setBorder(new TitledBorder("Resultados"));

/*contenidoArchivo = new JTextArea(20,30);

JScrollPane panelScroll= new JScrollPane(contenidoArchivo);

panelScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

panelContenidoArchivo.add(panelScroll);

panelContenidoArchivo.add(contenidoArchivo);*/

contenidoArchivo=new JTextArea(10,50);

JScrollPane panelScroll= new JScrollPane(contenidoArchivo);

panelScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

panelContenidoArchivo.add(panelScroll);

contenedor.add(panelContenidoArchivo);

setSize(640,600);

selector = new JFileChooser();

this.show();

bloquearControles(false);

inicializaCampos();

}

public void inicializaCampos()

{

identificador.setText("");

campoNombreEmpleado.setText("");

campoApellidoEmpleado.setText("");

campoNSS.setText("");

campoSalario.setText("");

//

campoSueldo.setText("0");

campoHoras.setText("0");

campoSalarioBase.setText("0");

campoVentasBrutas.setText("0");

campoTarifaComision.setText("0");

campoNumRegistro.setEditable(false);

/*tipoCuenta.removeAllItems();

tipoCuenta.addItem("Seleccione Tipo");

tipoCuenta.addItem("Empleado Asalariado");

tipoCuenta.addItem("Empleado Por Horas");

tipoCuenta.addItem("Empleado Por comision");*/

}

public void bloquearControles(boolean activo)

{

campoNombreEmpleado.setEnabled(activo);

campoApellidoEmpleado.setEnabled(activo);

8

campoNSS.setEnabled(activo);

campoSalario.setEnabled(activo);

botonGuardar.setEnabled(activo);

botonAnterior.setEnabled(activo);

botonSiguiente.setEnabled(activo);

botonBuscar.setEnabled(activo);

botonNuevo.setEnabled(activo);

botonBorrar.setEnabled(activo);

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource() == botonAbrir)

{

indice = 0;

selector.showOpenDialog(this);

ruta = selector.getSelectedFile().toString();

if(ruta!=null /*&& selector.getSelectedFile().exists()*/)

{

try {

bloquearControles(true);

archivos = new CreacionArchivosAleatorios(ruta);

contenidoArchivo.setText(archivos.leerRegistros());

botonGuardar.setEnabled(false);

} catch (FileNotFoundException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

} catch (IOException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

} catch (ClassNotFoundException e3) {

// TODO Auto-generated catch block

e3.printStackTrace();

} catch (Exception e4) {

// TODO Auto-generated catch block

e4.printStackTrace();

}

}

}

if(e.getSource() == botonGuardar)

{

contar=contar+1-disminuye;

contador();

9

if(ruta!=null && contar<=10

&&tipoCuenta.getText().equals("Asalariado") ||

tipoCuenta.getText().equals("MasComision") ||

tipoCuenta.getText().equals("PorComision"))

{

try {

if(validaCampos())

{

//campoNombreEmpleado = new JTextField(20);

//campoApellidoEmpleado = new JTextField(15);

//campoNSS = new JTextField(10);

int hax=0;

int hash=0;

hax=Integer.parseInt(identificador.getText());

hash = hax %

OperacionesArchivoAleatorio.NUM_REGISTROS;

JOptionPane.showMessageDialog(null, "Posicion

donde se almacenará el registro: "+hash, "Indice hash",

JOptionPane.INFORMATION_MESSAGE);

EmpleadoBaseMasComision obj =new

EmpleadoBaseMasComision();

//empleado = new

EmpleadoBaseMasComision(Integer.parseInt(identificador.getText()),campoNombreEmpleado.get

Text(), campoApellidoEmpleado.getText(),

campoNSS.getText(),campoVentasBrutas.getText(),campoTarifaComision.getText(),campoSalario.g

etText());

obj.establecerIdentificador(Integer.parseInt(identificador.getText()));

obj.establecerPrimerNombre(campoNombreEmpleado.getText());

obj.establecerApellidoPaterno(campoApellidoEmpleado.getText());

obj.establecerNumeroSeguroSocial(campoNSS.getText());

obj.establecerSalarioBase(campoSalario.getText());

obj.establecerVentasBrutas(campoVentasBrutas.getText());

obj.establecerTarifaComision(campoTarifaComision.getText());

archivos.escribirRegistro(obj, hash);

contenidoArchivo.setText(archivos.leerRegistros());

inicializaCampos();

botonGuardar.setEnabled(false);

10

JOptionPane.showMessageDialog(null, "Empleado

agregado correctamente", "Insertar Empleado", JOptionPane.INFORMATION_MESSAGE);

}

if(tipoCuenta.getText().equals("Horas")){

System.out.println("Se selecciono horas: ");

identificador.setEditable(true);

//tipoCuenta.setEditable(false);

campoNumRegistro.setEditable(true);

campoNombreEmpleado.setEditable(true);

campoApellidoEmpleado.setEditable(true);

campoNSS.setEditable(true);

campoSueldo.setEditable(true);

campoVentasBrutas.setEditable(false);

campoTarifaComision.setEditable(false);

campoSalario.setEnabled(false);

campoHoras.setEnabled(true);

campoSueldo.setEditable(true);

campoSalario.setEnabled(false);

campoSalarioBase.setEnabled(false);

int hax=0;

int hash=0;

hax=Integer.parseInt(identificador.getText());

hash = hax %

OperacionesArchivoAleatorio.NUM_REGISTROS;

JOptionPane.showMessageDialog(null, "Posicion

donde se almacenará el registro: "+hash, "Indice hash",

JOptionPane.INFORMATION_MESSAGE);

//EmpleadoPorHoras obj =new

EmpleadoPorHoras();

EmpleadoPorHoras xy = new

EmpleadoPorHoras(Integer.parseInt(identificador.getText()),campoNombreEmpleado.getText(),

campoApellidoEmpleado.getText(),

campoNSS.getText(),Double.parseDouble(campoSueldo.getText()),Double.parseDouble(campoHor

as.getText()));

archivos.escribirRegistroHoras(xy, hash);

contenidoArchivo.setText(archivos.leerRegistrosHoras());

inicializaCampos();

botonGuardar.setEnabled(false);

JOptionPane.showMessageDialog(null, "Empleado

agregado correctamente", "Insertar Empleado", JOptionPane.INFORMATION_MESSAGE);

}

} catch (FileNotFoundException e1) {

System.out.println("Archivo no encontrado..."+

e1.getMessage());

11

e1.printStackTrace();

} catch (IOException e2) {

System.out.println("Escritura no

ejecutada..."+e2.getMessage());

// TODO Auto-generated catch block

e2.printStackTrace();

} catch (ClassNotFoundException e3) {

System.out.println("conversion de objetos no ejecutada.." +

e3.getMessage());

// TODO Auto-generated catch block

e3.printStackTrace();

} catch (NumberFormatException e4) {

// TODO Auto-generated catch block

e4.printStackTrace();

} catch (Exception e5) {

// TODO Auto-generated catch block

e5.printStackTrace();

JOptionPane.showMessageDialog(null, e5.getMessage(),

"Archivos aleatorios", JOptionPane.ERROR_MESSAGE);

inicializaCampos();

}

}

}

if(e.getSource() == botonAnterior)

indice--;

if(e.getSource() == botonSiguiente)

indice++;

if(indice<0)

{

JOptionPane.showMessageDialog(null, "Se llego al inicio del archivo",

"Lectura de registros", JOptionPane.ERROR_MESSAGE);

indice = 0;

}

if(indice >= OperacionesArchivoAleatorio.NUM_REGISTROS)

{

JOptionPane.showMessageDialog(null, "Se llego al final del archivo",

"Lectura de registros", JOptionPane.ERROR_MESSAGE);

indice = OperacionesArchivoAleatorio.NUM_REGISTROS-1;

}

else

{

try {

empleado = archivos.obtenerRegistro(indice);

campoNumRegistro.setText(String.valueOf(indice+1));

12

campoNombreEmpleado.setText(empleado.obtenerPrimerNombre());

campoApellidoEmpleado.setText(empleado.obtenerApellidoPaterno());

campoNSS.setText(empleado.obtenerNumeroSeguroSocial());

campoSalario.setText(empleado.obtenerSalarioBase());

// Agregue

campoSalarioBase.setText(empleado.obtenerSalarioBase());

campoVentasBrutas.setText(empleado.obtenerVentasBrutas());

campoTarifaComision.setText(empleado.obtenerTarifaComision());

} catch (Exception e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

if(e.getSource() == botonNuevo)

{

inicializaCampos();

botonGuardar.setEnabled(true);

}

if(e.getSource() == botonBorrar)

{ try {

empleado = new EmpleadoBaseMasComision(0,"", "", "","","","");

archivos.escribirRegistro(empleado, indice);

contenidoArchivo.setText(archivos.leerRegistros());

} catch (Exception e1) {

JOptionPane.showMessageDialog(null, e1.getMessage(), "Borrado

de empleado", JOptionPane.ERROR_MESSAGE);

// TODO Auto-generated catch block

e1.printStackTrace();

}

disminuye=disminuye+1;

System.out.println("disminuyendo el contador"+disminuye);

}

if(e.getSource() == botonBuscar)

{

/*String res = JOptionPane.showInputDialog("Introduzca el número de

seguridad social: ");

try {

empleado = archivos.busqueda(res);

if(empleado==null)

JOptionPane.showMessageDialog(null, "Empleado no

encontrado", "Búsqueda de Empleado", JOptionPane.ERROR_MESSAGE);

else

{

13

campoNombreEmpleado.setText(empleado.obtenerPrimerNombre());

campoApellidoEmpleado.setText(empleado.obtenerApellidoPaterno());

campoNSS.setText(empleado.obtenerNumeroSeguroSocial());

campoSalario.setText(empleado.obtenerNumeroSeguroSocial());

// Agregue

campoSalarioBase.setText(empleado.obtenerSalarioBase());

campoVentasBrutas.setText(empleado.obtenerVentasBrutas());

campoTarifaComision.setText(empleado.obtenerTarifaComision());

}

} catch (Exception e1) {

JOptionPane.showMessageDialog(null, e1.getMessage(), "Borrado

de Empleado", JOptionPane.ERROR_MESSAGE);

// TODO Auto-generated catch block

//e1.printStackTrace();

}*/

String res = JOptionPane.showInputDialog("Introduzca el identificador del

empleado: ");

int hax=0;

int hash=0;

hax=Integer.parseInt(res);

hash=hax % OperacionesArchivoAleatorio.NUM_REGISTROS;

try {

empleado = archivos.busqueda(hash,hax);

if(empleado==null)

JOptionPane.showMessageDialog(null, "Empleado no

encontrado", "Búsqueda de Empleado", JOptionPane.ERROR_MESSAGE);

else

{

campoNombreEmpleado.setText(empleado.obtenerPrimerNombre());

campoApellidoEmpleado.setText(empleado.obtenerApellidoPaterno());

campoNSS.setText(empleado.obtenerNumeroSeguroSocial());

campoSalario.setText(empleado.obtenerNumeroSeguroSocial());

// Agregue

14

campoSalarioBase.setText(empleado.obtenerSalarioBase());

campoVentasBrutas.setText(empleado.obtenerVentasBrutas());

campoTarifaComision.setText(empleado.obtenerTarifaComision());

}

} catch (Exception e1) {

JOptionPane.showMessageDialog(null, e1.getMessage(), "Borrado

de Empleado", JOptionPane.ERROR_MESSAGE);

// TODO Auto-generated catch block

//e1.printStackTrace();

}

}if(e.getSource()==aplicar){

if(tipoCuenta.getText().equals("Asalariado")){

identificador.setEditable(true);

//tipoCuenta.setEditable(false);

campoNumRegistro.setEditable(true);

campoNombreEmpleado.setEditable(true);

campoApellidoEmpleado.setEditable(true);

campoNSS.setEditable(true);

campoSueldo.setEditable(true);

campoSalario.setEditable(true);

campoHoras.setEditable(false);

campoSalarioBase.setEditable(false);

campoVentasBrutas.setEditable(false);

campoTarifaComision.setEditable(false);

campoSueldo.setEditable(false);

}

else if(tipoCuenta.getText().equals("MasComision")){

identificador.setEditable(true);

//tipoCuenta.setEditable(false);

campoNumRegistro.setEditable(true);

campoNombreEmpleado.setEditable(true);

campoApellidoEmpleado.setEditable(true);

campoNSS.setEditable(true);

campoSueldo.setEditable(true);

campoHoras.setEditable(false);

campoVentasBrutas.setEditable(true);

campoTarifaComision.setEditable(true);

campoSalario.setEnabled(true);

campoHoras.setEnabled(false);

campoSueldo.setEditable(false);

campoSalario.setEnabled(true);

}else if(tipoCuenta.getText().equals("PorComision")){

identificador.setEditable(true);

15

//tipoCuenta.setEditable(false);

campoNumRegistro.setEditable(true);

campoNombreEmpleado.setEditable(true);

campoApellidoEmpleado.setEditable(true);

campoNSS.setEditable(true);

campoSueldo.setEditable(true);

campoHoras.setEditable(false);

campoVentasBrutas.setEditable(true);

campoTarifaComision.setEditable(true);

campoSalario.setEnabled(false);

campoHoras.setEnabled(false);

campoSueldo.setEditable(false);

campoSalario.setEnabled(false);

}else if(tipoCuenta.getText().equals("Horas")){

identificador.setEditable(true);

//tipoCuenta.setEditable(false);

campoNumRegistro.setEditable(true);

campoNombreEmpleado.setEditable(true);

campoApellidoEmpleado.setEditable(true);

campoNSS.setEditable(true);

campoSueldo.setEditable(true);

campoVentasBrutas.setEditable(false);

campoTarifaComision.setEditable(false);

campoSalario.setEnabled(false);

campoHoras.setEnabled(true);

campoSueldo.setEditable(true);

campoSalario.setEnabled(false);

campoSalarioBase.setEnabled(false);

}

else{

JOptionPane.showMessageDialog(null, "No existente");

}

}

}

public boolean validaCampos()

{

if (campoNombreEmpleado.getText().equals(""))

{

JOptionPane.showMessageDialog(null, "Error en campo nombre del

Empleado", "Nombre incorrecto", JOptionPane.ERROR_MESSAGE);

return false;

}

if (campoApellidoEmpleado.getText().equals(""))

{

16

JOptionPane.showMessageDialog(null, "Error en campo apellido",

"Apellido incorrecto", JOptionPane.ERROR_MESSAGE);

return false;

}

if (campoNSS.getText().equals(""))

{

JOptionPane.showMessageDialog(null, "Error en campo de número de ss",

"NSS incorrecto", JOptionPane.ERROR_MESSAGE);

return false;

}

if (!identificador.getText().matches ("[0-9]{4}"))

{

JOptionPane.showMessageDialog(null, "El Identificador consta de 4

numeros", "Salario incorrecto", JOptionPane.ERROR_MESSAGE);

return false;

}

return true;

}

public void guardar(){

if(tipoCuenta.equals("Empleado Asalariado")){

campoSueldo.setEditable(false);

campoHoras.setEditable(false);

campoSalarioBase.setEditable(false);

campoVentasBrutas.setEditable(false);

campoTarifaComision.setEditable(false);

}

}

public void contador(){

if(contar>=ugr.NUM_REGISTROS){

JOptionPane.showMessageDialog(null, "El archivo esta a punto de

llenarce", "Registro Lleno", JOptionPane.ERROR_MESSAGE);

identificador.setEditable(false);

//tipoCuenta.setEditable(false);

campoNumRegistro.setEditable(false);

campoNombreEmpleado.setEditable(false);

campoApellidoEmpleado.setEditable(false);

campoNSS.setEditable(false);

campoSalario.setEditable(false);

campoSueldo.setEditable(false);

campoHoras.setEditable(false);

campoSalarioBase.setEditable(false);

campoVentasBrutas.setEditable(false);

17

campoTarifaComision.setEditable(false);

}

}

public static void main(String args[])

{

GUIEmpleados obj = new GUIEmpleados();

obj.setVisible(true);

obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

////Nota : Este código solo pertenece a la ventana principal de la aplicación

} ///////////////////////////////////////////////////////////////////////////////////////////////////

4.1 Pruebas 1. Inicializaremos abriendo nuestro compilador Eclipse Así como se muestra en la

Ilustración 2.

Ilustración 2 El acceso al compilador puede variar dependiendo del S.O.

2. Una vez abierto nuestro compilador procederemos a elegir nuestra área de

trabajo tal y como se muestra en la siguiente ilustración.

18

Ilustración 3 clic en ok.

Ilustración 4 procedemos a abrir nuestro proyecto.

3. Una vez abierto nuestro código fuente, procederemos a compilarlo y ejecutarlo,

como se muestra en la siguiente imagen.

19

Ilustración 5 Compilar y ejecutar

Y aparecerá la siguiente pantalla.

Ilustración 6 Interfaz de la aplicación

4. Procederemos a dar de alta a un empleado de tipo asalariado. De la siguiente

manera:

Presionaremos el botón abrir para buscar la ruta del archivo que se desea abrir o si se

desea crear el archivo, solo basta con escribir el nombre que se le desea dar seguido de

20

un punto y una extensión, por ejemplo: prueba.txt.

Ilustración 7 Inicializando el archivo.

Ilustración 8 Archivo Inicializado.

5. Para registrar a un empleado de tipo Asalariado escribiremos “Asalariado” en el

campo “tipo empleado” posteriormente cliquearemos en el botón aplicar para así

deshabilitar los campos que no corresponden a este tipo de empleado.

21

Ilustración 9 Registrando un tipo de empleado.

Presionaremos el botón “nuevo” y procederemos a rellenar los campos vacíos.

Ilustración 10 La función hash nos mostrará la posición en donde se guardara el registro.

6. Para buscar un usuario cliquearemos en el botón buscar

22

Ilustración 11 Insertaremos el identificador del usuario a buscar.

Al presionar en el botón aceptar aparecerá un mensaje diciendo en qué posición se encuentra

dicho registro.

Ilustración 12 posición hash en donde el registro se guardó.

23

Ilustración 13 botones de navegación: estos botones permiten ver los registros que se encuentran almacenados en el archivo.

Nota: El programa fue modificado para que solo admita un registro, para así poder observar un

mensaje el cual dirá que el archivo está próximo a llenarse y que no permitirá que se ingresen

nuevos datos a menos que se elimine un registro.

Ilustración 14 una vez que el archivo se encuentre lleno, se deshabilitaran todos los campos a excepción de tipo de cuenta.

24

Ilustración 15 campos deshabilitados.

25

5. Bibliografía

https://www.youtube.com/watch?v=kLz10lhtE48

https://www.youtube.com/watch?v=CfieXoJpwd4

Deitel, Harvey M. y Deitel, Paul J. Cómo programar en Java. Ed. Pearson

Educación, 2008, 7ª. Edición.