


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一、课程设计目的 2二、课程设计任务 22.1、设计任务 22.2、课程设计要求: 22.3、需求分析 2三、开发工具与平台 33.1、开发工具 33.2、开发平台 3四、设计思路 44.1、 界面设计 4、逻辑设计 4、程序流程图 5、主要代码展示及说明 54.3、程序测试 10五、实验小结 11六、附录 程序代码 12、课程设计目的1、熟练掌握 java 面向对象编程。2、选择适宜的数据结构实现需求3、熟练使用各种控制结构。4、GUI 组件、事件处理技术。、课程设计任务2.1、设计任务设计一个简易的计算器,可以进行四那么运算:加、减、乘、除等限于 十进制下程序要求: 1应具有相应的界面
2、, 可参考 Windows 操作系统自带的计算器界面 2操作符号定为:“+,“-,“*,“/,“+-/等。按国际惯例设计3用户通过点击程序界面上按钮,实现数字、运算符的输入操作4以上局部为必须完成的内容。选作局部:1具有操作符号“ 1/X, “ sqrt开方,“小数功能等。2.2、课程设计要求: 1 应用自己所学课程知识完成对计算器的根本任务。 2 查阅相关资料,学习和掌握工程中涉及的新知识,提高自学能 力。 3 通过应用 java 程序编写计算器来提升自己对简单的图形界面有 一定的掌握和了解。2.3、需求分析1 .设计的计算器可以完成加法、减法、乘法、除法的简单运算。2. 实现一些简单的扩展
3、运算,如:正负号、倒数、退格、清零等功能。3. 添加小数点功能,用以实现浮点型数据的计算。4. 使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输 入,并完成相关的计算。三、开发工具与平台3.1、开发工具Microsoft Windows 7 旗舰版3.2、开发平台JDK1.6.0-02 和 UE 编译器四、设计思路4.1、界面设计:如图3-1图3-1421、逻辑设计:(1) 根据所设计出来的界面,首先要设计其 GUI界面,总体界面有一个 文本框,20个按钮,总体界面用BorderLayout布局,文本框放置在 最NORT,然后0到9以及+,-,*,/等按钮放置到一个面板Panel
4、 中,完成界面设计。(2) 设计计算流程,首先点击数字按钮时,将按钮数值添加到文本框当中,并将该数值保存到一个字符串中,再次点击数字按钮时,将之 前保存的字符串与新的数值拼接起来,再添加到文本框当中,直到 点击运算符按钮时,将文本框当中的字符串保存在一个字符串变量 中,然后重置文本框内容,将运算符号显示到文本框中,随后输入 第二个计算数据时,用同样的方法保存数据,最后通过控制“=运算符先将字符串数据转化成双精度类型,然后计算出结果并显示到 文本框当中。(3) 根本运算设计完成以后那么开始考虑其他个别功能的实现,例如倒数、 清零、退格等功能的实现,清零直接重置文本框内容,退格功能那么 采用sub
5、string函数截取字符串长度。422、程序流程图:r开始结是输出423、主要代码展示及说明:总体代码的设计:程序采用继承windowadapter类,新建Jframe窗体,利用数组来定义 JBotton按钮,同时利用数组注册监听,采用4行5列网格布局,完成计算 器界面的根本设置,在窗体的正常关闭方面,采用匿名类实现窗体的正常 关闭。最后对按钮进行计算分析,分别设定输入数据的A类、运算符控制的Opertion类,退格功能的Backspace类、计算结果的 Result类等等, 一步步实现计算器的根本功能!1类A的设计数据的输入class A impleme nts Action Liste n
6、erpublic void action Performed(Acti onEvent e)Stri ng a = Jtext.getText();String s = e.getActi on Comma nd();if(a.equals("O.")|a.equals("+")|a.equals("-")|a.equals("*")|a.equals("/")Jtext.setText(s);else if(flag2) Jtext.setText(s); flag2=false;elseJt
7、ext.setText(a+s);功能解释: 程序开始时,程序初始化文本框的内容为 “0. ,点击数字按钮, 那么调用类A,首先用a来获取当前文本框内容,s来获取按钮数值,然后进 行判断,假设a的值为上述代码的值那么输出s的值,再次点击数字按钮时, 再次调用A类,此时a的值为上次输入的s值,第一个if语句不满足,执 行下个 if 语句 if(flag2) , flag2 初始值为 false ,该语句的功能是在执行 了“ =号按钮时,防止新的数字按钮的值合并到到已经得出的结果上,例 如:12+12=24,此时再点击数字按钮 3时,那么文本框内容被重置,输出数 值3,而不是243,如果if(fl
8、ag2)不满足,那么将字符串a和s合并并输出,得出第一个要计算的数据。2类 Opertion 的设计:运算符的控制class Opertion implements ActionListenerpublic void actionPerformed(ActionEvent e)cal=e.getActionCommand();if(flag1=true)x=Jtext.getText();Jtext.setText(cal);flag1=false;功能解释:当点击运算符控制按钮时,首先将运算符的数值赋值给cal初 值为空,紧接着进行判断, flag1 初值为 ture ,该类的作用为在点击运
9、算 符按钮时,将计算的第一个数据保存在 x 字符串变量当中,然后将文本框 内容重置为点击的运算符的数值, 类的结尾将 flag1 赋值为 false ,防止再 次点击运算符按钮时改变了 x 的值。附: 此时文本框内容为运算符的值,输入第二个计算数据时,点击数字 按钮,那么再次调用A类,此时满足A类中第一个if语句,文本框内容被重 置为数字按钮的值, 接下来与获取第一个计算数据步骤一样,直到点击“=号运算符为止! 3类 Result 的设计:计算并输出结果class Result implements ActionListener/ 计算并显示结果public void actionPerfor
10、med(ActionEvent e)double num1;num1=Double.parseDouble(x);y=Jtext.getText();double num2;num2=Double.parseDouble(y);double result=0;if(num2!=0)if(cal.equals("+")result=num1+num2;if(cal.equals("-")result=num1-num2;if(cal.equals("*")result=num1*num2;String s1=Double.toStrin
11、g(result);Jtext.setText(s1);if(cal.equals("/")if(num2=0)Jtext.setText(除数不能为 0");elseresult=num1/num2;String s1=Double.toString(result);Jtext.setText(s1);flag1=true;flag2=true;功能解释:首先定义两个Double型numl num2将之前保存的第一个计算 数据x强制转换为Double型后赋值给numl,接着用字符串变量y来获取当 前文本框的内容,即第二个计算数据的值,同样再将其强制转换Doubl
12、e型后赋值给num2然后进行运算符判断,对cal的值进行比拟,然后进行相应的计算,将计算的结果转换成字符串后将其输出到文本框中,在类的最 后将 flag1 、flag2 赋值为 true ,作用是将计算的结果当作第二次计算的数 据进行再运算,即将结果重新赋值给x作为第一个计算数据!附:在此类中还考虑了当除数为零的情况。 4类Backspace的设计:功能类一退格class BackSpace implements ActionListenerpublic void actionPerformed(ActionEvent e)string s = e.getActionCommand();str
13、ing s1 = Jtext.getText();if(s.equals( 退格")s1=new string (s1.substring(0,s1.length()-1);Jtext.setText(s1);功能解释: 这是计算器附加功能的实现,这里只介绍退格功能,像正负号、 求倒数、清零等功能相似,所以就不再一一介绍。首先获取退格按钮的命 令值赋给s,然后获取当前文本框的内容,即输入的数据,将其赋给si,接着进行判断, 利用 substring 函数将 s1 字符串截取为从第一个字符至倒 数第二个字符为止的字符串并重新赋值给si,再将其输出到文本框,实现退格的功能。4.3、程序测
14、试1. 简单的运算:以加法为例:123+456分析:计算的结果为579.0,为双 精度型,计算的结果被设置在文本 框的最右端,该计算器的一个特点 是可直接在文本框中输入数据以 及进行更改。3. 退格的运算:以123为例 分析:输出的结果如下列图,本计算 器退格键有一个特点是,就算是是 计算后得出的结果也能实现退格, 缺点是不能很好的处理小数点的 问题,因为小数点也是字符串的一 局部。4. 正负号的运算:以123为例分析:输出的结果如下列图,正负号添 加能够很好的实现,但可以进行一些 改进,比方在计算过程当中直接点击 负号运算符输入负数进行计算!5. 总体分析:该计算器根本运算没有问题,清零、正
15、负号、求倒数、退格功能都能很好 的实现,总体能完成一个计算器的根本功能,但仍有许多地方需要改进, 比方小数点的实现所存在的一些问题,虽然在根本的运算过程当中不会造 成太大影响,但这依然不能认为是一个很好的计算器,同时,在另一方面, 该计算器还没能很好的实现连续计算的功能,必须每次按下等号按钮计算 出结果后才能用产生的结果接着进行下一次的计算,改进的方法是在运算 符上同时注册Result类,让运算符同时拥有计算结果的功能。五、实验小结本次课程设计到此算是告一段落了,经过这次的学习,我学到了很多 东西,在此根底上更加稳固了自己对 java的认识与了解。在做本工程是时候,会遇到很多小问题,比方说,在
16、整个运算过程中 要如何确保输入的计算数据哪个是第一个计算数据的,哪个是第二个计算 数据的,同时也要区分运算符,因为该计算器程序应用的都是利用字符串 来完成计算的,而且不能重复输出运算符,更不能将运算符错误的存储在 了第一个计算数据的数值中,也得考虑到万一不小心重复点击了运算符按 钮会不会造成第一个计算数据的重新赋值等等问题,最后想到利用布尔类 型来很好的控制运算符的应用!此次课程设计让我更了解熟悉了 Java 中的图形用户界面和它的编程方 式。在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习 到的知识,收获很大。最大的收获就是对大学学习的总结和培养了解决困 难的信心和能力,使我对所
17、学知识能够融会贯穿,又不断丰富了新知识。 Java 计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识 得到了稳固和提高。在接下来的时间里,我觉得我要更加努力的往深一层次的方面看齐, 了解更多有关 java 的知识,对 java 有更深一步的了解,我会一步一步的 走下去!六、附录 程序代码 import java.awt.*;import javax.swing.*;import java.awt.event.*;public class TheCalculator extends WindowAdapter/ 程序框架继承自 WindowAdapter 类private JText
18、Field Jtext=new JTextField("0.");private JFrame f=new JFrame(" 计算器 -赵磊 "); private String x=""private String y=""private String cal=""private boolean flag1=true;private boolean flag2=false;public void init()/ 初始化String buttonValue = new String"1
19、","2","3","+","C","4","5","6","-"," 退格","7","8","9","*","1/x","0","+/-",".","/"Container contain = f.getContentPane
20、();JPanel Jpan = new JPanel();/采用 4 行 5 列的网格布局JButton Jb=new JButton20;contain.setLayout(new BorderLayout();Jpan.setLayout(new GridLayout(4,5);Jtext.setHorizontalAlignment(JTextField.RIGHT);contain.add(Jtext,"North");contain.add(Jpan);A num=new A();/ 数据Result re=new Result();/结果Opertion op
21、=new Opertion();/运算符Clear cl=new Clear();/清零BackSpace back=new BackSpace();/退格CountDown count_d=new CountDown();/倒数Strains stra=new Strains();/相反数for(int i = 0 ; i <Jb.length ; i+) / 利用 For 循环添加按钮 Jbi = new JButton (buttonV aluei); Jpan.add(Jbi);if(i=3 | i=8 | i=13 | i=18) Jbi.addActionListener(o
22、p);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); / 控制按钮字体颜色 Jb4.addActionListener(cl); Jb9.addActi
23、onListener(back);Jb14.addActionListener(count_d);Jb16.addActionListener(stra);Jb19.addActionListener(re);f.setSize(320,240);f.setVisible(true);f.addWindowListener(/采用匿名类实现窗口的正常关闭new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););class A implements ActionListener/输入数据public v
24、oid actionPerformed(ActionEvent e)String a = Jtext.getText();String s = e.getActionCommand();if(a.equals("0.")|a.equals("+")|a.equals("-")|a.equals("*")|a.equals("/")Jtext.setText(s);elseif(flag2)Jtext.setText(s);flag2=false;elseJtext.setText(a+s);cl
25、ass Opertion implements ActionListenerpublic void actionPerformed(ActionEvent e)cal=e.getActionCommand();if(flag1=true)x=Jtext.getText();Jtext.setText(cal);flag1=false;class Clear implements ActionListener /清零功能public void actionPerformed(ActionEvent e)Jtext.setText("0.");class CountDown i
26、mplements ActionListener/求倒数类public void actionPerformed(ActionEvent e)String s = e.getActionCommand();String s1 = Jtext.getText();if(s.equals("1/x")s1 = new String (""+1/Double.parseDouble(s1);Jtext.setText(s1);class Strains implements ActionListener/求相反数类public void actionPerformed(ActionEvent e)String s = e.getActionCommand();String s1 = Jtext.getText();if(s.equals("+/-")s1=new String (""+(0-Double.parseDouble(s1);Jtext.setText(s1);class BackSpa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑公司保密协议书
- 农资供应与采购合同
- 外脚手架的承包合同书
- 可研报告咨询合同
- 承包饭店早点合同
- 工程防水施工合同
- 15年个人借款合同7篇
- 15《人造地球卫星》教学设计-2023-2024学年科学六年级下册冀人版
- 离婚房产分割离婚协议书6篇
- Unit 4 Body Language Learning About Language 语法 教学设计-2024-2025学年高中英语人教版(2019)选择性必修第一册
- 录井作业现场风险评估及控制措施
- 2024年中考二轮专题复习道德与法治主观题答题技巧(小论文)之演讲稿
- 2025年度商会工作计划
- 社区管理与服务专业实习总结范文
- 质检工作计划书2025质检部工作计划范文
- 施工现场5S管理规范
- 《缠论的实战技法》课件
- 新版标准化机电专业管理体系解读课件
- 承包鱼塘维修施工合同范例
- 延续护理服务课件
- 耶鲁综合抽动严重程度量表正式版
评论
0/150
提交评论