Post on 07-Dec-2015
description
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.
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.
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.