版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录二、课程设计任务 2三、开发工具与平台 3四、设计思路 4、 界面设计 4、课程设计目的1、熟练掌握 java 面向对象编程。2、选择合适的数据结构实现需求。3、熟练使用各种控制结构。4、GUI 组件、事件处理技术。二、课程设计任务、设计任务设计一个简易的计算器,可以进行四则运算:加、减、乘、除等(限于十进制下)程序要求:( 1)应具有相应的界面, 可参考 Windows 操作系统自带的计算器界面。( 2)操作符号定为: “+”,“-”,“*,”“/,”“+-/”等。(按国际惯例设计) (3)用户通过点击程序界面上按钮,实现数字、运算符的输入操作。 (4)以上部分为必须完成的内容。选作部分
2、:(1)具有操作符号“ 1/X,” “ sqrt('开方),“(小数功能)等。、课程设计要求:( 1 )应用自己所学课程知识完成对计算器的基本任务。( 2 )查阅相关资料,学习和掌握项目中涉及的新知识,提高自学能 力。( 3 )通过应用 java 程序编写计算器来提升自己对简单的图形界面有 一定的掌握和了解。、需求分析1. 设计的计算器可以完成加法、减法、乘法、除法的简单运算。2. 实现一些简单的扩展运算,如:正负号、倒数、退格、清零等功能。3. 添加小数点功能,用以实现浮点型数据的计算。4. 使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输 入,并完成相关的计算。三、开
3、发工具与平台、开发工具Microsoft Windows 7 旗舰版、开发平台四、设计思路、界面设计:(如图 3-1 )图 3-1(1)根据所设计出来的界面,首先要设计其 GUI界面,总体界面有一个 文本框, 20 个按钮,总体界面用 BorderLayout 布局,文本框放置在 最NORT,然后0到9以及+,-,*,/等按钮放置到一个面板Panel 中,完成界面设计。( 2) 设计计算流程,首先点击数字按钮时,将按钮数值添加到文本框当 中,并将该数值保存到一个字符串中,再次点击数字按钮时,将之 前保存的字符串与新的数值拼接起来,再添加到文本框当中,直到 点击运算符按钮时,将文本框当中的字符串
4、保存在一个字符串变量 中,然后重置文本框内容,将运算符号显示到文本框中,随后输入 第二个计算数据时,用同样的办法保存数据,最后通过控制“=”运算符先将字符串数据转化成双精度类型,然后计算出结果并显示到 文本框当中。( 3) 基本运算设计完成以后则开始考虑其他个别功能的实现,例如倒数、 清零、退格等功能的实现,清零直接重置文本框内容,退格功能则 采用 substring 函数截取字符串长度。明:总体代码的设计:程序采用继承 windowadapter 类,新建 Jframe 窗体,利用数组来定义 JBotton 按钮,同时利用数组注册监听,采用 4 行 5 列网格布局, 完成计算 器界面的基本设
5、置,在窗体的正常关闭方面,采用匿名类实现窗体的正常 关闭。最后对按钮进行计算分析,分别设定输入数据的A 类、运算符控制 的 Opertion 类,退格功能的 BackSpace 类、计算结果的 Result 类等等, 一步步实现计算器的基本功能!(1)类 A 的设计(数据的输入)class A implements ActionListenerpublic void actionPerformed(ActionEvent e)String a = ();String s = ();if("0.")|("+")|("-")|("
6、;*")|("/")(s);elseif(flag2)(s);flag2=false;else(a+s);功能解释: 程序开始时,程序初始化文本框的内容为 “0. ”,点击数字按钮, 则调用类A,首先用a来获取当前文本框内容,s来获取按钮数值,然后进 行判断,若 a 的值为上述代码的值则输出 s 的值,再次点击数字按钮时, 再次调用A类,此时a的值为上次输入的s值,第一个if语句不满足,执 行下个 if 语句 if(flag2) , flag2 初始值为 false ,该语句的功能是在执行 了“=”号按钮时,防止新的数字按钮的值合并到到已经得出的结果上,例 如:1
7、2+12=24,此时再点击数字按钮 3时,则文本框内容被重置,输出数 值3,而不是243,如果if(flag2)不满足,则将字符串a和s合并并输出,得出第一个要计算的数据。(2)类 Opertion 的设计:(运算符的控制)class Opertion implements ActionListenerpublic void actionPerformed(ActionEvent e) cal=();if(flag1=true)x=();(cal);flag1=false;功能解释:当点击运算符控制按钮时,首先将运算符的数值赋值给cal (初 值为空),紧接着进行判断, flag1 初值为 t
8、ure ,该类的作用为在点击运算 符按钮时,将计算的第一个数据保存在 x 字符串变量当中,然后将文本框 内容重置为点击的运算符的数值, 类的结尾将 flag1 赋值为 false ,防止再 次点击运算符按钮时改变了 x 的值。(附: 此时文本框内容为运算符的值,输入第二个计算数据时,点击数字按钮,则再次调用A类,此时满足A类中第一个if语句,文本框内容被重 置为数字按钮的值, 接下来与获取第一个计算数据步骤一样,直到点击“=”号运算符为止!)( 3)类 Result 的设计:(计算并输出结果)class Result implements ActionListener单的运算:(以加法为例:
9、123+456)分析: 计算的结果为,为双精度型,计算的结果被设置在文本框的最右端, 该计算器的一个特点是可直接在文本框中输入数据以及进行更改。2. 倒数的运算:(以 123为例)分析: 输出的结果如图所示,倒数功能实现,计算时,不仅是结果,输入 的数据同样可以先实现倒数功能后再进行相应的计算,没有影响!3. 退格的运算:(以 123为例)分析: 输出的结果如图所示,本计算器退格键有一个特点是,就算是是计 算后得出的结果也能实现退格,缺点是不能很好的处理小数点的问题,因 为小数点也是字符串的一部分。4. 正负号的运算:(以 123为例)分析: 输出的结果如图所示,正负号添加能够很好的实现,但可
10、以进行一 些改进,比如在计算过程当中直接点击负号运算符输入负数进行计算!5. 总体分析:该计算器基本运算没有问题,清零、正负号、求倒数、退格功能都能很好的实现,总体能完成一个计算器的基本功能,但仍有许多地方需要改进, 比如小数点的实现所存在的一些问题,虽然在基本的运算过程当中不会造 成太大影响,但这依然不能认为是一个很好的计算器,同时,在另一方面, 该计算器还没能很好的实现连续计算的功能,必须每次按下等号按钮计算 出结果后才能用产生的结果接着进行下一次的计算,改进的方法是在运算 符上同时注册 Result 类,让运算符同时拥有计算结果的功能。五、实验小结本次课程设计到此算是告一段落了,经过这次
11、的学习,我学到了很多 东西,在此基础上更加巩固了自己对 java 的认识与了解。在做本项目是时候,会遇到很多小问题,比如说,在整个运算过程中 要如何确保输入的计算数据哪个是第一个计算数据的,哪个是第二个计算 数据的,同时也要区分运算符,因为该计算器程序应用的都是利用字符串 来完成计算的,而且不能重复输出运算符,更不能将运算符错误的存储在 了第一个计算数据的数值中,也得考虑到万一不小心重复点击了运算符按 钮会不会造成第一个计算数据的重新赋值等等问题,最后想到利用布尔类 型来很好的控制运算符的应用!此次课程设计让我更了解熟悉了 Java 中的图形用户界面和它的编程方 式。在完成课题的过程中也不断充
12、实了自己,学习到了很多以前没有学习 到的知识,收获很大。最大的收获就是对大学学习的总结和培养了解决困 难的信心和能力,使我对所学知识能够融会贯通,又不断丰富了新知识。 Java 计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识 得到了巩固和提高。在接下来的时间里,我觉得我要更加努力的往深一层次的方面看齐, 了解更多有关 java 的知识,对 java 有更深一步的了解,我会一步一步的 走下去!六、附录 (程序代码 )import .*;import .*;public class TheCalculator extends WindowAdapter private JFrame
13、f=new JFrame(" 计算器 -赵磊 "); private String x=""private String y=""private String cal=""private boolean flag1=true;private boolean flag2=false;public void init(),"/","="Container contain = ();JPanel Jpan = new JPanel();JButton Jb=new JButton2
14、0;(new BorderLayout(); ddActionListener(op);if(i=0 | i=1 | i=2 | i=5 | i=6 | i=7| i=10 | i=11 | i=12 | i=15 | i=17)Jbi.addActionListener(num); if(i=3|i=4|i=8|i=9)|(i>12)&&(i<=19)&&i!=15)Jbi.setForeground(new Color(255, 0, 0); elseJbi.setForeground(new Color(0, 0, 255); ddAction
15、Listener(cl); Jb9.addActionListener(back);Jb14.addActionListener(count_d);Jb16.addActionListener(stra);Jb19.addActionListener(re); (320,240);(true);( |("+")|("-")|("*")|("/")(s);elseif(flag2)(s); flag2=false;else(a+s);class Opertion implements ActionListenerpu
16、blic void actionPerformed(ActionEvent e)cal=();if(flag1=true)x=();(cal); flag1=false;class Clear implements ActionListener ;class CountDown implements ActionListener/求倒数类public void actionPerformed(ActionEvent e)String s = ();String s1 = ();if("1/x") s1 = new String (""+1/(s1);(s
17、1);class Strains implements ActionListener/求相反数类public void actionPerformed(ActionEvent e)String s = ();String s1 = ();if("+/-") s1=new String (""+(s1);(s1);class BackSpace implements ActionListener/退格功能public void actionPerformed(ActionEvent e)String s = ();String s1 = ();if(" 退格 ") s1=new String (0,()-1);(s1);class Result implements ActionListener/ 计算并显示结果public void actionPerformed(ActionEvent e) double num1; num1=(x); y=(); double num2; num2=(y); double result=0; if(num2!=0) if("+") result=num1+num2; if("-")resul
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论