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

上传人:tbuqq 文档编号:5197257 上传时间:2020-02-19 格式:PDF 页数:15 大小:592.78KB
返回 下载 相关 举报
JAVA实现计算器课程设计要点.pdf_第1页
第1页 / 共15页
JAVA实现计算器课程设计要点.pdf_第2页
第2页 / 共15页
JAVA实现计算器课程设计要点.pdf_第3页
第3页 / 共15页
JAVA实现计算器课程设计要点.pdf_第4页
第4页 / 共15页
JAVA实现计算器课程设计要点.pdf_第5页
第5页 / 共15页
点击查看更多>>
资源描述

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

1、计 算 机 科 学 系 计算器的设计 第 1 页 共 15 页 目录 第一章绪论 . 2 1.1 开发环境 . 2 1.2 基本功能介绍 2 第二章系统设计 . 3 2.1 系统流程图 3 2.2 系统功能框图 3 2.3 需求分析 . 4 第三章软件设计 . 5 3.1 界面设计 . 5 3.2 代码设计 . 5 第四章测试分析 . 10 3.1 程序运行情况 : . 10 3.2 程序异常处理 : . 10 3.3 测试用例 . 11 3.3.1 加法测试 . 11 3.3.2 减法测试 . 11 3.3.3 乘法测试 . 12 3.3.4 除法测试 . 13 第五章结束语 . 14 第六

2、章参考文献 . 14 计算器的设计 第 2 页 共 15 页 第一章绪论 1.1 开发环境 本系统是利用 Java 语言在 NetBeans IDE6.5环境下开发的, Java 语言是 当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向 对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义, 而且有利于软件的维护和继承。 为了进一步巩固课堂上所学到的知识,深刻把握 Java 语言的重要概念及其 面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问 题的能力,开设了Java 程序设计课程设计。 通过此次课程设计,巩固所学Java 语言基本知识,

3、增进Java 语言编辑基 本功,掌握JDK 、Editplus 、Eclipse 、JCreator等开发工具的运用,拓宽常 用类库的应用。使学生通过该教学环节与手段,把所学课程及相关知识加以融 会贯通,全面掌握Java 语言的编程思想及面向对象程序设计的方法,为今后从 事实际工作打下坚实的基础。 1.2 基本功能介绍 本系统实现了一个简单而实用的计算器,通过这个计算器我们可以进行一 些基本的运算操作,它可以进行简单的四则运算(加、减、乘、除)但仅限于 十进制下,还可以进行(八进制,十进制 ,十六进制)之间的相互转换,八进制最多 可以输入 19 位数,十进制最多可以输入18 位数,十六进制最多

4、可以输入14 位 数 ,backspace表 示 退 格 ,clear表 示 初 始 化 , 在window下 直 接 运 行 (Jsp2003.bat )即可,界面为灰白对称。 它的设计按软件工程的方法进行,系统 具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。使 用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低 了数字计算的难度和节约了时间,对人们的生活有一定的帮助。 计算器的设计 第 3 页 共 15 页 第二章系统设计 2.1 系统流程图 2.2 系统功能框图 计算器的设计 第 4 页 共 15 页 说明:在程序中构建类testZ ,在其中封装起界

5、面、文本框、按钮、数字、 运算符等等成员,再引入成员函数testZ ()进行计算器的模拟界面设计;其次 设计出事件处理函数,如:运算事件、符号事件、等号事件等等;最后设计运 算函数的响应事件。这样设计的好处在于使得程序的实现思维更清晰,易懂, 可读性增强。反之则不然。 2.3 需求分析 首先分析这个说要完成的功能,它的主要任务是完成十六进制、十进制、 八进制和二进制之间的相互转化,需要包含负数,但不用考虑小数。 其次,确定接口参数。根据功能可知,它传递给外部的就是一个转后的数 据,而外部除了需要传递给转化前的数据以外,是否还需要其他参数呢?我们 都知道,十进制的负数同样可以利用其他进制进行表示

6、,例如二进制,转化方 法是:求十进制数的绝对值对应的二进制数,最高位为1;然后对二进制逐位求 反,最高位除外;接着最低一位加1,需要进位的话依次进位,最高位除外。如 今的问题就摆在了我们面前,我们如何知道这个数的最高位是第几位呢,也许 有人会说,那就用转化后的前面再加上一位,好,即使这样可以成立,那么-1 转化后就是 11,3 转化后也为 11,现在如果需要现在的把这个数二进制数再转 化为十进制,那么我们如何知道原来的是正数还是负数呢,如果要转化为十六 进制,八进制又当如何呢?经过以上的分析发现,还应该有另外一个参数 二进制时的宽度,只有这样才能知道谁是最高位,因此就称这个参数为位宽。 最后,

7、设计类。根据第二步的分析,因为位宽对每一个方法都是一样,所 以可能把它作为类的成员变量,而另外两个参数转化前的值和转化后的值就分 别作为输入参数和返回值。而类对外的接口只有各个转化的方法,因此这几个 方法设计为 public权限,而其它所有的辅助方法都为private权限。位宽通过 构造函数传递,外部不能直接访问和修改,设置也设置为private权限。为了 减少计算量,所有的转化都以二进制为中介。例如十六进制到十进制,是十六 进制二进制十进制。 计算器的设计 第 5 页 共 15 页 第三章软件设计 3.1 界面设计 这个就是计算器界面,简洁易用,我们可以从中的数字按键和运算符按钮 进行相应的

