Java实现的简易计算器附代码.docx

上传人:b****0 文档编号:17113323 上传时间:2023-07-22 格式:DOCX 页数:17 大小:158.25KB
下载 相关 举报
Java实现的简易计算器附代码.docx_第1页
第1页 / 共17页
Java实现的简易计算器附代码.docx_第2页
第2页 / 共17页
Java实现的简易计算器附代码.docx_第3页
第3页 / 共17页
Java实现的简易计算器附代码.docx_第4页
第4页 / 共17页
Java实现的简易计算器附代码.docx_第5页
第5页 / 共17页
Java实现的简易计算器附代码.docx_第6页
第6页 / 共17页
Java实现的简易计算器附代码.docx_第7页
第7页 / 共17页
Java实现的简易计算器附代码.docx_第8页
第8页 / 共17页
Java实现的简易计算器附代码.docx_第9页
第9页 / 共17页
Java实现的简易计算器附代码.docx_第10页
第10页 / 共17页
Java实现的简易计算器附代码.docx_第11页
第11页 / 共17页
Java实现的简易计算器附代码.docx_第12页
第12页 / 共17页
Java实现的简易计算器附代码.docx_第13页
第13页 / 共17页
Java实现的简易计算器附代码.docx_第14页
第14页 / 共17页
Java实现的简易计算器附代码.docx_第15页
第15页 / 共17页
Java实现的简易计算器附代码.docx_第16页
第16页 / 共17页
Java实现的简易计算器附代码.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Java实现的简易计算器附代码.docx

《Java实现的简易计算器附代码.docx》由会员分享,可在线阅读,更多相关《Java实现的简易计算器附代码.docx(17页珍藏版)》请在冰点文库上搜索。

Java实现的简易计算器附代码.docx

Java实现的简易计算器附代码

 

Java实验报告

 

题目:

简易计算器

 

学院数学与计算机学院

学科门类工学

专业软件工程

学号2010434004

姓名

指导教师

2012年12月25日

一、实验目的

通过Java程序开发实训使学生掌握《面向对象程序设计(Java)》课堂讲授的内容,灵活运用到Java程序的开发与设计中。

1.了解Java中的类与对象,类及成员的定义

2.掌握运算符与基本的表达式,和异常的处理

3.数组与字符串的应用

4.掌握常用的Java系统类,核心语言包(java.lang),工具包(java.util),数学包(java.math)

5.接口的实现,输入输出的处理和可视化程序设计

二、实验要求

应用Java语言,设计一个简易计算器,要求界面简洁,能完成基本运算功能。

三、实验内容

1.进行图形界面设计

应用JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮等。

2.实现计算器的基本功能

包括加减乘除四则运算、倒数、取余、平方根、三角函数及清除结果等功能。

四、设计方案

1、设计流程图

2、界面的设计:

Swing布局。

界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式。

设计主界面框架布局为默认的BorderLayout布局,申请三个面板分别是:

(1)输入输出面板,布局设置为两行一列的网格GridLayout布局,包括两个JTextField文本框,一个负责显示当前输入信息,一个负责显示计算式。

面板设置为面板的上部,即f.add(inputPanel,BorderLayout.NORTH);

(2)数字按钮及运算按钮面板,设置为4行5列的网格布局,包括0~9的10个数字和加、减、乘、除、乘方、开方、取倒、取余、等于按钮。

面板位置在主界面的下部,即f.add(buttonsPanel,BorderLayout.SOUTH);

(3)功能键面板,包括三角函数,清除,退格等按钮。

面板位置在主界面框架的中部。

即f.add(operationPanel,BorderLayout.CENTER)。

其图形界面如下:

3、数据输入:

鼠标事件响应。

分别定义三个类,一个是NumberMouseListener类来响应数字点击事件,另外一个是CalcMouseListener类来响应包括开方、乘方在内的运算按钮的点击事件,最后是OperationMouseListener类用来响应退格、清除等功能键的点击事件,三个类都分别实现鼠标监听MouseListener接口。

对每个按钮设置对应监听。

4、数据处理:

整型和浮点数处理,计算器的核心功能实现。

在CalcMouseListener类中对根据事件源的分析,完成用户要求的运算,将结果输出到文本框中。

五、实验结果

1、四则运算功能

2、扩张的其他运算功能

六、程序代码

