JAVA实现计算器课程设计要点.docx

上传人:罗晋 文档编号:11088336 上传时间:2021-06-29 格式:DOCX 页数:17 大小:178.88KB
返回 下载 相关 举报
JAVA实现计算器课程设计要点.docx_第1页
第1页 / 共17页
JAVA实现计算器课程设计要点.docx_第2页
第2页 / 共17页
JAVA实现计算器课程设计要点.docx_第3页
第3页 / 共17页
JAVA实现计算器课程设计要点.docx_第4页
第4页 / 共17页
JAVA实现计算器课程设计要点.docx_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《JAVA实现计算器课程设计要点.docx》由会员分享,可在线阅读,更多相关《JAVA实现计算器课程设计要点.docx(17页珍藏版)》请在三一文库上搜索。

1、JAVA课程设计计 算 器 设 讦计算机科学系计算器的设计目录第一章绪论 21.1 开发环境 21.2 基本功能介绍 2第二章系统设计 32.1 系统流程图 32.2 系统功能框图 32.3 需求分析 4第三章软件设计 53.1 界面设计 53.2 代码设计 5第四章测试分析 103.3 程序运行情况: 103.4 程序异常处理: 103.5 测试用例 113.5.1 加法测试 113.5.2 减法测试 113.5.3 乘法测试 123.5.4 除法测试 13第五章结束语 14第六章参考文献 14第一章 绪论1.1 开发环境本系统是利用 Java 语言在 NetBeans IDE6.5 环境下

2、开发的, Java 语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识, 深刻把握 Java 语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了 Java 程序设计课程设计。通过此次课程设计,巩固所学 Java 语言基本知识,增进Java 语言编辑基本功,掌握JDK 、 Editplus 、 Eclipse 、 JCreator 等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手

3、段,把所学课程及相关知识加以融会贯通,全面掌握Java 语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。1.2 基本功能介绍本系统实现了一个简单而实用的计算器,通过这个计算器我们可以进行一些基本的运算操作,它可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制 ,十进制 ,十六进制)之间的相互转换,八进制最多可以输入 19 位数,十进制最多可以输入18 位数,十六进制最多可以输入 14 位数 ,backspace 表 示退 格 ,clear 表 示 初 始 化 , 在 window 下 直接 运 行( Jsp2003.bat ) 即可, 界面为

