-基于Android计算器的设计与应用论文-备课讲稿_第1页
-基于Android计算器的设计与应用论文-备课讲稿_第2页
-基于Android计算器的设计与应用论文-备课讲稿_第3页
-基于Android计算器的设计与应用论文-备课讲稿_第4页
-基于Android计算器的设计与应用论文-备课讲稿_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Good is good, but better carries it.精益求精,善益求善。-基于Android计算器的设计与应用论文-北京北大方正软件技术学院毕业设计(论文)题目:基于Android计算器的设计与应用系别:软件工程分院专业:软件技术学号:110110335姓名:王可可指导老师:李强完成日期:2014年5月20日北京北大方正软件技术学院毕业设计(论文)成绩评定表(理科)年级11级专业软件技术姓名王可可学号110110335论文题目:基于Android计算器的设计与应用指导教师:李强项目评分标准优秀良好合格不合格选题优秀:选题有重要理论意义和实际价值;良好:选题有较强理论意义和实

2、际价值;合格:选题有一定理论意义和实际价值;不合格:选题欠妥。基础知识优秀:有坚实的理论基础和系统深入的专业知识;良好:有较坚实的理论基础和系统深入的专业知识;合格:有一定的理论基础和专业知识;不合格:基础理论不够全面,专业知识不系统。实践能力优秀:体现出较强的实践工作能力;良好:体现出较好的实践工作能力;合格:体现出一定的实践工作能力;不合格:体现出工作能力较差。写作能力优秀:条理清楚,层次分明,文笔流畅,学风严谨;良好:条理性好,层次分明,文字通顺,工作认真;合格:条理较好,层次较分明,文字较通顺;不合格:条理不清,写作较差。论文综合评价优秀良好合格不合格指导教师评定意见签字:年月日毕业设

3、计领导小组签字签字:年月日摘要目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。手机上的软件也随着手机的发展变得丰富起来了,时至今日已经出现了很多专门制作手机软件的公司,虽然制作的多是游戏软件,但是一些辅助性的工具软件也有了很多。手机软件简单说就是可以安装在手机上的软件,作用自然是扩展手机的原始功能,使手机变得更加的实用。但是手机的软件需要安装到相应的系统中才能完美的运行。正是由于考虑到以上这些情况,Android系统是现今比较流行的手机系统,所以本系统选择了java语言来作为

4、开发语言。现在市面上常见的手机大致可以分为三类,一类是传统的键盘手机,使用键盘对手机进行操作。另一类是处于过度期时使用的既可以使用手指或者触控笔在屏幕上进行触控操作又可以使用传统的键盘进行对手机的操作。第三类则是新兴的触屏手机,这类手机就是直接通过手指或者触控笔在屏幕上面进行操作,需要键盘的部分,基本都是以在屏幕中产生一个虚拟键盘的模式来实现的。具体手机的触摸屏到底是需要触控笔进行触控操作还是需要使用手指进行操作主要还是要看手机使用的触摸屏是电阻屏还是电容屏。使用触控笔的手机使用的屏幕都是电阻屏的手机,这种屏幕的触控定位实际上是利用你在屏幕上的点击对屏幕的电阻产生的变化进行判断以至于可以判断出

5、用户触控的位置,用户只要对屏幕造成压力即可实现,无所谓是什么东西触控的。而电容屏就不同了,使用电容屏的手机只能判断带电物体的触控,使带电物体在屏幕上产生耦合电容,通过耦合电容来判断触控的位置,这种方法还更有利于多点触控技术的实现。在人们日常使用手机中这个带电物体就是人自己的身体,一般情况下就是手。综上所述,本系统是一个基于现有手机计算器开发的在触屏手机上运行的简单科学计算器。关键字JAVA语言EclipseJDKandroid-sdkLinearLayout布局目录TOCo1-3hzuHYPERLINKl_Toc231154508摘要.2第一章项目概述.51.1手机的发展及背景.51.2计算器

