Relatório de Projeto: Calculadora Científica
Relatório de Projeto: Calculadora Científica
Relatório do Projeto
Submetido em Cumprimento Parcial do
Requisitos para o Grau de
para o
Universidade de Panjab
MSc(IT)-1stsem
RECONHECIMENTO
Eu fiz esforços neste projeto. No entanto, não teria sido possível sem o
apoio gentil e ajuda de muitos indivíduos e organizações. Gostaria de estender minha
sinceros agradecimentos a todos eles.
Gostaria de expressar minha gratidão aos meus pais e ao nosso professor Paramjiit Singh
pela sua gentil cooperação e encorajamento que me ajudaram na conclusão disso
projeto.
Gostaria de expressar minha especial gratidão e agradecimentos às pessoas da indústria por me dar
tanta atenção e tempo.
Meus agradecimentos e apreciações também vão para meu colega no desenvolvimento do projeto e
pessoas que me ajudaram voluntariamente com suas habilidades.
VISÃO GERAL DO PROJETO
A interface deve estar acoplada a algoritmos de validação de dados e manipulação de erros com
em um módulo. Porque os efeitos colaterais se propagam através das interfaces do programa, é essencial que
verifique todos os dados fluindo de módulo para módulo.
Dicionário de Dados
O dicionário de dados é o repositório que contém descrições de todos os objetos de dados consumidos
ou produzido pelo software. Está no cerne do modelo de análise. Ou em outras palavras, ele
é metadados (dados sobre dados).
Diagramas DFD detalhados e diagramas de estrutura:
DFD significa diagrama de fluxo de dados. DFD é uma técnica gráfica que retrata informações
e as transformações que são aplicadas à medida que os dados se movem da entrada para a saída. O DFD também é
conhecido como Gráfico de Bolhas. O diagrama de fluxo de dados pode ser utilizado para representar um sistema ou
software em qualquer nível de abstração. Na verdade, o DFD pode ser dividido em um nível que
representa o aumento do fluxo de informações e detalhes funcionais. Portanto, o DFD
fornece um mecanismo para modelagem funcional, bem como modelagem de fluxo. Ao fazer isso, ele
satisfa o segundo princípio da análise operacional.
PLANO DE TESTE
•Teste Funcional:
Durante o teste funcional, o software do módulo é tratado como uma caixa preta,
e os casos de teste são decididos com base nas especificações do sistema
ou módulo. Essa forma de teste é chamada de “Teste de Caixa Preta”. O foco
está testando os comportamentos do sistema.
Testes de Desempenho:
O software que fornece funções necessárias, mas não confirma a
o requisito de desempenho é inaceitável. Os testes de desempenho são projetados
sobre o desempenho de tempo de execução de testes de software dentro do contexto de um
sistema integrado. O teste de desempenho ocorre em todas as etapas no
processo de teste. Mesmo no nível da unidade, o desempenho de um módulo pode
ser avaliado como teste de caixa branca realizado. No entanto, não é até que todo o sistema
os elementos estão totalmente integrados para que o verdadeiro desempenho do sistema possa
ser determinado. Testes de desempenho são frequentemente combinados com testes de estresse e
geralmente exigem tanto hardware quanto software.
INTRODUÇÃO AO PROJETO
(iii)recíproco(num){ se num for zero então mensagem de erro senão num =1/num}
(iv) mudarSinal(num){ muda o sinal do num}
(v) fatorial(num){ se num for menor que 1 mensagem de erro senão faça o fatorial}
(vi) classe MessageBox estende Dialog e implementa ActionListener {
essa classe é chamada de outros métodos para exibir o erro
Crie um construtor
A LINGUAGEM DE PROGRAMÇÃO JAVA
A linguagem de programação Java é uma linguagem de alto nível que pode ser caracterizada por tudo
dos seguintes termos da moda:
Simples
•Orientado a objetos
Robusto
Seguro
•Neutro em relação à arquitetura
Portátil
Alta performance
Multithreaded
Dinâmico
Com a maioria das linguagens de programação, você ou compila ou interpreta um programa para que você
pode executá-lo em seu computador. A linguagem de programação Java é incomum porque uma
o programa é tanto compilado quanto interpretado. Com o compilador, primeiro você traduz um
programa em uma linguagem intermediária chamada bytecodes Java—independente da plataforma
códigos interpretados pelo interpretador na plataforma Java. O interpretador analisa e executa
cada instrução de bytecode Java no computador. A compilação acontece apenas uma vez;
a interpretação ocorre cada vez que o programa é executado. A figura a seguir ilustra
como isso funciona.
Você pode pensar nos bytecodes Java como as instruções de código de máquina para a Java Virtual
Máquina(Java VM). Todo interpretador Java, seja uma ferramenta de desenvolvimento ou um Web
navegador que pode executar applets, é uma implementação da VM Java.
Os bytecodes Java ajudam a tornar possível o 'escreva uma vez, execute em qualquer lugar'. Você pode compilar seu
programar em bytecodes em qualquer plataforma que tenha um compilador Java. Os bytecodes podem então
pode ser executado em qualquer implementação da Java VM. Isso significa que, desde que um computador tenha
uma JVM, o mesmo programa escrito na linguagem de programação Java pode rodar em
Windows 2000, uma estação de trabalho Solaris, ou em um iMac.
A PLATAFORMA JAVA
Uma plataforma é o ambiente de hardware ou software no qual um programa é executado. Nós temos
já mencionei algumas das plataformas mais populares como Windows 2000, Linux,
Solaris e MacOS. A maioria das plataformas pode ser descrita como uma combinação do sistema operacional
sistema e hardware. A plataforma Java difere da maioria das outras plataformas no sentido de que é um
plataforma apenas de software que funciona em cima de outras plataformas baseadas em hardware.
A API Java é uma grande coleção de componentes de software prontos que fornecem muitos
capacidades úteis, como widgets de interface gráfica do usuário (GUI). A API Java é
agrupadas em bibliotecas de classes e interfaces relacionadas; essas bibliotecas são conhecidas como
pacotes.
Código nativo é o código que, após a compilação, é executado em um específico
plataforma de hardware. Como um ambiente independente de plataforma, a plataforma Java pode ser uma
um pouco mais lento do que o código nativo. No entanto, compiladores inteligentes, interpretadores bem ajustados e apenas-
compiladores de bytecode em tempo real podem trazer desempenho próximo ao do código nativo sem
portabilidade ameaçadora. O compilador Java permite que você encadeie referências a classes e
métodos e variáveis de instância juntos, resultando em construções como a que aparece
no programa de amostra.
REQUISITOS DE HARDWARE E SOFTWARE
import [Link].*;
import [Link].*;
super(str);
addWindowListener(new WindowAdapter() {
[Link](0);
});
CalcFrame fr;
MenuBar mb;
Menu
CampoTexto display;
botãoDividirPressionado
dobro initialNumber;
double currentNumber = 0;
int casasDecimais = 0;
[Link]();
int count = 1;
[Link](200,270);
[Link]([Link]);
mb = new MenuBar();
nova Menu("Ver")
Sobre
básico
[Link](this);
científico
[Link](this);
[Link](this);
[Link](this);
[Link](this);
[Link](básico);
[Link](científico);
[Link](negrito);
[Link](regular);
[Link](autor);
[Link](visão);
[Link](fonte);
[Link](sobre);
[Link](mb);
[Link](null);
key[count].addActionListener(this);
key[count].setBackground([Link]);
[Link](chave[count++]);
novo Botão("0")
key[0].addActionListener(this);
key[0].setBounds(30,210,BWIDTH,BHEIGHT);
key[0].setBackground([Link]);
[Link](chave[0]);
new Botão(".")
key[10].addActionListener(this);
key[10].setBounds(60,210,BWIDTH,BHEIGHT);
key[10].setBackground([Link]);
[Link](key[10]);
new Button("=");
key[11].addActionListener(this);
key[11].setBounds(90,210,BWIDTH,BHEIGHT);
key[11].setBackground([Link]);
[Link](chave[11]);
new Button("*");
key[12].addActionListener(this);
key[12].setBounds(120,120,BWIDTH,BHEIGHT);
key[12].setBackground([Link]);
[Link](key[12]);
new Button("/")
key[13].addActionListener(this);
key[13].setBounds(120,150,BWIDTH,BHEIGHT);
key[13].setBackground([Link]);
[Link](chave[13]);
new Button("+");
key[14].adicionarAcaoListener(this);
key[14].setBounds(120,180,BWIDTH,BHEIGHT);
key[14].setBackground([Link]);
[Link](chave[14]);
new Button("-");
key[15].addActionListener(this);
key[15].setBounds(120,210,BWIDTH,BHEIGHT);
key[15].setBackground([Link]);
[Link](chave[15]);
new Button("1/x")
key[16].addActionListener(this);
key[16].setBounds(150,120,BWIDTH,BHEIGHT);
key[16].setBackground([Link]);
[Link](chave[16]);
new Button("x^n")
key[17].addActionListener(this);
key[17].setBounds(150,150,BWIDTH,BHEIGHT);
key[17].setBackground([Link]);
[Link](chave[17]);
novo Botão("+/-");
key[18].addActionListener(this);
key[18].setBounds(150,180,BWIDTH,BHEIGHT);
key[18].setBackground([Link]);
[Link](key[18]);
new Button("x!");
key[19].addActionListener(this);
key[19].setBounds(150,210,BWIDTH,BHEIGHT);
key[19].setBackground([Link]);
[Link](chave[19]);
novo Botão("CA");
[Link](this);
[Link]([Link]);
[Link](limparTudo);
CE
[Link](this);
[Link]([Link]);
[Link](limparEntrada);
[Link](this);
[Link](rodada);
novo TextField("0");
[Link](30,90,150,20);
[Link]([Link]);
new Button("Seno")
scientificKey[0].addActionListener(this);
scientificKey[0].setVisible(false);
scientificKey[0].setBackground([Link]);
[Link](chaveCientífica[0]);
new Button("Cos")
scientificKey[1].addActionListener(this);
scientificKey[1].setBackground([Link]);
scientificKey[1].setVisible(false);
[Link](chaveCientífica[1]);
Botão("Tan")
scientificKey[2].addActionListener(this);
scientificKey[2].setBackground([Link]);
scientificKey[2].setVisible(false);
[Link](chaveCientífica[2]);
Botão("Pi")
scientificKey[3].addActionListener(this);
scientificKey[3].setBounds(180, 210, BWIDTH + 10, BHEIGHT);
scientificKey[3].setBackground([Link]);
scientificKey[3].setVisible(false);
[Link](chaveCientífica[3]);
new Button("aSin");
scientificKey[4].addActionListener(this);
scientificKey[4].setBackground([Link]);
scientificKey[4].setVisible(false);
[Link](chaveCientífica[4]);
novo Botão("aCos")
scientificKey[5].addActionListener(this);
scientificKey[5].setBackground([Link]);
scientificKey[5].setVisible(false);
[Link](chaveCientífica[5]);
new Button("aTan")
scientificKey[6].addActionListener(this);
scientificKey[6].setBackground([Link]);
scientificKey[6].setVisible(false);
[Link](chaveCientífica[6]);
new Button("E");
scientificKey[7].addActionListener(this);
scientificKey[7].setVisible(false);
[Link](scientificKey[7]);
new Button("todeg")
scientificKey[8].addActionListener(this);
scientificKey[8].setBackground([Link]);
scientificKey[8].setVisible(false);
[Link](chaveCientífica[8]);
novo Botão("torad")
scientificKey[9].addActionListener(this);
scientificKey[9].setBackground([Link]);
scientificKey[9].setVisible(false);
[Link](chaveCientifica[9]);
[Link](this);
[Link](this);
[Link](false);
[Link](false);
[Link](degrees);
[Link](radianos);
[Link](exibir);
[Link](true);
se(pontoDecimalPressionado) {
currentNumber *= 10;
currentNumber /=10;
++casasDecimais;
[Link]([Link](currentNumber));
senão se (botãoRedondoPressionado) {
displayNumber *=10;
displayNumber = [Link](displayNumber);
displayNumber /=10;
}
[Link]([Link](displayNumber));
roundButtonPressed = false;
senão {
[Link]([Link]((int)currentNumber));
se(buttonText == "+") {
addButtonPressed = true;
displayNumber;
currentNumber = 0;
decimalPointPressed = false;
se (textoDoBotão == "-") {
subtractButtonPressed = true;
initialNumber = displayNumber;
númeroAtual = 0;
decimalPointPressed = false;
se (buttonText == "/") {
divideButtonPressed = true;
initialNumber = displayNumber;
currentNumber = 0;
decimalPointPressed = false;
se (buttonText == "*") {
multiplyButtonPressed = true;
initialNumber = displayNumber;
numeroAtual = 0;
decimalPointPressed = false;
se (textoBotão == "1/x") {
[Link](reciprocal(displayNumber));
currentNumber = 0;
decimalPointPressed = false;
se (textoDoBotão == "+/-") {
[Link](mudarSinal(displayNumber));
currentNumber = 0;
decimalPointPressed = false;
se (buttonText == "x!") {
[Link](fatorial(displayNumber));
currentNumber = 0;
decimalPointPressed = false;
se (textoBotao == "x^n") {
powerButtonPressed = true;
númeroInicial = númeroDeExibição;
currentNumber = 0;
decimalPointPressed = false;
se (textoDoBotão == "Sin") {
se ([Link]())
[Link]([Link]([Link]([Link] * displayNumber/180)));
senão {
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
se (textoDoBotão == "Cos") {
se ([Link]())
[Link]([Link]([Link]([Link] * displayNumber/180)));
senão{
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
se (buttonText == "Tan") {
se ([Link]())
[Link]([Link]([Link]([Link] * displayNumber/180)));
senão {
[Link]([Link]([Link](displayNumber)));
numeroAtual = 0;
decimalPointPressed = false;
se (textoDoBotão == "aSin") {
se ([Link]())
senão {
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
se (textoDoBotao == "aCos") {
se ([Link]())
senão {
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
}
se (buttonText == "aTan") {
se ([Link]())
senão {
[Link]([Link]([Link](displayNumber)));
currentNumber = 0;
decimalPointPressed = false;
se (textoBotao == "todeg")
[Link]([Link]([Link](displayNumber)));
se (buttonText == "torad")
[Link]([Link]([Link](displayNumber)));
se (textoBotão == "Pi") {
[Link]([Link]([Link]));
currentNumber =0;
decimalPointPressed = false;
se (textoDoBotão == "Rodada")
roundButtonPressed = true;
se (textoDoBotão == ".") {
int i;
decimalPointPressed = true;
para (i = 0; i < [Link](); ++i) {
se([Link](i) == '.') {
pontoDecimalEncontrado
continue;
se (!pontoDecimalEncontrado)
decimalPlaces = 1;
se(buttonText == "CA"){
resetarTodosOsBotoes();
[Link]("0");
currentNumber = 0;
se (textoDoBotão == "CE") {
[Link]("0");
numeroAtual = 0;
decimalPointPressed = false;
se (textoDoBotão == "E") {
[Link]([Link](Math.E));
currentNumber = 0;
decimalPointPressed = false;
se (buttonText == "=") {
númeroAtual = 0;
se(addButtonPressed)
[Link]([Link](initialNumber + displayNumber));
se(botãoSubtrairPressionado)
[Link]([Link](initialNumber - displayNumber));
se (botãoDividirPressionado) {
se(displayNumber == 0) {
MessageBox mb = new MessageBox ( fr, "Error ", true, "Cannot divide by zero.");
[Link]();
senão
[Link]([Link](initialNumber/displayNumber));
se(botaoMultiplicarPressionado)
[Link]([Link](initialNumber * displayNumber));
se (botãoDeEnergiaPressionado)
[Link](potência(númeroInicial, númeroDisplay));
resetarTodosOsBotoes();
se (textoBotao == "Autores") {
MessageBox mb = new MessageBox ( fr, "Calculadora ver 1.0 beta ", true, "Autores: Aarti
Kohli (aarti_nkr@[Link])
Sakshi Taneja (simmytaneja@[Link])
[Link]();
se ([Link]() == "Básico") {
[Link](true);
scientí[Link](falso);
Calculadora Básica
[Link](200,270);
se (scientificKey[0].isVisible()) {
scientificKey[i].setVisible(false);
[Link](false);
[Link](false);
se ([Link]() == "Científico") {
[Link](falso);
[Link](true);
[Link]("Calculadora Científica");
[Link](270,270);
se (!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;
se (oNum < 1) {
[Link]();
retornar ("0");
}
senão {
theNum *= i;
return [Link](theNum);
se (num == 0) {
[Link]();
senão
num = 1/num;
return [Link](num);
return [Link](-num);
Mensagem Caixa
[Link](lbl);
adicionar(centroPainel, "Centro");
[Link](this);
[Link](ok);
adicionar(painelSul, "Sul");
empacotar();
[Link](0);
});
Alguns recursos, que podem ser introduzidos mais tarde no software para melhorá-lo: