ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:319.36KB ,
资源ID:6217735      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6217735.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java课程设计模拟科学计算器DOC.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java课程设计模拟科学计算器DOC.docx

1、java课程设计模拟科学计算器DOCJAVA课程设计说明书题目:模拟科学计算器 姓名: 学号: 班级: 网络工程11-2 山东科技大学2013年11月7日2 需求分析 22.1 设计背景 22.2 需求获取 32.3 程序功能图 43 设计思路 43.1 界面布局 43.2 类的定义 53.3变量的定义 54 详细设计 64.1整体概述 64.2 误操作处理 74.3流程图和结构图 85 系统调试 115.1 程序界面 115.2 运行界面 116 心得与体会 157 参考文献 168 附录 161 课设任务及要求1.1课设任务:要求:界面模拟Windows中的计算器程序。实现基本数学运算、函

2、数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。实现要点:添加相关组件并进行按钮事件处理。要求提交Application和Applet两个版本的程序。1.2设计要求 设计的java计算器应用程序可以完成加法、减法、乘法、除法和取余运算,和cos,sin,tan等三角函数功能以及阶乘和指数等运算,且有小数点、正负号、求倒数、退格和清零功能。具体可参考windows附件下的计算器课程设计使用Eclipse4.2等作为程序编译和运行测试的开发平台,采用JDK-7u25作为java开发环境,使用Microsoft Office Visio 2007作为绘图工具。认真按时完成课程设计报告,制作演讲

3、PPT,积极报名上讲台向大家演示和讲解自己的程序。提交打印版的报告以及电子版的原稿和Application和Applet两个版本的程序代码。2 需求分析2.1 设计背景本程序是老师提供的几个课程设计题目中比较中等的题目。要求实现模拟的科学计算器功能,主要包括加减乘除四则运算和阶乘,三角函数以及指数的运算。具体的功能我参考了Windows7下的计算机小程序,并根据其界面设计了java小程序界面,根据其功能对自己设计的计算器小程序进行了功能的适当增加与修改。在实现了课程设计题目要求的基础上,自己又增添了对数函数,幂函数,三角函数,取余等我们常用到的功能比较简单的函数。由于本函数涉及的函数以及按键数

4、目较多,故没有采用面向对象的设计方法,没有对每个功能封装成函数调用,而是针对每个按键的动作事件直接采用了算法的编写。最终实现了全部的功能,但是由于时间有限,许多功能没有坐到很到位的优化,或许还存在着许多了漏洞,欢迎老师和同学的批评指正,我一定会不断完善。2.2 需求获取本程序的设计过程,按照题目的要求,我认真参考了Windows7下计算器小程序的运行界面与运行操作与结果,对我自己设计的程序的需求展开了进一步的研究。主要得到以下几点需求:1.必须实现题目要求的和Windows7下计算器下的基本功能,并能正确运行。2.必须使程序具有清空,清除,退格和正负数,小数点的基本功能。3.必须要修程序可以进

5、行连续运算,即如“1+2+3+4,1*2+4-4”等连续运算4.必须使用可视化界面,按键布局简单明了,使人一看就懂,直接可以上手操作。界面要做到简单明了,通俗易懂,和蔼可亲。5.必须有用户错误操作,输入不规范的警告与提示,提醒用户正确操作。6.程序必须经过严格的测试与运行,保证没有明显的BUG和程序崩溃状况,要经得起用户的长时间使用。2.3 程序功能图功能图如下:3 设计思路3.1界面布局本应用程序继承自框架类(JFrame),采用BorderLayout边缘布局和GridLayout网格布局相结合的布局管理方式,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p按照网格

6、布局的顺序加入到其他区域。将文本框放到界面上方,将指数函数放到界面下方,将三角函数放到界面左边,将基本四则运算放到界面的右面,使得界面的整体布局合理整洁,易于上手。3.2类的定义本程序主要定义了一个主函数和三个类:public static void main(String args):程序的主函数,Application程序的主要实现标志,调用上文中定义的类class C1:程序主类,定义了整个界面的布局,和针对每个按钮的动作监听,以及每个动作所对应的具体的操作,计算的运行和输出主函数。class jiecheng:定义了阶乘运算(fff)的算法实现。class Mymath:定义了asin