6、的发展历史.6项目相关技术知识.82.1JAVA技术.82.2JDK.112.3Eclipse.11系统设计.133.1系统功能图.133.2程序流程图.133.3系统框图.153.4总体模块详细设计.153.5输入模块详细设计.163.6显示模块详细设计.173.7计算模块详细设计.17系统实现.184.1输入模块的内容.184.2输入模块的实现.194.3显示模块的内容.194.4显示模块的实现.204.5显示模块的布局代码.204.6计算模块的内容.214.7计算模块实现重要代码.21谢辞.33参考文献.34第一章项目概述1.1手机的发展及背景随着21世纪的到来,我们已经步入了信息化时代

7、,这个时代的最重要的标志就是信息技术的广泛应用。而手机正是信息技术的一个重要体现。如今社会上手机的应用已经达到了非常普及的程度,基本随处都可以见到手机的身影。我们也熟悉了在社会各处遇见它们,家里,办公室里,学校,马路上,基本可以说是有人的地方就用手机的存在。手机发展到今天,已经和最初的手机有了天差地别。1938年,在美国的贝尔实验室,美国军方研制成了世界上第一部“移动电话”即手机。1973年4月,在美国著名的摩托罗拉公司工作的工程技术员“马丁库帕”发明了世界上第一部推向民用的手机,从此以后马丁库帕也被称为现代手机之父。这些就是军方和民用手机最初的出现时间。下面我们按手机的发展来仔细介绍一下:第

8、一代手机(1G)是指模拟的移动电话,也就是在我们小时候活跃在各种影视作品中的“大哥大”。最先研制出这种手机的是美国摩托罗拉公司的Cooper博士。由于当时的电池、天线和集成电路的规模等等技术水平的制约,这种手机体积很大,只能称的上时可移动,严格来说都算不上便携。这种手机有多种制式,AMPS(北美蜂窝系统)、NMT(北欧移动电话)和TACS(全向通信系统)都是主要的模拟标准,但是无论是什么制式的工作方式基本上是频分复用,而且这种手机只能进行简单语音通信,通话的效果也不稳定,同时保密性也很不足,基本可以说是没有保密性。由于当时这种手机的通话频率是固定的,只需要使用双工的无线电台就能监听到用户通话的

9、内容。另外这种手机对于无线带宽利用也是十分不充分的。第二代手机(2G)也是手机发展过程中最常见的手机。通常这些手机使用GSM或者CDMA这些成熟的标准制式,通过了一段时间的发展电池、天线和集成电路规模已经有了突破性的进展了,不会再成为第二代手机发展的制约,而手机也在这些技术的促进中发展的越来越快。通话质量和待机时间都得到了很大的发展。第二代手机为了适应用户对于数据通讯的需求,一些在现在普遍使用的技术也在手机上得到了发展,例如GPRS彩信业务和WAP上网业务,也是在这个时期各式各样的Java程序开始登上历史舞台,从此Java程序的拓展也成为了手机一个重要的部分。下面我们来说说我们现在常常会提起的

10、3G吧。3G是英文3rdGeneration的缩写,即指第三代移动通信技术。相对第一代手机(1G)和第二代手机(2G),第三代手机更加强调的是网络的部分,利用3G技术,手机能够更好的进行数据业务。它能够随时随地的来处理图像、音乐、视频等等多媒体业务,服务的范围提供包括比第二代手机更加快速的网页浏览、视频通话、HYPERLINK/view/757.htm电子商务等等多种信息服务。而为了确保能够给用户提供以上这些服务,第三代手机就需要更高的数据传输速度,据本人了解,现在的3G手机在室内、室外和行车的环境中能够分别支持2Mbps、384kbps以及144kbps以上的传输速度。最后我们来说说现在国际

11、上承认的3G手机的标准,现在国际上3G手机(3Ghandsets)有3种制式标准,这三种标准分别是欧洲的WCDMA标准、美国的CDMA2000标准和我国自主研发的TDSCDMA标准。手机发展到今天,科技水平已经越来越高,而3G手机也已经开始进入我们的生活了,手机应用的扩展更是从第二代手机开始就已经变得具有极其重要的意义了,而本文正是在这样的背景下开展研究的。1.2计算器的发展历史计算器作为现在人们日常生活中常用的一种工具已经可以说是人们日常生活中必不可少的工具了。但是计算器的发展经历了漫长的过程,凝聚无数先人的智慧,甚至连计算机的发展都可以说是源于计算器的发展。计算器和计算机一样都能够实现数据

