java科学计算器(进制转换)_第1页
java科学计算器(进制转换)_第2页
java科学计算器(进制转换)_第3页
java科学计算器(进制转换)_第4页
java科学计算器(进制转换)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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);//隐藏对话框elseSystem.exit(0);}publicvoidwindowOpened(WindowEvente){}publicvoidwindowActivated(WindowEvente){}publicvoidwindowDeactivated(WindowEvente){}publicvoidwindowClosed(WindowEvente){}publicvoidwindowIconified(WindowEvente){}publicvo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论