jueves, 22 de febrero de 2018

Proyecto Personal - Calculadora

Proyecto Personal - Calculadora

Bueno antes de empezar, quiero confesarles que me llevo casi 2 meses ( los hacia cada viernes, sábado y domingo) y gracias a los tutoriales u recomendaciones de amigos que conocen la programación. Ahora presentare la interfaz gráfica de mi calculadora.


Para personalizar los botones, ir a este link: 
https://www.youtube.com/watch?v=lGHM5BQsbUQ
(copiar y pegar en el URL)

En total agregar 27 botones, 2 labels para la fecha y hora, 1 por si quieren ponerle un titulo, y 1 para el fondo (hacer esto despues de diseñar el formulario, poner diseño absoluto) y un jTextField para la pantalla


En los numerales poner de 0 al 9, 4 de ellos para los signos, mas, menos, multiplicar y dividir, 2 de ellos para que limpie el campo de texto, 1 para que sea el numero positivo o negativo, el punto grande que esta en la imagen es el separador decimal y 2 de ellos para minimizar o cerrar la calculadora.

Listo? Ahora empecemos a programar:

lo primero es importar algunas librerias:

import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.swing.Timer;


Declarar variables dentro del "public class"

String memoria1, signo, memoria2;
boolean minimizar = false;


En el "public" hacemos lo siguiente:
 public Calculadora() {
     initComponents();
     this.setSize(349, 600);
     this.setLocationRelativeTo(this); 
     this.setIconImage(new ImageIcon(getClass().getResource
          ("/Imagenes/calculadora.png")).getImage());
     this.setTitle("CiberCalculadora");
     txtpantalla.setEditable(false);
        
     //FECHA DEL SISTEMA
     Date sistFecha=new Date();
     SimpleDateFormat formato=new SimpleDateFormat("dd"                  +"MMMMM YYYY");
     txtFecha.setText(formato.format(sistFecha));
        
     //HORA DEL SISTEMA
     Timer tiempo=new Timer(100, new Calculadora.horas());
     tiempo.start();
    }


  • El codigo,  this.setSize(349, 600); es el tamaño del formulario
  • El codigo, this.setLocationRelativeTo(this); es para que al momento de ejecutar la aplicacion nos aparezca al medio de la pantalla de nuestra PC.
  • esta linea de codigo  this.setIconImage(newImageIcon(getClass().getResource
              ("/Imagenes/calculadora.png")).getImage());  es para cambiarle el icono de nuestro formulario ya que por defecto siempre aparece el logo de JAVA.
  • Este codigo, this.setTitle("CiberCalculadora"); es el titulo de nuestro formulario.

El codigo donde dice : //HORA DEL SISTEMA.. para que se muestre la hora lo primero es crear una clase como veremos aqui:

class horas implements ActionListener{
    
      public void actionPerformed(ActionEvent e){
          Date sistHora=new Date();
          String pmAm="hh:mm:ss a";
          SimpleDateFormat format=new SimpleDateFormat(pmAm);
          Calendar hoy=Calendar.getInstance();
          txtHora.setText(String.format(format.format(sistHora),hoy));
      }
  }


Ahora crearemos un método publico estático, ahi es donde se hara el calculo, y tambien ingresaremos 3 parametros de tipo String:

public static String calculadora(String memo1,String memo2,String sig){
      Double resultado=0.0;
      String respuesta;
        
      if (sig.equals("-"))                                                                                resultado=Double.parseDouble(memo1)Double.parseDouble +
       + (memo2);// + es una sola linea de codigo
      if (sig.equals("+")) 
      resultado=Double.parseDouble(memo1)+Double.parseDouble+
      +(memo2); // el + es una sola linea de codigo
      if (sig.equals("*")) 
      resultado=Double.parseDouble(memo1)*Double.parseDouble+
      +(memo2);// el + es una sola linea de codigo
       if (sig.equals("/")) 
       resultado=Double.parseDouble(memo1)/Double.parseDouble+
       +(memo2);// el + es una sola linea de codigo
       respuesta=resultado.toString();
       return respuesta;
    }
Con este codigo llamaremos al boton igual para que realice el calculo


Ahora a programar los numeros:

El boton 1, seria asi:
  txtpantalla.setText(txtpantalla.getText()+"1");
 