7、h、acosha、tanh三个Math.中不包含的三角函数及其算法实现3.3变量的定义字符串变量String a,c,s用来储存数字和符号以及运算结果。整形变量flagdenghao,flagyunsuan,lastyunsuanCount变量countxiaoshudian用来统计小数点出现的次数4 详细设计4.1.整体概述首先,程序定义了三个类:一个主类,两个主类里调用的辅助类。分别实现,计算器主要功能的实现,阶乘算法的实现,和反三角函数算法的实现。其次,对于C1主类,首先在框架JFrame下定义了每个触击式组件,即JButton命令式按钮。并采用了BorderLayout边缘布局和Gri

8、dLayout网格布局相结合的布局管理方式。将文本框,Str1(数字运算),Str2(三角函数),Str3(反三角函数)和Str4(指数函数)合理的排布在整个框架下。然后,定义了每个JButton命令式按钮代表的数字,符号和函数,并且通过public void actionPerformed(ActionEvent e)函数定义了每个按钮对应的动作监听,从而确定了鼠标点击每个按钮时可以实现对应的不同的算法。接下来,就是每个运算所对应的算法实现,这里以加法运算为例:1.首先用户输入一个数字,程序用String s暂时储存,并通过JTexField()文本编辑框显示出来。2.接着,用户按下“+”按

9、钮,触发按钮事件,先判断是数字或者是符号,当触发事件之前输入的是符号时“.”没有输入数字时,程序采用 Double.valueOf(),将输入的“.”进行强制类型转换成“0.”。当用户输入正常数字时,程序首先将s内的数据储存到a中,同时将a中的内容清空,以便输入加数,并再次储存到s中,并通过JTexField()文本编辑框显示出来。3.当用户按下“=”按钮时,程序首先进行判断是否flagyunsuan=0,当flagyunsuan=0是说明是第一次按“=”按钮,接下在判断“=”之前是否是空值或符号,当判断flagdenghao = ture的时候可以进行运算。将运算结果存入a中,并再次通过JT

10、exField()文本编辑框显示出来。4.接下来还要对运行的结果通过Double.valueOf()进行强制类型转换。因为储存数据的s和a都是String型变量,而要求的输出结果却是double类型的变量,所以要转换以后输出。5.输出完毕以后,必须判断是否使用本次运算结果进行下一步的运算,如果是的话则通过switch (lastyunsuan)来判断接下来需要进行的运算,再重复上面的步骤。4.2.误操作处理由于用户操作的不确定性,有时可能不会严格按照程序说明书进行对应的操作,经常会发生误操作。这便对程序的操作性要求大大提高。这就要求程序做到以下几点:1.程序不能因为操作失误而崩溃。2.程序要可

11、以给用户发出错误警报。3.程序要可以对错误进行适当的修改。而本程序经过反复误操作运行,已经可以保证程序不会因为误操作而发生崩溃。其次,本程序采用了Toolkit.getDefaultToolkit().beep()函数,可以使程序发出“beep”声音的警报。最后,本程序对一些显而易见的错误,比如输入小数时可以自动把用户输入的“.”强制转化为“0.”等。从而保证了,当遇到各种误操作的时候程序可以正常运行。4.3.流程图和结构图1.程序流程图2.代码结构图5 运行与调试5.1 程序界面计算器界面如下:5.2 运行界面注:由于本程序要实现的功能过多,这里只采用部分具有代表性的功能的截图作为参考。1.

12、加法操作程序可以正确运行8+5=132.除操作程序可以正确运行9/3=33.sin函数运算可以正确运行sin()= 0(由于本函数采用弧度运算,这里取了的近似值3.14进行的运算,所以运算结果只能约等于1)。4.指数运算本程序可以正确运行2的立方= 8。5.阶乘运算本程序正确实现了9的阶乘 = 3628806心得与体会本次课程设计在我的努力编写下顺利完成了。设计过程中我付出了劳动与汗水,遇到过很多的困难和挫折,而且我们最终都战胜了他们,获得的最大收货,我认为并不是我设计成功了一个多么了不起的程序,而是我在设计过程中遇到的困难和解决它的方法与经验才是最值得我认真体会的地方。通过本次设计过程我发现

