Grupo Colegio Mexiquense Universitario
Ing. en Sistemas Computacionales
Ing. de Software
Profesor: Ing. S.C. Vianey Soltero Prez
Alumno: Jonathan Lpez Zepeda
Sabatino 2 semestre
Proyecto calculadora
Introduccin
En este proyecto se llevar a cabo el desarrollo de software de una calculadora
con operaciones simples (suma, resta, multiplicacin, divisin). Para poder realizar
el software se aplicar la ingeniera de software correspondiente teniendo un
objetivo general y especifico, as como la investigacin de requerimientos
funcionales y no funcionales, el modelo que se utilizar para el desarrollo del
software, se aplicaran los casos de uso identificando la funcin de cada actor, as
como de la aplicacin.
Objetivo General
Desarrollar una calculadora que sea capaz de realizar las operaciones bsicas
como suma, resta, multiplicacin y divisin, el usuario introducir la cantidad por
medio de botones, la validacin de la calculadora ser realizada en el botn punto
donde solo se podr introducir una nica ves el punto.
Objetivos especficos
Anlisis
1.-La calculadora identificara el tipo de operacin que desea realizar el usuario a
travs de cada botn por operacin.
2.-Mostrara la operacin realizada y resultado
3.-Solo se podr utilizar introducir el punto una sola ocasin
Diseo
1.-Su diseo ser simple cada nmero y operacin ser un botn,
2.-Todo nmero se mostrar en una caja de texto no editable.
3.- Mostrar la operacin completa en la parte superior de la calculadora.
4.-Mostrara el resultado en la caja de texto no editable
Desarrollo
1.-El software se desarrollar en el lenguaje java
Modelo
El modelo que utilizare para el desarrollo de la calculadora ser el modelo en
cascada ya que me permite perfeccionar cada fase del software, ya que es un
proyecto pequeo y los requisitos son claros y entendibles el modelo en cascada
es el correcto para este proyecto.
imagen 1 modelo cascada
Anlisis
Requisitos
Un requerimiento es la definicin de cada entrada y salida del
software divididos en requerimientos funcionales y no funcionales
Requerimientos funcionales
1.-Sumar 2 nmeros
Se obtendr el primer nmero digitalizado por el usuario en la
caja de texto guardndolo en una variable al presionar el botn +,
y se mostrar el contenido de la variable en la parte superior
seguida del smbolo +, y se limpiar la caja de texto.
Se obtendr el segundo nmero digitalizado por el usuario en la
caja de texto guardndolo en una segunda variable y realizar la
suma guardando el resultado en una tercera variable.
Mostrar la operacin completa en la parte superior y el resultado
en la caja de texto al presionar el botn =.
2.-Restar 2 nmeros
Se obtendr el primer nmero digitalizado en la caga de texto
guardndolo en una variable al presionar el botn -, y se mostrar el
contenido de la variable en la parte superior seguida del smbolo -, y
se limpiar la caja de texto.
Se obtendr el segundo nmero digitalizado en la caja de texto
guardndolo en una segunda variable y realizar la resta guardado el
resultado en una tercera variable.
Mostrar la operacin completa en la parte superior y el resultado en
la caja de texto al presionar el botn =.
3.-multiplicar 2 nmeros
Se obtendr el primer nmero digitalizado en la caga de texto
guardndolo en una variable al presionar el botn *, y se mostrar el
contenido de la variable en la parte superior seguida del smbolo *, y
se limpiar la caja de texto.
Se obtendr el segundo nmero digitalizado en la caja de texto
guardndolo en una segunda variable y realizar la resta guardado el
resultado en una tercera variable.
Mostrar la operacin completa en la parte superior y el resultado en
la caja de texto al presionar el botn =.
4.-Dividir 2 nmeros
Se obtendr el primer nmero digitalizado en la caga de texto
guardndolo en una variable al presionar el botn /, y se mostrar el
contenido de la variable en la parte superior seguida del smbolo /, y
se limpiar la caja de texto.
Se obtendr el segundo nmero digitalizado en la caja de texto
guardndolo en una segunda variable y realizar la resta guardado el
resultado en una tercera variable.
Mostrar la operacin completa en la parte superior y el resultado en
la caja de texto al presionar el botn =.
5.-limpiara pantalla
Se podr limpiar pantalla o borrar todo por completo
Se podr eliminar el ultimo numero digitalizado
Requisitos no funcionales
1.-Se desarrollar en el lenguaje java
El lenguaje java es la mejor opcin para este pequeo proyecto ya
que nos permite trabajar con grafica facilitndonos mucho la
programacin, indicando instrucciones de accin a cada botn.
Diseo de sistema
La calculadora generara las operaciones bsicas de acuerdo a las acciones que
tome el usuario.
7
1
6
2
4
3
imagen 2 interface de calculadora autor: Jonathan Lpez
1.-Caja donde se visualizarn los nmeros que el usuario digitalic y el resultado
de las operaciones
2.-Teclado numrico: al presionar el botn el nmero correspondiente se mostrar
en la caja de texto.
3.-Boton punto: se validar que solo se pueda mostrar una sola ocasin para
dividir los enteros de los decimales.
4.-Teclado operaciones: al presionar el botn se captura el nmero que se
encuentra en la caja y se guarda en una variable y se muestra en la caja superior
(7), as como el operador para identificar el tipo de operacin a realizar y se limpia
la caja
5.-Botn igual: al presionar el botn se captura el nmero que se encuentra en la
caja y se guarda en una segunda variable, se lee el valor de la variable operador y
se identifica la operacin que se realizara, se muestra el resultado en la
caja y la operacin en la caja superior
6.-Botones borrar: CE limpia por completo ambas cajas. C solo elimina el ltimo
nmero que se digito.
7.-Caja donde se visualizarn los nmeros despus de presionar un botn de
operacin o se mostrara la operacin completa al presionar el botn igual (=).
Casos de Usos
imagen 3 caso de uso calculadora autor: Jonathan Lpez
Manual de usuario
El uso de la calculadora es bsico su interface es sencilla e intuitiva, el
teclado numrico esta en manera ascendente
Ilustracin
imagen
0 Teclado
Numrico
Cada botn mandara su valor a la ventana para visualizarlos
imagen 0 Caja vaca
imagen 0 Caja con nmeros insertados a travs del teclado numrico
Al presionar los botones de operacin, se limpiar la ventana y el nmero que se
encontraba hay pasar en la parte superior con el smbolo del operador
presionado
imagen 0 Teclado operaciones
imagen 0 Caja de operacin
muestra primer nmero y operados
presionado
Al presionar el botn igual se limpiarn las ventanas para poder mostrar
el resultado en la primera ventana y en la parte superior la operacin completa
imagen: 0 Cajas limpias
imagen 0 Caja superior muestra operacin completa y en la caja principal se muestra el
resultado de la operacin
El botn punto solo se podr colocar una nica ocasin separando los enteros de
los decimales
imagen 0
Botn punto
imagen 0 Caja principal se visualiza
la accin del punto
Botones limpiar o borrar
: Limpia por completo ambas ventanas
: Borra ultimo digito en la primera ventana
imagen 0
Botones limpiar
y borrar
imagen 0 Se muestra una operacin a la cual se le borrara el ltimo nmero ingresado
imagen 0 Se muestra el resultado al presionar el botn C
Manual tcnico
La calculadora est desarrollada en lenguaje java, sobre el IDE NETBEANS se le
dio la siguiente interface
imagen 0 Interface de Calculadora
Las controles utilizados son botones, caja de texto(MostrarDatos) y una
etiqueta(DatosSegundoPlano).
Los botones del teclado numerico se le asigno el numero correspondiente, as
como al momento de precionarlo se mostrara en la caja de texto, a traves de un
evento.
imagen 0 Cdigo del botn 1 del teclado numrico
El boton PUNTO se crea una cadena donde se guardaran los numeros que se
encuentren en la caja de texto. En caso de que la caja de texo este basia se
colocara un 0.
Crearemos un metodo publico para evitar que se coloque mas de un punto,
recorriendo toda la cadena, si no existe punto lo colocara al final, pero si existe no
colocara nada
imagen 0 Cdigo botn punto
Los botones del teclado de operaciones se les asigno el operador
correspondiente a la variable operador, al momento de precionarlo, guardara el
numero que se encuentra en la caja de texto(MostrarDatos) en una variable
llamada numero1, se limpia la caja de texto, y por ultimo se mostrara el contenido
de la variable numero1 en la etiqueta.
imagen 0 Teclado operaciones
imagen 0 Cdigo botn operador ms (+)
Botn IGUAL, ser donde se realicen las operaciones, para eso
crearemos un mtodo pblico con tres parmetros donde le enviaremos el valor de
las variables numero1, numero2 y operador, dentro del mtodo identificaremos
que tipo de operador se est recibiendo y a partir de este se realizar la operacin,
se mostrara el resultado en la caja de texto y la operacin completa en la etiqueta.
imagen 0 Cdigo botn igual (=)
Botones limpiar, su funcin es mandar una cadena baca a la caja de texto y a la
etiqueta
imagen 0 Cdigo botn limpiar cajas
Botn borrar, su funcin es una borrar el ultimo digito que se encuentra en la caja
de texto, lo que hacemos es recuperar lo que se encuentra en la caja de texto y
guardarlo en una cadena, leer la cadena y darle el mismo valor de la cadena-1 y
mandamos a mostrar a la caja de texto.
imagen 0 Cdigo botn borrar ultimo digito
cdigo fuente
package jona;
public class calculadoraFinal extends [Link] {
//declaracion de variables para guardar numeros ingresados en la caja de texto
String numero1;
String operador;
String numero2;
public calculadoraFinal() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
MostrarDatos = new [Link]();
num7 = new [Link]();
num8 = new [Link]();
num9 = new [Link]();
divicion = new [Link]();
num4 = new [Link]();
num5 = new [Link]();
num6 = new [Link]();
numtiplicacion = new [Link]();
num1 = new [Link]();
num2 = new [Link]();
num3 = new [Link]();
resta = new [Link]();
num0 = new [Link]();
punto = new [Link]();
suma = new [Link]();
igual = new [Link]();
jButton1 = new [Link]();
jButton2 = new [Link]();
DatosSegundoPlano = new [Link]();
setDefaultCloseOperation([Link].EXIT_ON_CLOSE);
setMinimumSize(new [Link](290, 230));
getContentPane().setLayout(null);
[Link](false);
[Link]([Link]);
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
MostrarDatosActionPerformed(evt);
}
});
getContentPane().add(MostrarDatos);
[Link](30, 30, 216, 30);
[Link]("7");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num7ActionPerformed(evt);
}
});
getContentPane().add(num7);
[Link](10, 70, 39, 23);
[Link]("8");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num8ActionPerformed(evt);
}
});
getContentPane().add(num8);
[Link](60, 70, 39, 23);
[Link]("9");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num9ActionPerformed(evt);
}
});
getContentPane().add(num9);
[Link](110, 70, 39, 23);
[Link]("/");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
divicionActionPerformed(evt);
}
});
getContentPane().add(divicion);
[Link](160, 70, 37, 23);
[Link]("4");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num4ActionPerformed(evt);
}
});
getContentPane().add(num4);
[Link](10, 100, 39, 23);
[Link]("5");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num5ActionPerformed(evt);
}
});
getContentPane().add(num5);
[Link](60, 100, 39, 23);
[Link]("6");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num6ActionPerformed(evt);
}
});
getContentPane().add(num6);
[Link](110, 100, 39, 23);
[Link]("*");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
numtiplicacionActionPerformed(evt);
}
});
getContentPane().add(numtiplicacion);
[Link](160, 100, 39, 23);
[Link]("1");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num1ActionPerformed(evt);
}
});
getContentPane().add(num1);
[Link](10, 130, 39, 23);
[Link]("2");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num2ActionPerformed(evt);
}
});
getContentPane().add(num2);
[Link](60, 130, 39, 23);
[Link]("3");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num3ActionPerformed(evt);
}
});
getContentPane().add(num3);
[Link](110, 130, 39, 23);
[Link]("-");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
restaActionPerformed(evt);
}
});
getContentPane().add(resta);
[Link](160, 130, 37, 23);
[Link]("0");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
num0ActionPerformed(evt);
}
});
getContentPane().add(num0);
[Link](60, 160, 39, 23);
[Link](".");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
puntoActionPerformed(evt);
}
});
getContentPane().add(punto);
[Link](210, 160, 37, 23);
[Link]("+");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
sumaActionPerformed(evt);
}
});
getContentPane().add(suma);
[Link](160, 160, 41, 23);
[Link]("=");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
igualActionPerformed(evt);
}
});
getContentPane().add(igual);
[Link](210, 130, 40, 23);
[Link]("C");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1);
[Link](210, 100, 40, 23);
[Link]("CE");
[Link](new [Link]() {
public void actionPerformed([Link] evt) {
jButton2ActionPerformed(evt);
}
});
getContentPane().add(jButton2);
[Link](210, 70, 45, 23);
[Link]([Link]);
[Link]("");
getContentPane().add(DatosSegundoPlano);
[Link](30, 0, 210, 20);
pack();
}// </editor-fold>
//declaracion de evento al precionar el boton 0
private void num0ActionPerformed([Link] evt) {
[Link]([Link]() + "0");//se envia y se muestra el nmero 0
}
//declaracion de evento al precionar el boton 1
private void num1ActionPerformed([Link] evt) {
[Link]([Link]() + "1");//se envia y se muestra el nmero 1
}
//declaracion de evento al precionar el boton 2
private void num2ActionPerformed([Link] evt) {
[Link]([Link]() + "2");//se envia y se muestra el nmero 2
}
//declaracion de evento al precionar el boton 3
private void num3ActionPerformed([Link] evt) {
[Link]([Link]() + "3");//se envia y se muestra el nmero 3
}
//declaracion de evento al precionar el boton 4
private void num4ActionPerformed([Link] evt) {
[Link]([Link]() + "4");//se envia y se muestra el nmero 4
}
//declaracion de evento al precionar el boton 5
private void num5ActionPerformed([Link] evt) {
[Link]([Link]() + "5");//se envia y se muestra el nmero 5
}
//declaracion de evento al precionar el boton 6
private void num6ActionPerformed([Link] evt) {
[Link]([Link]() + "6");//se envia y se muestra el nmero 6
}
//declaracion de evento al precionar el boton 7
private void num7ActionPerformed([Link] evt) {
[Link]([Link]() + "7");//se envia y se muestra el nmero 7
}
//declaracion de evento al precionar el boton 8
private void num8ActionPerformed([Link] evt) {
[Link]([Link]() + "8");//se envia y se muestra el nmero 8
}
//declaracion de evento al precionar el boton 9
private void num9ActionPerformed([Link] evt) {
[Link]([Link]() + "9");//se envia y se muestra el nmero 9
}
//declaracion de evento al precionar el boton punto
private void puntoActionPerformed([Link] evt) {
String cadena;//declaracion de la variable cadena
cadena = [Link]();//se captura lo que esta dentro de la caja de texto
if ([Link]() <= 0) {//se lee la cadena si esta vacia entra si no pasara al else if
[Link]("0.");//si no existe numero se colocara un 0 antes del punto
} else if (!existepunto([Link]())) {//se leera si existe un punto
[Link]([Link]() + ".");//si no exite se colocara al final
}
}
public static boolean existepunto(String cadena) {//metodo si existe punto
boolean resultado;//varaible resultado
resultado = false;//se inicializa la variable en falso
for (int i = 0; i < [Link](); i++) {//si existe un punto no entrara al if
if ([Link](i, i + 1).equals(".")) {//si no existe un punto lo ingresara
resultado = true;
break;
}
}
return resultado;
}
//metodo boton suma
private void sumaActionPerformed([Link] evt) {
if (![Link]().equals("")) {//se captura lo que esta en la caja de texto
numero1 = [Link]();//se guarda en la variable numero1
operador = "+";//se guarda el valor + en la variable operador
[Link]("");//mandamos una cadena vacia para limpiar la caja de texto
String n1;//declaracion de variable n1
n1 = numero1;//guardamos el contenido de la variable numero1 en n1
[Link](n1 + "+");//mostramos el valor de la variable n1 y el operador
}
}
//metodo boton igual
private void igualActionPerformed([Link] evt) {
String resultado;//declaracion de variable resultado
numero2 = [Link]();//se captuta lo que se encuentra en la caja
if () {//se verifica si la cadena esta basia
resultado = calculo(numero1, numero2, operador);//se envian los valores de las variables al
metodo calculo y se asigna el valor resultante a la variable resultado
[Link](resultado);//se manda el valor de la variable resultado a la caja de
texto
}
String n1, n2, op;//declaracion de variables tipo string
n1 = numero1;//asignamos el valor de numero1 a n1
n2 = numero2;//asignamos el valor de numero2 a n2
op = operador;//asignamos el valor de operador a op
[Link](n1 + op + n2);//se envian los valores de las variables a la
etiqueta
}
public static String calculo(String numero1, String numero2, String operador) {// metodo calculo
Double resultado = 0.0;//se crea variable tipo double y se inicializa en 0
String respuesta;//se crea la variable respuesta
if ([Link]("-")) {//se identifica el valor del operador si es el signo - entrara a restar los
valores de las variables n1 y n2
resultado = [Link](numero1) - [Link](numero2);//se restan
los valores de las variables n1-n2
}
if ([Link]("+")) {//se identifica el operador +
resultado = [Link](numero1) + [Link](numero2);//se suman los
valores de las variables n1+n2
}
if ([Link]("*")) {//se identifica el operador *
resultado = [Link](numero1) * [Link](numero2);//se multiplican
los valores de las variables n1*n2
}
if ([Link]("/")) {//se identifica el operador /
resultado = [Link](numero1) / [Link](numero2);//se dividen los
valores de las variables n1/n2
}
respuesta = [Link]();//se guarda el valor de la varible resultado en la variable
respuesta
return respuesta;//se retorna el valor de la variable respuesta
}
//boton borrar
private void jButton1ActionPerformed([Link] evt) {
String cadena;//se crea la variable cadena
cadena = [Link]();//se captura el contenido de la caja y se guarda en la
variable cadena
if ([Link]() > 0) {//se identifica que la cadena no este vacia
cadena = [Link](0, [Link]() - 1);//se guarda el valor de la cadena menos
el ultimo elemento en la misma variable cadena
[Link](cadena);//se envian los valores de la cadena a la caja de texto
}
}
//botones limpiar caja y etiqueta
private void jButton2ActionPerformed([Link] evt) {
[Link]("");//se envia cadena vacia a la caja
[Link]("");//se envia cadena vacia a la etiqueta
}
// boton resta
private void restaActionPerformed([Link] evt) {
if (![Link]().equals("")) {
numero1 = [Link]();
operador = "-";
[Link]("");
String n1;
n1 = numero1;
[Link](n1 + "-");
}
}
private void numtiplicacionActionPerformed([Link] evt) {
if (![Link]().equals("")) {
numero1 = [Link]();
operador = "*";
[Link]("");
String n1;
n1 = numero1;
[Link](n1 + "*");
}
}
private void divicionActionPerformed([Link] evt) {
if (![Link]().equals("")) {
numero1 = [Link]();
operador = "/";
[Link]("");
String n1;
n1 = numero1;
[Link](n1 + "/");
}
}
private void MostrarDatosActionPerformed([Link] evt) {
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see [Link]
*/
try {
for
([Link]
[Link]()) {
info
if ("Nimbus".equals([Link]())) {
[Link]([Link]());
break;
}
}
} catch (ClassNotFoundException ex) {
[Link]([Link]()).log([Link]
[Link], null, ex);
} catch (InstantiationException ex) {
[Link]([Link]()).log([Link]
[Link], null, ex);
} catch (IllegalAccessException ex) {
[Link]([Link]()).log([Link]
[Link], null, ex);
} catch ([Link] ex) {
[Link]([Link]()).log([Link]
[Link], null, ex);
}
//</editor-fold>
/* Create and display the form */
[Link](new Runnable() {
public void run() {
new calculadoraFinal().setVisible(true);
}
});
}
// Variables declaration - do not modify
private [Link] DatosSegundoPlano;
private [Link] MostrarDatos;
private [Link] divicion;
private [Link] igual;
private [Link] jButton1;
private [Link] jButton2;
private [Link] num0;
private [Link] num1;
private [Link] num2;
private [Link] num3;
private [Link] num4;
private [Link] num5;
private [Link] num6;
private [Link] num7;
private [Link] num8;
private [Link] num9;
private [Link] numtiplicacion;
private [Link] punto;
private [Link] resta;
private [Link] suma;
// End of variables declaration
}
Validacin
La aplicacin que se desarrollo es la correcta al igual que su funcionalidad ya que
al manejar una interface, su uso es intuitivo para el usuario.
La validacin que se realizaron fueron las sig.
Validacin de cajas
No se puede introducir letras ni nmeros directamente
Imagen 1 cajas
Validacin de botn numrico
Al presionar el botn solo se mostrara el nmero correspondiente
Imagen 2 teclado
numrico
Validacin botn punto
Al presionar el botn se detectara si existe un punto en la caja, si no existe se
colocara al final, en caso de que no exista nmero alguno se colocara un [Link] la
caja
Imagen 3
botn punto