




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 买车转订金合同范本
- 体育订购合同范本
- 下学期安全工作总结
- 分期贷款正规合同范本
- 三年级班主任工作计划
- 中医基础学模拟考试题含参考答案
- 厨房维修合同范本模板
- 产业调研合同范本
- 单位安装锅炉合同范例
- 厂车出租合同范本
- 《多样的中国民间美术》课件 2024-2025学年人美版(2024)初中美术七年级下册
- 家政讲师培训课件
- 2025年中国春节档市场报告-拓普数据-
- 2025年山西省太原市卫健委直属单位招聘522人历年高频重点模拟试卷提升(共500题附带答案详解)
- 劳务合同协议书书
- 白城2025年吉林大安市事业单位面向上半年应征入伍高校毕业生招聘5人笔试历年参考题库附带答案详解
- 全球人工智能产业发展现状和趋势
- 2025年内蒙古化工职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 民法典解读之婚姻家庭编
- 2025年菏泽医学专科学校高职单招数学历年(2016-2024)频考点试题含答案解析
- 2025年漯河职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
评论
0/150
提交评论