12、的输入、处理、存储和输出这些基本的功能,但计算器区别于计算机的地方就是,它不能自动的进行计算,必须要求由人来操作完成计算;而计算机通过提前编写好的程序就能够自动的按照程序进行处理。所以计算器和计算机的一个显著的区别就在于是否需要人为地操作来完成运行。这二者还有另一个本质性的区别。计算器的处理数据的方法是生产时就已经固化在系统中了,所以计算器只能按照系统中规定的处理方法来处理用户要求的计算任务;而计算机由于可以自行安装操作系统和各种的相关软件和硬件,理论上计算机拥有的可扩展性是无穷的。所以简单的说,计算器和计算机的本质性区别就在于该系统是否存在可扩展性。在我所了解到的知识中,最早的计算工具可以追

13、溯到中国古代一种叫做筹策(又叫算筹)的东西上。这种计算工具在计算的时候摆成纵式和横式两种数字,按照纵式相间的原则表示任何自然数,从而进行加、减、乘、除、开方以及其它的代数计算。负数出现后,算筹分为红和两种,红筹表示正数,黑筹表示负数。虽然我对于这种计算的原理不是很了解,但是不得不说,这种运算工具和运算方法确实是当时世界上独一无二的。直到今天仍有一些人在使用的HYPERLINK/view/116024.htm珠算或者叫算盘,是中国古代计算工具中的另一项伟大发明,而从明朝开始使用的HYPERLINK/view/18627.htm算盘就已经与现代的算盘几乎完全相同了。以上介绍完了中国关于计算工具的发

14、展,下面我们来看看西方社会中计算工具的发展情况。我通过查询资料得知,17世纪初这个时期,西方国家的计算工具开始有了一个较大的发展,英国数学家纳皮尔发明的纳皮尔算筹,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺的功能不仅仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具的产生不单单是带动了计算器的发展,更是为现代计算器的发展奠定了一个坚实的基础。虽然当时的技术水平有限,这些工具使用的不是机械或者电子作为载体,但是这些计算工具却为了后世的计算器提供了一个良好的思路。1642年,伟大的法国科学家HYPERLINK/view/17673.htm帕斯卡在年仅19岁

15、的时候就利用了算盘的计算原理发明了世界上第一部机械式的计算器,在这个计算器中有一些互相咬合的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,靠这样来实现十进制的算法,人们可以转动齿轮,把想要输入的数据输入进去,计算结果就会出现在另一个窗口中,但是这个计算器只能做一些加减计算。1694年,莱布尼兹在德国将其改进,使这种计算器成为可以进行加减乘除计算的计算器。此后,一直要到20世纪50年代末才有电子计算器的出现。第二章项目相关技术知识2.1JAVA技术首先要说,Java是一门现在使用很普遍编程语言,但是也是一个平台,它基于Java虚拟机技术,并且借助虚拟机技术实现了跨平台的优势。Java平台由Ja

16、vaHYPERLINK/view/1132.htm虚拟机(JavaVirtualMachine)和Java应用编程HYPERLINK/view/159864.htm接口(ApplicationProgrammingInterface、简称API)构成。Java应用HYPERLINK/view/3281.htm编程接口为Java应用提供了一个独立于HYPERLINK/view/880.htm操作系统的标准接口,再进一步则可分为基本部分和扩展部分。在HYPERLINK/view/25278.htm硬件或操作系统平台上安装一个Java平台之后,Java应用HYPERLINK/view/17674.h

17、tm程序就可运行。由于Java技术本身的优势,现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序的优势就更加明显了,甚至可以做到只编译一次,就可以在各种系统中运行的地步。Java技术的重要性就不讲了,从我了解接触过的编程语言来看,接触的最多的编程语言就是Java,我对于编程语言的接触程度虽然本身不能不说明什么,但至少在一定程度上可以反映出编程语言的使用率和普及率。总体的了解了Java技术以后我们来进一步的了解一下Java的语言。简单的说,如书上所说的概念一样,Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、HYPERLINK/vie

