Calculadora Científica en Java: Proyecto IT
Calculadora Científica en Java: Proyecto IT
Msc(InformationTechnology)
a la
Universidad de Panjab
He puesto esfuerzo en este proyecto. Sin embargo, no habría sido posible sin el
amable apoyo y ayuda de muchas personas y organizaciones. Me gustaría extender mi
sinceros agradecimientos a todos ellos.
Me gustaría expresar mi gratitud hacia mis padres y nuestro profesor Paramjiit Singh
por su amable cooperación y aliento que me ayudaron en la finalización de esto
proyecto.
Me gustaría expresar mi especial agradecimiento y gracias a las personas de la industria por brindarme
tal atención y tiempo.
La interfaz debe estar acoplada con algoritmos de validación de datos y manejo de errores con
en un módulo. Dado que los efectos secundarios se propagan a través de las interfaces del programa, es esencial que
verifique todos los datos fluyendo de un módulo a otro.
DFD significa diagrama de flujo de datos. DFD es una técnica gráfica que representa información.
y las transformaciones que se aplican a medida que los datos se mueven de la entrada a la salida. El DFD también
conocido como Gráfico de Burbuja. El diagrama de flujo de datos puede usarse para representar un sistema o
software en cualquier nivel de abstracción. De hecho, DFD puede ser dividido en un nivel que
representa un flujo de información creciente y detalles funcionales. Por lo tanto, el DFD
proporciona un mecanismo para la modelización funcional así como para la modelización de flujos. Al hacerlo,
satisface el segundo principio de análisis operativo.
PLAN DE PRUEBA
•Functional Testing:
Durante la prueba funcional, el software del módulo se trata como una caja negra,
and the test cases are decided on basis of the specifications of the system
o módulo. Esta forma de prueba se llama "Pruebas de Caja Negra". El enfoque
está en probar los comportamientos del sistema.
Pruebas de rendimiento:
El software que proporciona funciones requeridas pero no se ajusta a
el requisito de rendimiento es inaceptable. Las pruebas de rendimiento están diseñadas
sobre el rendimiento en tiempo de ejecución de software en el contexto de un
sistema integrado. Las pruebas de rendimiento ocurren en todos los pasos en el
proceso de prueba. Incluso a nivel de unidad, el rendimiento de un módulo puede
ser evaluado como una prueba de caja blanca realizada. Sin embargo, no es hasta que todo el sistema
los elementos están completamente integrados para que el verdadero rendimiento del sistema pueda
se determinará. Las pruebas de rendimiento a menudo se combinan con pruebas de estrés y
a menudo requieren tanto hardware como software.
INTRODUCCIÓN AL PROYECTO
Simple
•Orientado a objetos
Robusto
Seguro
•Neutral en arquitectura
Portátil
Alto rendimiento
•Multihilo
Dinámico
Con la mayoría de los lenguajes de programación, o bien compilas o interpretas un programa para que tú
puedes ejecutarlo en tu computadora. El lenguaje de programación Java es inusual en que un
el programa se compila e interpreta. Con el compilador, primero traduces un
programa en un lenguaje intermedio llamado bytecodes de Java—la independencia de la plataforma
códigos interpretados por el intérprete en la plataforma Java. El intérprete analiza y ejecuta
cada instrucción de bytecode de Java en la computadora. La compilación ocurre solo una vez;
la interpretación ocurre cada vez que se ejecuta el programa. La siguiente figura ilustra
cómo funciona esto.
Puedes pensar en los bytecodes de Java como las instrucciones de código máquina para la máquina virtual de Java.
Máquina (Java VM). Cada intérprete de Java, ya sea una herramienta de desarrollo o una Web
un navegador que puede ejecutar applets, es una implementación de la máquina virtual de Java.
Los bytecodes de Java ayudan a hacer posible el lema 'escribe una vez, ejecuta en cualquier lugar'. Puedes compilar tu
programar en bytecodes en cualquier plataforma que tenga un compilador de Java. Los bytecodes pueden luego
se puede ejecutar en cualquier implementación de la JVM de Java. Eso significa que mientras una computadora tenga
una JVM, el mismo programa escrito en el lenguaje de programación Java puede ejecutarse en
Windows 2000, una estación de trabajo Solaris, o en un iMac.
LA PLATAFORMA JAVA
Una plataforma es el entorno de hardware o software en el que se ejecuta un programa. Hemos
ya mencioné algunas de las plataformas más populares como Windows 2000, Linux,
Solaris y MacOS. La mayoría de las plataformas se pueden describir como una combinación del sistema operativo
sistema y hardware. La plataforma Java se diferencia de la mayoría de las otras plataformas en que es un
plataforma solo de software que funciona sobre otras plataformas basadas en hardware.
La API de Java es una gran colección de componentes de software listos para usar que proporcionan muchos
capacidades útiles, como los widgets de la interfaz gráfica de usuario (GUI). La API de Java es
agrupados en bibliotecas de clases e interfaces relacionadas; estas bibliotecas se conocen como
paquetes.
El código nativo es el código que, después de compilarlo, se ejecuta en un entorno específico.
plataforma de hardware. Como un entorno independiente de la plataforma, la plataforma Java puede ser un
un poco más lento que el código nativo. Sin embargo, compiladores inteligentes, intérpretes bien ajustados y simple-
Los compiladores de bytecode en tiempo real pueden ofrecer un rendimiento cercano al del código nativo sin
portabilidad amenazante. El compilador de Java te permite encadenar referencias a clases y
métodos de instancia y variables juntos, resultando en construcciones como la que aparece
en el programa de muestra.
REQUISITOS DE HARDWARE Y SOFTWARE
Impresora
REPRESENTACIÓN DEL PROYECTO
CÓDIGO FUENTE
importar [Link].*;
importar [Link].*;
super(str);
addWindowListener(new WindowAdapter() {
[Link](0);
});
CalcFrame fr;
MenuBar mb;
Vista del menú, fuente, acerca de;
campoDeTexto display;
double initialNumber;
doble currentNumber = 0;
int lugaresDecimales = 0;
[Link]();
int contar = 1;
[Link](200,270);
[Link]([Link]);
mb = new MenuBar();
vista = nuevo Menú("Vista");
[Link](this);
[Link](this);
[Link](this);
[Link](this);
[Link](this);
[Link](básico);
[Link](sciéntifico);
[Link](negrita);
[Link](regular);
[Link].añadir(autor);
[Link](vista);
[Link](fuente);
[Link](acerca de);
[Link](mb);
[Link](null);
key[count].addActionListener(this);
key[count].setBackground([Link]);
[Link](clave[count++]);
key[0].addActionListener(this);
key[0].setBounds(30,210,BWIDTH,BHEIGHT);
key[0].setBackground([Link]);
[Link](clave[0]);
key[10].addActionListener(this);
key[10].setBounds(60,210,BWIDTH,BHEIGHT);
key[10].setBackground([Link]);
[Link](key[10]);
key[11].addActionListener(this);
key[11].setBounds(90,210,BWIDTH,BHEIGHT);
key[11].setBackground([Link]);
[Link](clave[11]);
key[12].addActionListener(this);
key[12].setBounds(120,120,BWIDTH,BHEIGHT);
key[12].setBackground([Link]);
[Link](clave[12]);
key[13].addActionListener(this);
key[13].setBounds(120,150,BWIDTH,BHEIGHT);
key[13].setBackground([Link]);
[Link](clave[13]);
key[14].addActionListener(this);
key[14].setBounds(120,180,BWIDTH,BHEIGHT);
key[14].setBackground([Link]);
[Link](clave[14]);
key[15].addActionListener(this);
key[15].setBounds(120,210,BWIDTH,BHEIGHT);
key[15].setBackground([Link]);
[Link](clave[15]);
key[16].addActionListener(this);
key[16].setBounds(150,120,BWIDTH,BHEIGHT);
key[16].setBackground([Link]);
[Link](clave[16]);
key[17].addActionListener(this);
key[17].setBounds(150,150,BWIDTH,BHEIGHT);
key[17].setBackground([Link]);
[Link](clave[17]);
key[18].addActionListener(this);
key[18].setBounds(150,180,BWIDTH,BHEIGHT);
key[18].setBackground([Link]);
[Link](clave[18]);
key[19].addActionListener(this);
key[19].setBounds(150,210,BWIDTH,BHEIGHT);
key[19].setBackground([Link]);
[Link](Clave[19]);
[Link](this);
[Link]([Link]);
[Link](borrarTodo);
[Link](this);
[Link]([Link]);
[Link](clearEntry);
[Link](this);
[Link](redondear);
[Link](30,90,150,20);
[Link]([Link]);
scientificKey[0].addActionListener(this);
scientificKey[0].setVisible(false);
scientificKey[0].setBackground([Link]);
[Link](claveCientífica[0]);
scientificKey[1].addActionListener(this);
scientificKey[1].setBackground([Link]);
scientificKey[1].setVisible(false);
[Link](claveCientífica[1]);
scientificKey[2].addActionListener(this);
scientificKey[2].setBackground([Link]);
scientificKey[2].setVisible(false);
[Link](scientificKey[2]);
scientificKey[3].addActionListener(this);
scientificKey[3].setBounds(180, 210, BWIDTH + 10, BHEIGHT);
scientificKey[3].setBackground([Link]);
scientificKey[3].setVisible(false);
[Link](scientificKey[3]);
scientificKey[4].addActionListener(this);
scientificKey[4].setBackground([Link]);
scientificKey[4].setVisible(false);
[Link](claveCientífica[4]);
scientificKey[5].addActionListener(this);
scientificKey[5].setBackground([Link]);
scientificKey[5].setVisible(false);
[Link](claveCientífica[5]);
scientificKey[6].addActionListener(this);
scientificKey[6].setBackground([Link]);
scientificKey[6].setVisible(false);
[Link](claveCientífica[6]);
scientificKey[7].addActionListener(this);
scientificKey[7].setVisible(false);
[Link](claveCientífica[7]);
scientificKey[8].addActionListener(this);
scientificKey[8].setBackground([Link]);
scientificKey[8].setVisible(false);
[Link](claveCientífica[8]);
scientificKey[9].addActionListener(this);
scientificKey[9].setBackground([Link]);
scientificKey[9].setVisible(false);
[Link](scientificKey[9]);
[Link](this);
[Link](this);
[Link](false);
[Link](false);
[Link](grados);
[Link](radianes);
[Link](display);
[Link](true);
si(puntoDecimalPresionado) {
currentNumber *= 10;
currentNumber /=10;
++lugaresDecimal;
[Link]([Link](currentNumber));
else if (roundButtonPressed) {
displayNumber *= 10;
displayNumber = [Link](displayNumber);
displayNumber /=10;
}
[Link]([Link](displayNumber));
roundButtonPressed = false;
else {
[Link]([Link]((int)currentNumber));
if(buttonText == "+") {
addButtonPressed = true;
initialNumber = displayNumber;
currentNumber = 0;
decimalPointPressed = false;
si (buttonText == "-") {
subtractButtonPressed = true;
initialNumber = displayNumber;
currentNumber = 0;
decimalPointPressed = false;
if (buttonText == "/") {
divideButtonPressed = true;
númeroInicial = númeroMostrar;
currentNumber = 0;
decimalPointPressed = false;
si (botonTexto == "*") {
multiplyButtonPressed = true;
initialNumber = displayNumber;
currentNumber = 0;
decimalPointPressed = false;
if (buttonText == "1/x") {
[Link](reciproco(displayNumber));
currentNumber = 0;
decimalPointPressed = false;
if (buttonText == "+/-") {
[Link](cambiarSigno(númeroDisplay));
currentNumber = 0;
decimalPointPressed = false;
if (buttonText == "x!") {
[Link](factorial(displayNumber));
currentNumber = 0;
decimalPointPressed = false;
si (buttonText == "x^n") {
powerButtonPressed = true;
initialNumber = displayNumber;
currentNumber = 0;
decimalPointPressed = false;
si (buttonText == "Sin") {
si ([Link]())
[Link]([Link]([Link]([Link] * displayNumber/180)));
else {
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
if (buttonText == "Cos") {
si ([Link]())
[Link]([Link]([Link]([Link] * displayNumber/180)));
else{
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
si (textoDelBotón == "Tan") {
si ([Link]())
[Link]([Link]([Link]([Link] * displayNumber/180)));
else {
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
si (buttonText == "aSin") {
si ([Link]())
else {
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
if (buttonText == "aCos") {
si ([Link]())
else {
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
}
if (buttonText == "aTan") {
si ([Link]())
else {
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
if (buttonText == "todeg")
[Link]([Link]([Link](displayNumber)));
if (buttonText == "torad")
[Link]([Link]([Link](displayNumber)));
if (buttonText == "Pi") {
[Link]([Link]([Link]));
currentNumber =0;
decimalPointPressed = false;
si (buttonText == "Redonda")
roundButtonPressed = true;
si (textoDelBotón == ".") {
int i;
decimalPointPressed = true;
para (i = 0; i < [Link](); ++i) {
if([Link](i) == '.') {
decimalPointFound = true;
continuar;
si (!decimalPointFound)
decimalPlaces = 1;
if(buttonText == "CA"){
restablecerTodosLosBotones();
[Link]("0");
currentNumber = 0;
si (textoBotón == "CE") {
[Link]("0");
currentNumber = 0;
decimalPointPressed = false;
si (textoBotón == "E") {
[Link]([Link](Math.E));
currentNumber = 0;
decimalPointPressed = false;
si (buttonText == "=") {
currentNumber = 0;
si(addButtonPressed)
[Link]([Link](initialNumber + displayNumber));
si(sePresionaBotónRestar)
[Link]([Link](initialNumber - displayNumber));
if (divideButtonPressed) {
if(displayNumber == 0) {
MessageBox mb = new MessageBox ( fr, "Error ", true, "Cannot divide by zero.");
[Link]();
de lo contrario
[Link]([Link](initialNumber/displayNumber));
if(multiplyButtonPressed)
[Link]([Link](initialNumber * displayNumber));
si (botónDeEncendidoPresionado)
[Link](poder(númeroInicial, númeroDeDisplay));
resetAllButtons();
si (buttonText == "Autores") {
MessageBox mb = new MessageBox ( fr, "Calculadora ver 1.0 beta ", true, "Autores: Aarti
Kohli (aarti_nkr@[Link]) \t Shruti Manchanda (shruti.virgo89@[Link]) \t
Sakshi Taneja (simmytaneja@[Link])
[Link]();
si ([Link]() == "Básico") {
[Link](true);
[Link](false);
[Link]("Basic Calculator");
[Link](200,270);
if (scientificKey[0].isVisible()) {
scientificKey[i].setVisible(false);
[Link](false);
[Link](false);
si ([Link]() == "Científico") {
[Link](false);
[Link](true);
[Link]("Scientific Calculator");
[Link](270,270);
si (!scientificKey[0].isVisible()) {
scientificKey[i].setVisible(true);
[Link](true);
[Link](true);
addButtonPressed = false;
subtractButtonPressed = false;
multiplyButtonPressed = false;
divideButtonPressed = false;
decimalPointPressed = false;
powerButtonPressed = false;
roundButtonPressed = false;
if (theNum < 1) {
[Link]();
retornar ("0");
}
else {
theNum *= i;
return [Link](theNum);
si (num == 0) {
[Link]();
sino
num = 1/num;
return [Link](num);
return [Link](-num);
[Link](lbl);
add(centrePanel, "Center");
ok = new Botón("OK");
[Link](this);
[Link](ok);
agregar(southPanel, "Sur");
empaquetar();
[Link](0);
});
Pocas características, que pueden ser introducidas más tarde en el software para mejorarlo: