Java课程设计多功能计算器.docx

上传人:太** 文档编号:86441245 上传时间:2023-04-14 格式:DOCX 页数:21 大小:86.65KB
返回 下载 相关 举报
Java课程设计多功能计算器.docx_第1页
第1页 / 共21页
Java课程设计多功能计算器.docx_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《Java课程设计多功能计算器.docx》由会员分享,可在线阅读,更多相关《Java课程设计多功能计算器.docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java程序设计实训题 目:多功能计算器专业:信息与计算科学班级:18级6班202X年5月202X年5月if (s. contains (,+)rs=s. split (“+“); /用分开文本框的字符串 进行加法运算 doubled=Double.parseDoubte(rs0)+Double.parseDoubte(rsl);fl. setText(String. vc?LueO/(d);f 2. setText (s+, = +String. vati/eOf (d);)else if(s.contains(,xH)(rs=s.split(,x);doubled=Double.parse

2、DoubLe(rs0)*Double.pc?rseDoubLe(rs1);fl.setText(String.vatueO/(d);f2. setText (s+, = +String. vaLueOf(d);)else if(s.contains(,-M)(rs=s.split(,-M);doubled=Double.parseDoubte(rs0) - Double. pcjrseDot/bLe(rsl);fl.setText(String.vaLueO/(d);f2. setText( s+ = !String. vt7LueO/(d);)else if(s.contains(/)(rs

3、=s.split(,7);doubled=Double.parseDot/bLe(rs0)/Double.parseDoubLe(rsl);fl. setText(String. vcjLueO/(d);f2. setText (s+= +String. vaLueOf(d);)flag=true;)elseif(flag)/为假时fl.setText(); /不点击=和清零时 将字符串追加在文本域中flappend(e.getActionCommand();flag=false;)此代码重写 Act ion Listener接口中的方法 act ionPerformed( Act ion E

4、vent e),对发生 的事件做处理。实现计算器的运算功能。5 . 5计算器运行主函数调用此主类函数可以实现计算器的所有功能,具体代码如下:import javax.swing.3Frame;public class Disuanqi public static void main(String args) WindowActionEvent sc=new WindowActionEvent();sc.setTitle (多功能计算器”);/设置窗口标题sc. setDefaultClose0peration(3Frame.EXI70/V_CL0SE); 结束窗口 所在的 应用程序一 一6 .

5、功能测试(1)依次测试加减法、乘除法运算分别输入9和3两个数字进行测试(小数也可以)M多功能计算器X计算结果:12.0清零123456*789X0=/平方根立方根平方立方sincostancotM多功能计算器计算结果:6.0翁零123456*789X01平方根立方根平方立方sincostancot闺多功能计算器一 口 X计算结果:27.0翁零123456*789X01平方根立方根平方立方sincostancot闺多功能计算器一 口 X计算结果:3.0翁零123456*789X01平方根立方根平方立方sincostancot(2)依次测试平方根、立方根、平方、立方 输入9测试(也可输入小数)国多

6、功能计算器X计算结果:3.0清零123456-789X0*二/平方根立方根平方立方sincostancot闺多功能计算器一 口 X计算结果:2.080083823051904翁零123456*789X0=1平方根还根平方立方sincostancot闺多功能计算器一 口 X计算结果:81.0翁零12345I 6*789X0=1平方根立方根世立方sincostancotM多功能计算器123456*789X0=1平方根立方根平方立方sincostancot计算结果:729.0清零(3)依次测试正余弦、正余切 输入60测试(小数也可以)多功能计算器一 口 X计算结果:0.87清零12I 3456-78

7、9X0*二1平方根立方根平方立方sincostancotM多功能计算器计算结果:0.50清零X123456*789X01平方根立方根平方立方sincostancot多功能计算器一 口 X计算结果:1.73清零123456*789X01平方根立方根平方立方sincostancot多功能计算器一 口 X计算结果:0.58清零123456*789X0/平方根立方根平方立方sincostanS I完整代码见附录7 .总结JAVA是一门优秀的编程语言,具有面向对象、与平台无关,平安、稳定和多线程等 特点,是目前软件设计中极为健壮的语言。通过此次的课程设计实践,我们不但进一步理解掌 握了课上老师教授的知识

8、,而且通过查找资料学会了课上没有的东西,进步理解了面向对象的 含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了 GUI方面的 知识。在实践中我们遇到了很多问题,但我们都努力克服了。在完成课题的过程中也不断充实 了自己,学习到了很多以前没有学习到的知识,收获很大。最大的收获是在完成过程中培养的 解决问题的能力,在做工程时必然会遇到困难,会有不会的东西,重要的不是现在会不会,而 是遇到问题知道如何找到解决的途径。还使我对所学知识能够融会贯通,又不断丰富了新知识。 Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。参考书籍1耿祥义,张跃平.

9、 Java2实用教程(第5版)M.北京:清华大学出版社,2006张跃平.Java2实用教程实验指导与习题解答(第三版)M.北京:清华大学出版社,2004附录程序源代码package jisuanqi;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class jisuanqiC extends JFrame implements ActionListener JLabel jlabResult 二new JLabel(计算 结果:JLabel.LEFT); 设置标签并左对齐JTextArea fl,f2

10、; 声明文本区JButton dl,d2,d3,d4,d5;JButton dsin,dcos,dtan,dcot;JButton b; /声明按钮的一维数组boolean flag=false;public jisuanqiC()JPanel p 1 =new JPanel(); 创立 面板JPanel p2=new JPanelQ;JPanel p3=new JPanel();JPanel p4=new JPanel();b=new JButton16;String str= 123+456-789x0.=/;for(int i=0;ib.length;i+) 编 写按钮名称bi=newJ

11、Button(str.substring(i,i+1 ); 获取介于 i-i+1 之 间的子字符串fl =new JTextArea(l,20); /设置 文本区大小f2=new JTextArea(9,240);dl =new JB utton(H 清零) / 创立按钮名称d2=new JButton(平方根)d3=new JButton(立方根)d4=new JButton。平方”);d5=new JButton(“立方”);dsin二new JButton(Msinn);dcos=new JButton(ncosn);dtan=new JButton(Htann);dcot=new JB

12、utton(ncotn);setLayout(new BorderLayout。); 容器布局add(pl ,BorderLayout.NORTH); 面板 1 添 加在容器的北区域add(p2, BorderLayout.CENTER); /面板 2 添加 在容器 的中间区域add(p3, BorderLayout.SOUTH); /面板3 添加在容器的南区域面板pl添加组件pl.setLayout(newFlowLayout(); /面板1流式布局pl.add(j labResult);/ 把标签加入到面板pl中pl.add(fl);显示输 入输出结果pl.add(dl); 清零dl.ad

13、dActionListener(this);/注册一个监视器面板p2添加组件p2.setLayout(newGridLayout(4,4); /面板2网格布局for(inti=O;ib.length;i+)(p2.add(bi);bi .addActionListener(this); 注册监听器 )/p3面板添加组件p3.setLayout(newGridLayout(2,4); /面板 3 网格布局p3.add(d2);平方根p3.add(d3);p3.add(d4);p3.add(d5);p3.add(dsin);p3.add(dcos);p3.add(dtan);p3.add(dcot

14、);/p3.add(newJScrollPane(f2);d2.addActionListener(this); 注册监听器d3.addActionListener(this);d4.addActionListener(this);d5.addActionListener(this);dsin.addActionListener(this);dcos.addActionListener(this);dtan.addActionListener(this);dcot.addActionListener(this);setSize(450,250);/设置窗口大小setVisible(true);

15、 / 设置窗口可见)重写ActionListener接口中的方法 public void actionPerformed(ActionEvent e)if(e.getSource()=d 1)/清零fl.setText(null);else if(e.getSource()=d2) 求 平方根(String s=f 1 .getText().trim();/在获得的文本中除去空格 doubled=Math.sqrt(Double.parseDouble(s);fl .setText(String.valueOf(d);f2.setText(String.valueOf(d);else if(e

16、.getSource()-d3) 求 立方根(String s=f 1 .getText().trim();doubled=Math.pow(Double.parseDouble(s),l.0/3.0);fl .setText(String. valueOf(d);f2.setText(String.valueOf(d);)else if(e.getSource()=d4) 求 平方(String s=f 1 .getText().trim();doubled=Math.pow(Double.parseDouble(s),2.0);fl .setText(String.valueOf(d);f

17、2.setText(String.valueOf(d);else if(e.getSource()=d5) 求 立方String s=f 1 .getText().trim();doubled=Math.pow(Double.parseDouble(s),3.0);fl .setText(String.valueOf(d);f2.setText(String.valueOf(d);else if(e.getSource()-dsin) / 求正弦(String s=f 1 .getText().trim();doubleradians=Math.toRadians(Double.parseDo

18、uble(s );double d=Math.sin(radians);fl.setText(String.valueOf(String.format(n%.2f d); /保存两位小数v)else if(e.getSource()=dcos) / 求余弦String s=f 1 .getText().trim();doubleradians=Math.toRadians(Double.parseDouble(s );double d=Math.cos(radians);fl.setText(String.valueOf(String.format(n%.2f, d);保存两位小数)else

19、if(e.getSource()=dtan) / 求正切(String s=f 1 .getText().trim();doubleradians=Math.toRadians(Double.parseDouble(s );double d=Math.tan(radians);fl.setText(String.valueOf(String.format(n%.2f d);保存两位小数)else if(e.getSource()=dcot) / 求余切(String s=f 1 .getText().trim();doubleradians=Math.toRadians(Double.pars

20、eDouble(s );doubled=l .OZMath.tan(radians);fl.setText(String.valueOf(String.format(H%.2f d);保存两位小数判断是否为=运算符(String s=f 1 .getText().trim();String rs;if(s.contains(H+H)(rs=s.split(n+H); / 用+分开文本框的字符串进行加法运算doubled=Double.parseDouble(rs OJ)+Double.parseDo uble(rsl);fl .setText(String.valueOf(d);f2.setT

21、ext(s+n=n+String.valueOf(d);)else if(s.contains(nxn)(rs=s.split(nxn);doubled=Double.parseDouble(rs0)*Double.parseDou ble(rsl);fl .setText(String. valueOf(d);f2.setText(s+n=n+String.valueOf(d);)else if(e.getSource()-b14)多功能计算器1 .摘要:为复习巩固Java语言的基础知识,进一步加深对java语言的理解和掌控。同过本 课程设计使自身能够全面的掌握面向对象程序设计的有关概念和开

22、发方法,以便能较全 面地理解、掌握和综合运用所学的知识,提高自己的编程能力。利用Java Applet图形 界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使 得使用计算器简单明了,清晰可见,操作简单。本计算器是由java语言所设计的标准 计算器,可以进行十进制下的四那么运算、开方、立方以及常见的三角函数。界面类似 Windows自带的计算器界面,java早期版本以来,抽象窗口工具包为用户界面组件提供 了平台独立的API。在AWI中,每个组件都由一个原生的等同组件生成和控制,这个原 生组件是由当前的图形窗口系统决定的。与此相对,Swing组件经常被描述为轻量级的, 因

23、为他们不需要操作系统本身所带窗口工具包的原生资源来生成。关键词:类、对象、窗口、事件源2 .设计目的及思路1、使学生在巩固理论课知识的同时,加强实践能力的提高,理论联系实践。2、课程设计为大家提供了一个既动手又动脑,独立实践的机会,将课本上的理论 知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。提高我们适 应实际,实践编程的能力。给各个按钮进行算法,利用鼠标点击事件3、养成自己独立分析和解决问题的能力。培养在工程开发中创新意识及能力,提 高面向对象及java语言的理解3 .模块功能设计以下为多功能计算器的基本功能(1)加法两个数据进行加操作,可以为小数。(2)减法两个数据进行减操作,

24、可以为负数相减。(3)乘法两个数相乘操作。(4)除法else if(s.contains(n-n)rs=s.split(H-H);doubled=Double.parseDouble(rs0)-Double.parseDou ble(rsl);fl .setText(String. valueOf(d);f2.setText(s+n=n+String.valueOf(d);)else if(s.contains(!7n)rs=s.split(n/n);doubled=Double.parseDouble(rs()/Double.parseDou ble(rsl);fl .setText(Str

25、ing.valueOf(d);f2.setText(s+n=n+String.valueOf(d);flag=true;)rs=s.split(H-H);doubled=Double.parseDouble(rs0)-Double.parseDou ble(rsl);fl .setText(String. valueOf(d);f2.setText(s+n=n+String.valueOf(d);)else if(s.contains(!7n)rs=s.split(n/n);doubled=Double.parseDouble(rs()/Double.parseDou ble(rsl);fl

26、.setText(String.valueOf(d);f2.setText(s+n=n+String.valueOf(d);flag=true;)else(if(flag)为假时(fl.setText(); /不点击=和清零 时将字符串追加在文本域中fl.append(e.getActionCommand();flag=false;)public static void main(String args)jisuanqiC sc=new jisuanqiC();sc.setTitle(多功能计算器)/ 设置窗口标题sc.setDefaultCloseOperation(JFrame.EXIT_

27、ON ,CLOSE); 结束窗口所在的应用程序两个数相除操作。(5)开平方对任意一个数进行开方运算,可以是小数。(6)立方对任意一个数进行开方运算,可以是小数。(7)开根号对任意一个数进行开根号运算,可以是小数。(8)三角函数正弦、余弦、正切、余切的运算操作。图1系统功能图4 .程序中所用到的变量以及方法4.1 程序中所用到的容器以及组件JFrame/底层容器,常用来添加组件JLable/定义标签为用户提供提示信息JtextField/允许用户在文本框中输入单行文本J text Area/允许用户可以在文本区输入多行文本Jpanel/ 创立一个面板,再向这个面板添加组件,本设计中中视为中间容器

28、JButton/允许用户点击按钮setTitle设置窗口标题setDefaultCloseOperation (int operation)设置关闭窗口程序做出怎样的处理4.2 程序中所用到的容器布局FlowLayout();/组件安装先后顺序从左向右一次排列,一行排满后转到下一行排列BorderLayout();GridLayout();null把容器简单的分为东西南北中5个区域/把容器划分为假设干行乘假设干列的网格区域把容器的布局设置为空布局setLayout(布局对象)/容器可以使用方法设置自己的布局4. 3程序中用到的ActionEvent事件ActionEvent事件源:文本框、按钮

29、、菜单项、单项选择按钮都可以触发ActionEvent事件, 即都可以成为ActionEvent事件源。如对于注册了监视器的按钮,如果用户单击按钮,就会触 发 ActionEvent 事件注册监视器:Java规定能触发ActionEvent事件的组件使用方法addActionListener (ActionListener listen)将实现ActionListener接口的类的实例注册为事件源的监视器。ActionListener 接口: ActionListener 接口在 java.awt.event 包中,该接口中只有一个方法 public void actionPerformed

30、(ActionEvent e)o 事件源触发 ActionEvent 事件后,监视器调用接 口中的方法actionPerformed ( ActionEvent e )对发生的事件做出处理。当监视器调用 actionPerformed (ActionEvent e)方法时,ActionEvent类事先创立的事件对象就会传递给该方 法的参数e。ActionEvent类本设计中用到getSource ()方法,ActionEvent事件对象调用该方法可以获 取发生ActionEvent事件的事件源对象的引用,即getSource ()方法将事件源上转型为Object 对象,并返回这个上转型对象的引

31、用。5.功能的实现5.1计算机按键功能功能1:按下数字键在液晶屏上显示数字,这是计算器最基本的功能。功能2:单击“计算器”上的数字按钮(0,123,4,5,6,7,8,9)可以设置参与计算的运算数。功能3:单击“计算器”上的运算符按钮(+、-、/、*)可以选择运算符。功能4:单击“计算器”上的函数按钮可以计算出相应的函数值。功能5:单击“计算器”上的按钮显示计算结果。5. 2计算器界面设计计算器界面效果图多功能计算器一计算结果:X清塞123456-789X0=/平方根立方根平方立方sincostancot5. 3计算器界面设计代码计算器的界面由一个标签,一个文本框及25个按钮组成,具体实现代码

32、如下所示:import java.awt.*;import import javax.swing.public class WindowActionEvint extends JFrame JLabel jlabResult =new JLabel(计算结果:JLabel.LEFT); /设置标签并左 对齐DTextArea fl; /声明文本区Button d1,d2,d3,d4,d5;JButton dsin,dcos,dtan,dcot;ActionListener listener ; /listener是监视器 :J Button b; /声明按钮的一维数组boolean flag=

33、false;public WindowActionEvent()DPanel pl=new 3Panel(); /创立面板JPanel p2=new 3Panel();Panel p3=new JPanel();b=new 3Button16;String str=123+456-789x0.;for(int i=0;ib.length;i+)/编写按钮名称(bi=new JButton(str. substring(i,i+1);/获取介于i-i+1之间的子字符 串)fl=new DTextArea(l,20); /设置文本区大小 dl=new JButton(“清零“);/创立按钮名称d2

34、=new Button(“平方根”); d3=new Button(“立方根”); d4=new Button(“平方”); d5=new Button(“立方”); dsin=new JButton(sinH); dcos=new JButton(HcosH); dtan=new JButton(tan);dcot=new 3Button(,cotn);setLayout(new BorderLayout(); 容器布局add(plJ BorderLayout ./VORTH);面板 1 添加在容器的北区域add(p2, BorderLayout.CENTER); /面板2添加在容器的 中间

35、区域add(p3J Border Layout .SOUTH); 面板 3 添加在容器的 南区域/面板p1添加组件plsetLayout(new FlowLayout(); /面板 1 流式布局 pl.add( jlabResult); 把标签加入到面板pl中 pl.add(fl);/显示输入 输出结果 pl.add(dl);/清零listener =new ReaderListen();dl.addAct ion Listener (listener);/注册一个监视器面板p2添加组件p2. set Layout (new Grid Layout (4,4); /面板 2 网格布局for(i

36、nt i=0;i d3 d4 d5 dsin dcos、dtan dcot为Jbutton创立的按钮对象分别为清零、 平方根、立方根、平方、立方、正弦、余弦、正切、余切。这九个按钮都注册有ActionEvent 事件监视器。b口为Jbutton创立的一维数组其中保存了 0-9十个数字以及+、-、*、/、.、=、六 个运算符,每个运算符按钮都注册有ActionEvent事件监视器。运行此代码以后出现的界面就 是我们所说的java图形用户界面(GUI),程序通过GUI与用户交互,GUI通过事件机制响应 用户和程序的交互5. 4计算器功能实现代码当用户点击界面按钮,程序就会实现相关代码显示在GUI文

37、本区中,具体实现代码如 下:重写Act ion Listener接口中的方法public void actionPerformed(ActionEvent e)if (e.getSource( )=dl)/清零fl.setText(null);else if(e.getSource()=d2)/求平方根String s=f 1.getText().trim(); /在获得的文本中除去空格double d=Math.sqrt(Double.parseDoubLe(s);fl.setText(String.vatueO/(d);f2.setText(String.vatueO/(d); )else

38、 if(e.getSource()=d3)求立方根String s=f1.getText().trim();double d=Math.pow(Double.parseDoubLe(s)1.0/3.0);fl. setText (String. vatt/eO/:(d);f2. setText(String. vc?LueO/(d); )else if(e.getSource()=d4)/求平方String s=f1.getText().trim();double d=Math poiv(Double parseOoubLe( s),2.0);fl. setText( String. vaLt

39、/eO/(d);f2. setText(String. va/.ueO/(d); )else if(e.getSource()=d5)/求立方String s=f1.getText().trim();double d=Math.pow(Double.parseDot/bLe(s),3.0);fl.setText(String.vatueOf (d);f2.setText(String.vaLueO/(d);)else if(e.getSource()=dsin) /求正弦String s=f1.getText().trim();double radians=Math.toRadians(Dou

40、ble.parseDoubLe(s);double d=Math.sin(radians);fl.setText(String.vati/eOf(String.format(%.2f, d); 小数v)else if(e.getSource()=dcos) /求余弦(String s=f1.getText().trim();double radians=Math.toRadians(Double.parseDoubLe(s);double d=Math.cos(radians);fl.setText(String.vati/eOf(String.format(%.2fd); 小数)else i

41、f(e.getSource()=dtan) /求正切String s=fl.getText().trim();double radians=Math.toRadians(Double.parseDoubLe(s);double d=Math.tc/n(radians);fl. setText(String. vatueO/( St ring./or/nat (%. 2f! d); 小数)else if(e.getSource()=dcot) /求余切(String s=f1.getText().trim();double radians二Math.toRadians(Double.parseDoubLe(s);double d=1.0/Math.tan(radians);fl. setText (St ring. vaLueO/( St ring./orznc7t(%. Zf, d); 小数)/保存两位/ /保存两位/保存两位/保存两位else if(e.getSource()=b14) /判断是否为运算符String s=f1.getText().trim();String rs;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