4、灰白对称。 它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。第 1 页 共 15 页计算器的设计第二章系统设计2.1系统流程图初始化数据double result - 0;人存储结果*, boolean newnumtrue; /保z否新数、黑7邮怙式即= /存储操作将小按不数字按钮+I按下操作将什产片卜按钮true-1+1隹斤 newnum-把当前文本框的内容转为double后传给lc方法 caEc(Double.p

5、ar5edcuble(tKt.enext()h文本艇显示新战:炉 txt占etTW 赣宇, new num =恃1文本框接着显示ytrt- setTewt(txt,geffe4 肚薮字* *t叩=操作符5 newnum = true*第3页共15页2.2 系统功能框图说明:在程序中构建类testZ ,在其中封装起界面、文本框、按钮、数字、运算符等等成员,再引入成员函数testZ ()进行计算器的模拟界面设计;其次设计出事件处理函数,如:运算事件、符号事件、等号事件等等;最后设计运算函数的响应事件。这样设计的好处在于使得程序的实现思维更清晰,易懂,可读性增强。反之则不然。2.3 需求分析首先分析

6、这个说要完成的功能,它的主要任务是完成十六进制、十进制、八进制和二进制之间的相互转化,需要包含负数,但不用考虑小数。其次,确定接口参数。根据功能可知,它传递给外部的就是一个转后的数据,而外部除了需要传递给转化前的数据以外,是否还需要其他参数呢?我们都知道,十进制的负数同样可以利用其他进制进行表示,例如二进制,转化方法是:求十进制数的绝对值对应的二进制数,最高位为 1;然后对二进制逐位求反,最高位除外;接着最低一位加 1,需要进位的话依次进位,最高位除外。如今的问题就摆在了我们面前,我们如何知道这个数的最高位是第几位呢,也许有人会说,那就用转化后的前面再加上一位,好,即使这样可以成立,那么 -1

7、转化后就是11, 3 转化后也为 11,现在如果需要现在的把这个数二进制数再转化为十进制,那么我们如何知道原来的是正数还是负数呢,如果要转化为十六进制,八进制又当如何呢?经过以上的分析发现,还应该有另外一个参数二进制时的宽度,只有这样才能知道谁是最高位,因此就称这个参数为位宽。最后,设计类。根据第二步的分析,因为位宽对每一个方法都是一样,所以可能把它作为类的成员变量,而另外两个参数转化前的值和转化后的值就分别作为输入参数和返回值。而类对外的接口只有各个转化的方法,因此这几个方法设计为 public 权限,而其它所有的辅助方法都为 private 权限。位宽通过构造函数传递,外部不能直接访问和修

8、改,设置也设置为 private 权限。为了减少计算量,所有的转化都以二进制为中介。例如十六进制到十进制,是十六进制-二进制-十进制。第5页共15页计算器的设计第三章软件设计3.1 界面设计Caculator计算器cclear这个就是计算器界面,简洁易用,我们可以从中的数字按键和运算符按钮 进行相应的数学计算,总共由1 7个按钮(1 0个数字符+5个运算符号+1个小数点+ 1个“ clear ”按钮),一个标签、再加一个文本框组成。3.2 代码设计import java.awt.*;import java.awt.event.*;import javax.swing.*;public clas

9、s Caculatorpublic static void main(String口 args)JFrame frame = new JFrame(Caculator);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(new CaculatorPanel();frame.pack();frame.setVisible(true);class CaculatorPanel extends JPanelprivate JLabel namelabel,resultlabel;privat

10、e JTextField resultField;private JPanel labelPanel,numberPanel,toolPanel;private JButton s1,s2,s3,s4,s5,s6,s7, s8, s9,s0, p1,p2,t1,t2,t3,t4,clear;private boolean end,add,sub,mul,div;private String str;private double num1,num2;public CaculatorPanel()namelabel = new JLabel(计算器 );resultField = new JTex

11、tField(10);ButtonListener listener = new ButtonListener();clear = new JButton(clear);clear.addActionListener(listener);s1 = new JButton(1); s1.addActionListener(listener);s2 = new JButton(2); s2.addActionListener(listener);s3 = new JButton(3); s3.addActionListener(listener);s4 = new JButton(4); s4.a

12、ddActionListener(listener);s5 = new JButton(5); s5.addActionListener(listener);s6 = new JButton(6); s6.addActionListener(listener);s7 = new JButton(7); s7.addActionListener(listener);s8 = new JButton(8); s8.addActionListener(listener);s9 = new JButton(9); s9.addActionListener(listener);s0 = new JBut

13、ton(0); s0.addActionListener(listener); p1 = new JButton(.); p1.addActionListener(listener); p2 = new JButton(=); p2.addActionListener(listener); t1 = new JButton(+); t1.addActionListener(listener); t2 = new JButton(-); t2.addActionListener(listener);t3 = new JButton(*); t3.addActionListener(listene

14、r); t4 = new JButton(/); t4.addActionListener(listener);labelPanel = new JPanel(); labelPanel.add(namelabel);labelPanel.add(resultField);labelPanel.add(clear);numberPanel = new JPanel();numberPanel.setLayout(new GridLayout(4,3);numberPanel.add(s1);numberPanel.add(s2);numberPanel.add(s3);numberPanel.

15、add(s4);numberPanel.add(s5);numberPanel.add(s6);numberPanel.add(s7);计算器的设计numberPanel.add(s8);numberPanel.add(s9);numberPanel.add(s0);numberPanel.add(p1);numberPanel.add(p2);toolPanel = new JPanel();toolPanel.setLayout(new GridLayout(4,1);toolPanel.add(t1);toolPanel.add(t2);toolPanel.add(t3);toolPan

16、el.add(t4);setPreferredSize(new Dimension(500,200);setBackground(Color.cyan);add(labelPanel);add(numberPanel);add(toolPanel);public void num(int i)String s = null;s=String.valueOf(i);if(end)/ 如果数字输入结束,则将文本框置零,重新输入resultField.setText(0);end=false;if(resultField.getText().equals(0)/ 如果文本框的内容为零,则覆盖文本框的

17、内容resultField.setText(s);else/ 如果文本框的内容不为零,则在内容后面添加数字str = resultField.getText() + s;resultField.setText(str);private class ButtonListener implements ActionListenerpublic void actionPerformed(ActionEvent e) / 数字事件if(e.getSource()=clear)resultField.setText(0);else if(e.getSource()=s1)num(1);else if(e

18、.getSource()=s2)num(2);else if(e.getSource()=s3)num(3);else if(e.getSource()=s4)num(4);else if(e.getSource()=s5)num(5);else if(e.getSource()=s6)num(6);else if(e.getSource()=s7)num(7);else if(e.getSource()=s8)num(8);else if(e.getSource()=s9)num(9);else if(e.getSource()=s0) num(0);/ 符号事件else if(e.getS

19、ource()=t1)sign(1);else if(e.getSource()=t2)sign(2);else if(e.getSource()=t3)sign(3);else if(e.getSource()=t4)sign(4);/ 等号else if(e.getSource()=p1) str=resultField.getText();if(str.indexOf(.)=1)str+=.;resultField.setText(str);else if(e.getSource()=p2)num2=Double.parseDouble(resultField.getText();if(

20、add)num1=num1 + num2;else if(sub)num1=num1 - num2;else if(mul)num1=num1 * num2;else if(div)num1=num1 / num2;resultField.setText(String.valueOf(num1); end=true;public void sign(int s)if(s=1)add=true;sub=false;mul=false;div=false;else if(s=2)add=false;sub=true;mul=false;div=false;else if(s=3)add=false

21、;sub=false;mul=true;div=false;else if(s=4)add=false;sub=false;mul=false;div=true;num1=Double.parseDouble(resultField.getText(); end=true;第四章 测试分析4.1 程序运行情况:程序正常的响应按钮事件,输入的数值长度受变量length 的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的 E , 当结果太大的时候, 有可能超出可能表示的最大值, (结果溢出)

22、 ,这个时候就要对结果进行必要的异常处理, 我在输出结果的方法内设置if 语句,如果结果大于某一个值就抛出一个This_number_too_big 类型的类,再使用try-catch ,捕捉输出结果的方法抛出的异常对象。然后进行,重制归零的处理。4.2 程序异常处理:当结果超出 Double.MAX_VALUE时, 将抛出一个This_number_too_big类的异常对象,这个是我自定义的一个异常类它继承自 Exception 类,然后使用 try-catch 去捕捉这个异常,异常的处理如下:try js();catch(This_number_too_big e)lab.setText

23、(0);number=0;mark=n;Refresh=false;System.out.println(The number is too big); / 如果出现异常则初始化效果如同 clear 键第 9 页 共 15 页计算器的设计4.3 测试用例4.4.1加法测试(1) 8952 + 1965 .89运行结果如下:Caculator第13页共15页计算器 10917.8&cJeai(2) 0.58+(2.891)运行结果如下:clearCaculator计算器-2 3114.4.2减法测试(1) 589. 47-1009运算结果如下:L=J计算器-419.53Caojlatsr123

24、4561890.PEclear(2) 0 - 0 . 5 8 3运算结果如下:计算器-0.583Caculator4.4.3乘法测试(1) 458* (58. 1 4 5 )运算结果如下:escalator计算器 26630 41 I clear(2) 0*78. 0 运算结果如下:Caojlator006计算器0.0clear4.4.4除法测试(1) 10. 8/0. 00 运算结果如下:计算器InfinityCacuiatorCaculator(2) - 1 0 0 / 2 0. 3 运算结果如下:计算器 4.9261 083743S423, clear(3) 0/99 运算结果如下:计算

25、器的设计第五章结束语终于做完了这次的作业,有一种如释重担的感觉,但还是有一点点的留恋。这次做的计算器的实现算是一个比较简单的设计, 它牵涉的知识面并不是很多,实现的功能简单,对界面要求也不高,很适合我们做一些个人的程序开发。做起来虽然不是很吃力但有时还是比较烦躁的,可是在精力完全投入之后又发现自己已经被它深深吸引住,它有一股莫名的魅力在吸引我去完善。从绪论到最后的总结,都是一步一个脚印走过来的,在这其中有很多的困难,但是还是自己给一个一个地突破,没有半途而废。老师给我们的时间是很充足的,在足够的时间里我们就没有理由不去做好它,通过此次课程设计,我们将本学期所学的 JAVA 知识得到巩固和应用,

26、在设计的过程中遇到了很到问题,不过在自己向别人请教或网上找资料,最后还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。通过对此课题的开发, 使我对用 JBuilder9.0 开发系统有了一个比较清楚的认识, 体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,是在最后的测试中还是存在一些小的问题,这些都有待进一步完善和提高,但值得欣慰的是,自己还是做出来了点东西。对于文中出现的不足和系统中出现的问题敬请老师指导。通过这次自己动手学习,我学到了很多东西,对软件开发我又增加了一些知识,相信在以后的系统开发中我们将会设计的更好、系统功能做的更完善。第六章参考文献1. 于万波、刘其昌等.Java 语言实用教程. 北京:清华大学出版社, 20082. 朱战立 , 沈伟 . Java 程序设计实用教程M. 北京: 电子工业出版社, 20053. 李诚等 . Java2 简明教程 M ,第 2 版 . 北京:清华大学出版社, 20044. 耿祥义 .Java 课程设计 M. 北京:清华大学出版社, 2004第 15 页 共 15 页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1