8、数学计算,总共由个按钮(个数字符+个运算符号 +个 小数点 +个“ clear ”按钮),一个标签、再加一个文本框组成。 3.2 代码设计 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Caculator public static void main(String args) JFrame frame = new JFrame(“Caculator“); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getC

9、ontentPane().add(new CaculatorPanel(); frame.pack(); frame.setVisible(true); class CaculatorPanel extends JPanel private JLabel namelabel,resultlabel; private JTextField resultField; 计算器的设计 第 6 页 共 15 页 private JPanel labelPanel,numberPanel,toolPanel; private JButton s1,s2,s3,s4,s5,s6,s7, s8, s9,s0,

10、 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 JTextField(10); ButtonListener listener = new ButtonListener(); clear = new JButton(“clear“); clear.addActionListener

11、(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.addActionListener(listener); s5 = new JButton(“5“); s5.addActionListener(listener); s6 = new JBut

12、ton(“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 JButton(“0“); s0.addActionListener(listener); p1 = new JButton(“.“); p1.addActionLis

13、tener(listener); p2 = new JButton(“=“); p2.addActionListener(listener); t1 = new JButton(“+“); t1.addActionListener(listener); t2 = new JButton(“-“); t2.addActionListener(listener); t3 = new JButton(“*“); t3.addActionListener(listener); t4 = new JButton(“/“); t4.addActionListener(listener); labelPan

14、el = 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.add(s4); numberPanel.add(s5); numberPanel.add(s6); numbe

15、rPanel.add(s7); 计算器的设计 第 7 页 共 15 页 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); toolPanel.add(t4); setPreferredSize

16、(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“) /如果文本框的内容为零,则覆盖文本框的内容 resultFie

17、ld.setText(s); else /如果文本框的内容不为零,则在内容后面添加数字 str = resultField.getText() + s; resultField.setText(str); private class ButtonListener implements ActionListener public void actionPerformed(ActionEvent e) /数字事件 if(e.getSource()=clear) 计算器的设计 第 8 页 共 15 页 resultField.setText(“0“); else if(e.getSource()=s

18、1) num(1); else if(e.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.getSour

19、ce()=s0) num(0); /符号事件 else if(e.getSource()=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()

20、=p2) num2=Double.parseDouble(resultField.getText(); if(add) num1=num1 + num2; 计算器的设计 第 9 页 共 15 页 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=

21、false; div=false; else if(s=2) add=false; sub=true; mul=false; div=false; else if(s=3) add=false; 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; 计算器的设计 第 10 页 共 15 页 第四章测试分析 4.1 程序运行情况 : 程序正常的响应按钮事件,输入的

22、数值长度受变量length 的限定,进行混 合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就 可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学 记数里的 E , 当结果太大的时候, 有可能超出可能表示的最大值, (结果溢出) , 这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if 语句, 如果结果大于某一个值就抛出一个This_number_too_big 类型的类,再使用 try-catch ,捕捉输出结果的方法抛出的异常对象。然后进行,重制归零的处理。 4.2 程序异常处理 : 当结果超出 Double.MAX_VALUE时, 将抛出

23、一个 This_number_too_big 类的异常对象,这个是我自定义的一个异常类它继承自Exception 类,然后使 用 try-catch去捕捉这个异常,异常的处理如下: try js(); catch(This_number_too_big e) lab.setText(“0“); number=0; mark=n; Refresh=false; System.out.println(“The number is too big“); /如果出现异常则初始化效果如同clear 键 计算器的设计 第 11 页 共 15 页 4.3 测试用例 4.4.1 加法测试 (1) .运行结果如

24、下: (2) ()运行结果如下: 4.4.2 减法测试 (1) 运算结果如下: 计算器的设计 第 12 页 共 15 页 (2)运算结果如下: 4.4.3 乘法测试 (1)()运算结果如下: (2)运算结果如下: 计算器的设计 第 13 页 共 15 页 4.4.4 除法测试 (1)运算结果如下: (2)运算结果如下: (3)运算结果如下: 计算器的设计 第 14 页 共 15 页 第五章结束语 终于做完了这次的作业,有一种如释重担的感觉,但还是有一点点的留 恋。这次做的计算器的实现算是一个比较简单的设计,它牵涉的知识面并不 是很多,实现的功能简单,对界面要求也不高,很适合我们做一些个人的程序

25、 开发。做起来虽然不是很吃力但有时还是比较烦躁的,可是在精力完全投入之 后又发现自己已经被它深深吸引住,它有一股莫名的魅力在吸引我去完善。 从绪论到最后的总结,都是一步一个脚印走过来的,在这其中有很多的困 难,但是还是自己给一个一个地突破,没有半途而废。老师给我们的时间是很 充足的,在足够的时间里我们就没有理由不去做好它,通过此次课程设计,我 们将本学期所学的JAVA 知识得到巩固和应用,在设计的过程中遇到了很到问 题,不过在自己向别人请教或网上找资料,最后还是很好的完成了。 这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开 阔视野,拓展思维。它还让我学会了在网上查阅那些无限的

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

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

当前位置:首页 > 其他


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