java科学计算器进制转换.docx

上传人:b****5 文档编号:8065097 上传时间:2023-01-28 格式:DOCX 页数:17 大小:174.84KB
下载 相关 举报
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

《java科学计算器进制转换.docx》由会员分享,可在线阅读,更多相关《java科学计算器进制转换.docx(17页珍藏版)》请在冰豆网上搜索。

java科学计算器进制转换.docx

java科学计算器进制转换

JAVA综合程序设计和分析

一、题目:

用java语言编写科学计算器,要求完成加、减、乘、除以及基本函数处理还有数的进制转换。

二、摘要:

本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(二进制,八进制,十进制)之间的相互转换,还有基本三角函数和平方根,对数等基本数学函数运算 

三、功能说明:

A.运用两个面板的叠加做出界面。

B.通过在按钮的单击事件处理方法中调用类的成员方法calculate()来进行简易计算器的各种运算,并正确实现运算功能。

C.调用Math包中的方法实现各函数功能。

D.添加菜单条,列出‘选项’、‘进制转换’、‘帮助’等菜单选项,并分别实现‘选项’中‘退出’的功能,通过调用Integer包中的方法实现二进制、八进制的转换,‘帮助'菜单栏中‘用法’的提示对话框。

E.整个程序对话框可实现最小化、最大化、关闭。

四、详细设计

package计算器;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassCalculatorextendsFrameimplementsActionListener,WindowListener