publicclassCalculator{

//计算器面板

privateJFramef=newJFrame("Calculator");

privateJPanelinputPanel=newJPanel();//输入面扳

privateJPaneloperationPanel=newJPanel();//加减乘除面板

privateJPanelbuttonsPanel=newJPanel();//数字面板

privateJTextFieldinput=newJTextField(20);//输入数据文本框

privateJTextFieldshow=newJTextField(20);

privateJButtonbackspace=newJButton("退格");//退格键

privateJButtonCE=newJButton("CE");//清空

privateJButtonC=newJButton("C");//删除

privateJButtonsqrt=newJButton("√");//开方

privateJButtonfang=newJButton("^");//乘方

privateJButtonmod=newJButton("%");//取余

privateJButtondao=newJButton("1/x");//取倒数

privateJButtonsin=newJButton("sin");

privateJButtoncos=newJButton("cos");

privateJButtonlg=newJButton("ln");

//四则运算符号键

privateJButtonadd=newJButton("+");

privateJButtonsub=newJButton("-");

privateJButtonmul=newJButton("*");

privateJButtondiv=newJButton("/");

//小数点

privateJButtondecimal=newJButton(".");

//等号

privateJButtonequal=newJButton("=");

//数字键

privateJButtonzero=newJButton("0");

privateJButtonone=newJButton("1");

privateJButtontwo=newJButton("2");

privateJButtonthree=newJButton("3");

privateJButtonfour=newJButton("4");

privateJButtonfive=newJButton("5");

privateJButtonsix=newJButton("6");

privateJButtonseven=newJButton("7");

privateJButtoneight=newJButton("8");

privateJButtonnine=newJButton("9");

privateStringnum1="";//保存第一个运算数字

privateStringoperator="";//保存运算符号

publicstaticvoidmain(String[]args){

newCalculator();//new计算器实例

}

publicCalculator(){

//添加组件,布局

show.setText("0");

show.setEditable(false);//不可编辑

show.setHorizontalAlignment(JTextField.RIGHT);

input.setText("0");

input.setEditable(false);

input.setHorizontalAlignment(JTextField.RIGHT);

inputPanel.setLayout(newGridLayout(2,1));

inputPanel.add(show);

inputPanel.add(input);//添加输入文本框

f.add(inputPanel,BorderLayout.NORTH);

operationPanel.add(sin);

sin.setBackground(newColor(100,255,10));

operationPanel.add(cos);

cos.setBackground(newColor(100,255,10));

operationPanel.add(CE);

CE.setBackground(newColor(100,255,10));

operationPanel.add(C);

C.setBackground(newColor(100,255,10));

operationPanel.add(backspace);

backspace.setBackground(newColor(100,255,10));

f.add(operationPanel,BorderLayout.CENTER);

buttonsPanel.setLayout(newGridLayout(4,5));

buttonsPanel.add(seven);

buttonsPanel.add(eight);

buttonsPanel.add(nine);

buttonsPanel.add(div);

buttonsPanel.add(mod);

buttonsPanel.add(four);

buttonsPanel.add(five);

buttonsPanel.add(six);

buttonsPanel.add(mul);

buttonsPanel.add(fang);

buttonsPanel.add(one);

buttonsPanel.add(two);

buttonsPanel.add(three);

buttonsPanel.add(sub);

buttonsPanel.add(sqrt);

buttonsPanel.add(zero);

buttonsPanel.add(decimal);

buttonsPanel.add(equal);

buttonsPanel.add(add);

buttonsPanel.add(dao);

f.add(buttonsPanel,BorderLayout.SOUTH);

//注册各个组件监听事件

backspace.addMouseListener(newOperationMouseListener());

CE.addMouseListener(newOperationMouseListener());

C.addMouseListener(newOperationMouseListener());

decimal.addMouseListener(newOperationMouseListener());

equal.addMouseListener(newOperationMouseListener());

//注册运算监听

add.addMouseListener(newCalcMouseListener());

sub.addMouseListener(newCalcMouseListener());

mul.addMouseListener(newCalcMouseListener());

div.addMouseListener(newCalcMouseListener());

sqrt.addMouseListener(newCalcMouseListener());

fang.addMouseListener(newCalcMouseListener());

mod.addMouseListener(newCalcMouseListener());

dao.addMouseListener(newCalcMouseListener());

sin.addMouseListener(newCalcMouseListener());

cos.addMouseListener(newCalcMouseListener());

//注册数字监听事件

zero.addMouseListener(newNumberMouseListener());

one.addMouseListener(newNumberMouseListener());

two.addMouseListener(newNumberMouseListener());

three.addMouseListener(newNumberMouseListener());

four.addMouseListener(newNumberMouseListener());

five.addMouseListener(newNumberMouseListener());

six.addMouseListener(newNumberMouseListener());

seven.addMouseListener(newNumberMouseListener());

eight.addMouseListener(newNumberMouseListener());

nine.addMouseListener(newNumberMouseListener());

f.setVisible(true);

f.pack();//窗口自适应大小

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

privateclassNumberMouseListenerimplementsMouseListener{

publicvoidmouseClicked(MouseEvente){

//if(operator==""){

if(input.getText().trim().equals("0")|input.getText().trim().equals("")){//如果文本框已经是0,结果还是0

input.setText(((JButton)e.getSource()).getText().trim());

}else{//否则的话,把新输入的数添加到原有数的后边

input.setText(input.getText().concat(((JButton)e.getSource()).getText().trim()));

}

if(operator=="")

show.setText("");

}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmousePressed(MouseEvente){}

publicvoidmouseReleased(MouseEvente){}

}

privateclassCalcMouseListenerimplementsMouseListener{

//如果输入的是运算符号,保存第一个结果和运算符号

publicvoidmouseClicked(MouseEvente){

doubles=0;

if(((JButton)e.getSource()).getText().trim()=="-")

{

if(input.getText().trim().equals("0")|input.getText().trim().equals(""))

{

input.setText("-");

return;

}

}

if(e.getSource()==sqrt)

{

doublet=Math.sqrt(Double.parseDouble(input.getText().trim()));

input.setText(newDecimalFormat("0.00").format(t));

}

elseif(e.getSource()==dao)

{

doublet=1/Double.parseDouble(input.getText().trim());

input.setText(newDecimalFormat("0.00").format(t));

}

elseif(e.getSource()==sin)

{

doublet=Math.sin(Double.parseDouble(input.getText().trim()));

input.setText(newDecimalFormat("0.00").format(t));

}

elseif(e.getSource()==cos)

{

doublet=Math.cos(Double.parseDouble(input.getText().trim()));

input.setText(newDecimalFormat("0.00").format(t));

}

else

{

if(operator=="")

{

num1=input.getText().trim();

operator=((JButton)e.getSource()).getText().trim();

show.setText(input.getText().concat(((JButton)e.getSource()).getText().trim()));

input.setText("0");

}

else{//实现连续运算

if(operator.equals("+")){//执行加法运算

s=Double.parseDouble(num1)+Double.parseDouble(input.getText().trim());

}elseif(operator.equals("-")){//减法运算

s=Double.parseDouble(num1)-Double.parseDouble(input.getText().trim());

}elseif(operator.equals("*")){//乘法运算

s=Double.parseDouble(num1)*Double.parseDouble(input.getText().trim());

}elseif(operator.equals("/")){//除法运算

s=Double.parseDouble(num1)/Double.parseDouble(input.getText().trim());

}elseif(operator.equals("^")){//乘方运算

s=Math.pow(Double.parseDouble(num1),Double.parseDouble(input.getText().trim()));

}

elseif(operator.equals("%")){//取余运算

s=getMod(Double.parseDouble(num1),Double.parseDouble(input.getText().trim()));

}

num1=newDecimalFormat("0.00").format(s);

show.setText(num1.concat(((JButton)e.getSource()).getText().trim()));

input.setText("0");

operator=((JButton)e.getSource()).getText().trim();

}

}

}

privatedoublegetMod(doublea,doubleb){

//TODOAuto-generatedmethodstub

doubles=0;

if(a

s=a;

elseif(a==b)

s=0;

else

s=a%b;

returns;

}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmousePressed(MouseEvente){}

publicvoidmouseReleased(MouseEvente){}

}

privateclassOperationMouseListenerimplementsMouseListener{

publicvoidmouseClicked(MouseEvente){

if(e.getSource()==backspace){//退格键,删除一个直到没有字符删除

StringinputText=input.getText();

StringshowText=show.getText();

//if(inputText!

=""){

if(inputText.length()>0)

input.setText(inputText.substring(0,inputText.length()-1));

elseif(inputText.length()==0&&showText.length()>0)

{input.setText(showText.substring(0,showText.length()-1));

show.setText("0");

}

}elseif(e.getSource()==C){

input.setText("0");/

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2