18、w/65706.htm多线程的动态语言。在1995年SUN推出Java语言之后,全世界软件工程师的目光都被这个特别的语言所吸引。这种语言的优越性有此可见。我了解到的Java语言其实最早诞生于1991年,起初也并不叫做Java,而是被称为OAK语言,这种语言是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,在网络出现之前,OAK语言可以说是默默无闻。但是,随着网络的出现和发展,OAK语言的命运被完全的改变了。在Java出现以前,Internet上的信息内容都是千篇一律的使用HTML这种有点死板的文档。这让网络浏览者对于网络的兴趣有所下降,网

19、络不能满足他们对于趣味性和互动性的要求。这些使用者希望能在网页中看到一些交互式的内容,而网站的开发人员也极希望能够在为网站开发应用程序的时候不用再去考虑用户的软硬件平台是否能够与程序兼容的这些问题,同时这些程序还能够提供足够安全保障。对于用户的这种要求,传统的那些HYPERLINK/view/552871.htm编程语言都表现的无能为力。而SUN公司的工程师十分敏锐的察觉到了这些需求,从1994年起,他们开始将OAK技术应用于WEB上,并且于同年开发出了HotJava的第一个版本。而当SUN公司1995年正式以Java这个名字推出该语言的时候,几乎所有的WEB开发人员都发现Java这种语言能够

20、完全的满足他们之前的需求,满足用户的需求。于是Java一夜之间成了炙手可热的一种编程语言。那么Java的主要特性又是什么呢?如上文中所说的,Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、HYPERLINK/view/65706.htm多线程的动态语言。下面我们就来详细的介绍一下这些特点。Java语言是简单的。由于Java语言的语法与C语言和C+语言很相近,这就使得大多数的HYPERLINK/view/39175.htm程序员可以只通过很容易学习就能使用Java。另一方面,Java语言祛除了一些C+语言中令人迷惑或者难以理解的特性,比如操作符重

21、载、多继承、自动的HYPERLINK/view/2886403.htm强制类型转换等等。另外,在Java语言种不使用HYPERLINK/view/159417.htm指针,并提供了自动的废料收集的功能,从此使用Java的程序员再也不用为了HYPERLINK/view/4541016.htm内存管理而担忧了。Java语言是面向对象的。Java语言中提供了类、接口和继承等等,其中只支持类之间的单继承,想要进行多继承就要使用接口,支持类与接口之间的实现机制的HYPERLINK/view/390935.htm关键字为implements。与C+语言只对HYPERLINK/view/161302.htm

22、虚函数使用动态绑定相比,Java语言全面支持动态绑定。总之,Java语言可以说是一个纯粹HYPERLINK/view/249254.htm面向对象的程序设计语言。Java语言是分布式的。Java语言支持Internet应用的开发,所以在基本的Java应用HYPERLINK/view/897136.htm编程接口中会有一个网络应用编程接口(javanet),这个编程接口提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的远程方法激活机制也是开发分布式应用的一个重要手段。Java语言是健壮的。Java的HYPERLINK/vie

23、w/1792102.htm强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。而不再使用指针更是Java的明智选择。Java的安全检查机制使得Java更具健壮性。Java语言是安全的。由于Java通常被用在网络环境中,因此,Java特意提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多HYPERLINK/view/634959.htm安全特性以外,Java对通过网络下载的类还具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、HYPERLINK/view/185293.htm字节代码检查,并提供安全管理机制(类Securi

24、tyManager)让Java应用更加安全。Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的HYPERLINK/view/560330.htm字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种适应性使得Java的应用变的更加的广泛。Java语言是可移植的。由于Java语言的结构中立的特性,这种语言同时也具备了很强的可移植性,另外,Java语言中还规定了各个基本数据类型的长度。而Java系统的本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSIC实现的。Java语

25、言是解释型的。Java程序在Java平台上被编译为一种特殊的字节码格式,然后该程序就可以在任何系统中装有Java平台的实现运行。在运行时,Java平台中的JavaHYPERLINK/view/592974.htm解释器对这些特殊的字节码再进行解释,而在整个过程中所需要的类在联接阶段就会被载入到运行环境中。Java是高性能的。我了解到的Java语言与解释型的高级HYPERLINK/view/76320.htm脚本语言相比Java的性能确实是占优势的。Java的运行速度更是随着JIT(Just-In-Time)编译器技术的发展变得越来越快了。Java语言是多线程的。Java语言支持多个线程在同一时

