




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉工商学院信息工程学院项目名称: 计算器 学生姓名: 董莹 学 号: 14406005 班 级: 物联1班 指导教师: 李凤麟 2015年12月29日摘 要本计算器是由java语言所编程设计的标准计算器,该计算器能够实现计算器最基本的运算功能,可以进行十进制下简单的四则运算(加法、减法、乘法、除法)、求余,且有小数点、正负号、求倒数、退格和清零功能。利用java gui图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,在设计完计算器的界面后还需要建立事件监听函数,还有获取事件源标签函数,等一系列的函数来实现计算其内部功能的实现。使得使用计算器时简单明了,清晰可见,
2、操作轻松。该课程设计涉及的知识范围广泛,需要查阅大量的资料。通过本课程设计能够使学生本身较全面的掌握面向对象程序设计的有关概念和开发方法,通过对已学知识的运用以及拓展,是学生能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。关键字:java语言,计算器,算法目 录1 需求分析12 系统分析23.1.1 界面设计33.1.2 初步设计思路33.2 详细设计43.2.1 程序流程图43.2.2 程序主要代码及说明54.1 界面的实现84.2 基本运算功能的实现851 加法运算952 减法运算953 倒数运算954 取余数运算1055 开方运算1056 负数运算115.7 退格运算115
3、.8 清零运算12总结与心得13参考文献14语言类综合项目实训报告1 需求分析随着人类生活水平的提高,人类的需求也在不断的增加,数据出现在生活中的每一个角落,因此计算机便成了必不可少的生活工具。随着数据量的不断增加,古老的计算工具已经被人类淘汰,只有计算器才能代替计算这一项艰巨的任务。计算器的优点在于运算速度快,携带更加便捷,价格便宜,操作更加方便。在这个生活节奏极其快速的时代,没有计算器将会带来意想不到的麻烦。因此计算器的诞生其实是一种必然的事件。计算器功能主要包括:加、减、乘、除、取余、小数点、正负号、求倒数、开根号,退格和清零功能。其中基本运算功能分别通过handlenumber和 ha
4、ndleoperator函数来实现。例如加法运算的实现,在handleoperator函数下用if语句进行判断字符串operator与字符串“+”是否相等,如果相等,函数handlenumber和 handleoperator共同作用下实现加法运算功能。同样计算器的其他运算减法,乘法,除法等都是需要进行operator与字符串“-”、“*”、“/”等字符串的比较来实现相应的功能。该系统功能的模块图如图1.1所示。计算器减法运算加法运算乘法运算除法运算倒数运算求余数运算开根运算求负数系统功能模块图1.12 系统分析整个计算器的程序中运用窗体容器jframe以及面板容器jpanel,引用接口(事件
5、侦听器)actionlistener。程序布局选用了网格布局(gridlayout),边界布局(borderlayout),基本控件包括文本框控件(jtextfield)。根据程序设计要求要实现各种功能,如加、减、乘、除,以及求余、小数点、正负号、求倒数、退格和清零功能。那么一开始就需要创建一个计算器界面,其次还要选用网格布局,便于各类按钮之间的分布。之后,计算器上的功能需要以按钮的形式呈现在窗口内,需要定义jbutton类,并实例化对象。创建构造函数,初始化计算器,设置窗口大小及位置、颜色布局。并设置面板将各部分的组件放置在单独的面板内,设置面板的位置。最后将各部分面板整合在一个大窗口内。定
6、义多种处理事件函数,保证程序能够正常执行。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生(例如输入的数据为非字符串),所以该程序中最后还需要有异常处理机制。3 概要设计与详细设计3.1 概要设计3.1.1 界面设计思路设计一个计算器界面,首先要了解界面的布局情况,其次要明白计算器基本框架。如何才能实现计算器的最基本界面,即包括所有控件大容器是如何创建的。通过查阅相关资料可知jframe是窗体类,jpanl是面板类。首先创建窗口,让计算器的各部分控件有一个位置去存放,而控件有需要通过中间桥梁面板才能存放在窗体中,所以需要将所有控件放在相应的面板内,由于控件数目多,需要利用字符串来定义
7、各部分控件。还有需要利用构造函数给计算器命名,以及设置jframe窗口的大小以及位置分布还有颜色等的设置。3.1.2 初步设计思路(1)根据设计出来的图形界面,首先应该设计其gui界面,总体的界面有一个文本框,23个按钮,总体界面采用了gridlayout和borderlayout布局,将文本框放置在最北方,然后将数字以及算术按钮放置到一个面板panel内,并且将该部分内容置于界面的南方,完成界面的设计。(2)根据界面可知设计计算流程首先要点击数字,通过数值按钮可以将数值添加到文本框内,因为有些运算设计的数值有好几位数,所以需要将输入的数值保存到一个字符串当中,当再次点击数字按钮时将之前输入的
8、数字与新的数字拼接起来,一起添加到文本框中,直到点击运算符按钮,将文本框中的字符串保存在一个字符串变量中,然后重置文本框内容,输入运算符隐藏到文本框内,随后输入第二个数据,用相同的方法保存数据,输入完毕后,通过控制等号运算符将字符串数据转换成双精度类型,然后就计算出结果,并显示在文本框中。(3)基本运算都能够实现之后,该系统为满足计算的需求,还设置了前清零、退格、开方、求余数等运算。清零只需要直接重置文本框内容。退格功能采用substring函数截取字符串长度来实现退格功能。还有双精度数的运算,需要用到if循环语句对数字进行控制输出。3.2 详细设计3.2.1 程序流程图开始输入第一个数字按“
9、+”号输入第二个数字按“*”号按“-”号按“/”号按“%”号按“sqrt”号按“1/x”号按“=”号输出结果程序流程图3.1.23.2.2 程序主要代码及说明程序采用继承jframe类,利用数组来定义jbutton按钮,使界面获得多个按钮,同时在程序中引用监听接口,采用4行5列的网格布局,来完成计算器界面的基本设置。设置窗体方面,设置jframe为可见,默认为不可见。最后对按钮进行计算分析,分别设定处理数据的handlenumber方法,运算符控制的handleoperator方法,处理退格handlebackspace方法、以及计算结果的方法等等。一步一步的实现计算器的基本功能。(1)处理数
10、据的方法private void handlenumber(string key) if (firstdigit) / 输入的第一个数字resulttext.settext(key); else if (key.equals(.)& (resulttext.gettext().indexof(.) 0) text = text.substring(0, i - 1);if (text.length() = 0) resulttext.settext(0);firstdigit = true;operator = =; else resulttext.settext(text);功能说明:首先获
11、取文本框内的数据,然后需要判断该数据的长度,定义一个int型的变量i来判断数据长度,如果文本框数据长度大于0,则退格,将数据的自后一个字符去掉,当数据长度i等于0时,表示文本框内无数据内容,则此时退格表示初始化计算器内的数值。否则显示新输入的内容。4 编码实现4.1 界面的实现计算器整个程序主要采用网格布局的方式,所以一开始需要导入gridlayout的包,还有控件jbutton包, 窗体jframe包,面板jpanel包,以及界面内部的文本框需要导入的jtextfield包。程序一开始需要定义一个自定义类mi让他继承窗体jframe并引用行为监听接口actionlistener。然后定义一个
12、字符串数组string keys是控件获得相关运算符的名字,以及功能键的名字,初始化控件字符串数组长度以及文本框内容。编写构造函数,将窗口标题设置为“简易计算器”。同时定义一个init函数初始化计算器,设置面板背景颜色为灰色,设置窗口位置(x,y)坐标为(500,500)。初始化计算器将文本框内容设置为右对齐方式,同时将文本框的颜色设置为白色。初始化计算器按钮,将数字与运算符键放在同一个面板内,实例化一个面板的对象calckeyspanel,通过对象调用方法setlayout来设置数字键与运算键在文本框中处的位置。通过for循环来控制控件数。初始化功能键,将功能键放置到一个面板内,并设置面板位
13、置。新建一个大的面板,将开始建立的两个小面板放在这个大面板内,然后调整盖大面板的位置。另外再建一个新面板放置文本框,设置其位置。因为jframe不能直接添加组件,需要用getcontentpane()函数获取内容面板,再在内容面板上进行添加组件,最后是整体布局,将文本框面板放在最北方,大面板放在窗体中间,整个窗体布局建造完成。4.2 基本运算功能的实现(1)基本运算的实现(加、减、乘、除、取余、开方、取负数、倒数)将输入的第一个数值保存到一个字符串当中,当再次点击数字按钮时将之前输入的数字与新的数字拼接起来,一起添加到文本框中,直到点击运算符按钮,将文本框中的字符串保存在一个字符串变量中,然后
14、重置文本框内容,输入运算符隐藏到文本框内,随后输入第二个数据,用相同的方法保存数据,输入完毕后,按“=”键获得结果。而开方、取余数、求倒数这三个运算符的操作数只有一个,即输入操作数后保存到字符串当中直接输入运算符按等号键直接获取结果。(2)功能的实现面板内有多种按钮存在时,需要定义一个获取事件源标签label,调用getcontentpane函数,将事件源标签与用户按压的按钮进行比较,以保证计算器能够正确无误的执行指令,例如如果点击的是退格键,则文本框数据的最末一位数会消失,其他功能按钮原理类同。5 程序运行结果51 加法运算加法运算结果被设置在文本框内,并且是以右对齐的方式至于文本框内,当再
15、次输入数据时,计算器将自动清除执行过的数据,继续执行下一步运算。加法运算结果如下图5.1所示(运算案例:12+56)。加法运算结果图5.152 减法运算减法运算结果被设置在文本框内,并且是以右对齐的方式至于文本框内,当再次输入数据时,计算器将自动清除执行过的数据,继续执行下一步运算。减法运算结果如下图5.2所示(运算案例:97-67)。减法运算结果图5.253 倒数运算既可以直接输入数据进行倒数运算,还可以先求出一个数据的倒数然后再执行其他的运算符,程序能够正常执行,毫无影响,同时当输入的数据为0时,文本框内会报错,提示用户0是没有倒数的。倒数运算结果如下图5.3所示(运算案例:2)。倒数运算
16、结果图5.354 取余数运算取余数运算通过“%”这一运算符实现数据的运算,执行此运算时,除数也不能够为0,否则将失去取余数运算的意义。取余数运算结果如下图5.4所示(运算案例:5%8)。取余数运算结果图5.455 开方运算执行开方运算需要注意的是开根数必须大于或等于零,否则执行结果将会报错。开方运算结果如下图5.5所示(运算案例:16)。开方运算结果图5.556 负数运算输入一个数字,大小范围不限,然后输入负数运算按钮执行结果。负数运算结果如下图5.6所示(运算案例:26)。负数运算结果图5.65.7 退格运算执行退格运算符时需要注意的是,被清除掉的数字是从右往左的第一个数字,如果该数据经过多
17、次执行退格运算符后,文本没有任何内容,则backspace的含义表示初始化计算器里面的数据。退格运算结果如下图5.7所示(运算案例:-26)。退格运算结果图5.75.8 清零运算清零运算与初始化运算有一定的区别,清零运算会将数值变成0,当下次直接输入数据时数据左边会多出一个零来,因此如果想要是数据清空时最好不要选择此按钮。清零运算结果如下图5.8所示(运算案例:-2)。清零运算结果图5.8总结与心得一学期一次的课程设计终于接近尾声了,其实一开始我还是有点小担心的,但是又有点小小的喜悦,担心是因为课程设计是一项艰巨的任务,需要花大量的时间查阅相关的资料,将所学知识进行整合总结。但是相对于c语言来
18、说,我还是很自信的觉得java比c语言学得更好,基本的语法已经掌握。通过对这次的计算器窗体的编写,我更加熟悉了java图形用户界面的设计原理和程序的结构以及java awt和swing的组合。学会将书本上的知识运用在实际中,提升了编程能力,尤其在java gui图形界面的布局方面学到颇多,以前布局很乱并且很多布局都是无效的。在编写程序过程中我还是遇到了不少的困难,比如说按钮布局大小及其位置不能够得到很好地调节,还有对于按钮的颜色调节不知道该用什么方法,通过在网上查找资料案例才了解到了setforeground这个函数可以控制按钮颜色。还有其他的一些问题,通过查阅大量的资料和同学的互相帮助,解决了遇到的一些问题,该程序充分发挥了java gui界面布局的优越性。另外按钮功能的实现也是本次课程设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能仪器仪表电磁兼容考核试卷
- 海洋工程装备海洋环境影响评估考核试卷
- 污染防治与气候变化适应性措施考核试卷
- 探讨漆器工艺的美学价值考核试卷
- 标准化服务在汽车销售行业的规范考核试卷
- 淀粉行业原料采购与供应链管理研究考核试卷
- 卫生材料在新医疗技术中的应用研究进展考核试卷
- 植物园生态监测数据分析与应用考核试卷
- 停车优惠券合同范例
- 2002合同标准文本
- 2024年财政部会计法律法规答题活动题目及答案一
- 2024员工质量意识培训
- 《了凡四训》课件
- 六年级下第三单元圆柱与圆锥集体备课思维导图(课堂PPT)
- 海员简历模版
- 各种纸类中英对照
- 高中生物 第4节细胞的癌变课件 新人教版必修1
- 石料生产线项目投资建设方案
- 基于单片机的智能温变暖手宝的设计
- RIO锐澳鸡尾酒蓝海案例报告
- GB∕T 4950-2021 锌合金牺牲阳极
评论
0/150
提交评论