已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学华夏学院课程设计报告书课程名称: JAVA课程设计 题 目: 计算器的设计与实现 系 名: 信息工程系 专业班级: 计算机1121班 姓 名: 袁世杰 学 号: 10210412102 指导教师: 刘春燕 2014年 9 月 11 日课程设计任务书学生姓名: 袁世杰 专业班级: 计算机1121班 指导教师: 刘春燕 工作单位: 信息工程系 设计题目: 计算器的设计与实现要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算(1)完成加法,减法,乘法和除法的计算;(2)具有小数点,正负号,退格和清零功能;设计报告撰写格式要求:1、明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。严格要求自己,要独立思考,按时、独立完成课程设计任务。2、设计报告:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。设计报告正文字数不少于0.2万字(不包括附录)时间安排:消化资料、系统调查1天项目原型开发 1天系统功能实现 1天系统验收 1天指 导 教 师 签 字: 2014年 9 月 5 日系 主 任 签 字: 2014 年 9 月 5 日1 目标设计一个图形界面(GUI)的计算器应用程序,完成简单的加、减、乘、除等算术运算。通过对计算器的编辑来检测和提升自己的java编程能力。2 软件开发环境与技术简介2.1 开发工具介绍 NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序,NetBeans IDE已经支持PHP、Ruby、JavaScript、Groovy、Grails和C/C+等开发语言。NetBeans项目由一个活跃的开发社区提供支持, NetBean开发环境提供了丰富的产品文档和培训资源以及大量的第三方插件。NetBeans是开源软件开发集成环境,是一个开放框架,可扩展的开发平台,可以用于Java、C/C+,PHP等语言的开发,本身是一个开发平台,可以通过扩展插件来扩展功能。2.2 硬件环境带有windows xp系统的计算机2.3 软件环境NetBeans IDE 6.9.13 系统需求分析(1)设计的计算器可以完成加法、减法、乘法、除法的简单运算。(2)实现一些简单的扩展运算,如:正负号、倒数、退格、清零等功能。(3)添加小数点功能,用以实现浮点型数据的计算。(4)使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输入,并完成相关的计算。4 系统总体设计4.1 系统功能简介 (1)完成加法,减法,乘法和除法的计算;(2)具有小数点,正负号,退格和清零功能;4.2 系统功能模块规划 (1)根据所设计出来的界面,首先要设计其GUI界面,总体界面有一个文本框,20个按钮,总体界面用GridLayout布局,文本框放置在最NORTH,然后0到9以及+,-,*,/等按钮放置到一个面板Panel中,完成界面设计。 (2)设计计算流程,首先点击数字按钮时,将按钮数值添加到文本框当中,并将该数值保存到一个字符串中,再次点击数字按钮时,将之前保存的字符串与新的数值拼接起来,再添加到文本框当中,直到点击运算符按钮时,将文本框当中的字符串保存在一个字符串变量中,然后重置文本框内容,将运算符号显示到文本框中,随后输入第二个计算数据时,用同样的办法保存数据,最后通过控制“=”运算符先将字符串数据转化成双精度类型,然后计算出结果并显示到文本框当中。5 系统详细设计5.1程序流程图开始显示界面输入数字将数字赋给x输入字符将x的值给y,x取新数将字符赋给operation点“=”输出结果退格或清零操作 5.2程序分析(1)类Calculator继承自ActionListener接口,通过这一接口来处理界面中的按钮所触发的动作事件。ActionListener接口可以接收ActionEvent,该接口有一个事件方法actionPerformed(ActionEvent e ),在该方法中将触发需要实现的功能。 (2)ActionEvent类继承自AWTEvent,代表的是一个语义事件,用来指出某组件(component)所定义“行动”发生了。这种事件由一个组件(如Button)引发,而触动的时机则是当这组件的某种特定动作(如该Button被单击)发生之时。此事件产生后,系统会将它分配给该组件所注册(用addActionListenert()方法实现注册)的每一个ActionListener(监听者),来接收并处理这种事件。所以如果一个按钮组件注册一个addActionListener方法,那么当用户用鼠标单节此按钮时,就会产生ActionEvent事件。(3)在程序运行中,每当单击数字按钮和运算符按钮,都会触发动作actionPerformed(ActionEvent e),利用类ActionEvent得getActionCommand()方法确定是由哪一个按钮触发的,进行相应的计算操作。(4)在AWT中提供了五种布局管理类。布局管理器指明了容器中构件的位置和尺寸大小。通过布局管理器,只需知道放置的构件同其他构件的相对应的位置即可,有助于实现软件的平台无关性。本程序中用到的布局管理管理器的BorderLayout、GridLayout。其中BorderLayout类使用地理上的方向North、South、West和Center来确定构件添加的位置。其中前四个方向占据屏幕的四边,而Center方向占据剩下的空白;GridLayout是比较复杂但是却很灵活得AWT布局,可以精确地指定组件的放置位置,它是在将屏幕划分成网格的基础上,允许每个机构占据一个或多个单元(显示区域)。在程序中用到GridLayout的构件函数GridLayout(int rows ,int cols,int hasp,int vgap)其中的参数分别表示行数,列数,水平间距和垂直间距。 (5)AWT中提供了可以用来盛装构件的面板(Panel),可以把对象放在面板上,在把面板镶到窗口中,每一个面板有颜色、大小,甚至页面设计等属性。5.3部分代码及解析1.需要调用的类import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class hutest extends JFrame implements ActionListener,DocumentListener JTextField text;/文本诓String x=,y=,operation=;boolean flag1=true,flag2=true,flag3=true,flag4=true,flag5=true;2.主函数 public static void main(String args) new hutest(); 3界面设计 public hutest()super(计算器);Container c=this.getContentPane();/获得一个容器c.setLayout(null);/布局为空text=new JTextField();text.setSize(480,38);/大小text.setLocation(10,50);/位置text.setHorizontalAlignment(JTextField.RIGHT);/文本旷右边c.add(text);text.getDocument().addDocumentListener(this);/文本框注册事件JPanel pan2=new JPanel();/面板pan2.setSize(480,240);pan2.setLocation(10,150);pan2.setLayout(new GridLayout(4,5,10,10);String str=1,2,3,+,c,4,5,6,-,退格,7,8,9,*,倒数,0,+/-,.,/,=;for(int i=0;istr.length;i+)JButton button=new JButton(stri);button.addActionListener(this);pan2.add(button);c.add(pan2);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(500,450);this.setVisible(true);4运算符的控制和值的输入输出public void changedUpdate(DocumentEvent e) public void insertUpdate(DocumentEvent e) x=text.getText();/获得文本诓 的内容 / System.out.println(y=+y+ x=+x); public void removeUpdate(DocumentEvent e) public void actionPerformed(ActionEvent e) String z=e.getActionCommand();/记录按纽上的字符 try if(Character.isDigit(z.charAt(0) text.setText(text.getText()+z); flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; else if(z.equals(+)&flag1) operation=+;y=x;text.setText();flag1=false; else if(z.equals(-)&flag2) operation=-;y=x;text.setText();flag2=false; else if(z.equals(*)&flag3) operation=*;y=x;text.setText();flag3=false; else if(z.equals(/)&flag4) operation=/;y=x;text.setText();flag4=false; else if(z.equals(倒数) flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; y=x;Double y2=Double.parseDouble(y);double y22=1/y2;text.setText(y22+); else if(z.equals(+/-) y=x; double yy=-Double.parseDouble(y);text.setText(yy+); flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; else if(z.equals(.) if(x.indexOf(.)=-1) text.setText(x+.); flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; else if(z.equals(=) flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; Double op1=Double.parseDouble(y); Double op2=Double.parseDouble(x); if(operation.equals(+)x=op1+op2+;text.setText(x); else if(operation.equals(-)x=op1-op2+;text.setText(x); else if(operation.equals(*)x=op1*op2+;text.setText(x); else if(operation.equals(/)x=op1/op2+;text.setText(x); else if(operation.equals(%)x=op1%op2+;text.setText(x); else if(z.equals(c) x=;text.setText(); flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; else if(z.equals(退格) text.setText(x.substring(0,x.length()-1); flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; catch(Exception ex)x=;y=;operation=;text.setText(); 6 系统测试与运行 (1)界面显示(2)输入数字“13”(3)点击“+”后输入“14”。(4)点击“=”,获得结果。(5)输入数字“10”(6)取倒数运算后,获得结果。(7)点击“退格”,获得结果 7 总 结 本次课程设计到此算是告一段落了,经过这次的学习,我学到了很多东西,在此基础上更加巩固了自己对java的认识与了解。在做本项目是时候,会遇到很多小问题,比如说,在整个运算过程中要如何确保输入的计算数据哪个是第一个计算数据的,哪个是第二个计算数据的,同时也要区分运算符,因为该计算器程序应用的都是利用字符串来完成计算的,而且不能重复输出运算符,更不能将运算符错误的存储在了第一个计算数据的数值中,也得考虑到万一不小心重复点击了运算符按钮会不会造成第一个计算数据的重新赋值等等问题,最后想到利用布尔类型来很好的控制运算符的应用!此次课程设计让我更了解熟悉了Java中的图形用户界面和它的编程方式。在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。最大的收获就是对大学学习的总结和培养了解决困难的信心和能力,使我对所学知识能够融会贯通,又不断丰富了新知识。Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。在接下来的时间里,我觉得我要更加努力的往深一层次的方面看齐,了解更多有关java的知识,对java有更深一步的了解,我会一步一步的走下去!8 参 考 文 献1 王建华. ASP NET 2.0 动态网站开发技术与实践M.北京:电子工业出版社,2007.2徐迎晓 Java语法及网络应用设计 清华大学出版社 2002 3戴特尔(美)Java 大学简明教程实例程序设计 2005附录A:系统核心代码public void changedUpdate(DocumentEvent e) public void insertUpdate(DocumentEvent e) x=text.getText();/获得文本诓 的内容 / System.out.println(y=+y+ x=+x); public void removeUpdate(DocumentEvent e) public void actionPerformed(ActionEvent e) String z=e.getActionCommand();/记录按纽上的字符 try if(Character.isDigit(z.charAt(0) text.setText(text.getText()+z); flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; else if(z.equals(+)&flag1) operation=+;y=x;text.setText();flag1=false; else if(z.equals(-)&flag2) operation=-;y=x;text.setText();flag2=false; else if(z.equals(*)&flag3) operation=*;y=x;text.setText();flag3=false; else if(z.equals(/)&flag4) operation=/;y=x;text.setText();flag4=false; else if(z.equals(倒数) flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; y=x;Double y2=Double.parseDouble(y);double y22=1/y2;text.setText(y22+); else if(z.equals(+/-) y=x; double yy=-Double.parseDouble(y);text.setText(yy+); flag1=true;flag2=true;flag3=true;flag4=true;flag5=true; e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教科版(2017)四年级下册2.种植凤仙花教案设计
- 小学音乐人教版四年级下册活动渔夫和金鱼的故事教案
- 九年级化学下册 第8单元 海水中的化学 到实验室去 粗盐中难溶性杂质的去除教案 (新版)鲁教版
- 四年级数学下册 一 小数的意义和加减法第2课时 小数的意义(二)教案 北师大版
- 人教版高中地理必修三教案:第五章第二节产业转移以东亚的产业转移为例教学设计
- 2026年银行大额交易识别考试题库(附答案)
- 全国粤教清华版初中信息技术九年级下册第4单元第18课《争先恐后-传感器的综合应用》教学设计
- 2026年石油炼化消防安全考试题及答案
- 2026年集团公司审计岗面试题及回答建议
- 2026年灌区现代化改造考试题(含答案)
- 河南省2026年中考数学试卷(含答案)
- 2026年秋季新学期第一次全体教师大会上校长讲话刷屏了:“教育从来都是一地鸡毛但别忘了当初为什么来!”
- 2026年领导干部网络学法用法法律知识竞赛考试题库及答案
- 肿瘤患者的活动与运动指导
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- 2026年贵州省事业单位联考真题及答案
- 2026年小学语文教师学科专业知识考试试题及答案
- 新版医疗器械生产质量管理规范解读
- GB/T 17315-2026玉米种子生产技术规程
- 全国总工会工会财务制度
- 新型建筑材料 课件全套 第1-13章 绪论、材料的基本性质 -混凝土3D打印技术
评论
0/150
提交评论