el txtpantalla es el nombre de nuestra variable en el jTextField, lo primero es devolver el 1 para luego obtener el 1, ejemplo:
"si presionamos el boton '1' seria el uno, correcto?; ahora si presionamos dos veces '1'  ya no seria uno, sino once y asi seria con los otros numeros. El codigo para los otros numero es el mismo lo que cambia es el uno, lo cambiamos y escribimos (2,3,4,5,6,7,8,9,0) 


Ahora a programar el punto decimal:

Antes de programar el boton punto, primero creamos un metodo publico estatico de tipo booleano con parametro de tipo String, para saber si necesitamos calcular con números decimales o no:

public static boolean existepunto(String cadena){
        boolean resultado1;
        resultado1=false;
        
        for (int i = 0; i < cadena.length(); i++) {
            if (cadena.substring(i, i+1).equals(".")) {
                resultado1=true;
                break;
            } 
        }
        return resultado1;           
    }


Una vez hecho el metodo ahora programaremos el botón punto

String cadena;
        cadena=txtpantalla.getText();

        if (cadena.length()<=0) {
            txtpantalla.setText("0.");
        }else{
            if (!existepunto(txtpantalla.getText())) {
                txtpantalla.setText(txtpantalla.getText()+".");
            }
        }


Ahora programaremos los signos + - * / :

        if (!txtpantalla.getText().equals("")) {
            memoria1=txtpantalla.getText();
            signo="+";
            txtpantalla.setText("");
        }

la condicion dice de que si la pantalla es diferente (campo vacio) la variable "memoria1 capturará el primer numero ingresado y luego el operando, en este caso el signo + (que va a sumar) y luego limpiara el campo de texto.

El resto de los signos es el mismo codigo solo que cambian ahora los signos.


Ahora programaremos el boton +/- (positivo o negativo)

        Double num;
        String cadena;
        cadena=txtpantalla.getText();
        if (cadena.length()>0) {
            num=(-1)*Double.parseDouble(cadena);
            txtpantalla.setText(num.toString());
        }

Con este codigo hacemos el cambio de signo en los numeros, sea positivo o negativo.


Ahora programaremos el boton 1/x (fraccion - N°denominador)

        String indice;
        Double num;
        indice=txtpantalla.getText();
        if (indice.length()>0) {
            num=1/(Double.parseDouble(indice));
            txtpantalla.setText(num.toString());
        }
Con este código, el numero que ingresemos en la pantalla, se convertirá en el numero denominador de numerador el 1, y calculará al hacer click en el botón.


Ahora programaremos en C y el CE:

el C:
        String cadena;
        cadena=txtpantalla.getText();
        if (cadena.length()>0) {
            cadena=cadena.substring(0, cadena.length()-1);
            txtpantalla.setText(cadena);
        }

Este codigo quiere decir que borrara uno por uno si damos click en el boton "C"


el CE:
       txtpantalla.setText("");
Este codigo es sencillo, solo limpiaremos toda la pantalla


y finalmente el boton igual:

        String resultado;
        memoria2=txtpantalla.getText();

        if (!memoria2.equals("")) {
            resultado=calculadora(memoria1,memoria2,signo);
            txtpantalla.setText(resultado);
        }

Declarar una variable de tipo string, capturar la memoria2 y hacer la condicion que si memoria2 es diferente (campo vacio) procedera a calcular y llamar al metodo publico "calculadora" e ingresar las variables dentro del parentesis, limpiar la pantalla e imprimir en la pantalla el resultado.


Para acabar, programar el boton minimizar y cerrar:

minimizar:
Primero ya deberia estar declarado la variable de tipo booleano como esta en la primera parte de arriba en el public class; ahora a ver el codigo:

     this.setExtendedState(ICONIFIED); //para minimizar
        if (!minimizar) {
            minimizar = false;
        } else {
            minimizar = true;
        }

Cerrar:
Es facil, solo hacer un mensaje como veremos este codigo:

     this.dispose();
        JOptionPane.showMessageDialog
          (null,"Muchas gracias, hasta la proxima","Salir de la                        Aplicacion",JOptionPane.CLOSED_OPTION);
        System.exit(0);

Primero cierrar la ventana y al cerrar nos muestra un mensaje de agradecimiento y cierra el sistema y LISTO ya tenemos nuestra calculadora. ahora a probar nuestra CALCULADORA:

Haremos la suma 12 + 23:




ESTO SERIA TODO....GRACIAS :D
Compartir:

PAG WEB de Farmacia con HTML5 y CSS

Interfaz Principal de la Página Tamaño de Escritorio: Tamaño de Tablet: Tamaño de Celular Movil: Armado de l...