Reporte de Proyecto

33
UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS CURSO: LENGUAJE DE PROGRAMACION II PROFESORA: SALLY KARINA TORRES ALVARADO TEMA:PROYECTO DE PROGRAMACION PROYECTO: ALUMNO: OSCAR ARMANDO MENDOZA COLMENARES CODIGO: 090829K Julio - 2011

Transcript of Reporte de Proyecto

Page 1: Reporte de Proyecto

2

UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS

ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

CURSO: LENGUAJE DE PROGRAMACION II PROFESORA: SALLY KARINA TORRES ALVARADO

TEMA: PROYECTO DE PROGRAMACION PROYECTO:

ALUMNO: OSCAR ARMANDO MENDOZA COLMENARES CODIGO: 090829K

Julio - 2011

Page 2: Reporte de Proyecto

SOBRE ESTOS APUNTES

Estos apuntes han sido realizados con la finalidad de ayudar a futuros Ingenieros de Sistemas que se encuentren cursando “Lenguaje de Programación II”, quienes quieren comenzar a conocer y usar La Programación Java.También se busca dar una guía ordenada para complementar el estudio de este lenguaje, muy poderoso y de gran coherencia, aunque todavía adolece de algunas limitaciones que seguramente se irán superando con el tiempo.

EL AUTOR

3

Page 3: Reporte de Proyecto

INDICE GENERAL

1. PRESENTACION 5

1.1 Que es Java …..……………………………………………............................. 5

2. CREANDO UN PROGRAMA EN NETBEANS 6

2.1 Creando Proyecto en NetBeans .……………………………………… 6

2.2 Creando Paquete en NetBeans .………………………………………. 6

2.3 Creando archivos de NetBeans .………………………………………. 6

3. CREANDO NUESTRO PROGRAMA 8

3.1 Archivos de tipo Java Class .…..…………………………………………. 8

3.1.1 Corte …………………………………………………………………………. 8

3.1.2 Empleados ..………………………………………………………………. 8

3.1.3 Inventario …………………………………………………………………. 9

4

Page 4: Reporte de Proyecto

3.1.4 Vent ………..………………………………………………………………… 9

3.2 Archivos de tipo JFrame Form ……………………………………….... 10

3.2.1 JFrame Form: Inicio ………………………………………………… 10

3.2.2 JFrame Form de acceso …………………………………………. 11 JFrame Form: IngresoRegistro,

IngresoInventario, IngresoCorte ………………………………………………………….... 11

JFrame Form: IniciarSesion ……………………………………. 14

3.2.3 JFrame Form: RegistroEmpleado …………………………. 15

3.2.4 JFrame Form: Inventariado ..…………………………………. 18

3.2.5 JFrame Form: Norden ……………………………………………. 21

3.2.6 JFrame Form: Venta ………………………………………………. 24

3.2.7 JFrame Form: CorteCaja …..……………………………………. 27

CAPITULO 1

PRESENTACIÓN

El presente trabajo reúne todos los conocimientos desarrollados en el curso de Lenguaje de Programación II correspondiente al cuarto ciclo de la carrera de Ingeniería de Sistemas, donde se enseña la técnica de programación en Lenguaje JAVA, siendo en la actualidad un lenguaje muy usado, debido a las ventajas que trae como la uniformidad existente entre las fases para desarrollo

5

Page 5: Reporte de Proyecto

del programa, la comprensión por su similitud con el mundo real y la flexibilidad que permite que cualquier cambio que se realice sobre un dato se vea reflejado en cualquier lugar donde este dato aparece.Todos estos conocimientos son reunidos con la finalidad de aplicarlos en la elaboración de un programa que permita que nuestras actividades sean realizadas de una manera más sencilla y agradable.En esta oportunidad el programa será elaborado bajo el IDE de NetBeans y orientado a empresas dedicadas a ventas y que tienen un contacto directo con sus clientes. Pero ello no quiere decir que no se pueda elaborar otro tipo de programa. Lo que se busca es dar una idea y fomentar la creación de nuevos programas.

1.1 Qué es Java

Java es un lenguaje originalmente desarrollado por un grupo de ingenieros de Sun, utilizado por Netscape posteriormente como base para Javascript. Si bien su uso se destaca en el Web, sirve para crear todo tipo de aplicaciones (locales, intranet o internet).

Java es un lenguaje: De objetos. Independiente de la plataforma.

Algunas características notables: Robusto. Gestiona la memoria automáticamente. No permite el uso de técnicas de programación inadecuadas. Multithreading. Cliente-servidor. Mecanismos de seguridad incorporados. Herramientas de documentación incorporadas.

CAPITULO 2

CREANDO UN PROGRAMA EN NETBEANS

2.1 Creando Proyecto en NetBeans

6

Page 6: Reporte de Proyecto

