Anda di halaman 1dari 30

Introduccin

En la vida se presentan innumerables ejemplos de procesos que se realizan de manera parela, simultneos o concurrentes. Por tales razones, la concurrencia es un fenmeno importante de tratar, ya que permite el desarrollo de sistemas capaces de adelantar, mltiples procesos simultneamente. A su vez cada proceso se puede componer de mltiples Programacin de Hilos: tareas, ejecutndose segn ciertas reglas, de manera simultnea. Debe entenderse que, se hace referencia a procesos en el sentido de programas, y dentro de cualquier programa, la posibilidad de manejar, concurrentemente, mltiples tareas. Hasta el momento se han desarrollado programas que realizan una sola tarea, entendiendose por tarea, un hilo de ejecucin o un (thread), tambin denominados de flujo nico, en contraste con los programas que realizan ms de una tarea, o de multitareas o multithreads, denominados de flujo mltiple. Especificamente una tarea se encarga de controlar un nico aspecto, dentro de la ejecucin de un programa, por ejemplo el manejo de grficos, las entradas/salidas de archivos en disco, u otros. Las tareas se diferencian de los procesos, en que las primeras comparten los mismos recursos del programa que las contiene, en tanto los procesos tienen en forma separada su cdigo, as como sus datos. Flujo nico: un programa de flujo nico (single-Thread) utiliza un solo hilo para controlar su ejecucin. Por defecto, cualquier programa applet o aplicacin Java, tiene un hilo denominado principal (Thread). En estos programas este hilo no necesita explicitarse, pues por defecto son de flujo nico. Realizan las operaciones indicadas en un solo hilo o nica tarea y terminan. En otros terminos, un programa en ejecucin en Java es un hilo. Flujo mltiple: un programa de flujo mltiple o multitarea, utiliza varios contextos de ejecucin para realizar su trabajo. Cada tarea se inicia y termina tan pronto como sea posible, lo cual es una facilidad para la entrada de datos en sistemas en tiempo real, especialmente si estos son de diferentes fuentes. En este caso, se dice que ademas del hilo principal del programa en ejeccin, este tiene otros hilos, o tareas parelas en ejecucin. Se puede definir hilo como una secuencia nica de control de flujo dentro de un programa. Entendiendo que puede haber ms de una secuencia de control o hilos. Java permite realizar programacinmultihilo, el cual consiste en programas que contienen dos o ms partes que se ejecutan de manera concurrente. Una parte que se ejecuta independientemente de las dems se denomina un hilo (thread). En un entorno de multitarea basada en hilos, el hilo es la unidad de cdigo ms pequea que se puede seleccionar para ejecucin. La programacin basada en multihilos, permite escribir programas ms eficientes ya que optimizan los recursos de la Unidad Central de Proceso (CPU), al reducir al mnimo los tiempos de inactividad. Este es un factor muy importante manejo de entornos interactivos, como es el caso del trabajo en la red, en dondeProgramacin de Hilos: Introduccin las velocidades de transmisin son mucho ms lentas que los requeridos por laCPU en el procesamiento de esos datos, as como tambien durante el manejo del sistema de archivos, lectura y grabacin, que son ms lentos que las velocidades de la CPU en su proceso. Las animaciones y los juegos por ejemplo, requieren de una mayor optimizacin de los recursos de CPU. Al mostrarse un archivo o una imgen dentro de un navegador y acceder en seguida a una direccin electronica o URL para una bsqueda, es un ejemplo de aplicacin multihilo. Sin esta caracterstica, sera necesario esperar a que el archivo se bajara de la red o se cargara la imagen para poder acceder a una direccion URL para un proceso de bsqueda. Con la programacin multihilo, se aprovecha el tiempo del procesador realizando otra tarea en la red son multihilo. La programacin multihilo permite acceder a los recursos de tiempo libre de la CPU, mientras se realizan otras tareas. Es otra de las razones de importanciapara el estudio de sistemas basados en multihilos.El modelo multihilo est inmerso en el interpretede Java, ya que las bibliotecasde clases estan diseadas teniendo en mente este modelo. Los hilos formanparte de todos los programas en Java. Un hilo dentro de un programa Java es un procedimiento que se puede ejecutar independiente del resto de una aplicacin.La siguiente figura ilustra esquemticamente un programa de un hilo y un programa de dos hilos.

