版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 7/7java课程设计-模拟科学计算器(DOC) JAVA课程设计说明书 题目:模拟科学计算器 姓名: 学号: 班级:网络工程11-2 山东科技大学 2013年11月7日 目录 1 课设任务及要求 (3) 1.1课设任务 (3) 1.2设计要求 (3) 2 需求分析 (2) 2.1 设计背景 (2) 2.2 需求获取 (3) 2.3 程序功能图 (4) 3 设计思路 (4) 3.1 界面布局 (4) 3.2 类的定义 (5) 3.3变量的定义 (5) 4 详细设计 (6) 4.1整体概述 (6) 4.2 误操作处理 (7) 4.3流程图和结构图 (8) 5 系统调试 (11) 5.1 程序界
2、面 (11) 5.2 运行界面 (11) 6 心得与体会 (15) 7 1 课设任务及要求 1.1课设任务: 要求:界面模拟Windows中的计算器程序。 实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。 实现要点:添加相关组件并进行按钮事件处理。 要求提交Application和Applet两个版本的程序。 1.2设计要求 设计的java计算器应用程序可以完成加法、减法、乘法、除法和取余运算,和cos,sin,tan等三角函数功能以及阶乘和指数等运算,且有小数点、正负号、求倒数、退格和清零功能。具体可参考windows附件下的计算器 课程设计使用Eclipse4.2
3、等作为程序编译和运行测试的开发平台,采用JDK-7u25作为java开发环境,使用Microsoft Office Visio 2007作为绘图工具。 认真按时完成课程设计报告,制作演讲PPT,积极报名上讲台向大家演示和讲解自己的程序。提交打印版的报告以及电子版的原稿和Application和Applet两个版本的程序代码。 2 需求分析 2.1 设计背景 本程序是老师提供的几个课程设计题目中比较中等的题目。要求实现模拟的科学计算器功能,主要包括加减乘除四则运算和阶乘,三角函数以及指数的运算。具体的功能我参考了Windows7下的计算机小程序,并根据其界面设计了java小程序界面,根据其功能对
4、自己设计的计算器小程序进行了功能的适当增加与修改。在实现了课程设计题目要求的基础上,自己又增添了对数函数,幂函数,三角函数,取余等我们常用到的功能比较简单的函数。由于本函数涉及的函数以及按键数目较多,故没有采用面向对象的设计方法,没有对每个功能封装成函数调用,而是针对每个按键的动作事件直接采用了算法的编写。最终实现了全部的功能,但是由于时间有限,许多功能没有坐到很到位的优化,或许还存在着许多了漏洞,欢迎老师和同学的批评指正,我一定会 不断完善。 2.2 需求获取 本程序的设计过程,按照题目的要求,我认真参考了Windows7下计算器小程序的运行界面与运行操作与结果,对我自己设计的程序的需求展开
5、了进一步的研究。主要得到以下几点需求: 1.必须实现题目要求的和Windows7下计算器下的基本功能,并能正确运行。 2.必须使程序具有清空,清除,退格和正负数,小数点的基本功能。 3.必须要修程序可以进行连续运算,即如“1+2+3+4,1*2+4-4”等连续运算 4.必须使用可视化界面,按键布局简单明了,使人一看就懂,直接可以上手操作。界面要做到简单明了,通俗易懂,和蔼可亲。 5.必须有用户错误操作,输入不规范的警告与提示,提醒用户正确操作。 6.程序必须经过严格的测试与运行,保证没有明显的BUG和程序崩溃状况,要经得起用户的长时间使用。 2.3 程序功能图 功能图如下: 3 设计思路 3.
6、1界面布局 本应用程序继承自框架类(JFrame),采用BorderLayout边缘布局和GridLayout网格布局相结合的布局管理方式,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p按照网格布局的顺序加入到其他区域。将文本框放到界面上方,将 指数函数放到界面下方,将三角函数放到界面左边,将基本四则运算放到界面的右面,使得界面的整体布局合理整洁,易于上手。 3.2类的定义 本程序主要定义了一个主函数和三个类: public static void main(String args):程序的主函数,Application程序的主要实现标志,调用上文中定义 的类 cla
7、ss C1:程序主类,定义了整个界面的布局,和针对每个按钮的动作监听,以及每个动作所对应的具体的操作, 计算的运行和输出主函数。 class jiecheng:定义了阶乘运算(fff)的算法实现。 class Mymath:定义了asinh、acosha、tanh三个Math.中不包含的三角函数及其算法实现 3.3变量的定义 字符串变量String a,c,s用来储存数字和符号以及运算结果。 整形变量flagdenghao,flagyunsuan,lastyunsuan Count变量countxiaoshudian用来统计小数点出现的次数 4 详细设计 4.1.整体概述 首先,程序定义了三个
8、类:一个主类,两个主类里调用的辅助类。分别实现,计算器主要功能的实现,阶乘算法的实现,和反三角函数算法的实现。 其次,对于C1主类,首先在框架JFrame下定义了每个触击式组件,即JButton命令式按钮。并采用了BorderLayout边缘布局和GridLayout网格布局相结合的布局管理方式。将文本框,Str1(数字运算),Str2(三角函数),Str3(反三角函数)和Str4(指数函数)合理的排布在整个框架下。 然后,定义了每个JButton命令式按钮代表的数字,符号和函数,并且通过public void actionPerformed(ActionEvent e) 函数定义了每个按钮对
9、应的动作监听,从而确定了鼠标点击每个按钮时可以实现对应的不同的算法。 接下来,就是每个运算所对应的算法实现,这里以加法运算为例: 1.首先用户输入一个数字,程序用String s暂时储存,并通过JTexField()文本编辑框显示出来。 2.接着,用户按下“+”按钮,触发按钮事件,先判断是数 字或者是符号,当触发事件之前输入的是符号时“.”没有输入数字时,程序采用 Double.valueOf(),将输入的“.”进行强制类型转换成“0.”。当用户输入正常数字时,程序首先将s内的数据储存到a中,同时将a中的内容清空,以便输入加数,并再次储存到s中,并通过JTexField()文本编辑框显示出来。
10、 3.当用户按下“=”按钮时,程序首先进行判断是否flagyunsuan=0,当flagyunsuan=0是说明是第一次按“=”按钮,接下在判断“=”之前是否是空值或符号,当判断flagdenghao = ture的时候可以进行运算。将运算结果存入a中,并再次通过JTexField()文本编辑框显示出来。 4.接下来还要对运行的结果通过Double.valueOf()进行强制类型转换。因为储存数据的s和a都是String型变量,而要求的输出结果却是double类型的变量,所以要转换以后输出。 5.输出完毕以后,必须判断是否使用本次运算结果进行下一步的运算,如果是的话则通过switch (las
11、tyunsuan)来判断接下来需要进行的运算,再重复上面的步骤。 4.2.误操作处理 由于用户操作的不确定性,有时可能不会严格按照程序说明书进行对应的操作,经常会发生误操作。这便对程序的操作性要 求大大提高。这就要求程序做到以下几点: 1.程序不能因为操作失误而崩溃。 2.程序要可以给用户发出错误警报。 3.程序要可以对错误进行适当的修改。 而本程序经过反复误操作运行,已经可以保证程序不会因为误操作而发生崩溃。其次,本程序采用了Toolkit.getDefaultToolkit().beep()函数,可以使程序发出“beep”声音的警报。最后,本程序对一些显而易见的错误,比如输入小数时可以自动
12、把用户输入的“.”强制转化为“0.”等。从而保证了,当遇到各种误操作的时候程序可以正常运行。 4.3.流程图和结构图 1.程序流程图 2.代码结构图 5 运行与调试 5.1 程序界面 计算器界面如下: 5.2 运行界面 注:由于本程序要实现的功能过多,这里只采用部分具有代表性的功能的截图作为参考。 1.加法操作 程序可以正确运行8+5=13 2.除操作 程序可以正确运行9/3=3 3.sin函数运算 可以正确运行sin()= 0(由于本函数采用弧度运算,这里取了的近似值3.14进行的运算,所以运算结果只能约等于1)。 4.指数运算 本程序可以正确运行2的立方= 8。 5.阶乘运算 本程序正确实
13、现了9的阶乘 = 362880 6心得与体会 本次课程设计在我的努力编写下顺利完成了。设计过程中我付出了劳动与汗水,遇到过很多的困难和挫折,而且我们最终都战胜了他们,获得的最大收货,我认为并不是我设计成功了一个多么了不起的程序,而是我在设计过程中遇到的困难和解决它的方法与经验才是最值得我认真体会的地方。 通过本次设计过程我发现了我们学习知识的严重不足,许多设计过程中常用到的知识,我们掌握的并不好。还要时常去查课本,有的甚至一点印象都没有,我认为这一切的原因在于我们不去用他,俗话说孰能生巧。对于所学的知识我们要善于使用。 我还发现,一些问题不能只凭借自己的主观去臆想判断,实践才是硬道理,实践出真
14、知。只有通过自身去调查去分析得出的结论,才最接近事实,软件的开发切忌不能想当然的去看问题,毕竟只有动手做了才知道对与不对。 本次实验过后,不仅锻炼了我的设计分析能力,编程能力,最重要的是锻炼了我面对问题的应变与解决能力。只有把自己所学的知识,和自己的经验,老师的指导相互结合起来,才能在学习的道路上少走弯路,并实现自己想要的目标。 最后,再次感谢java程序设计赵建立老师的指导,感谢有关同学提供的帮助,最后祝愿java这门课越学越好。 7参考资料 Java程序设计教程(第2版)雍俊海清华大学出版社Java程序设计实验指导雍俊海清华大学出版社 Java语言使用教程丁振凡北京邮件大学出版社 8附录
15、由于本程序涉及的代码量过于庞大,这里只给出几个有代表性的算法的代码,完整的代码请参考电子版的代码附录。 部分程序源代码如下: class jiecheng public static double fff(double n) if(n= 1) Toolkit.getDefaultToolkit().beep(); else s+=.; System.out.println(s); System.out.println(s.length(); if(s.equals(.) System.out.println(true); else System.out.println(false); text
16、field.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.valueOf(s); switch (lasty
17、unsuan) 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; 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 =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年甘肃农业职业技术学院单招综合素质笔试备考试题含详细答案解析
- 2026年黑龙江幼儿师范高等专科学校高职单招职业适应性测试备考试题及答案详细解析
- 2026年兰州职业技术学院单招综合素质考试参考题库含详细答案解析
- 2026年广西生态工程职业技术学院高职单招职业适应性测试备考试题及答案详细解析
- 2026年长沙民政职业技术学院高职单招职业适应性测试模拟试题及答案详细解析
- 2026年崇左幼儿师范高等专科学校单招职业技能考试备考试题含详细答案解析
- 2026年广东舞蹈戏剧职业学院高职单招职业适应性测试模拟试题及答案详细解析
- 2026年石家庄理工职业学院高职单招职业适应性测试模拟试题及答案详细解析
- 2026年江海职业技术学院单招综合素质笔试备考题库含详细答案解析
- 2026年江西工商职业技术学院单招综合素质笔试模拟试题含详细答案解析
- 养老院电气火灾培训课件
- 中国工商银行2025年度春季校园招聘笔试历年典型考题及考点剖析附带答案详解
- 对外话语体系构建的叙事话语建构课题申报书
- 马年猜猜乐(马的成语)打印版
- 精神障碍防治责任承诺书(3篇)
- 2025年担保公司考试题库(含答案)
- 2025年金融控股公司行业分析报告及未来发展趋势预测
- 质量控制计划模板全行业适用
- 实施指南(2025)《HG-T3187-2012矩形块孔式石墨换热器》
- 人教版PEP五年级英语下册单词表与单词字帖 手写体可打印
- 中日友好医院公开招聘工作人员3人笔试参考题库(共500题)答案详解版
评论
0/150
提交评论