13、了我们学习知识的严重不足,许多设计过程中常用到的知识,我们掌握的并不好。还要时常去查课本,有的甚至一点印象都没有,我认为这一切的原因在于我们不去用他,俗话说孰能生巧。对于所学的知识我们要善于使用。我还发现,一些问题不能只凭借自己的主观去臆想判断,实践才是硬道理,实践出真知。只有通过自身去调查去分析得出的结论,才最接近事实,软件的开发切忌不能想当然的去看问题,毕竟只有动手做了才知道对与不对。本次实验过后,不仅锻炼了我的设计分析能力,编程能力,最重要的是锻炼了我面对问题的应变与解决能力。只有把自己所学的知识,和自己的经验,老师的指导相互结合起来,才能在学习的道路上少走弯路,并实现自己想要的目标。最

14、后,再次感谢java程序设计赵建立老师的指导,感谢有关同学提供的帮助,最后祝愿java这门课越学越好。7参考资料Java程序设计教程(第2版) 雍俊海 清华大学出版社Java程序设计实验指导 雍俊海 清华大学出版社Java语言使用教程 丁振凡 北京邮件大学出版社8附录由于本程序涉及的代码量过于庞大,这里只给出几个有代表性的算法的代码,完整的代码请参考电子版的代码附录。部分程序源代码如下:class jiecheng public static double fff(double n) if(n=0) return 1; else return n*fff(n-1); class Mymath

15、public static double asinh(double x) return Math.log(x+Math.sqrt(x*x+1); public static double acosh(double x) return Math.log(x+Math.sqrt(x*x-1); public static double atanh(double x) return 0.5*Math.log(1+x)/(1-x); public class C1 implements ActionListener/,KeyListener public C1() JFrame frame = new

16、 JFrame(); Container con = frame.getContentPane(); con.setLayout(new BorderLayout(10,10); panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel(); panel4 = new JPanel(); panel1.setLayout(new GridLayout(6,4,5,5); panel2.setLayout(new GridLayout(4,2,2,2); panel3.setLayout(new GridLayout(4,

17、2,3,3); panel4.setLayout(new GridLayout(2,4,4,4); panel5 = new JPanel(); panel5.setLayout(new CardLayout(); String str1 = 7,8,9,/,4,5,6,*,1,2,3,-,0,.,+,=,back,CE,mod,C,+/-; for(int i=0;istr1.length;i+) bi = new JButton(str1i); bi.addActionListener(this); panel1.add(bi); String str2 = lnv,ln,sin,cos,

18、tan,sinh,cosh,tanh; for(int i = 0;istr2.length;i+) b2i = new JButton(str2i); b2i.addActionListener(this); panel2.add(b2i); String str3 = lnv,ex,asin,acos,atan,asinh,acosh,atanh; for(int i = 0;istr3.length;i+) b3i = new JButton(str3i); b3i.addActionListener(this); panel3.add(b3i); panel5.add(one,pane

19、l2); panel5.add(two,panel3); (CardLayout)panel5.getLayout().show(panel5, one); String str4 = 1/x,sqrt,x2,x3,xy,3,yx,log,10x,n!; for(int i=0;i= 1) Toolkit.getDefaultToolkit().beep(); else s+=.; System.out.println(s); System.out.println(s.length(); if(s.equals(.) System.out.println(true); else System.

20、out.println(false); textfield.setText(s); textfield.requestFocus(); countxiaoshudian+; /- else if(e.getSource()=b3)/ if(flagyunsuan=0) if(s = ) if(flagdenghao = false) a = 0; else flagdenghao = false; else if(s.equals(.) s = 0.; a = Double.valueOf(s); else if(s !=) if(s.equals(.) s = 0.; c = Double.

21、valueOf(s); switch (lastyunsuan) case +: a += c; break; case -: a -= c; break; case *: a *= c; break; case %: if(c = 0) a = 0; else a %= c; break; case /: if(c = 0) textfield.setText(除数不为0); flagdenghao = false; flagyunsuan = 0; lastyunsuan = ; countxiaoshudian = 0; a = 0; c = 0; ch = ; else a /= c;

22、 break; case : a = Math.pow(a, c); break; case $: if(a = 0) textfield.setText(error); flagdenghao = false; flagyunsuan = 0; lastyunsuan = ; countxiaoshudian = 0; a = 0; c = 0; ch = ; else a = Math.pow(a, 1.0/c); break; textfield.setText(+a); s = ; countxiaoshudian = 0; ch=/; lastyunsuan=ch; flagyunsuan+; flagdenghao = false; flagb2 = false; textfield.requestFocus(); public static void main(String args) / TODO Auto-generated method stub new C1();

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

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