26、间一同执行,并且专门的提供了多线程之间的同步机制(关键字为synchronized)。Java语言是动态的。在Java语言的设计之初就有要求语言能够适应于动态变化的环境这个目标。Java程序需要的类,既可以动态地被载入到运行环境,又可以通过网络来载入所需要的类。这样的设计有利于软件的升级。另外,我还了解到Java中的类存在一个运行时刻的表示,能进行运行时刻的类型检查。由于Java语言编写的Java应用具有很强的健壮性和可靠性,这样就能减少很多应用系统的维护费用。Java对面向对象的技术的全面支持和Java平台内嵌的API能极大的缩短应用系统的开发时间同时还能降低开发成本。Java的编译一次,可

27、以在任意装有Java平台的系统运行的特性使得它成为能够直接在多个平台之间传递信息的简单便利的方式。有必要一说的是Java企业应用编程接口还为企业计算及HYPERLINK/view/2622737.htm电子商务应用系统提供了有关技术和丰富的类库。Java编程语言最与众不同之处在于:Java程序既是编译型的又是解释型的。编译型是指,程序会转换为一种称为Java字节码的中间语言,解释型则是指,运行程序的时候JVM会对字节码进行解析和运行。这个过程中,编译只进行一次,而解释在每次运行程序时都会进行。2.2JDKJDK(JavaDevelopmentKit)是SunMicrosystems针对Java

28、语言程序开发的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。JDK是整个Java的核心组件,其中包括了Java的运行环境,Java工具和Java基础的类库。可以说JDK是学好Java的第一步。从SUN的JDK5.0开始提供了泛型等等一些非常实用的功能,而且版本还在不断更新,到本论文写作时已经更新到了JDK7.0了。运行效率也随着版本的不断更新而得到了很大的提高。2.3EclispeEclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过HYPERLINK/view/18979.htm插件组件构建开发环境。换句话说就

29、是Eclipse只是提供了一个界面,所有的开发环境都要通过安装相关的插件来完成。不过Eclipse附带了一个标准的插件集合,在这个集合中包括了Java的开发工具(JavaDevelopmentTools,JDT)。首先我们来介绍一下Eclipse历史和版本。Eclipse最初是由OTI和IBM公司开发的替代商业HYPERLINK/view/37.htm软件VisualAgeforJava的下一代IDE开发环境,在2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(EclipseFoundation)管理。2003年,Eclipse3.0选择OSGi服务平台规范为运

30、行时架构。2007年6月,稳定版3.3发布。2008年6月发布代号为Ganymede的3.4版。2009年7月发布代号为GALILEO的3.5版。2010年6月发布代号为Helios的3.6版。本系统开发使用的是3.6的版本。此外我们再来谈谈Eclips语言拓展能力。Eclipse基本已经成为世界最著名的跨平台自由HYPERLINK/view/14867.htm集成开发环境(IDE)。最初主要用来HYPERLINK/view/229611.htmJava语言开发,但是由于其开源的特性,也有人通过为其安装插件使其作为其他编程语言(比如C+和Python)的开发工具。如上文所说,Eclipse的本

31、身只是一个框架平台,但是众多插件的支持使得Eclipse拥有了其他功能固定的IDE软件很难拥有的灵活性。现在许多的软件开发商以Eclipse为框架开发出了自己的IDE。Eclipse由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。目前也是由IBM牵头,围绕着Eclipse已经发展成为了一个庞大的Eclipse联盟,这个联盟中已经有150多家软件公司参与到Eclipse项目中,其中不乏知名的厂商例如Borland、RationalSoftware、RedHat及Sybase等。Eclipse是一

32、个开发源码项目,其界面跟先前的VisualAgeforJava差不多,但由于它是个开源的系统,任何人都可以免费得到其码源,并可以在此基础上开发各自的插件,正是因此,它越来越受人们关注。近几年更有包括Oracle在内的许多大公司也纷纷加入了该项目,这标志着Eclipse将来能会成为可进行任何语言开发的IDE大集合,使用者只需根据自己的需要下载各种语言的插件即可。接着说说Eclipse插件开发环境。虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此,如上文所说,Eclipse的最终目标是成为可以进行任何语言开发的IDE大集合。所以在Eclipse中还包括