Cuando se ejecuta una aplicacin en Java, se ejecuta el mtodo main() en un hilo dedicado, as como tambin los applets se ejecutan en hilos dedicados, lo cual hace explcito que el concepto de hilo es esencial del trabajo en Java. Un hilo puede detenerse sin afectar las otras partes del programa. Por ejemplo en un hilo de animacin, se hace que los bucles de la animacin se detengan durante un tiempo, un segundo, sin hacer que se pare el resto del programa. Cuando un hilo se detiene o se bloquea, slo el se detiene y los dems continan con su ejecucin. La creacin de un hilo, como la necesidad de un procedimiento que se har de manera concurrente con otros procedimientos, pasa por la definicin del procedimiento que se llamar repetidamente, por ejemplo el procedimiento en un applet que muestra una animacin, mientras se reproduce un clip de audio y se capturan los clicks del ratn. Aqu la animacin consiste en exhibir a intervalos de tempo una secuencia de imagenes de tal manera que se de la sensacin de movimiento.

Resumen
Un hilo es un nico flujo de ejecucin dentro de un proceso. El cual es un programa ejecutndose dentro de su propio espacio de direcciones. Java es un sistema multiproceso, esto significa que soporta varios procesos corriendo a la vez dentro de sus propios espacios de direcciones. Mientras escribimos se est ejecutando. De esta forma, se puede pensar que los procesos son anlogos a las aplicaciones o a programas aislados, pero cada proceso tiene asignado espacio propio de ejecucin dentro del sistema.Un hilo es una secuencia de cdigo en ejecucin dentro del contexto de un proceso. Los hilos no pueden ejecutarse ellos solos; requieren la supervisin de un proceso padre para correr. Dentro de cada proceso hay varios hilos ejecutndose. Los hilos a menudo son conocidos o llamados procesos ligeros. Un hilo, en efecto, es muy similar a un proceso pero con la diferencia de que un hilo siempre corre dentro del contexto de otro programa. Por el contrario, los procesos mantienen su propio espacio de direcciones y entorno de operaciones. Los hilos dependen de un programa padre en lo que se refiere a recursos de ejecucin. La siguiente figura muestra le relacin entre hilos y procesos.

summary
A thread is a single stream of execution within a process. Which is a program running in its own address space. Java is a multithreaded system, this means that supports many processes running at once within its own address space. As we write it is running. Thus, we may assume that the processes are analogous to applications or isolated programs, but each process is assigned its own space within the sistema.Un execution thread is a sequence of code execution within the context of a process. The threads can not run themselves; require the supervision of a parent process to run. Within each process there are multiple threads executing. The yarns are known or often called lightweight processes. A thread in fact is very similar to a process but with the difference that one thread always runs in the context of another program. By contrast, the processes maintain its own address space and operating environment. The yarns are dependent on a parent program in respect to execution resources. The following figure shows you relationship between threads and processes.

Enunciado del problema


Desarrollar una solucin en java que permita ingresar el cdigo del producto tipo de producto marca cantidad de producto de venta precio del producto a la vez que imprima una boleta en formato PDF. Desarrollar los siguientes mtodos Agregar, mostrar, buscar y Eliminar. Implementar en el proyecto un hilo reproductor de msica. Descripcin de la solucin del problema 1. Definicin del proyecto de solucin .Para solucionar el problema se crear un proyecto denominado Tienda_De_Electro, dentrodel cual se definir el paquete los siguientes paquete Principal(el cual incluye el jFrame) ; Icon(donde estn almacenadas las imgenes);JavaPdf(donde se encuentra la clase Archivos); Tienda(donde se encuentra la clase JDialogCompras,JDialogVentas,JFrameTienda, Reproductor ,Tienda1,TiendaElectroSA) y se incluir el paquetebiblioteca (el cual incluye la claseLectura).

.2. Definicin del algoritmo. Resultado deseado: Mostrar una boleta de pago en Pdf. Datos necesarios:tipo de producto cdigo del producto tipo del producto Marca del producto Total Precio Procesamiento:el usuario ingresa el cdigo, tipo del producto, marca del producto, total de venta ,precio del producto y es almacenado en las variable TipoDeProducto, codigo, marca,numeroDeVenta y precioDeVenta . Luego, se realizar el clculo del total a pagar.El resultado se almacenar en una variable ( ganancias)para luego ser mostradas por pantalla. 2. Definicin del paquete Aplicacin En el paqueteTienda definiremos tres clases.La funcin de la primera clase ser de procesamiento y almacenamiento de datos.Como buena prctica de programacin, en los mtodos de esta clase, no serealizar ingreso de datos, ni se mostrarn mensajes de ningn tipo. Pero, si seutilizarn los mismos nombres para referirnos a variables locales y a los atributos