{

privateContainercontainer;

privateGridBagLayoutlayout;

privateGridBagConstraintsconstraints;

privateJTextFielddisplayField;//计算结果显示区

privateStringlastCommand;//保存+,-,*,/,=命令0

privatedoubleresult;//保存计算结果

privatebooleanstart;//判断是否为数字的开始

privateJMenuBarmenubar;

privateJMenuItemm_exit,m2_ejz,m2_bjz;

privateDialogdialog;

privateLabellabel_dialog;

privateJButtonbutton_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,

button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0,

button_plus,button_minus,button_multiply,button_divide,button_point,

button_equal,button_log,button_tan,button_cos,button_sin,button_exp;

publicCalculator()//构造方法设置布局、为按钮注册事件监听器

{

super("Calculator");

this.setLocation(240,200);

this.setSize(350,300);

this.setResizable(true);

this.setLayout(newGridLayout(7,1));

this.addmyMenu();//调用成员方法添加菜单

displayField=newJTextField(30);

this.add(displayField);

displayField.setEditable(true);

start=true;

result=0;

lastCommand="=";

JPanelpanel0=newJPanel();

panel0.setLayout(newGridLayout(1,4,4,4));

JPanelpanel1=newJPanel();

panel1.setLayout(newGridLayout(1,5,4,4));

this.add(panel1);

button_sqrt=newJButton("sqrt");

button_plusminus=newJButton("+/-");

button_exp=newJButton("exp");

button_CE=newJButton("退格");

button_cancel=newJButton("C");

JPanelpanel2=newJPanel();

panel2.setLayout(newGridLayout(1,5,4,4));

this.add(panel2);

button_7=newJButton("7");

button_8=newJButton("8");

button_9=newJButton("9");

button_log=newJButton("log");

button_divide=newJButton("/");

JPanelpanel3=newJPanel();

panel3.setLayout(newGridLayout(1,5,4,4));

this.add(panel3);

button_4=newJButton("4");

button_5=newJButton("5");

button_6=newJButton("6");

button_tan=newJButton("tan");

button_multiply=newJButton("*");

JPanelpanel4=newJPanel();

panel4.setLayout(newGridLayout(1,5,4,4));

this.add(panel4);

button_1=newJButton("1");

button_2=newJButton("2");

button_3=newJButton("3");

button_cos=newJButton("cos");

button_minus=newJButton("-");

JPanelpanel5=newJPanel();

panel5.setLayout(newGridLayout(1,5,4,4));

this.add(panel5);

button_0=newJButton("0");

button_point=newJButton(".");

button_equal=newJButton("=");

button_sin=newJButton("sin");

button_plus=newJButton("+");

panel1.add(button_sqrt);

panel1.add(button_plusminus);

panel1.add(button_exp);

panel1.add(button_CE);

panel1.add(button_cancel);

panel2.add(button_7);

panel2.add(button_8);

panel2.add(button_9);

panel2.add(button_log);

panel2.add(button_divide);

panel3.add(button_4);

panel3.add(button_5);

panel3.add(button_6);

panel3.add(button_tan);

panel3.add(button_multiply);

panel4.add(button_1);

panel4.add(button_2);

panel4.add(button_3);

panel4.add(button_cos);

panel4.add(button_minus);

panel5.add(button_0);

panel5.add(button_point);

panel5.add(button_equal);

panel5.add(button_sin);

panel5.add(button_plus);

button_sqrt.addActionListener(this);

button_plusminus.addActionListener(this);

button_exp.addActionListener(this);

button_CE.addActionListener(this);

button_cancel.addActionListener(this);

button_7.addActionListener(this);

button_8.addActionListener(this);

button_9.addActionListener(this);

button_log.addActionListener(this);

button_divide.addActionListener(this);

button_4.addActionListener(this);

button_5.addActionListener(this);

button_6.addActionListener(this);

button_tan.addActionListener(this);

button_multiply.addActionListener(this);

button_1.addActionListener(this);

button_2.addActionListener(this);

button_3.addActionListener(this);

button_cos.addActionListener(this);

button_minus.addActionListener(this);

button_0.addActionListener(this);

button_point.addActionListener(this);

button_equal.addActionListener(this);

button_sin.addActionListener(this);

button_plus.addActionListener(this);

this.addWindowListener(newWinClose());//注册窗口监听器

this.setVisible(true);

}

privatevoidaddmyMenu()//菜单的添加

{

JMenuBarmenubar=newJMenuBar();

this.add(menubar);

JMenum1=newJMenu("选项");

JMenum2=newJMenu("进制转换");

JMenuItemm1_exit=newJMenuItem("退出");

m1_exit.addActionListener(this);

JMenuItemm2_ejz=newJMenuItem("二进制");

m2_ejz.addActionListener(this);

JMenuItemm2_bjz=newJMenuItem("八进制");

m2_bjz.addActionListener(this);

JMenum3=newJMenu("帮助");

JMenuItemm3_Help=newJMenuItem("用法");

m3_Help.addActionListener(this);

dialog=newDialog(this,"提示",true);//模式窗口

dialog.setSize(240,80);

label_dialog=newLabel("",Label.CENTER);//标签的字符串为空,居中对齐

dialog.add(label_dialog);

dialog.addWindowListener(this);//为对话框注册窗口事件监听器

m1.add(m1_exit);

menubar.add(m1);

m2.add(m2_ejz);

m2.add(m2_bjz);

menubar.add(m2);

m3.add(m3_Help);

menubar.add(m3);}

publicvoidactionPerformed(ActionEvente)//按钮的单击事件处理方法

{

if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||

e.getSource().equals(button_3)||e.getSource().equals(button_4)||

e.getSource().equals(button_5)||e.getSource().equals(button_6)||

e.getSource().equals(button_7)||e.getSource().equals(button_8)||

e.getSource().equals(button_9)||e.getSource().equals(button_0)||

e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)||

e.getSource().equals(button_cancel)||e.getSource().equals(button_CE))

{//非运算符的处理方法

Stringinput=e.getActionCommand();

if(start)

{

displayField.setText("");

start=false;

if(input.equals("+/-"))

displayField.setText(displayField.getText()+"-");

}

if(!

input.equals("+/-"))

{

Stringstr=displayField.getText();

if(input.equals("退格"))//退格键的实现方法

{

if(str.length()>0)

displayField.setText(str.substring(0,str.length()-1));

}

elseif(input.equals("C"))//清零键的实现方法

{

displayField.setText("0");

start=true;

}

else

displayField.setText(displayField.getText()+input);

}

}