33、插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要是针对希望扩展Eclipse功能的软件开发人员,因为这个组件允许开发者构建与Eclipse环境无缝集成的工具。由于Eclipse中可以说是每样东西都是插件,所以说对于想给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境的开发人员来说,所有人都具有了一个同等的发挥机会。我在网上找到的基于Eclipse的HYPERLINK/view/330120.htm应用程序的突出例子是IBM的WebSphereStudioWorkbench,它构成了IBM关于Java开发工具系列的基础。例如,WebS

34、phereStudioApplicationDeveloper添加了对JSP、servlet、EJB、XML、Web服务和HYPERLINK/view/1088.htm数据库访问的支持。Eclipse都有哪些的主要组成部分呢?Eclipse作为一个开放源代码的软件开发项目,目标是成为可进行任何语言开发的IDE大集合。它主要是由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,其中具体的又包括四个部分,分别是EclipsePlatform、JDT、CDT和PDE。JDT是支持Java开发的、CDT是支持C开发的、PDE是用来支持Eclipse插件开发的,Eclips

35、ePlatform则是一个开放的可扩展IDE,为使用者提供了一个通用的开发平台。EclipseSDK(软件开发者包)是一个EclipsePlatform、JDT和PDE所生产的组件合并,它们可以一次性打包下载。这些部分一起提供了一个具有性能可靠,特性丰富的开发环境,在这个环境中允许开发者有效地建造可以无缝连接到EclipsePlatform中的工具。EclipseSDK由Eclipse项目生产的工具和来自其它开放源代码的HYPERLINK/view/287257.htm第三方软件组合而成。Eclipse项目生产的软件以GPL发布,第三方组件有各自自身的使用许可协议。第三章系统设计3.1系统的功

36、能图整个系统的功能比较多,比较复杂,如上节所说,可以分为十多个功能模块,但是逻辑上理解其实不算困难,系统包括普通计算功能,包括加减乘除;高级计算功能,包括平方,开方,三角函数(sin,cos),清零功能。下面就让我们用图3-1来表示:高级计算功能清除相关功能加法运算减法运算乘法运算手机计算器除法运算记忆相关功能图3-1系统的功能图以上是系统的功能图,由于系统的功能众多,于是按功能进行了合并,没有完全的一一列举,其中高级计算功能中包括了上文所述的所有高级计算功能,记忆相关功能和清除相关功能同样包括在了图示上所列的功能中。由于没有完全罗列出来,此处特意说明。3.2程序流程图知道了系统的功能以后,那

37、么系统又是怎么工作的呢?系统通过Form来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,特殊运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。系统流程图如图3-2所示:否开始监听用户按键输入图3-2程序流程图是按照用户的要求进行计算判断是否需要结算结果在显示区显示计算出的结果判断是否是清零操作是系统重置否以上就是系统的流程图,不过只是一个简单是示意流程图,不是整个程序的完整流程图,整个系统的流程图由于模块众多,整个列举不易于理解,故此就只采用简

38、单流程图作为示例说明,反而更加的简单明了。3.3系统框图系统除了总体模块以外主要由三大模块来组成,即输入模块,显示模块和计算模块。用系统框图来表示即如图2-3。总体系统显示模块输入模块计算模块图3-3系统框图系统这三大模块都各自包含什么内容在下文的系统详细设计中会有进一步的说明,此处就暂且略过。3.4总体模块详细设计任何Java程序的实现都需要有MIDlet类作为程序的启动类。总体模块需要完成的任务主要就是系统的程序启动类,需要负责整个系统的生命周期。同时在还要在模块中完成菜单栏的所有功能,即退出程序,记忆数据,显示数据,清除记忆数据这四个功能。3.5输入模块详细设计系统如果想完成计算器中的各

39、种功能,首先用户要能进行数据输入,由于是在触屏手机上开发计算器程序,所以要求输入可以直接使用触屏进行,所以在设计的时候就要充分的考虑要这一点。正是由于考虑到这个特殊的地方,所以在进行模块设计中,选择编写输入模块类的时候会特意选取使用了可以支持触屏输入的特殊增强型图形用户界面类CustomItem。输入模块主要的任务是描述计算器键盘以及实现键盘的监听,即当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法,本模块还需要为系统提供了一个较为直观的键盘图形用户界面。输入模块的功能图如图3-5:支持触屏输入模块描述计算器键盘实现按键监听设置按键监听定义键盘按键和画法设置监听调用方法图3-5输入模块