Arreglos en Paralelo y Archivos con GUI


6

Creamos un nueva aplicacin en java con nombre Tienda_De_Electo Creamos los siguientes paquetes:

Biblioteca: Importamos la Clase LE aportada de Ing. Juan Flores Cueto docente encargado del curso de lenguaje programacin II. En la cual nos ayudara con los cuadros de mensajes de entrada y salida (JOptionPane). Tienda: Enese paquete colocaremos los Jdialog y las clases de contendrn los arreglos. Y la clase del hilo musical. Icon: En este paquete estarn la imgenes importadas para el uso en Button y lo Label. Javapdf: En este paquete creamos una clase archivos donde controlara el uso de archivos donde podremos direccionar el archivo creado con un JFileChooser.

Paquete Biblioteca/Clase LE
package Biblioteca; import java.awt.*; import javax.swing.*; publicclassLE { public static double leerDouble(String mensaje) { String cadena = leerString(mensaje); try { return Double.parseDouble(cadena); } catch (NumberFormatException e) { mostrarError("Error... debe ingresar un nmero "); return leerDouble(mensaje); } } Public static long leerLong(String mensaje) { String cadena = leerString(mensaje); try { return Long.parseLong(cadena); } catch (NumberFormatException e) { mostrarError("Error... debe ingresar un nmero "); return leerLong(mensaje); } } Public static void mostrarError(String mensaje) { JOptionPane.showMessageDialog(null, mensaje, "Error", JOptionPane.ERROR_MESSAGE); } publicstaticvoidmostrarInformacion(String mensaje) { JOptionPane.showMessageDialog(null, mensaje, "Informacin", JOptionPane.INFORMATION_MESSAGE); } publicstaticintmostrarPreguntaOpcion2(String mensaje) { return JOptionPane.showOptionDialog(null, mensaje, "Pregunta", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); }

PaqueteJavapdf/Archivos
packageJavapdf; importcom.itextpdf.text.*; import java.io.*; import Biblioteca.LE; importcom.itextpdf.text.pdf.PdfWriter; importjava.util.logging.Level; importjava.util.logging.Logger; importjavax.swing.*; importjavax.swing.filechooser.FileNameExtensionFilter; import mp3seth.Main; publicclassArchivos { private File destino = null; publicArchivos() { } publicvoidcrear_PDF(String k, String c) { Colocar_Destino(); if (this.destino != null) { try { // se crea instancia del documento Document mipdf = newDocument(); PdfWriter.getInstance(mipdf, newFileOutputStream(this.destino + ".pdf")); mipdf.open(); mipdf.add(new Paragraph(c)); mipdf.close(); LE.mostrarInformacion("Archivo guardado"); } catch (DocumentException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } catch (FileNotFoundException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } } publicvoidColocar_Destino() { FileNameExtensionFilter filter = newFileNameExtensionFilter("Archivo PDF", "pdf", "PDF"); JFileChooserfileChooser = newJFileChooser(); fileChooser.setFileFilter(filter); int result = fileChooser.showSaveDialog(null); if (result == JFileChooser.APPROVE_OPTION) { this.destino = fileChooser.getSelectedFile().getAbsoluteFile(); } } }

Paquete Principal/Inicio

privatejavax.swing.JButtonjButton3; privatejavax.swing.JDesktopPanejDesktopPane1; privatejavax.swing.JLabeljLabel4; privatejavax.swing.JLabellbl3; privatejavax.swing.JLabellblsegundo;

Desarrollo de (inicio) GUI / Sours:


package Principal; Importamos los comandos para el uso import Tienda.JFrameTienda; del hilo import javax.swing.JOptionPane; import java.util.logging.Level; import java.util.logging.Logger; publicclassInicioextends javax.swing.JFrame { publicInicio() { initComponents(); setSize(586, 193); setLocationRelativeTo(this); hilos h = new hilos(); h.start();

Creamos el Mtodo del Hilo

setTitle("Ventana de Seguridad PtyfInal De lenguaje de Programacion II"); }

10

SE Crea el mtodo hilos() de tipo privado con el mtodo Thread


Creamos un objeto ob de la clase JFrameTienda y cuando el hilo se inicialice en 0, y al llegar el contador a 100% esta permita visualizar el JFrameTienda y se cierre la ventana inicio.
privateclasshilosextends Thread { JFrameTienda ob = newJFrameTienda(); intcontador = 0; publicvoidrun() { while (true) { try { lblsegundo.setText(Integer.toString(contador++)); contador = contador + 5; Thread.sleep(1000); if (contador == 105) { ob.setVisible(true); this.dis(); contador = 0; } } catch (InterruptedException ex) { Logger.getLogger(Inicio.class.getName()).log(Level.SEVERE, null, ex); } } } privatevoiddis() { dispose(); } } publicstaticvoidmain(String args[]) { try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) {java.util.logging.Logger.getLogger(Inicio.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(Inicio.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(Inicio.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(Inicio.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } java.awt.EventQueue.invokeLater(new Runnable() { publicvoidrun() { newInicio().setVisible(true); } }); }

11

Paquete Tienda/TiendaElectroSA
Creamos la clase TiendaElectroSA en la cual crearemos los arreglos con los siguientes datos String tipoDeProducct, longcdigo, String marca,doubleprecioDeCompra,doubleprecioDeVenta, intnumeroDeProducto 1 package Tienda; 2 3 public class TiendaElectroSA { 4 String tipoDeProduccto[]; 5 longcodigo[]; 6 String marca[]; 7 doubleprecioDeCompra[]; 8 doubleprecioDeVenta[]; 9 intnumeroDeProducto[]; 10 intnumeroDecompras; 11 intnumeroDeVentas; 12 publicTiendaElectroSA() { 13 tipoDeProduccto = newString[99]; 14 codigo = newlong[99]; 15 marca = newString[99]; 16 precioDeCompra = newdouble[99]; 17 precioDeVenta = newdouble[99]; 18 numeroDeProducto=newint[99]; 19 numeroDeVentas=0; 20 numeroDecompras=0; 21 } 22 public void aumentar() { 23 longcodigoProducto[] = newlong[codigo.length + 3]; 24 String tipoP[]=new String[tipoDeProduccto.length+3]; 25 String marc[]=new String[marca.length+3]; 26 doubleprCompra[]=newdouble[precioDeCompra.length+3]; 27 doubleprVenta[]=newdouble[precioDeVenta.length+3]; 28 for(int i=0;i<numeroDeVentas;i++){ 29 codigoProducto[i]=codigo[i]; 30 tipoP[i]=tipoDeProduccto[i]; 31 marc[i]=marca[i]; 32 prCompra[i]=precioDeCompra[i]; 33 prVenta[i]=precioDeVenta[i]; 34 } 35 codigo=codigoProducto; 36 tipoDeProduccto=tipoP; 37 marca=marc; 38 precioDeCompra=prCompra; 39 precioDeVenta=prVenta; 40 } 41 42 publicString[] getTipoDeProduccto() { 43 returntipoDeProduccto; 44 } 45 publicvoidsetTipoDeProduccto(String[] tipoDeProduccto) { 46 this.tipoDeProduccto = tipoDeProduccto; 47 } 48 publiclong[] getCodigo() {

12

49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

returncodigo; } publicvoidsetCodigo(long[] codigo) { this.codigo = codigo; } publicString[] getMarca() { returnmarca; } publicvoidsetMarca(String[] marca) { this.marca = marca; } publicdouble[] getPrecioDeCompra() { returnprecioDeCompra; } publicvoidsetPrecioDeCompra(double[] precioDeCompra) { this.precioDeCompra = precioDeCompra; } publicdouble[] getPrecioDeVenta() { returnprecioDeVenta; } publicvoidsetPrecioDeVenta(double[] precioDeVenta) { this.precioDeVenta = precioDeVenta; } publicdoubleGanancias(intnum,doubleprecio) { double ganancias=0; ganancias=num*precio; returnganancias; } publicintgetNumeroDeVentas() { returnnumeroDeVentas; } publicvoidsetNumeroDeVentas(intnumeroDeVentas) { this.numeroDeVentas = numeroDeVentas; } publicint[] getNumeroDeProducto() { returnnumeroDeProducto; } publicvoidsetNumeroDeProducto(int[] numeroDeProducto) { this.numeroDeProducto = numeroDeProducto; } }

13

Paquete Tienda/Tienda1
Creamos en esta clase las variables con los mismos datos de la clase anterior. 1 package Tienda; 2 publicclassTienda1 { 3 String tipoDeProduccto; 4 longcodigo; 5 String marca; 6 doubleprecioDeCompra; 7 doubleprecioDeVenta; 8 doubleganancias; 9 intnumeroDeProducto; 10 intnumeroDeVentas; 11 intnumeroDecompras; 12 publicTienda1() { 13 tipoDeProduccto = ""; 14 codigo = 0; 15 marca = ""; 16 precioDeCompra =0; 17 precioDeVenta = 0; 18 ganancias = 0; 19 numeroDeVentas = 0; 20 numeroDecompras=0; 21 numeroDeProducto=0; 22 } 23 24 publicStringgetTipoDeProduccto() { 25 returntipoDeProduccto; 26 } 27 publicvoidsetTipoDeProduccto(String tipoDeProduccto) { 28 this.tipoDeProduccto = tipoDeProduccto; 29 } 30 publiclonggetCodigo() { 31 returncodigo; 32 } 33 publicvoidsetCodigo(longcodigo) { 34 this.codigo = codigo; 35 } 36 public String getMarca() { 37 returnmarca; 38 } 39 publicvoidsetMarca(String marca) { 40 this.marca = marca; 41 } 42 publicdoublegetPrecioDeCompra() { 43 returnprecioDeCompra; 44 } 45 publicvoidsetPrecioDeCompra(doubleprecioDeCompra) { 46 this.precioDeCompra = precioDeCompra; 47 } 48 publicdoublegetPrecioDeVenta() { 49 returnprecioDeVenta; 50 }

14

51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

publicvoidsetPrecioDeVenta(doubleprecioDeVenta) { this.precioDeVenta = precioDeVenta; } publicdoublegetGanancias() { returnganancias; } publicvoidsetGanancias(double ganancias) { this.ganancias = ganancias; } publicintgetNumeroDeVentas() { returnnumeroDeVentas; } publicvoidsetNumeroDeVentas(intnumeroDeVentas) { this.numeroDeVentas = numeroDeVentas; } publicintgetNumeroDecompras() { returnnumeroDecompras; } publicvoidsetNumeroDecompras(intnumeroDecompras) { this.numeroDecompras = numeroDecompras; } publicintgetNumeroDeProducto() { returnnumeroDeProducto; } publicvoidsetNumeroDeProducto(intnumeroDeProducto) { this.numeroDeProducto = numeroDeProducto; } }

Paquetetienda/HiloMusica
En esta clase usamos la clase del hilo Runnable que la implementaremos con el JDialogVentas que har reproducir una msica que esta direccionada desde otra clase Reproductor mientras hagamos los registros de ventas. 1 package Tienda; 2 import java.util.logging.Level; 3 import java.util.logging.Logger; 4 publicclassHiloMusicaimplements Runnable { Clase de un hilo 5 publicvoidrun() { 6 try { 7 Reproductor o = newReproductor(); 8 o.reproducemp3(); 9 System.out.println("Sonandomusica"); 10 } catch (Exception ex) { 11 Logger.getLogger(HiloMusica.class.getName()).log(Level.SEVERE, null, ex); 12 } 13 } 14 }

15

Paquete tienda/Reproducto
En esta clase direccionaremos el lugar de origen en la cual la msica se reproducir utilizando javazoom 1 package Tienda; 2 import java.io.File; Importamos javazoom 3 import javazoom.jlgui.basicplayer.BasicPlayer; 4 publicclassReproductor { 5 public BasicPlayer player; 6 publicReproductor() { 7 player = newBasicPlayer(); 8 } 9 10 publicvoidPlay() throws Exception { 11 player.play(); 12 } 13 publicvoidAbrirFichero(String ruta) throws Exception { 14 player.open(new File(ruta)); 15 } 16 publicvoidStop() throws Exception { 17 player.stop(); 18 } 19 publicvoidreproducemp3 ()throws Exception{ Direccion en la 20 try { cual se 21 Reproductormi_reproductor = newReproductor(); reproducir la 22 mi_reproductor.AbrirFichero("G:/usb/zMusic/mana.mp3"); musica 23 mi_reproductor.Play(); 24 } catch (Exception ex) { 25 System.out.println("Error: " + ex.getMessage()); 26 } 27 } 28 }

JFrameTienda
Interfaz principal donde podemos controlar el manejo de compras y ventas de la tienda de electros Electro House.

16

privatejavax.swing.JDesktopPanejDesktopPane1; privatejavax.swing.JLabeljLabel1; privatejavax.swing.JLabeljLabel2; privatejavax.swing.JLabeljLabel3; privatejavax.swing.JLabeljLabel4; privatejavax.swing.JLabeljLabel5; privatejavax.swing.JLabeljLabel6; privatejavax.swing.JMenuBarjMenuBarPrincipal; privatejavax.swing.JMenuItemjMenuComprasDElectros; privatejavax.swing.JMenuItemjMenuItemSalirDelSistema; privatejavax.swing.JMenujMenuSalir; privatejavax.swing.JMenuItemjMenuVentas; privatejavax.swing.JMenujMenurepor; // End of variables declaration private javax.swing.JDialog dialogo;

privatevoidjMenuVentasActionPerformed(java.awt.event.ActionEventevt){ dialogo=newJDialogVentas(this, true); dialogo.setLocationRelativeTo(this); dialogo.setTitle("Proyecto Final Tienda De Electros S.A (Ventas)"); dialogo.setVisible(true); }

17

privatevoidjMenuComprasDElectrosActionPerformed(java.awt.event.ActionEventevt ){ dialogo=newJDialogCompras(this,true); dialogo.setLocationRelativeTo(this); dialogo.setTitle("Proyecto Final Tienda De Electros S.A (compras)");dialogo.setVisible(true); }

privatevoidjMenuItemSalirDelSistemaActionPerformed(java.awt.event.ActionEvente vt){ int respuesta = JOptionPane.showConfirmDialog(this, "Est seguro...?", "Dilogo de Confirmacin", JOptionPane.YES_NO_OPTION); if (respuesta == JOptionPane.YES_OPTION) { System.exit(WIDTH); } }

18

JDialogCompras
Interfaz que nos permite manipular los datos de tipo de producto y marca y la cantidad privatejavax.swing.JTextAreaareaDecompras; privatejavax.swing.JButtonbtnAceptar; privatejavax.swing.ButtonGroupbuttonGroup1; privatejavax.swing.JButtonjButton1; privatejavax.swing.JComboBoxjComboBox3; privatejavax.swing.JComboBoxjComboBoxmarca; privatejavax.swing.JComboBoxjComboBoxtipo; privatejavax.swing.JDesktopPanejDesktopPane1; privatejavax.swing.JLabeljLabel1; privatejavax.swing.JLabeljLabel2; privatejavax.swing.JScrollPanejScrollPane1; privatejavax.swing.JLabellblCompu; privatejavax.swing.JLabellblCompu1; privatejavax.swing.JTextFieldtxtMarca; privatejavax.swing.JTextFieldtxtTipo;

privatevoidjComboBoxtipoActionPerformed(java.awt.event.ActionEventevt){ txtTipo.setText(jComboBoxtipo.getSelectedItem().toString());

19

BotonAceptar
privatevoidbtnAceptarActionPerformed(java.awt.event.ActionEventevt){ Tienda1 obTienda1 = newTienda1(); obTienda1.setTipoDeProduccto(txtTipo.getText()); obTienda1.setMarca(txtMarca.getText()); obTienda1.setNumeroDeProducto(Integer.parseInt(txtTotal.getText())); obTiendaElectroSA.marca[obTiendaElectroSA.numeroDecompras] = obTienda1.getMarca(); obTiendaElectroSA.tipoDeProduccto[obTiendaElectroSA.numeroDecompras] = obTienda1.getTipoDeProduccto(); obTiendaElectroSA.numeroDeProducto[obTiendaElectroSA.numeroDecompras]=obTie nda1.getNumeroDeProducto(); obTiendaElectroSA.numeroDecompras++; txtMarca.setText(""); txtTipo.setText(""); txtTotal.setText(""); LE.mostrarInformacion("se agrego el dato "); }

Botn Mostrar
Permite mostrar en el JtextArea las compras registradas

privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){ String listas = ""; for (int i = 0; i <obTiendaElectroSA.numeroDecompras; i++) { listas += obTiendaElectroSA.tipoDeProduccto[i] + "" + obTiendaElectroSA.marca[i]+ ""+ obTiendaElectroSA.numeroDeProducto[i] + "\n"; } areaDecompras.setText("tipos de produto }

marca de producto

total\n" + listas);

20

JDialogVentas
Formulario JDilog que permitir desarrollar los mtodos agregar, mostrar, eliminar, buscar por cdigo del arreglo y tambin los botones de clculo, limpieza es sern visible en un Text Area y guardar en pdf y si el cdigo ya existe y/o inversa que se muestre en mensaje.

// Variables declaration - do not modify privatejavax.swing.JDesktopPanejDesktopPane1; privatejavax.swing.JLabeljLabel1; privatejavax.swing.JLabeljLabel2; privatejavax.swing.JLabeljLabel3; privatejavax.swing.JLabeljLabel4; privatejavax.swing.JLabeljLabel5; privatejavax.swing.JLabeljLabel6; privatejavax.swing.JMenuBarjMenuBarPrincipal; privatejavax.swing.JMenuItemjMenuComprasDElectros; privatejavax.swing.JMenuItemjMenuItemSalirDelSistema; privatejavax.swing.JMenujMenuSalir; privatejavax.swing.JMenuItemjMenuVentas; // End of variables declaration private javax.swing.JDialog dialogo

21

Desarrollo del hilo musical: mientras que agregamos los datos el hilo har un reproduccin automtica. package Tienda; importBiblioteca.LE; importJavapdf.Archivos; publicclassJDialogVentasextendsjavax.swing.JDialog { HiloMusicamiHilo; Thread musicalThread; TiendaElectroSA objTiendaElectroSA = newTiendaElectroSA(); Tienda1 oTienda = newTienda1(); publicJDialogVentas(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); setSize(713, 873); setLocationRelativeTo(this); miHilo=newHiloMusica(); musicalThread=new Thread(miHilo); musicalThread.start(); }

Desarrollo del Hilo

22

Motodos del JDialogVentas Agregar:


privatevoidbtnAGregarDatosActionPerformed(java.awt.event.ActionEventevt){ int pos; longcodig; int rpt; double precio = Double.parseDouble(txtPrecio.getText()); int numVentas = Integer.parseInt(txtTotal.getText()); do { if (objTiendaElectroSA.codigo.length == objTiendaElectroSA.numeroDeVentas) { objTiendaElectroSA.aumentar(); } codig = Long.parseLong(txtCodigo.getText()); pos = buscaCodigo(codig); if (pos != -1) { LE.mostrarInformacion("el codigo ya existe..."); limpiar(); } oTienda.setCodigo(Long.parseLong(txtCodigo.getText())); oTienda.setTipoDeProduccto(txtTipo.getText()); oTienda.setMarca(txtMarca.getText()); oTienda.setPrecioDeVenta(Double.parseDouble(txtPrecio.getText())); oTienda.setGanancias(objTiendaElectroSA.Ganancias(numVentas, precio)); oTienda.setNumeroDeProducto(Integer.parseInt(txtTotal.getText())); objTiendaElectroSA.numeroDeProducto[objTiendaElectroSA.numeroDeVentas] = oTienda.getNumeroDeProducto(); objTiendaElectroSA.codigo[objTiendaElectroSA.numeroDeVentas]=oTienda.getCodigo(); objTiendaElectroSA.marca[objTiendaElectroSA.numeroDeVentas]=oTienda.getMarca(); objTiendaElectroSA.tipoDeProduccto[objTiendaElectroSA.numeroDeVentas]=oTienda.getT ipoDeProduccto(); objTiendaElectroSA.precioDeVenta[objTiendaElectroSA.numeroDeVentas] = oTienda.getPrecioDeVenta(); objTiendaElectroSA.numeroDeVentas++; limpiar(); LE.mostrarInformacion("se ingresaron los datos"); } while (true); } public voidlimpiar() { txtCodigo.setText(""); txtTipo.setText(""); txtMarca.setText(""); txtPrecio.setText(""); txtTotal.setText(""); txtTotalAPagar.setText(""); txtTotalAPagar.setText(""); }

23

Mostrar:
Muestra los datos ingresados ingresados por el usuario en un Text Area privatevoidbtnImprimirActionPerformed (java.awt.event.ActionEventevt){ String Lista = ""; for (int i = 0; i <objTiendaElectroSA.numeroDeVentas; i++) { Lista += objTiendaElectroSA.codigo[i] + "" + objTiendaElectroSA.tipoDeProduccto[i]+ "" + objTiendaElectroSA.marca[i] + "" + objTiendaElectroSA.precioDeVenta[i] + "" + "\n"; } AreaMostrar.setText("codigo tipo marca Precio\n" + Lista); }

24

Eliminar
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){ long cod = LE.leerLong("ingrese codigo para eleminar"); int pos = buscaCodigo(cod); if (pos != -1) { objTiendaElectroSA.marca[pos]); if (rpt == 0) { for (int i = pos; i <objTiendaElectroSA.numeroDeVentas - 1; i++) { objTiendaElectroSA.codigo[i] = objTiendaElectroSA.codigo[i + 1]; objTiendaElectroSA.marca[i] = objTiendaElectroSA.marca[i + 1]; objTiendaElectroSA.tipoDeProduccto[i] = objTiendaElectroSA.tipoDeProduccto[i + 1]; objTiendaElectroSA.precioDeVenta[i] = objTiendaElectroSA.precioDeVenta[i + 1]; } objTiendaElectroSA.numeroDeVentas--; } else { LE.mostrarError("el codigo no existe"); } } }

25

Buscar Por Codigo


privatevoidbtnBuscarActionPerformed(java.awt.event.ActionEventevt){ longcod = LE.leerLong("ingrese codigo a buscar"); int pos = buscaCodigo(cod); String lista = ""; if (pos == -1) { LE.mostrarInformacion("el codigo no existe.."); } for (int i = 0; i <objTiendaElectroSA.numeroDeVentas; i++) { lista = "Codigo del producto : " + objTiendaElectroSA.codigo[pos] + "\n" + "El la marca es: " + objTiendaElectroSA.marca[pos] + "\n" + "El tipo de producto es : " + objTiendaElectroSA.tipoDeProduccto[pos] + "\n" + "precio de producto es: " + objTiendaElectroSA.precioDeVenta[pos] + "\n" + "La catidad vendida es: " + objTiendaElectroSA.numeroDeProducto[pos] + "\n" + "_____________________________________________________"; } AreaMostrar.setText(lista); }

26

Uso de los botones:

Aceptar

Hace el clculo del el total a pagar por la venta de electrodomsticos.

Calculo total a pagar=total*precio

private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { calcular(); } privatevoidcalcular() { try { double precio = Double.parseDouble(txtPrecio.getText()); int numVentas = Integer.parseInt(txtTotal.getText()); txtTotalAPagar.setText(String.valueOf(objTiendaElectroSA.Ganancias(numVentas, precio))); } catch (Exception e) { LE.mostrarError("se produjo errores"); } }

27

Limpiar

Limpia todos las cajas de textos incluyendo el Text Area sin perder informacin de las ventas

private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) { AreaMostrar.setText(""); limpiar(); }

Uso de Archivos
Guardar con este botn podemos guardar la informacin de venta a un cliente e imprimirla como un recibo de venta. privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){ Archivos boleta = newArchivos(); String lis1 = ""; String lis2 = ""; for (int i = 0; i <objTiendaElectroSA.numeroDeVentas; i++) { lis1 = "codigo tipo de producto marca cantidades \n" + "___________________________________________________\n"; lis2 += objTiendaElectroSA.codigo[i] + "" + objTiendaElectroSA.tipoDeProduccto[i] + "" + objTiendaElectroSA.marca[i] + "" + objTiendaElectroSA.numeroDeProducto[i] + "\n"; } boleta.crear_PDF(lis1 + lis2, lis1 + lis2); }

28

Al darle un clic el botn Guardar con saldr el JFileChooser que nos permitir direccionar donde guardaremos la informacin de venta y si el archivopdf fue guardado correctamente nos mostrara un mensaje Llamada desde la clase LE.

Al salirnos ese mensaje iremos a la direccin donde lo guardamos en este caso la unidad (D:) Factura

Esto quiere decir que los datos fueron guardados en un pdf correctamente.

29

30

Anda mungkin juga menyukai