Abrimos el programa NetBeans (en esta oportunidad utilizaremos NetBeans IDE 6.9.1). Luego seleccionamos en el menú principal Archivo/Proyecto Nuevo.En la ventana que aparecerá a continuación, seleccione en la columna Categoría: Java y en la columna Proyectos: aplicación Java y luego presione el botón siguiente. En la siguiente ventana digite el nombre del proyecto, en nuestro caso se llamara “Venta”. Presione el botón examinar para asignar la ubicación que tendrá el proyecto. Para nuestro proyecto nos ubicamos en el escritorio de Windows, luego presiones el botón abrir y en la ventana anterior presione el botón terminar, y de esta manera se habrá creado el proyecto.

2.2 Creando Paquete en NetBeansAhora se creará un paquete al cual se llamará “Proyecto”, para esto dentro de Venta hay una opción Paquete de Fuentes, haga click derecho luego elija Nuevo/Paquete Java, en la siguiente ventana escriba el nombre del paquete: “Proyecto”, y presione el botón terminar. Finalmente se mostrará el paquete creado. Una vez creado el proyecto y el paquete podrá crear sus programas.

2.3 Creando archivos de NetBeansSeleccione el paquete Proyecto, haga click derecho, seleccione nuevo y se mostrará un listado de los diferentes tipos de archivos que se pueden crear, los cuales ayudan a la elaboración de nuestro programa.Los tipos de archivos que usaremos en esta ocasión serán:

Java Class: refiere a creación de clases que nos ayudad a manejar nuestros datos.

JFrame Form: refiere a creación de interfaces gráficas constituidas en base a elementos gráficos como son los componentes (botones, listas, etc.) que permiten al usuario interactuar con el programa diseñado.

En la Figura 2.1 se aprecia 2 paquetes: Imágenes y Proyecto. El paquete Imágenes ha sido creado para almacenar en él, las imágenes a usar. Para ello diríjase al escritorio de Windows, abra la carpeta de nuestro proyecto, seleccione la carpeta SRC y verá 2 carpetas que son nuestros paquetes. En la carpeta Imágenes guarde las imágenes a usar, ya sea para íconos, fondos,

botones, etc.

7

Page 7: Reporte de Proyecto

Los archivos de tipo Java Class que crearemos son:

Corte. Empleados. Inventario. Vent.

Y los archivos de tipo JFrame Form que crearemos son:

CorteCaja. IngresoCorte. IngresoIventario. IngresoRegistro. IniciarSesion. Inicio. Inventariado. Norden. RegistroEmpleado. Venta.

8

Page 8: Reporte de Proyecto

CAPITULO 3

CREANDO NUESTRO PROGRAMA

3.1 Archivos de tipo Java Class

3.1.1 CorteEsta clase nos ayudará en el almacenamiento de los tipos de pago de los clientes. Para ello escriba el siguiente código en la clase Corte:

3.1.2 EmpleadosEsta clase nos ayudará en el almacenamiento de los datos de los empleados de la empresa.Para ello escriba el siguiente código en la clase Empleados:

9

package Proyecto;

public class Corte { private double efectivo; private double dolares; private double visa; private double master; private double cmr; private double ripley; public double getEfectivo() { return efectivo; } public void setEfectivo(double efectivo) { this.efectivo = efectivo; }

Variable

Métodos

package Proyecto;

public class Empleados { private String nom; private String ape; private int cod; private String cargo; public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; }

… }

Variable

Métodos

Page 9: Reporte de Proyecto

3.1.3 InventarioEsta clase nos ayudará en el almacenamiento de los datos de los productos de la empresa.Para ello escriba el siguiente código en la clase Inventario:

3.1.4 VentEsta clase nos ayudará en el almacenamiento de los productos vendidos.Para ello escriba el siguiente código en la clase Vent:

10

package Inventario;

public class Empleados { private String producto; private int cantidad; private double precioU; public String getProducto() { return producto; } public void setProducto(String producto) { this.producto = producto; }

Variable

Métodos

package Proyecto;

public class Vent { private String producto; private int cantidad; private double precio; private double total; public String getProducto() { return producto; } public void setProducto(String producto) { this.producto = producto; }

Variable

Métodos

Page 10: Reporte de Proyecto

3.2 Archivos de tipo JFrame Form

3.2.1 JFrame Form: InicioEsta interfaz será nuestra ventana inicio.

Diseño.

Gran parte del código se autogenerará solo una vez que haya diseñado su interfaz gráfica. Lo que haremos a continuación será digitar el código para nuestro programa.btnSalir: con este boton saldremos del programa.

11

JLabel: JPanel:

JButton:btnSesion

JButton: btnRegistro, btnInventario, JPanel:

Imagen en los componentes: diríjase a la ventana propiedades, seleccione el botón de la opción Icon. En la ventana seleccione la opción Image Within Proyect, en la opción Package (paquete) seleccione el paquete Imágenes que ya fue creado anteriormente, y en la opción File (archivo) seleccione la imagen que desea que contenga su componente.

Acción en los botones (ActionListeners): haga cli,ck derecho en cada uno

private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); }

Page 11: Reporte de Proyecto

JLabel: lblErrorAl iniciar esta ventana no se verá. Para ello se digitara el siguiente código en el constructor del JFrame Form:

public class IngresoRegistro extends javax.swing.JFrame { public IngresoInventario() { initComponents(); lblError.setVisible(false); }…

Constructor

Código

btnSesion, btnRegistro, btnInventario: nos permite activar los JFrame Form: IniciarSesion, IngresoRegistro e IngresoInventario respectivamente.A continuación se muestra el código para btnRegistro que activa el JFrame Form IngresoRegistro. Para los otro 2 botones será un código similar, cada uno con el correspondiente JFrame Form que activa.

3.2.2 JFrame Form de accesoSerán las ventanas que nos permitan acceder a distintos puntos de nuestro programa, pero antes se debe digitar un código. Todos poseen los mismos componentes en su diseño.

JFrane Form: IngresoRegistro, IngresoInventario, IngresoCorte.

12

private void btnRegistroActionPerformed(java.awt.event.ActionEvent evt) { IngresoRegistro x=new IngresoRegistro(); x.setVisible(true); dispose(); }

JButton: btnAceptar, btnCancelar. Se le debe dar acción (ActionListeners).

btnCancelar. Regresará a la ventana inicio. Código:

private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) { dispose(); Inicio x=new Inicio();

Page 12: Reporte de Proyecto

package Proyecto;import java.io.BufferedReader;

13

JLabel: lblErrorAparecerá cada vez que el código sea el incorrecto. Las únicas personas que tienen acceso son los “Administradores”. Para ello se digitará el siguiente código:

private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { buscar();}

public void buscar(){ int ind=-1,cod; String cargo=""; RegistroEmpleado r=new RegistroEmpleado(); cod=Integer.parseInt(passCodigo.getText()); for(int i=0;i<n;i++) if(cod==a[i].getCod()) {ind = i; cargo=a[i].getCargo();} if(ind==-1 ){ lblError.setVisible(true); passCodigo.setText(""); passCodigo.requestFocus();} else if(cargo.equals("ADMINISTRADOR")) {r.setVisible(true); dispose();} else {lblError.setVisible(true); passCodigo.setText(""); passCodigo.requestFocus();}

El método buscar() nos permite buscar los datos del personal, en este caso buscará el código de cada personal. Pero para que pueda buscar cada código, antes debe leer todo el archivo en el que se ha guardado los datos de todo el personal.Para lograr ello se digitará

Page 13: Reporte de Proyecto

import java.io.FileReader;import java.io.IOException;import java.util.StringTokenizer;

public class IngresoRegistro extends javax.swing.JFrame {Empleados a[]=new Empleados[1000];int n; public IngresoRegistro() { initComponents(); leerArchivo(); lblError.setVisible(false); }

public void leerArchivo(){ try{ String linea; FileReader f=new FileReader("Usuario.txt"); BufferedReader b=new BufferedReader(f); while((linea=b.readLine())!=null){ StringTokenizer t=new StringTokenizer(linea,","); a[n]=new Empleados(); a[n].setCod(Integer.parseInt(t.nextToken())); a[n].setNom(t.nextToken()); a[n].setApe(t.nextToken()); a[n].setCargo(t.nextToken()); n++;} b.close(); } catch(IOException e){ System.out.print(e); }}

@SuppressWarnings("unchecked") private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { buscar();}

private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) { dispose(); Inicio x=new Inicio(); x.setVisible(true);}

public void buscar(){ int ind=-1,cod; String cargo=""; RegistroEmpleado r=new RegistroEmpleado(); cod=Integer.parseInt(passCodigo.getText()); for(int i=0;i<n;i++) if(cod==a[i].getCod()) {ind = i; cargo=a[i].getCargo();} if(ind==-1 ){ lblError.setVisible(true); passCodigo.setText(""); passCodigo.requestFocus();} else if(cargo.equals("ADMINISTRADOR")) {r.setVisible(true);

14

Arreglo que llama a nuestra Java Class Empleado

El método leerArchivo() nos permite leer el archivo en el que se encuentra registrado los datos de todo el personal. En esta caso el archivo se llama

Se crea un objeto r de la clase del JFrame Form RegistroEmpleado para poder acceder a él. Para el JFrame Form IngresoInventario se utilizará un código muy similiar, el método leerArchivo() también leerá el archivo en el que se encuentre registrado todos los datos de todo el personal para ver que el código sea el de un administrador. Pero en su método buscar() creará un objeto r de la clase del JFrame Form Inventariado para acceder

Page 14: Reporte de Proyecto

dispose();} else { lblError.setVisible(true); passCodigo.setText(""); passCodigo.requestFocus(); } }

public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new IngresoRegistro().setVisible(true);} }); }

// Variables declaration - do not modify private javax.swing.JButton btnAceptar; private javax.swing.JButton btnCancelar; private javax.swing.JLabel lblError; private javax.swing.JLabel lblIngrese; private javax.swing.JPasswordField passCodigo; // End of variables declaration }

JFrame Form: IniciarSesion.

15

En este caso, tiene acceso todo personal que se encuentre registrado. Manteniendo un código muy similar al de los JFrame Form: IngresoRegistro e IngresoInventario, solo cambiaríamos su manera de acceso. Entonces el método buscar() del botón btnAceptar quedaría de la siguiente manera:

private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { buscar(); }

public void buscar(){ int ind=-1,cod; Norden o=new Norden(); cod=Integer.parseInt(passCodigo.getText()); for(int i=0;i<n;i++) if(cod==a[i].getCod()) ind = i; if(ind==-1 ){ lblError.setVisible(true); passCodigo.setText("");

lblError: posee otro texto:” USUARIO NO REGISTRADO” y no será visible al abrirse esta

Se crea un objeto o de la clase del JFrame Form Norden para poder acceder a él.

Page 15: Reporte de Proyecto

3.2.3 JFrame Form: RegistroEmpleado

16

En este caso, tiene acceso todo personal que se encuentre registrado. Manteniendo un código muy similar al de los JFrame Form: IngresoRegistro e IngresoInventario, solo cambiaríamos su manera de acceso. Entonces el método buscar() del botón btnAceptar quedaría de la siguiente manera:

private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { buscar(); }

public void buscar(){ int ind=-1,cod; Norden o=new Norden(); cod=Integer.parseInt(passCodigo.getText()); for(int i=0;i<n;i++) if(cod==a[i].getCod()) ind = i; if(ind==-1 ){ lblError.setVisible(true); passCodigo.setText("");

Al abrirse esta ventana todos los JTextField aparecen en blanco y solo txtBuscar se encuentra habilitado. Los datos de todos los empleados cargan automáticamente en la tabla. Solo aparecen habilitados btnNuevo y btnSalir. .btnBuscar: una vez ingresado un código en txtBuscar este botón busca el código y muestra los datos nombre, apellido, cargo y código, cada uno en su JTextField correspondiente. Habilita btnModificar, btnCancelar y btnEliminar. Deshabilita btnNuevo y btnBuscar. La misma función sucede cuando se hace click en uno de

JLabel: lblTituloJButton:

JLabel: lblNombre,

JTextField: txtNombre, txtCargo,

JTable:

JTextField: txtBuscar JLabel: lblBuscar, lblApellido

JButton:

SOLO ADMINISTRADOR

JButton: btnNuevo, btnModificar, btnGuardar, btnActualizar, btnCancelar, btnEliminar, btnSalir

Page 16: Reporte de Proyecto

17

Al abrirse esta ventana todos los JTextField aparecen en blanco y solo txtBuscar se encuentra habilitado. Los datos de todos los empleados cargan automáticamente en la tabla. Solo aparecen habilitados btnNuevo y btnSalir. .btnBuscar: una vez ingresado un código en txtBuscar este botón busca el código y muestra los datos nombre, apellido, cargo y código, cada uno en su JTextField correspondiente. Habilita btnModificar, btnCancelar y btnEliminar. Deshabilita btnNuevo y btnBuscar. La misma función sucede cuando se hace click en uno de

.btnGuardar: almacena los datos ingresados del nuevo empleado, mostrándolos automáticamente en la tabla. Devuelve el estado inicial de la ventana..btnModificar: habilita txtNombre, txtApellido y txtCargo, para proceder a la modificación de datos. Se deshabilita automáticamente y habilita btnActualizar..btnActualizar: actualiza la modificación de uno de los datos. Devuelve el estado inicial de la vetana..btnEliminar: elimina al empleado seleccionado. Devuelve el estado inicial de la ventana.

private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) { int ind=-1,cod; cod=Integer.parseInt(txtCodigo.getText()); for(int i=0;i<n;i++) if(cod==a[i].getCod()) ind=i; if(ind==-1) ingresarDatos(); else

private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) { txtNombre.requestFocus(); txtBuscar.setText(""); txtNombre.setText(""); txtApellido.setText(""); txtCargo.setText(""); txtCodigo.setText(""); txtBuscar.setEnabled(false); txtNombre.setEnabled(true); txtApellido.setEnabled(true); txtCargo.setEnabled(true); btnBuscar.setEnabled(false); btnNuevo.setEnabled(false); btnEliminar.setEnabled(false);

Código btnNuevo

private void btnCodigoActionPerformed(java.awt.event.ActionEvent evt) { int mayor=999999, menor=100000, n; n=GenerarCodigo(mayor,menor); txtCodigo.setText(""+n); btnGuardar.setEnabled(true);}

public int GenerarCodigo(int sup, int inf){

Código btnCodigo

Page 17: Reporte de Proyecto

18

private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) { int ind=-1,cod; cod=Integer.parseInt(txtCodigo.getText()); for(int i=0;i<n;i++) if(cod==a[i].getCod()) ind=i; if(ind==-1) ingresarDatos(); else

Código btnGuardar

Método

MétodoMétodo datosTabla():public void datosTabla(){ try{ String linea; int fila=0; FileReader f=new FileReader("Usuario.txt"); BufferedReader b=new BufferedReader(f); while((linea=b.readLine())!=null){ StringTokenizer t=new StringTokenizer(linea,","); tblEmpleados.setValueAt(t.nextToken(), fila, 0); tblEmpleados.setValueAt(t.nextToken(), fila, 1); tblEmpleados.setValueAt(t.nextToken(), fila, 2); tblEmpleados.setValueAt(t.nextToken(), fila, 3); fila++;} b.close(); } catch(IOException e){ System.out.print(e);} }

Método ingresarDatos():public void ingresarDatos(){ Empleados c=new Empleados(); c.setNom(txtNombre.getText().toUpperCase()); c.setApe(txtApellido.getText().toUpperCase()); c.setCargo(txtCargo.getText().toUpperCase()); c.setCod(Integer.parseInt(txtCodigo.getText())); try{ FileWriter f=new FileWriter("Usuario.txt",true); PrintWriter p=new PrintWriter(f); p.println(c.getCod()+","+c.getNom()+","+c.getApe()+","+c.getCargo()); p.close(); } catch(IOException e){ System.out.println(e); } }

Lee el archivo creado “Usuario.txt” y muestra los datos en la tabla

Crea el archivo “Usuario.txt” en el que se van a almacenar los datos de los empleados

Lee nuestra Java Class Empleados, almacena las variables

Este código se usa al inicializar la ventana

package Proyecto;import java.io.FileWriter;import java.io.PrintWriter;import java.io.IOException;import java.io.BufferedReader;import java.io.FileReader;import java.util.StringTokenizer;import javax.swing.JOptionPane;

public class RegistroEmpleado extends javax.swing.JFrame {int n,id;Empleados a[]=new Empleados[1000];

Page 18: Reporte de Proyecto

3.2.4 JFrame Form: Inventariado

19

package Proyecto;import java.io.FileWriter;import java.io.PrintWriter;import java.io.IOException;import java.io.BufferedReader;import java.io.FileReader;import java.util.StringTokenizer;import javax.swing.JOptionPane;

public class RegistroEmpleado extends javax.swing.JFrame {int n,id;Empleados a[]=new Empleados[1000];

Método leerArchivo()

Método datosTable()

Al inicializar la ventana lee ambos métodos y el puntero aparece

JLabel: lblTituloJButton:

JLabel: lblProducto, lblCantidad,

JTable:

JTextField: txtBuscar JTextField: txtProducto

SOLO ADMINISTRADOR

private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) { id=tblProductos.getSelectedRow(); txtBuscar.requestFocus(); btnBuscar.setEnabled(true); btnNuevo.setEnabled(true); btnEliminar.setEnabled(true); txtProducto.setText(""); txtPrecioU.setText(""); txtCantidad.setText(""); txtProducto.setEnabled(false); txtCantidad.setEnabled(false);

Page 19: Reporte de Proyecto

20

Como se aprecia se utilizan los mismos botones que en RegistroEmpleado (a excepción de btnCodigo) para un manejo más fácil del programa.Al inicializar la ventana se muestra un código similar JFrame Form mencionado.

public void leerArchivo(){ try{ String linea; FileReader f=new FileReader("Inventariado.txt"); BufferedReader b=new BufferedReader(f); while((linea=b.readLine())!=null){ StringTokenizer t=new StringTokenizer(linea,","); v[n]=new Inventario(); v[n].setProducto(t.nextToken()); v[n].setCantidad(Integer.parseInt(t.nextToken())); v[n].setprecioU(Double.parseDouble(t.nextToken())); n++;} b.close(); } catch(IOException e){ System.out.print(e);} }

public void datosTabla(){ try{ String linea; int fila=0; FileReader f=new FileReader("Inventariado.txt"); BufferedReader b=new BufferedReader(f); while((linea=b.readLine())!=null){ StringTokenizer t=new StringTokenizer(linea,","); tblProductos.setValueAt(t.nextToken(), fila, 0);

package Proyecto;…public class Inventariado extends javax.swing.JFrame {int n,indice,id;Inventario v[]=new Inventario[1000];

public Inventariado() { initComponents(); leerArchivo(); datosTabla();

Al inicializar la ventana lee ambos métodos y el puntero aparece en txtBuscar. Sin embargo los métodos varían pero

En este caso se va a interactuar con los productos y no con los empleados, por ello es que se procede a la creación de un nuevo archivo “Inventariado.txt” en el que se almacenará los datos de los productos. Se crea en el método

Se invoca a nuestra Java Class Inventario

Método ingresarDatos():public void ingresarDatos(){ Inventario c=new Inventario(); c.setProducto(txtProducto.getText().toUpperCase()); c.setCantidad(Integer.parseInt(txtCantidad.getText())); c.setprecioU(Double.parseDouble(txtPrecioU.getText())); try{ FileWriter f=new FileWriter("Inventariado.txt",true); PrintWriter p=new PrintWriter(f); p.println(c.getProducto()+","+c.getCantidad()+","+c.getprecioU()); p.close(); }

CódigobtnElimin

JButton: btnNuevo, btnModificar, btnGuardar, btnActualizar, btnCancelar, btnEliminar, btnSalir

Page 20: Reporte de Proyecto

21

Método ingresarDatos():public void ingresarDatos(){ Inventario c=new Inventario(); c.setProducto(txtProducto.getText().toUpperCase()); c.setCantidad(Integer.parseInt(txtCantidad.getText())); c.setprecioU(Double.parseDouble(txtPrecioU.getText())); try{ FileWriter f=new FileWriter("Inventariado.txt",true); PrintWriter p=new PrintWriter(f); p.println(c.getProducto()+","+c.getCantidad()+","+c.getprecioU()); p.close(); }

public void actualizar(int indice){ v[id].setProducto(txtProducto.getText().toUpperCase()); v[id].setCantidad(Integer.parseInt(txtCantidad.getText())); v[id].setprecioU(Double.parseDouble(txtPrecioU.getText())); try{ FileWriter f=new FileWriter("Inventariado.txt"); PrintWriter p=new PrintWriter(f); for(int i=0;i<n;i++) p.println(v[i].getProducto()+","+v[i].getCantidad()+","+v[i].getprecioU()); p.close(); } catch(IOException e){ System.out.print(e); } }

Este código es usado para los botones btnActualizar en los diferentes JFrame Form que los contengan, solo varia las características

private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) { id=buscar();} public int buscar(){ int ind=-1; String produc; produc=txtBuscar.getText().toUpperCase(); for(int i=0;i<n;i++) if(produc.equals(v[i].getProducto())) ind=i; if(ind==-1){ JOptionPane.showMessageDialog(this, "NO SE ENCUENTRA REGISTRADO", "ATENCION", JOptionPane.ERROR_MESSAGE); txtBuscar.setText(""); txtBuscar.requestFocus();} else {txtProducto.setText(v[ind].getProducto()); txtCantidad.setText(""+v[ind].getCantidad()); txtPrecioU.setText(""+v[ind].getprecioU()); } return ind;

private void tblProductosMouseClicked(java.awt.event.MouseEvent evt) { id=tblProductos.getSelectedRow(); txtProducto.setText((tblProductos.getValueAt(id, 0)).toString()); txtCantidad.setText((tblProductos.getValueAt(id, 1)).toString());

CódigobtnBuscar

Código para que cada vez que se seleccione un

Page 21: Reporte de Proyecto

3.2.5 JFrame Form: Norden

22

Código para que cada vez que se seleccione un

TODO EL PERSONAL

JList: lstOrdenJButton:

JLabel: lblProducto, lblPrecioU, lblPrecio

JTable:

JTextField: txtBuscar , txtProducto,txtPrecioU,

JTextField: txtStock

JLabel lblCantidad, JComboBox: cbxCantidad

JButton: btnAnular

JButton: btnAplicar, btnCuadre, btnSalir

Esta ventana es parecida de cierta manera al JFrame Form Inventariado. btnNuevo, tblProductos mantiene la misma codificación. Al inicializar la ventana se muestra un código similar JFrame Form mencionado, pero se le agrega una nueva lectura de

Page 22: Reporte de Proyecto

23

public void mostrarCantidad(){ for(int i=0;i<=100;i++) cbxCantidad.addItem(i); }

public void leerTotal(){ try{ String linea; FileReader f=new FileReader("Total.txt"); BufferedReader b=new BufferedReader(f); while((linea=b.readLine())!=null){ StringTokenizer t=new StringTokenizer(linea,","); a[q]=new Vent(); a[q].setTotal(Double.parseDouble(t.nextToken())); q++;} b.close(); } catch(IOException e){ System.out.print(e);}

Método mostrarCantidad(): al inicializarse la ventana, automáticamente cbxCantidad tendrá números del 1 hasta i=100.

En este caso se va a interactuar con los productos almacenados y productos vendidos, por ello es que se procede a la creación de un nuevo archivo “Total.txt” en el que se almacenará el total, y así poder llevar ese dato a otra ventana. Se crea en el método agregar(), método del botón

private void btnAplicarActionPerformed(java.awt.event.ActionEvent evt) { agregar(); Venta ven=new Venta(); ven.setVisible(true); dispose();} public void agregar(){ for(int i=0;i<k;i++) c[i].setTotal(total); try{ FileWriter f=new FileWriter("Total.txt",true); PrintWriter p=new PrintWriter(f); for(int i=0;i<k;i++) p.println(c[i].getTotal()); p.close(); } catch(IOException e){

CódigobtnAplic

private void cbxCantidadItemStateChanged(java.awt.event.ItemEvent evt) { int ind; ind=cbxCantidad.getSelectedIndex(); for (int i=0;i<40;i++) if(i==ind) cantidad=i;

private void btnAgregarPActionPerformed(java.awt.event.ActionEvent evt) { producto=txtProducto.getText(); precio=Double.parseDouble(txtPrecioU.getText())*cantidad; total=total+precio; lstOrden.setModel(l); l.addElement(cantidad+" "+producto+" "+precio); txtBuscar.setText(""); txtBuscar.requestFocus(); txtProducto.setText(""); txtPrecioU.setText(""); txtCantidad.setText(""); txtTotal.setText("S/. "+total); c[k]=new Vent(); c[k].setProducto(producto); c[k].setCantidad(cantidad);

CódigobtnAgreg

CódigocbxCantid

Page 23: Reporte de Proyecto

24

private void btnAnularActionPerformed(java.awt.event.ActionEvent evt) { int ind; ind=lstOrden.getSelectedIndex(); total=total-c[ind].getPrecio(); txtTotal.setText("S/. "+total); l.remove(ind); for(int i=ind;i<k;i++)

CódigobtnAnular

Con este botón se ingresa al JFrame Form CorteCaja, en el cual se cuadrará la caja del empleado que se encontró laborando. Acceso solo para administradores. A continuación se muestra su código.

private void btnCuadreActionPerformed(java.awt.event.ActionEvent evt) { IngresoCorte x=new IngresoCorte(); x.setVisible(true);

Con este botón se regrese a la ventana de Inicio.

private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) { Inicio x=new Inicio(); x.setVisible(true); dispose();

Este botón nos llevará al JFrame Form Venta, para ingresar el tipo y la cantidad con la que paga el cliente. Su código ya fue formulado en la página anterior.

Page 24: Reporte de Proyecto

3.2.6 JFrame Form: Venta

25

JTextField: txtTotal txtEfectivotxtCambio

JButton: btnAplicarbtnAtras

de la venta realizada en el JFrame Form Norden debe cargar

Al inicializar la ventana lee los métodos leerTotal, leerArchivo, mostrarTotal, y leerCorte

Se invoca a nuestras Java Vent, Corte e

InventarioPara cargar el total del JFrame Form NordenPara almacenar los tipos de pago de los clientesPara actualizar el inventario

public void mostrarTotal()

for(int i=0;i<q;i++) k=i;

total=a[k].getTotal();

Page 25: Reporte de Proyecto

26

Cada uno de estos botones nos ayudara en la selección del tipo de pago. Solamente btnSoles y btnDolares activaran txtEfectivo. Mostramos los códigos de

El código es similar para todos. La variable tCambio tomará como valor la primera letra de cada tipo de

private void btnSolesActionPerformed(java.awt.event.ActionEvent evt) { tCambio='S'; txtEfectivo.setEnabled(true); txtEfectivo.requestFocus(); } private void btnDolaresActionPerformed(java.awt.event.ActionEvent evt) { tCambio='D'; txtEfectivo.setEnabled(true); txtEfectivo.requestFocus(); } private void btnVisaActionPerformed(java.awt.event.ActionEvent evt) { tCambio='V'; txtEfectivo.setEnabled(false);

private void btnAplicarActionPerformed(java.awt.event.ActionEvent evt) { double cambio, efectivo, dolar,d=2.7; for(int i=0;i<n;i++) j=i; if(tCambio=='S') {efectivo=Double.parseDouble(txtEfectivo.getText()); cambio=efectivo-total; txtCambio.setText(""+cambio); soles=c[j].getEfectivo()+total;} if(tCambio=='D') {efectivo=Double.parseDouble(txtEfectivo.getText()); dolar=efectivo*d; cambio=dolar-total; txtCambio.setText(""+cambio); dolares=c[j].getDolares()+total;} if(tCambio=='V') {txtCambio.setText("CANCELO CON VISA"); visa=c[j].getVisa()+total;} if(tCambio=='M') {txtCambio.setText("CANCELO CON MASTERCARD"); master=c[j].getMaster()+total;}

CódigobtnAplic

Métodos

Page 26: Reporte de Proyecto

27

Método guardarCorte():

public void guardarCorte(){ Corte w=new Corte(); w.setEfectivo(soles); w.setDolares(dolares); w.setVisa(visa); w.setMaster(master); w.setCmr(cmr); w.setRipley(ripley); try{ FileWriter f=new FileWriter("Cort.txt",true); PrintWriter p=new PrintWriter(f); p.println(w.getEfectivo()+","+w.getDolares()+","+w.getVisa()+","+w.getMaster()+","+w.getCmr()+","+w.getRipley()); p.close(); } catch(IOException e){ System.out.println(e);}

Almacenamos los distintos tipos de pago en el archivo “Cort.txt” para realizar un cuadre de caja más sencillo y rápido en el JFrameForm

Método actualizaInv():

public void actualizaInv(){ String producto; for(int t=0;t<q;t++) {producto = a[t].getProducto(); for(int i=0;i<n;i++) if(producto.equals(v[i].getProducto())) v[i].setCantidad(v[i].getCantidad()-a[t].getCantidad());} try{ FileWriter f=new FileWriter("Inventariado.txt"); PrintWriter p=new PrintWriter(f); for(int i=0;i<n;i++) p.println(v[i].getProducto()+","+v[i].getCantidad()+","+v[i].getprecioU()); p.close(); } catch(IOException e){ System.out.print(e);} }

Se actualiza el

private void btnAtrasActionPerformed(java.awt.event.ActionEvent evt) { Norden o=new Norden(); o.setVisible(true); dispose(); }

btnAtras nos regresa a JFrame Form Norden para cancelar la orden o tomar una nueva.

Page 27: Reporte de Proyecto

3.2.7 JFrame Form: CorteCaja

28

SOLO ADMINISTRADOR

JLabel:lblSoleslblDolareslblVisalblMasterlblCmrlblRipley

JLabel:lblTitulolblDiferencialblDeposita

JTextField: txtSolesCaja, txtSolesDepositado,

JTextField: txtDolaresCaja, txtDolaresDepositado,

JTextField: txtVisaCaja, txtVisaDepositado,

JTextField: txtMasterCaja, txtMasterDepositado,

JTextField: txtCmrCaja, txtCmrDepositado,

JTextField: txtRipleyCaja, txtRipleyDepositado,

JButton: btnChekar,

Llego la hora de cuadrar la caja. Recuerde que solo tienen acceso los administradores. Para que cargue automáticamente los tipos de pago, al inicializar la ventana debe leer nuestro archivo “Cort.txt” ya creado. Veamos el código:

package Proyecto;…

public class CorteCaja extends javax.swing.JFrame {Corte c[]=new Corte[100000];int n,k=0;double soles=0,dolares=0,visa=0,master=0,cmr=0,ripley=0;

public CorteCaja() { initComponents();

Se invoca a nuestra Java Class Corte, para ver los

Método

Page 28: Reporte de Proyecto

29

public void leerCorte(){ try{ String linea; FileReader f=new FileReader("Cort.txt"); BufferedReader b=new BufferedReader(f); while((linea=b.readLine())!=null){ StringTokenizer t=new StringTokenizer(linea,","); c[n]=new Corte(); c[n].setEfectivo(Double.parseDouble(t.nextToken())); c[n].setDolares(Double.parseDouble(t.nextToken())); c[n].setVisa(Double.parseDouble(t.nextToken())); c[n].setMaster(Double.parseDouble(t.nextToken())); c[n].setCmr(Double.parseDouble(t.nextToken())); c[n].setRipley(Double.parseDouble(t.nextToken())); n++;} b.close(); } catch(IOException e){ System.out.print(e);} }

public void mostrarCorte(){ for(int i=0;i<n;i++) k=i;

Método leerCorte(): nos permite leer el archivo en el que se encuentra guardado los tipos de pago

Método mostrarCorte(): muestra los tipos de pago en sus JTextField correspondientes.

A los JTextField que se encuentran en la columna DEPOSITADO se le da la acción KeyPressed

Primero se ingresa la cantidad contada en caja y se ingresa en la columna DEPOSITADO, al presionar enter aparecerá en la columna DIFERENCIA si el cajero debe o no.

Page 29: Reporte de Proyecto

30

private void txtSolesDepositadoKeyPressed(java.awt.event.KeyEvent evt) { double soles,s,diferencia; soles=Double.parseDouble(txtSolesCaja.getText()); s=Double.parseDouble(txtSolesDepositado.getText()); if(evt.getKeyCode()==evt.VK_ENTER) {diferencia=s-soles; txtSolesDiferencia.setText(""+diferencia);} } private void txtDolaresDepositadoKeyPressed(java.awt.event.KeyEvent evt) { double dolares,d,diferencia; dolares=Double.parseDouble(txtDolaresCaja.getText()); d=Double.parseDouble(txtDolaresDepositado.getText()); if(evt.getKeyCode()==evt.VK_ENTER) {diferencia=d-dolares; txtDolaresDiferencia.setText(""+diferencia);}} private void txtVisaDepositadoKeyPressed(java.awt.event.KeyEvent evt) { double caja,d,diferencia; caja=Double.parseDouble(txtVisaCaja.getText()); d=Double.parseDouble(txtVisaDepositado.getText()); if(evt.getKeyCode()==evt.VK_ENTER) {diferencia=d-caja;

Código para la acción KeyPressed de cada JTextField de la columna DEPOSITADO.El código es el mismo, solo varia el tipo

private void btnChekarActionPerformed(java.awt.event.ActionEvent evt) { Inicio x=new Inicio(); limpiar(); x.setVisible(true); dispose();}

public void limpiar(){ Corte v=new Corte(); v.setEfectivo(soles); v.setDolares(dolares); v.setVisa(visa); v.setMaster(master); v.setCmr(cmr); v.setRipley(ripley); try{ FileWriter f=new FileWriter("Cort.txt",true); PrintWriter p=new PrintWriter(f); p.println(v.getEfectivo()+","+v.getDolares()+","+v.getVisa()+","+v.getMaster()+","+v.getCmr()+","+v.getRipley()); p.close(); } catch(IOException e){ System.out.println(e);}

Código btnChekar: este botón elimina los tipos de pago guardados para poder ingresar nuevos. Cierra la caja del empleado de turno y devuelve la página de Inicio para darle paso a otro

Métod

Método limpiar(): elimina o limpia los datos almacenados como tipo de pago para almacenar

private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) { Norden x=new Norden(); x.setVisible(true); dispose(); }

btnCancelar: nos devuelve al JFrame Form Norden.