40、功能图3.6显示模块详细设计作为手机计算器系统,显示部分也是必不可少的一部分。没有显示部分就没有办法显示用户输入的数字是否正确,甚至不能显示计算出的结果,由此可见显示模块即包括输入的部分也包括输出的部分。由于考虑到Java开发中低级界面和高级界面可能产生不兼容等等问题,所以在对显示模块进行设计的时候也选用了同样的增强型图形用户界面类CustomItem。显示模块主要要完成的任务是描述计算器的显示区,该区域用于显示用户输入的数据以及最终的计算结果和一些其他信息。同时本模块还将提供调用和设置显示的具体方法。显示模块的功能图如图3-6:显示区的相关设置显示模块调用显示区数据方法设置显示区数据方法图3

41、-6显示模块功能图3.7计算模块详细设计系统要完成整个的计算器的计算功能,那么计算模块就是整个系统的重点模块。没有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。所以计算模块的设计也是本次系统设计中的重点。系统想要能在屏幕上显示出计算器的样子要有整体的布局,在本模块中要完成布局的具体设计,使用户能够看到整个计算器的画面。同时系统想完成计算功能必须要处理用户的输入,当输入模块的监听传到计算模块中时,计算模块就要根据相应的方法进行进一步的处理。这部分主要是对输入进行的逻辑判断,基本会通过ifelse来实现逻辑判断。计算模块的功能图如图3-7:整体布局数值输入判断记忆相关功能普通运算功能清零

42、复位功能高级功能运算输入判断逻辑判断计算模块高级计算功能第四章系统实现4.1输入模块的内容输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法,具体的处理办法会在相关的地方进行说明。本模块最主要还是为系统提供了一个较为直观的键盘图形用户界面。4.2输入模块的实现在触屏上提供了各种功能的按键,分别是C(清除键),XY(平方键),sin(计算角度的sin值),cos(计算角度的cos值),X(开方),0,1,2,3,4,5,6,7,8,9,+,-,-/+,*,/,.,=。键盘如图3-1:图4-1触屏键盘4

43、.3显示模块的内容显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果和一些其他信息。显示区中设置了显示字体,显示区的大小,边框的颜色和大小,同时还设置了显示字体的颜色。图4-2显示区4.4显示模块的实现显示区中使用的是LinearLayout布局。如上节所说,显示区设置了显示字体,显示区的大小,边框的颜色和大小,以及显示字体的颜色,同时还使用了TableLayout布局。显示模块具体的实现流程请参照下文代码。4.5显示模块的布局页面此图为手机计算器的整体布局4.6计算模块的内容计算模块则主要描述了计算器的整体,实现了计算器的界面,定义了用户单击的处理办法,通过定义的

44、处理办法来完成用户的操作命令,实现用户的计算要求,这些计算要求包括了数值的输入,小数点的输入,正负号的输入,值的输入,记忆相关功能的完成,加、减、乘、除、平方、开方、倒数、三角函数等等各种计算功能的完成,运算符的替换,初始化系统等等。4.7计算模块实现重要代码packagew.w;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.View.OnClickL

45、istener;importandroid.widget.Button;importandroid.widget.TextView;importandroid.widget.Toast;publicclassJiSuanQiActivityextendsActivityprivateintoption=0;/运算符状态privatebooleannewdigital=true;/标记是否是新输入的数字privatedoublea=0,b=0;/两个相加的数privatedoublec;/表示取正负privateButtonbutton1;privateButtonbutton2;private

46、Buttonbutton3;privateButtonbutton4;privateButtonbutton5;privateButtonbutton6;privateButtonbutton7;privateButtonbutton8;privateButtonbutton9;privateButtonbutton0;privateButtonbuttonjia;privateButtonbuttonjian;privateButtonbuttonchen;privateButtonbuttonchu;privateButtonbuttonzhenfu;privateButtonbutton