elseif(e.getActionCommand()=="二进制")//二进制的转换

{

intn=Integer.parseInt(displayField.getText());

displayField.setText(Integer.toBinaryString(n));

}

elseif(e.getActionCommand()=="八进制")//八进制的转换

{

intn=Integer.parseInt(displayField.getText());

displayField.setText(Integer.toOctalString(n));

}

elseif(e.getActionCommand()=="退出")//选项中退出的处理方法

{

System.exit(0);

}

elseif(e.getActionCommand()=="用法")//按下'帮助'菜单栏中用法的处理方法

{

label_dialog.setText("sqrt,exp等键是先输运算符再输数字\n");

dialog.setLocation(400,250);

dialog.setVisible(true);

}

else//各运算符的识别

{

Stringcommand=e.getActionCommand();

if(start)

{

lastCommand=command;

}

else

{

calculate(Double.parseDouble(displayField.getText()));

lastCommand=command;

start=true;

}

}

}

publicvoidcalculate(doublex)//各运算符的具体运算方法

{

doubled=0;

if(lastCommand.equals("+"))

result+=x;

elseif(lastCommand.equals("-"))

result-=x;

elseif(lastCommand.equals("*"))

result*=x;

elseif(lastCommand.equals("/"))

result/=x;

elseif(lastCommand.equals("="))

result=x;

elseif(lastCommand.equals("sqrt"))

{

d=Math.sqrt(x);

result=d;

}

elseif(lastCommand.equals("exp"))

{

d=Math.exp(x);

result=d;

}

elseif(lastCommand.equals("log"))

{

d=Math.log(x);

result=d;

}

elseif(lastCommand.equals("tan"))

{

d=Math.tan(x);

result=d;

}

elseif(lastCommand.equals("cos"))

{

d=Math.cos(x);

result=d;

}

elseif(lastCommand.equals("sin"))

{

d=Math.sin(x);

result=d;

}

displayField.setText(""+result);

}

publicvoidwindowClosing(WindowEvente)

{

if(e.getSource()==dialog)

dialog.setVisible(false);//隐藏对话框

else

System.exit(0);

}

publicvoidwindowOpened(WindowEvente){}

publicvoidwindowActivated(WindowEvente){}

publicvoidwindowDeactivated(WindowEvente){}

publicvoidwindowClosed(WindowEvente){}

publicvoidwindowIconified(WindowEvente){}

publicvoidwindowDeiconified(WindowEvente){}

publicstaticvoidmain(Stringargs[])

{

Calculatorcalculator=newCalculator();

}

}

classWinCloseimplementsWindowListener

{

publicvoidwindowClosing(WindowEvente)//单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法

{

System.exit(0);//结束程序运行

}

publicvoidwindowOpened(WindowEvente){}

publicvoidwindowActivated(WindowEvente){}

publicvoidwindowDeactivated(WindowEvente){}

publicvoidwindowClosed(WindowEvente){}

publicvoidwindowIconified(WindowEvente){}

publicvoidwindowDeiconified(WindowEvente){}

}

五、程序运行结果

1.界面

2.基本运算,如54-12=42:

3.数学函数运算,如9的开平方为3:

六、总结和体会

总结:

(1)通过编写这个相对复杂的程序,让我认识解决实际问题前应现建立模型,再通过建立的模型使问题简单化,从而解决问题。

(2)这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我充分理解了包和类调用的关系。

(3)由于这次编写的程序相对比较复杂,所以不能一次性编写、调试,也由此让我学会把程序分块,逐个编写、调试。

体会:

在此次的课程设计实践中,我学到了教科书上没有的东西。

这次课程设计,我按照课程设计的要求,分块实现程序的功能。

在实践中我遇到许多的问题,但我都克服,最终我成功的完成了这次课程设计。

从中我充分理解了Java面对对象的特性,并体会到Java和C语言的不同之处

在实践的同时,我又从中成长了许多,特别是在对程序的编译和调试中掌握了许多的技巧和方法,为今后的其他计算机语言的学习奠定了一定的基础。

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1