科学计算器课程设计

上传人:仙*** 文档编号:28164773 上传时间:2021-08-23 格式:DOC 页数:33 大小:310.01KB
返回 下载 相关 举报
科学计算器课程设计_第1页
第1页 / 共33页
科学计算器课程设计_第2页
第2页 / 共33页
科学计算器课程设计_第3页
第3页 / 共33页
点击查看更多>>
资源描述
* 课 程 设 计 设计题目: 面向对象程序设计课程设计 -科学计算器 系 别 信息工程系 班级 * 学生姓名 * 学 号 * 指导教师 * 职称 * 起止日期: * * 课程设计任务书 课程设计题目: 面向对象程序设计课程设计 -科学计算器 系 别 信息工程系 班级 * 学生姓名 * 学 号 * 指导教师 * 职称* 课程设计进行地点: * 任 务 下 达 时 间: * 起止日期:* 教 研 室 主 任 * 20*日批准 1.设计的原始资料及依据 通过课程设计使学生进一步加深对课程内容的理解,利用程序设计的基本思想进行程序 的开发,进一步掌握编程方法和技巧,提高学生用程序的思想来解决实际问题的能力。 2设计的主要内容及要求 设计题目:科学计算器 需要完成的功能: 定义组件:09,+、- 、*、/、sqrt()、1/x、%、C=按钮;显示屏文本行; 具有进制转换功能; 要求能关闭窗口;点击按钮,或键盘数字会在显示屏上输出结果。 3.对设计说明书撰写内容、格式、字数的要求 学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计说 明书(论文)的结构及各部分内容要求可参照沈阳工程学院毕业设计(论文)撰写规范 执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。 装订格式 封面、任务书、成绩评审意见表、摘要和关键词、目录、正文、结论、致谢、参考文献。 课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于 3000 字。 打印时采用 A4 纸,页边距均为 20mm,正文采用宋体小四号字,行间距 18 磅。文中大标题 采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,三级节标 题采用黑体小四号字,表题与图题采用宋体五号字。 4. 设计完成后应提交成果的种类、数量、质量等方面的要求 课程设计任务书 课程设计报告 设计成品(光盘) 5.时间进度安排 顺序 阶段日期 计 划 完 成 内 容 备注 1 第 1 周第 1 天 查阅资料,充分解读题目内容,小组分工,确定每个人 的具体任务。 1 天 2 第 1 周第 2 天 数据库设计及登陆界面的实现。 1 天 3 第 1 周第 3,4,5 天, 第 2 周第 1 天 编制程序,单元测试。 4 天 4 第 2 周第 2,3 天 程序整合,综合调试。 2 天 5 第 2 周第 4 天 答辩。 1 天 6 第 2 周第 5 天 撰写课程设计报告。 1 天 6.主要参考资料(文献) 1 耿祥义.JAVA2 实用教程.北京:清华大学出版社,2006 2 朱仲杰.JAVA2 全方位学习.北京:机械工业出版社,2006 3 张思民.JAVA 程序设计实践教程.北京:清华大学出版社,2006 4 汤一平.Java 语言程序设计.北京:科学出版社,2006 5 刘艺.Java 程序设计大学教程.北京:机械工业出版社,2006 * 面向对象程序设计课程设计成绩评定表 系(部):信息工程系 班级: * 学生姓名: * 指 导 教 师 评 审 意 见 评价内容 具 体 要 求 权重 评 分 加权分 调研 论证 能独立查阅文献,收集资料;能制定课程设计方 案和日程安排。 0.1 5 4 3 2 工作能力 态度 工作态度认真,遵守纪律,出勤情况是否良好, 能够独立完成设计工作。 0.2 5 4 3 2 工作量 按期圆满完成规定的设计任务,工作量饱满,难度适宜。 0.2 5 4 3 2 说明书的 质量 说明书立论正确,论述充分,结论严谨合理, 文字通顺,技术用语准确,符号统一,编号齐 全,图表完备,书写工整规范。 0.5 5 4 3 2 指导教师评审成绩 (加权分合计乘以 8) 分 加权分合计 指 导 教 师 签 名: 年 月 日 评 阅 教 师 评 审 意 见 评价内容 具 体 要 求 权重 评 分 加权分 查阅 文献 查阅文献有一定广泛性;有综合归纳资料的能 力 0.2 5 4 3 2 工作量 工作量饱满,难度适中。 0.5 5 4 3 2 说明书的 质量 说明书立论正确,论述充分,结论严谨合理, 文字通顺,技术用语准确,符号统一,编号齐 全,图表完备,书写工整规范。 0.3 5 4 3 2 评阅教师评审成绩 (加权分合计乘以 4) 分 加权分合计 评 阅 教 师 签 名: 年 月 日 答 辩 小 组 评 审 意 见 评价内容 具 体 要 求 权重 评 分 加权分 学生汇报 汇报准备充分,思路清晰;语言表达准确,概 念清楚,论点正确,有层次,有重点,基本上 反映了所完成任务的全部内容;时间符合要求。 0.5 5 4 3 2 答 辩 思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。 0.5 5 4 3 2 答辩小组评审成绩 (加权分合计乘以 8) 分 加权分合计 答辩小组教师签名: 年 月 日 课 程 设 计 总 评 成 绩 分 I 摘 要 本文重点阐述了如何利用 Java 语言的特性和语法规则编写了一个科学计算 器,实现对数据的简单运算和数据间进制转换的求解。并且对运算时各数据之 间的具体关联等方面做出了详细说明,并且具体讲述了系统各个功能模块的设 计以及实现过程。 根据设计中的需求,科学计算器采用模块化的设计思想,在 Windows XP 操作系统环境下,采用 myeclipse7 作为开发工具,实现计算器基本运算操作的 主要功能,主要包括加减乘除运算,求模运算,求倒数运算以及求一个正数平 方根的运算等功能。 在设计计算器功能的时候首先考虑了各种数据的输入情况,考虑到对异常 数据的处理和特殊情况的求解显示问题。另外,为了实现计算器对数据的进制 转换的功能的实现,需要在对计算器程序编程的时候引入强制转换数据类型的 思想,方便其他进制与十进制互相转换的实现。由于此计算器功能的不需要考 虑到数据的保留存储问题,所以实现其功能比较简单。剩下的工作就是利用 Java 语言逐步实现计算器的各种运算功能的实现了。 经过从网络上和书本上查阅资料,了解了实现计算器功能的 Java 内部的方 法,还有组员的齐心努力,完成了对计算器的 Java 语言的编程工作。目前系统 已通过测试,具有功能完备,使用简捷,操作方便的特性。 关键词 Java,程序语言,面向对象,科学计算器,运算 目 录 摘 要 .I 第一章 绪论 .1 第二章 系统功能介绍及组内分工 .2 2.1 系统功能总框图 .2 2.2 组内分工 .3 第三章 系统功能介绍及实现代码 .4 3.1 Calculator 类的功能介绍及代码 .4 3.2 实现基本运算方法的各个事件监听的功能介绍及代码 .6 3.2.1 A 类 数字按钮事件监听的功能介绍 .6 3.2.2 E 类 监听小数点的功能介绍 .7 3.2.3 D 类 1/x 的监听的功能介绍 .8 3.2.4 I 类 sqrt 的监听的功能介绍 .8 3.2.5 F 类 运算监听的功能介绍 .9 3.2.6 H 类 正负号监听的功能介绍 .10 3.2.7 G 类 运算结果的功能介绍 .10 3.3 实现计算器编辑功能的各个事件监听的功能介绍及代码 .12 3.3.1 B 类 清零按键事件监听的功能介绍 .12 3.3.2 C 类 Bakespace 键事件监听的功能介绍 .13 3.3.3 F 类 运算监听的功能介绍 .13 3.4 实现进制转换的各个事件监听的功能介绍及代码 .15 3.4.1 J 类 按二进制按钮后的事件处理的功能介绍 .15 3.4.2 K 类 按八进制按钮后的事件处理的功能介绍 .16 3.4.3 L 类 按十六进制按钮后的事件处理的功能介绍 .17 3.4.4 M 类 按十进制按钮后的事件处理的功能介绍 .19 3.5 Calculator 类的主函数的功能介绍 .20 3.6 系统运行过程 .21 3.6.1 系统初始运行界面 .21 3.6.2 系统计算结果 .21 结 论 .23 致 谢 .24 参考文献 .25 1 第一章 绪论 Java 起源于 80 年代的中末期,当时西方有一种很时髦的产品: ActiveTV,Java 就是 Sun 公饲喂这种产品开发的一种语言,其目标是在小型嵌 入式系统上运行。但是由于动态图像压缩标准 MPEG 却始终未能出台,因而这 个时期的 Java 也就中途夭折了。到了 1990 年,Sun 公司副总裁 JamesGosling 再次提出 Java 的设计,其目标是希望仿效 C 和 C+那样设计出一种更简单、更 有效、更容易使用的跨多种计算机平台(硬件、操作系统等) ,可移植的通用语 言。到了 90 年代中期,互联网迅速崛起,短短几年得到了巨速的发展,成千上 万的计算机,其中有个人的、企业的、政府的,公司加入到了互联网上,致使 互联网深入到了生活、社会、经济、政治、军事的每一个角落,因此急需开发 一种跨平台软件开发工具,这给 Java 得到了一个极好的发展机遇, 1995 年 Sun 公司首次推出 Java 语言。短短的几年中 Java 得到了极大的发展,成立互联网开 发和应用发展的一个重要工具。 Java 既是一种程序设计语言,也是一个完整的平台。作为一种程序语言, 它简洁、面向对象、安全、健壮,以及适用于 Internet 技术;而作为一个平台 (JRE ,Java Runtime Environment,Java 运行环境或者说是 Java 虚拟机) ,对于 符合 Sun 公司 Java 标准的应用程序,都可以在 Java 平台上正确运行,与程序 运行的操作系统无关。 Java 发展到今天,已从编程语言发展成为全球第一大通用开发平台。Java 技术已被计算机行业主要公司所采纳。1999 年,Sun 公司推出了以 Java2 平台 为核心的 J2EE、J2SE 和 J2ME 三大平台。随着三大平台的迅速推进,全球形成 了一股巨大的 Java 应用浪潮。 2 第二章 系统功能介绍及组内分工 2.1 系统功能总框图 系统功能总框图,如图 2.1 所示。 科学计算器 基本运算 高级运算 进制转换 加法运算 向十六进制转换 向八进制转换 向二进制转换 向十进制转换 求倒数运算 求平方根运算 求余运算 除法运算 乘法运算 减法运算 图 2.1 系统功能总框图 3 该计算器的计算过程为:当用户启动科学计算器后,可在用户界面中,按 相应的数字键,输入相应数字。当用户输入完第一个数字后,再按下决定进行 何种运算的运算按键,当用户按下“+” 、 “-”、 “*”、 “/”按键时,系统进入基 本运算模式,等待参与第二个运算的数据,然后进行相应的运算;当用户按下 “%”、 “1/x”按键时,系统进入高级运算模式,等待第二个参与运算的数据, 然后进行相应运算;当用户点击“二进制” 、 “八进制” 、 “十六进制”按键时, 系统进入进制转换模式,并对当前数字进行相应处理。 2.2 组内分工 对于每一项工作而言,团队小组的合作和配合,合理的科学的分工是必不 可少的工作,正确的分工可以增加我们的工作效率,优化我们的工作成果,具 体组内分工如表 2.1 所示。 表 2.1 组内分工 组内成分 姓名(学号) 分工 组长 张博(21) 主要负责主类和方法的 声明和实现、数字按钮事件 监听、按十六进制转换按的 事件监听、运算结果的输出 过程以及各个动作事件的相 关联系组织,报告的排版、 校正,结论。 裴莹莹(03) 主要负责数字按钮事件 监听、1/x 监听、运算结果的 输出过程、正负号的监听、 总功能图,致谢。 侯金龙(12) 主要负责清零按键事件 监听、小数点事件监听、求 平方根事件的监听、按十六 进制转换按的事件监听。 组员 李熙坤(27) 主要负责 Backspace 键 事件监听、运算监听事件、 二进制事件监听、十进制事 件监听。 4 第三章 系统功能介绍及实现代码 3.1 Calculator 类的功能介绍及代码 首先在主类中定义逻辑型的 first 变量,用它来辨别第一次输入的值是否为 0,如果为 0,把 first 值变为 true。然后定义整型变量 DBHO,它代表当前实行 的是几进制运算,默认值为十进制。 接着定义两个双精度浮点型变量 number1,number2。Number1 用来存放输 入的第一个数字,Number2 用来存放输入的第二个数字。整型变量 yunsuan 是 用来定义加、减、乘、除、求余的运算方法,双精度浮点型变量 result 用来存 放运算结果。 接着定义 JTextField 类的文本框,并将其框的长度初始化为 23,再定义 JButton 类按键,个数为 26 个,定义一个 JLabel 类的信息提示栏,初始提示信 息为“计本 081”。定义按钮数组,将各个按钮的信息加入到按钮数组中。 由于继承了 Apple 类,所以要实现 init()方法。再定义的 init 的方法中,首 先再顶部加入一个 JTextField 类的文本框,然后设置文本框的格式,将其定义 为数字在右边,背景色为白,字体色为黑,文本框初始显示为“0.0” 。其次定 义窗体布局方式为流式布局,按照左对齐方式,按键之间间隔为 10。接着通过 循环语句将按钮数组的每一个元素,添加到按键中,并设置按键颜色。然后建 立各个按键的事件监听,与后面的各个动作事件监听类建立联系。 其相应代码为: public class Calculator extends Applet boolean first=true; int DBHO=10;/当前文本框内数字为几进制的标识符,默认为10 进制 double number1;/定义第一个按的数字,输入的第一个数字保存在这 double number2;/定义第二个按的数字,输入的第二个数字保存在这 int yunsuan;/定义加减乘除求余的运算方法 double result;/定义结果,结果就保存在这 int t=0;/循环用 boolean IsOper=false;/这个是和当数据框里有数据时,再按下一个数据后,清除 原来数据有关的一个东西 JTextField field=new JTextField(23);/定义最上面那个框,括号里的数字是 框的长度,你可以改变看看,就知道用处了 JButton button=new JButton26;/定义26 个按键 JLabel dec=new JLabel(计本081 );/提示信息拦 public String anniu= Backspace , C ,7,8,9,/,sqrt,4,5,6,*, % ,1,2,3, -, 1/x ,0,?, .,+, = ,十进制 ,二进制, 八 进制,十六进制;/ 把22 个按键存放在anniu这个数组里 public void init() 5 add(field);/增加一个field框 field.setHorizontalAlignment(JTextField.RIGHT); field.setForeground(Color.black); field.setBackground(Color.white); field.setText(0);/以上这4个是对field的设置,设置成数字在右边,颜色, 初始化状态为0 this.setLayout(new FlowLayout(FlowLayout.LEFT,10,10);/流式布 局的定义,按照左对齐方式,按键之间间隔10 for(int i=0;i26;i+) buttoni=new JButton(anniui); this.add(buttoni); buttoni.setForeground(Color.blue); /定义这26 个按键,并增 加他们,同时给他们都赋上蓝色 add(dec); button0.setForeground(Color.red); button1.setForeground(Color.red); button5.setForeground(Color.red); button10.setForeground(Color.red); button15.setForeground(Color.red); button20.setForeground(Color.red); button21.setForeground(Color.red);/以上这几句是吧+,- ,*,/,开根号,%,X分之一等号那些按键设置成红色 button22.setForeground(Color.magenta); button23.setForeground(Color.magenta); button24.setForeground(Color.magenta); button25.setForeground(Color.magenta);/以上的这4个按键是进制 按键,单独给它们赋色 A a=new A();/数字按钮事件监听 B b=new B();/清零按键事件监听 C c=new C();/BS键的事件监听 D d=new D();/1/x事件监听 E e=new E();/小数点事件监听 F f=new F();/运算事件监听 G g=new G();/运算结果监听 H h=new H();/正负号监听 I i=new I();/sqrt的监听 J j=new J();/2进制转换事件的处理 K k=new K();/8进制转换事件的处理 L l=new L();/16进制转换事件的处理 M m=new M();/10进制转换事件的处理 /以上是把一些事件,分类,并且把+-*/%都放到了 F运算事件监听里 6 button0.addActionListener(c); button1.addActionListener(b); button2.addActionListener(a); button3.addActionListener(a); button4.addActionListener(a); button5.addActionListener(f); button6.addActionListener(i); button7.addActionListener(a); button8.addActionListener(a); button9.addActionListener(a); button10.addActionListener(f); button11.addActionListener(f); button12.addActionListener(a); button13.addActionListener(a); button14.addActionListener(a); button15.addActionListener(f); button16.addActionListener(d); button17.addActionListener(a); button18.addActionListener(h); button19.addActionListener(e); button20.addActionListener(f); button21.addActionListener(g); button22.addActionListener(m); button23.addActionListener(j); button24.addActionListener(k); button25.addActionListener(l); /以上的是把每个按键定义到相应的事件里去 3.2 实现基本运算方法的各个事件监听的功能介绍及代码 3.2.1 A 类数字按钮事件监听的功能介绍 首先定义了 Input 来接收显示在文本框里的输入的数字并存放, Input 类型 为 String。然后进行判断,如果当前文本框里有上次运算的结果,再次输入下 一个数据的时候,清除原来文本框里的数据。IsOper 代表了是否有上次运算的 结果,初始值为 false 代表着没有上次运算的结果。如果在计算器初始状态的时 候输入数字零,系统不会产生响应,一直显示一个零。如果第一个输入的数字 不是零,那么文本框就会相应的输出和保存你所输入的数据。数字按钮事件监 听主要的功能就是判断运算过程中是否输入了等号,当文本框里已经有运算的 结果时,下次再进行输入数字的时候,会进行清零再输出数字。 其相应代码为: 7 class A implements ActionListener/数字按钮事件监听 public void actionPerformed(ActionEvent e) String input = e.getActionCommand();/定义input来接收你按的 数字并存放 if(IsOper) field.setText(); IsOper=false; if (first) if(input=0)/当你一开始按零的时候,系统不应该有响应,应该 一直显示一个0 field.setText(); first=true; else field.setText(); first = false;/如果不是按的第一个不是0,那么就相应的输出和保存 你按了哪些数字 field.setText(field.getText() + input);/以上是判断是否已经按 了=号,数据框里是否已经有结果 /这样在已经有数据的情况下,再 按数字会清零 3.2.2 E 类监听小数点的功能介绍 在这个模块,实现了对数字中需要运用小数点事件的监听任务。因为在数 字运算的时候,难免会用到小数点,这就需要考虑小数点的使用问题。当有人 按“.”键后,监听器就会监听到此事件的发生,然后就会执行 E 类里的程序。 在执行时,首先需要判断数字里是否已经有小数点,如果有了再按小数点就不 应该有响应。另外还要考虑,所输入的数字的第一位是否为零,即整数部分是 否为零。如果为零,那么数据的输入的形式就该为“0.XXX” 。最后一种情况就 是最普通的“XXX.XXXXX”型的数据了。通过调用 Java 内部的方法,可以实 现上述的显示功能。另外,在此模块,还要将 first 的值赋值为 false,实现对输 入数据不是零的控制和掌握。 其相应代码为: class E implements ActionListener/监听小数点 public void actionPerformed(ActionEvent e)/这个就是你按下小数点 8 之后的处理 if(field.getText().trim().indexOf(.)!=-1);/判断数字里是否 已经有小数点 /如果有了再按小数点就不应 该有响应 else if(field.getText().trim().equals(0) field.setText(0+e.getActionCommand();/如果没有小 数点,而第一个数是零 else /那就直接是0.XXX field.setText(field.getText()+e.getActionCommand(); first=false;/如果前面是数字,那么就直接显示XXX.XXXX 3.2.3 D 类1/x 的监听的功能介绍 当用户按下 1/x 键后,该 1/x 类的事件监听被执行。用户向文本框输入一个 数据,通过赋值 x 的方式把它强制转换为 double 型。如果输入的数据 x 是零, 判断零没有倒数,输出出错信息“除数不能为零” 。如果输入的数据 x 不为零, 按下 1/x 键后,即可直接可求出 1/x。通过以上的方法,用户便可求出想要的数 据 1/x。 其相应代码为: class D implements ActionListener/1/x的监听 public void actionPerformed(ActionEvent e) double x=Double.parseDouble(field.getText();/把从文本框输入 的数字赋值给X,切X为double型 if(x=0) field.setText(除数不能为零);/ 如果输入的是0,那么当然就没有 倒数了,显示出错信息 else field.setText(+1/x);/如果输入的不是0,那么直接求X分之一 3.2.4 I 类sqrt 的监听的功能介绍 在此模块,实现了对一个数的求平方根运算。当操作人员向文本框内输入 一个数据后,当再按下“sqrt”键之后,由于设置了对此事件的监听器,捕捉到 事件后,计算器就会调用此类的程序,从而实现求一个数的平方根。在运算时, 首先要从文本框中取到这个要运算的数,并判断其是否大于零。因为,负数没 有有理的平方根,当输入的数小于零,计算机将无法实现求平方根的功能,因 此会在相应的提示框内输出“负数不能开平方” 。当只有输入的数为正数是,才 9 会调用 Math.sqrt()函数进行求解。 其相应代码为: class I implements ActionListener/sqrt的监听 public void actionPerformed(ActionEvent e)/求根号的运算 double x=Double.parseDouble(field.getText();/把输入的 数字存放在X中并定义为double型 if(xDouble.MAX_VALUE/这是一个防止数据溢出处理,不过基本 用不上,因为数据根本益处不了,就那些运算 else switch(yunsuan)/如果数据不益处,那么开始处理运算 case 1:/对1 号运算,也就是+法怎么运算给出,看看上面定义的1号,联系起 来看 result=number1+number2;/把结果保存在result里 field.setText(+result);/在文本框里输出 result即输出运算+ 号后的结果 break; case 2: /对于2号运算,也就是- 法运算应该怎么做, result=number1-number2;/用result保存结果 field.setText(+result);/输出结果 break; case 3: result=number1*number2;/*运算 field.setText(+result); break; case 4: 12 if(number2=0)/除运算,但要判断除数,也就是第二个输入的数是不 是零 field.setText(除数不能为零);/ 零当然不能为除数,如果你按 了零,那么输出出错信息 else result=number1/number2;/正常运算除法 field.setText(+result); break; case 5: result=number1%number2;/求余运算,结果保存在result中 field.setText(+result);/输出结果 break; IsOper=true;/这个是和当文本框中已经有了一次运算结果后,再按一个数 字时,应该把原来的数字清除,直接显示当前 /输入的数字,而不是在原来的结果后面加上你按的数字,有关的一句代码 3.3 实现计算器编辑功能的各个事件监听的功能介绍及代码 3.3.1 B 类清零按键事件监听的功能介绍 在这个模块,主要实现了计算器的清零工作,即将一切显示、数字进制都 变回了初始化的状态。在这个类里,设置了一个对按下“C”键的动作事件的 监听器。当操作员按下 C 键,监听器捕获了这个事件,然后就会调用 B 类里的 方法,执行 B 类里的程序。首先将显示数字的文本框,显示变为 0。并将 Result 和 first 变量分别赋值为 0 和 true,将数字进制设成为默认的十进制。然 后将所有的数字键设成为可用,即将数字的前景颜色设为蓝色。就这样,当有 人按下 C 键,就实现了计算器清零的目的。 其相应代码为: class B implements ActionListener/清零按键事件监听 public void actionPerformed(ActionEvent e)/如果按了C键也就是清 零键,就到这里来处理 field.setText(0);/按了C键,让文本框显示0,初始为0 result=0; first=true; DBHO=10; dec.setText(); button2.setForeground(Color.blue); button3.setForeground(Color.blue); 13 button4.setForeground(Color.blue); button7.setForeground(Color.blue); button8.setForeground(Color.blue); button9.setForeground(Color.blue); button13.setForeground(Color.blue); button14.setForeground(Color.blue);/以上是把各种参数都初始 化以达到清零目的 3.3.2 C 类Bakespace 键事件监听的功能介绍 由于已经定义了 button0.addActionListener(c);所以当按了 Backspace 键后, 转入此类进行处理;对于 Backspace 事件的处理,分为两类进行:一种就是当 处理的数据栏内数据长度为 1 或 0(没有数据时) ;按下 Backspace 键后,直接 得到 0;另一种就是当数据长度大于 1 时,按下 Backspace 键后,得到数据就是 原数据删除最后一位得到的数据。所以处理时,定义 S1 与 S2,当数据类型为 第一种是,则赋予 S1=0,并通过 S1=field.getText()输出。当数据类型为第二种 时,则将原数据按数据长度,将首位至倒数第二位的数据赋予 S2,再输出 S2。 其相应代码为: class C implements ActionListener/Bakespace键事件监听 public void actionPerformed(ActionEvent e)/如果按了Backspace 就到这里来处理 String s1,s2; int jflength;/定义个jflength来保存文本框里的数字长度 s1=field.getText();/把文本框里的东西赋值给S1 jflength=field.getText().length();/把文本框里的数字的长度赋给 jflength if(jflength=0|jflength=1)/如果数字长度是1或者0,那么按了 Backspace后就直接显示个0 field.setText(0); else/如果数字长度大于1 ,则按照下面的方法做 s2=s1.substring(0,jflength-1);/把文本框里的最后第0号数据一 直到jflength -1(也就是倒数第 2个数据)传送给S2 field.setText(s2);/显示S2的内容,那么也就是说已经把最后一个 数字去掉了,也就实现了退格的功能 first=true; 14 3.3.3 F 类 运算监听的功能介绍 对于事件“+” 、 “-”、 “*”、 “/”进行监听,所以对于不同的运算事件,进 行不同的处理,使用 if 语句:当按下 “+”键,则动作执行 operation=1,即跳 转至加处理;当按下“-”键后,则动作执行 operation=2,即跳转至减处理;当 按下“*”键后,则动作执行 operation=3,即跳转至乘处理;当按下 “/”键后, 则动作执行除处理。然后再使用 switch 语句,在其中对于相应的动作进行定义。 其相应代码为: class F implements ActionListener/运算监听 int operation; public void actionPerformed(ActionEvent e)/这是对于+ - * / % 运算的一个归类 if(e.getActionCommand()=+)/如果你点了+运算 operation=1;/那么跳转到1 号处理(下面会有几号处理是怎么处理的) else if(e.getActionCommand()=-)/如果你点的是-运算 operation=2;/跳转到2 号处理 else if(e.getActionCommand()=*)/如果你点的是*运算 operation=3;/跳转到3 号处理 else if(e.getActionCommand()=/) operation=4; else if(e.getActionCommand()= % ) operation=5; number1=Double.parseDouble(field.getText();/把输入的第一个 数赋值给number1 switch(operation) case 1: yunsuan=1;/对于1号运算的定义,也就是+号运算,你对应上面的1号看 first=true; break; case 2: yunsuan=2;/对于2号运算的定义,也就是-号运算,对应上面的2号看 first=true; break; case 3: yunsuan=3; first=true; break; case 4: yunsuan=4; first=true; break; case 5: 15 yunsuan=5; first=true; break; 3.4 实现进制转换的各个事件监听的功能介绍及代码 3.4.1 J 类按二进制按钮后的事件处理的功能介绍 当按下“二进制转换”键后,先将输入键盘当中的 2-9 数字键屏蔽掉,然 后定义个变量 input,将数据栏中的数据赋给 input,由于要将数据转换到二进制 时,原数据可能为小数,所以先将原数据强制转换为整形变量;然后对于数据 之间的转换使用 switch 选择语句:如果原数据为 10 进制,则通过 Integer.toBinaryString(x)将数据转换为二进制输出;当原数据为二进制时,则直 接输出;当原数据为八进制时,则通过 int x=Integer.parseInt(input,8),将八进制 转换为十进制,然后再通过 String out=Integer.toBinaryString(x)转换为二进制; 当原数据为十六进制时。则通过 int x=Integer.parseInt(input,16)将数据转换为十 进制,然后通过 String out=Integer.toBinaryString(x)再转换为二进制。 其相应代码为: class J implements ActionListener/按二进制按钮后的事件处理 public void actionPerformed(ActionEvent e) button2.setEnabled(false); button3.setEnabled(false); button4.setEnabled(false); button7.setEnabled(false); button8.setEnabled(false); button9.setEnabled(false); button13.setEnabled(false); button14.setEnabled(false); dec.setText(只可以按0-1按钮 );/以上是把除0.1之外的按钮变色, 并且输出提示信息 switch(DBHO) case 10: double input=Double.parseDouble(field.getText(); int x=(int)input;/强制转换为整型 String out=Integer.toBinaryString(x); field.setText(+out); 16 DBHO=2; break; case 2: double input=Double.parseDouble(field.getText(); int x=(int)input;/强制转换为整型 field.setText(+x); break; case 8: String input=field.getText(); int x=Integer.parseInt(input,8); String out=Integer.toBinaryString(x); field.setText(+out); DBHO=2; break; case 16: String input=field.getText(); int x=Integer.parseInt(input,16); String out=Integer.toBinaryString(x); field.setText(+out); DBHO=2; break; 3.4.2 K 类按八进制按钮后的事件处理的功能介绍 选择将计算器的模式改为八进制后,该类将把数字 8 键、数字 9 键定义为 不能使用,改变了这两个数字键的颜色,并给出了提示信息。如果是将文本框 内的十进制数改为八进制数,通过 java 本身定义的方法,可实现直接转换,用 户只需按下“八进制”就可以把文本框内的数据强制转换为整型的八进制数。 同样的也可以通过类似的方法将二进制数和十六进制数转换为八进制数。 其相应代码为: class K implements ActionListener/按八进制按钮后的事件处理 public void actionPerformed(ActionEvent e) button3.setEnabled(false); button4.setEnabled(false); button2.setEnabled(true); /button3.setForeground(Color.green); 17 /button4.setForeground(Color.green); button7.setEnabled(true); button8.setEnabled(true); button9.setEnabled(true); button13.setEnabled(true); button14.setEnabled(true); dec.setText(只可以按0-7按钮 );/对于八进制,8和9不能用,改变它们 颜色,并给出提示信息 switch(DBHO) case 10: double input=Double.parseDouble(field.getText(); int x=(int)input;/强制转换为整型 String out=Integer.toOctalString(x); field.setText(+out); DBHO=8; break; case 8: double input=Double.parseDouble(field.getText(); int x=(int)input;/强制转换为整型 field.setText(+x); break; case 2: String input=field.getText(); int x=Integer.parseInt(input,2); String out=Integer.toOctalString(x); field.setText(+out); DBHO=8; break; case 16: String input=field.getText(); int x=Integer.parseInt(input,16); String out=Integer.toOctalString(x); field.setText(+out); DBHO=8; break; 18 3.4.3 L 类按十六进制按钮后的事件处理的功能介绍 在此模块,实现了将一个数(可以是二进制、八进制和十进制)转换为二 进制的数的功能。 当在十进制条件下运算后的结果出现在文本框里后,有人按下“十六进制” 键后,监听器就会监听到此事件,然后才会调用 L 类内的程序。在此类里,首 先会执行将所有的数字键变为可用,并将提示信息设成为空白。由于在此计算 器的程序中有个记录数据进制的变量“DBHO” ,因此采用 switch 语句进行对 “DBHO”进行判断。当其为二进制、八进制、十进制、十六进制时会相应执 行对应的 switch 后的语句。需要注意的是,在每次执行转换的时候,需要先将 从文本框中取到的数强制转换为整型,然后才能进行数据的进制转换操作。 其相应代码为: class L implements ActionListener/按十六进制按钮后的事件处理 public void actionPerformed(ActionEvent e) button2.setEnabled(true); button3.setEnabled(true); button4.setEnabled(true); button7.setEnabled(true); button8.setEnabled(true); button9.setEnabled(true); button13.setEnabled(true); button14.setEnabled(true); dec.setText();/以上是把按键恢复原有颜色,提示信息不输出 switch(DBHO) case 10: double input=Double.parseDouble(field.getText(); int x=(int)input;/强制转换为整型 String out=Integer.toHexString(x); field.setText(+out); DBHO=16; break; case 16: double input=Double.parseDouble(field.getText(); int x=(int)input;/强制转换为整型 field.setText(+x); break; case 2: String input=field.getText(); 19 int x=Integer.parseInt(input,2); String out=Integer.toHexString(x); field.setText(+out); DBHO=16; break; case 8: String input=field.getText(); int x=Integer.parseInt(input,8); String out=Integer.toHexString(x); field.setText(+out); DBHO=16; break; 3.4.4 M 类按十进制按钮后的事件处理的功能介绍 当按下“十进制转换”键后,恢复之前被屏蔽的按键(如果之前按了别的 进制转换) ,同样先将原数据强制转换为整形变量,然后同样使用个 switch 语 句:当原数据为十进制时,则直接输出;当原数据为二进制时,通过 int x=Integer.parseInt(input,2)将二进制转换为十进制,再输出;当原数据为八进制 时,通过 int x=Integer.parseInt(input,8)将八进制转换为十进制;当原数据为十六 进制时,通过 int x=Integer.parseInt(input,16)将十六进制转换为十进制,然后输 出结果。 其相应代码为: class M implements ActionListener/按十进制按钮后的事件处理 public void actionPerformed(ActionEvent e) button2.setEnabled(true); button3.setEnabled(true); button4.setEnabled(true); button7.setEnabled(true); button8.setEnabled(true); button9.setEnabled(true); button13.setEnabled(true); button14.setEnabled(true); dec.setText();/按键颜色的恢复 switch(DBHO) case 10: double input=Double.parseDouble(field.getText(); int x=(int)input; 20 field.setText(+x); break; case 16: String input=field.getText(); int x=Integer.parseInt(input,16); field.setText(+x); DBHO=10; break; case 2: String input=field.getText(); int x=Integer.parseInt(input,2); field.setText(+x); DBHO=10; break; case 8: String input=field.getText(); int x=Integer.parseInt(input,8); field.setText(+x); DBHO=10; break; 3.5 Calculator 类的主函数的功能介绍 在函数中首先实例化窗体,并将窗体标题命名为“计算器” ,然后实例化 Calculator 类,并将 Calculator 类加入到窗体里然后设置窗口的最大化和关闭的 事件响应方法,最后设置 Applet 程序窗口的大小并让其可见。 其相应代码为: public static void main(String args)/主函数 Frame x=new Frame(计算器);/定义最上面框里的字,并且引号里的就是那 里显示的,你可以自己设置 Calculator y=new Calculator(); x.add(y); y.init();/以上都是按照书上格式抄的,书上那样我也那样,也就是一些必要的 声明,加定义吧 x.setResizable(false);/最大化不可用 x.addWindowListener(new closeW();/关闭窗口功能的定义 x.setSize(290,340);/设置Applet程序的大小,不要更改,否则按键布局会乱 x.setVisible(true); 21 class closeW extends WindowAdapter/关闭窗口功能 public void windowClosing(WindowEvent e) System.exit(0); 3.6 系统运行过程 3.6.1 系统初始运行界面 刚开始运行科学计算器的界面如图 3.1 所示。 图 3.1 系统开始运行界面 3.6.2 系统计算结果 (1)进行 6+10 的计算,计算结果如图 3.2 所示。 22 图 3.2 6+10 的运算结果显示 (2)计算 5 除 0 的运算结果,如图 3.3 所示。 图 3.3 5 除 0 的运算结果显示 23 结 论 这次课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于 甜,但是可以学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到 了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对 JAVA 的了解,让我们对它有了更加浓厚的兴趣。 通过两个星期的课程设计,我做的是一个简单科学计算器,实现计算器的 一些简单的功能。只有把所学的理论知识与实践相结合起来,从理论中得出结 论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计计算器的过程中,用的编程语言是 JAVA 程序设计语言,它是一种 面向对象的编程语言,所以要用面向
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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