47、denyu;privateButtonbuttonxiaoshudian;privateButtonbuttonqingchu;privateButtonbuttonkaifang;privateButtonbuttonzhishu;privateButtonbuttoncos;privateButtonbuttonsin;publicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);button0=(Button)findViewById

48、(R.id.btn0);button1=(Button)findViewById(R.id.btn1);button2=(Button)findViewById(R.id.btn2);button3=(Button)findViewById(R.id.btn3);button4=(Button)findViewById(R.id.btn4);button5=(Button)findViewById(R.id.btn5);button6=(Button)findViewById(R.id.btn6);button7=(Button)findViewById(R.id.btn7);button8=

49、(Button)findViewById(R.id.btn8);button9=(Button)findViewById(R.id.btn9);buttonjia=(Button)findViewById(R.id.jia);buttonjian=(Button)findViewById(R.id.jian);buttonchen=(Button)findViewById(R.id.chen);buttonchu=(Button)findViewById(R.id.chu);buttonzhenfu=(Button)findViewById(R.id.zhenfu);buttondenyu=(

50、Button)findViewById(R.id.denyu);buttonqingchu=(Button)findViewById(R.id.qingchu);buttonxiaoshudian=(Button)findViewById(R.id.xiaoshudian);buttonkaifang=(Button)findViewById(R.id.kaifang);buttonzhishu=(Button)findViewById(R.id.zhishu);buttoncos=(Button)findViewById(R.id.cos);buttonsin=(Button)findVie

51、wById(R.id.sin);button0.setOnClickListener(lisenter);button1.setOnClickListener(lisenter);button2.setOnClickListener(lisenter);button3.setOnClickListener(lisenter);button4.setOnClickListener(lisenter);button5.setOnClickListener(lisenter);button6.setOnClickListener(lisenter);button7.setOnClickListene

52、r(lisenter);button8.setOnClickListener(lisenter);button9.setOnClickListener(lisenter);buttonjia.setOnClickListener(lisenter);buttonjian.setOnClickListener(lisenter);buttonchen.setOnClickListener(lisenter);buttonchu.setOnClickListener(lisenter);buttondenyu.setOnClickListener(lisenter);buttonzhenfu.se

53、tOnClickListener(lisenter);buttonqingchu.setOnClickListener(lisenter);buttonxiaoshudian.setOnClickListener(lisenter);buttonkaifang.setOnClickListener(lisenter);buttonzhishu.setOnClickListener(lisenter);buttoncos.setOnClickListener(lisenter);buttonsin.setOnClickListener(lisenter);privateOnClickListen

54、erlisenter=newOnClickListener()publicvoidonClick(Viewv)TextViewtext=(TextView)findViewById(R.id.text);Strings=text.getText().toString();/获取文本框显示的字符串Buttonbtn=(Button)v;Stringt=(String)btn.getText();/获取按钮的字符if(btn.getId()=R.id.btn0|btn.getId()=R.id.btn1|btn.getId()=R.id.btn2|btn.getId()=R.id.btn3|btn

55、.getId()=R.id.btn4|btn.getId()=R.id.btn5|btn.getId()=R.id.btn6|btn.getId()=R.id.btn7|btn.getId()=R.id.btn8|btn.getId()=R.id.btn9)if(newdigital)text.setText(s+t);elsetext.setText(s);newdigital=false;return;if(btn.getId()=R.id.zhenfu)/改变数的正负性/c=Double.parseDouble(s);/text.setText(String.valueOf(-c);/r

56、eturn;if(s.length()=0)a=0;b=0;option=0;newdigital=true;text.setText();return;elseif(s!=)c=Double.parseDouble(s);text.setText(String.valueOf(-c);newdigital=true;return;if(btn.getId()=R.id.jia)/加a=Double.parseDouble(s);option=1;text.setText();return;if(btn.getId()=R.id.jian)/减a=Double.parseDouble(s);o

57、ption=2;text.setText();return;if(btn.getId()=R.id.chen)/乘a=Double.parseDouble(s);option=3;text.setText();return;if(btn.getId()=R.id.chu)/除a=Double.parseDouble(s);option=4;text.setText();return;if(btn.getId()=R.id.qingchu)/清除a=0;b=0;option=0;newdigital=true;text.setText();return;if(btn.getId()=R.id.kaifang)/开方if(s.length()=0)a=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论