通信工程毕业论文-手机计算器 - 图文

更新时间:2023-12-16 15:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

北京联合大学 毕业设计

引 言

目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。手机上的软件也随着手机的发展变得丰富起来了,时至今日已经出现了很多专门制作手机软件的公司,虽然制作的多是游戏软件,但是一些辅助性的工具软件也有了很多。

手机软件简单说就是可以安装在手机上的软件,作用自然是扩展手机的原始功能,使手机变得更加的实用。但是手机的软件需要安装到相应的系统中才能完美的运行。正是由于考虑到以上这些情况,虽然Android系统是现今比较流行的手机系统,但是在Android上开发手机软件只能在Android的手机上使用,而如果使用Java ME开发软件的话,该软件基本就可以在除了iOS的各大手机平台上运行,大大提高了使用率,减少了关于跨系统平台所带来的种种问题,所以本系统选择了基于java的Java ME语言来作为开发语言。

现在市面上常见的手机大致可以分为三类,一类是传统的键盘手机,使用键盘对手机进行操作。另一类是处于过度期时使用的既可以使用手指或者触控笔在屏幕上进行触控操作又可以使用传统的键盘进行对手机的操作。第三类则是新兴的触屏手机,这类手机就是直接通过手指或者触控笔在屏幕上面进行操作,需要键盘的部分,基本都是以在屏幕中产生一个虚拟键盘的模式来实现的。具体手机的触摸屏到底是需要触控笔进行触控操作还是需要使用手指进行操作主要还是要看手机使用的触摸屏是电阻屏还是电容屏。使用触控笔的手机使用的屏幕都是电阻屏的手机,这种屏幕的触控定位实际上是利用你在屏幕上的点击对屏幕的电阻产生的变化进行判断以至于可以判断出用户触控的位置,用户只要对屏幕造成压力即可实现,无所谓是什么东西触控的。而电容屏就不同了,使用电容屏的手机只能判断带电物体的触控,使带电物体在屏幕上产生耦合电容,通过耦合电容来判断触控的位置,这种方法还更有利于多点触控技术的实现。在人们日常使用手机中这个带电物体就是人自己的身体,一般情况下就是手。

从手机市场的份额占有率来看,现在市面上占有绝对优势的还是塞班系统,虽然因为一些原因该系统正在走下坡路,但是不管什么系统以后会成为主流的手机操作系统,触屏手机都已经成为了流行的趋势,无论是塞班的后期系统,还是微软开发的WM系列,苹果的iOS系统,以及google开发的Android系统,都是支持甚至完全基于触屏开发的系统。可以说现在市面上的主流手机无论品牌都是触屏手机,触屏手机必将代替传统的键盘手机成为新一代手机使用者的宠儿。也是因此本系统在开发中

1

北京联合大学 毕业设计

就选择了触屏的作为开发模式,强调触屏的使用,以期可以跟上时代的发展。

综上所述,本系统是一个基于现有手机计算器开发的在触屏手机上运行的简单科学计算器。拥有简单计算器中没有的科学计算功能。使用户可以更加简单便捷的使用一些科学计算器的功能,同时还不用学习科学计算器那复杂的使用方法。本人在此次系统中所做的工作主要是设计整个系统以及利用编程语言实现整个系统,使系统能够正确的运行计算功能。

2

北京联合大学 毕业设计

1 手机计算器系统概述

1.1 手机的发展及背景

随着21世纪的到来,我们已经步入了信息化时代,这个时代的最重要的标志就是信息技术的广泛应用。而手机正是信息技术的一个重要体现。如今社会上手机的应用已经达到了非常普及的程度,基本随处都可以见到手机的身影。我们也熟悉了在社会各处遇见它们,家里,办公室里,学校,马路上,基本可以说是有人的地方就用手机的存在。手机发展到今天,已经和最初的手机有了天差地别。

1938年,在美国的贝尔实验室,美国军方研制成了世界上第一部“移动电话”即手机。

1973年4月,在美国著名的摩托罗拉公司工作的工程技术员“马丁·库帕”发明了世界上第一部推向民用的手机,从此以后马丁·库帕也被称为现代手机之父。

这些就是军方和民用手机最初的出现时间。下面我们按手机的发展来仔细介绍一下:

第一代手机(1G)是指模拟的移动电话,也就是在我们小时候活跃在各种影视作品中的“大哥大”。最先研制出这种手机的是美国摩托罗拉公司的 Cooper博士。由于当时的电池、天线和集成电路的规模等等技术水平的制约,这种手机体积很大,只能称的上时可移动,严格来说都算不上便携。

这种手机有多种制式,AMPS(北美蜂窝系统)、NMT(北欧移动电话)和TACS(全向通信系统)都是主要的模拟标准,但是无论是什么制式的工作方式基本上是频分复用,而且这种手机只能进行简单语音通信,通话的效果也不稳定,同时保密性也很不足,基本可以说是没有保密性。由于当时这种手机的通话频率是固定的,只需要使用双工的无线电台就能监听到用户通话的内容。另外这种手机对于无线带宽利用也是十分不充分的。

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

下面我们来说说我们现在常常会提起的3G吧。3G是英文3rdGeneration的缩写,

3

北京联合大学 毕业设计

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

最后我们来说说现在国际上承认的3G手机的标准,现在国际上3G手机(3G handsets)有3种制式标准,这三种标准分别是欧洲的WCDMA标准、美国的CDMA2000标准和我国自主研发的TD-SCDMA标准。

手机发展到今天,科技水平已经越来越高,而3G手机也已经开始进入我们的生活了,手机应用的扩展更是从第二代手机开始就已经变得具有极其重要的意义了,而本文正是在这样的背景下开展研究的。

1.2 计算器的发展历史

计算器作为现在人们日常生活中常用的一种工具已经可以说是人们日常生活中必不可少的工具了。但是计算器的发展经历了漫长的过程,凝聚无数先人的智慧,甚至连计算机的发展都可以说是源于计算器的发展。计算器和计算机一样都能够实现数据的输入、处理、存储和输出这些基本的功能,但计算器区别于计算机的地方就是,它不能自动的进行计算,必须要求由人来操作完成计算;而计算机通过提前编写好的程序就能够自动的按照程序进行处理。所以计算器和计算机的一个显著的区别就在于是否需要人为地操作来完成运行。这二者还有另一个本质性的区别。计算器的处理数据的方法是生产时就已经固化在系统中了,所以计算器只能按照系统中规定的处理方法来处理用户要求的计算任务;而计算机由于可以自行安装操作系统和各种的相关软件和硬件,理论上计算机拥有的可扩展性是无穷的。所以简单的说,计算器和计算机的本质性区别就在于该系统是否存在可扩展性。

在我所了解到的知识中,最早的计算工具可以追溯到中国古代一种叫做筹策(又叫算筹)的东西上。这种计算工具在计算的时候摆成纵式和横式两种数字,按照纵式相间的原则表示任何自然数,从而进行加、减、乘、除、开方以及其它的代数计算。负数出现后,算筹分为红和两种,红筹表示正数,黑筹表示负数。虽然我对于这种计算的原理不是很了解,但是不得不说,这种运算工具和运算方法确实是当时世界上独一无二的。

直到今天仍有一些人在使用的珠算或者叫算盘,是中国古代计算工具中的另一项伟大发明,而从明朝开始使用的算盘就已经与现代的算盘几乎完全相同了。

4

北京联合大学 毕业设计

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

1642年,伟大的法国科学家帕斯卡在年仅19岁的时候就利用了算盘的计算原理发明了世界上第一部机械式的计算器,在这个计算器中有一些互相咬合的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,靠这样来实现十进制的算法,人们可以转动齿轮,把想要输入的数据输入进去,计算结果就会出现在另一个窗口中,但是这个计算器只能做一些加减计算。1694年,莱布尼兹在德国将其改进,使这种计算器成为可以进行加减乘除计算的计算器。此后,一直要到20世纪50年代末才有电子计算器的出现。

1.3 课题的内容及相关技术知识

1.3.1 课题的内容

本课题的内容是利用J2ME语言来编写一个手机计算器程序,要求计算器界面友好,方便使用,显示至少12位结果,具有基本的加、减、乘、除、算数平方根、平方、求倒数功能,能够判断用户输入运算数是否正确,支持小数运算,具有退格功能,能够删除最后一个输入,具有清除功能,即C,具有结果存储功能,MS、MR、MC、M+功能,能够显示存储器状态,支持触屏手机。

这些内容基本上现在的触屏手机自带的计算器中能实现,为了在前人的基础上再进行开发新的功能,使系统有所创新,在本系统中会特意添加了一些普通手机计算器不会拥有的一些功能。添加的内容中很大一部分的计算功能来自科学计算器,科学计算器中的计算方法可以说在本系统开发的过程中给了我很大的启发,比如计算三角函数值以及π值的加入等等想法都是来自科学计算器。

本系统在最后完成后会拥有普通的简单计算功能,即加减乘除;一些简单的科学计算功能,其中包括平方,开平方,百分比,绝对值,三角函数的计算(sin,cos,tan,cot),倒数还有关于π值的计算;包括MS,MR,MC和M+功能的记忆功能;清零以及退格功能。

5

北京联合大学 毕业设计

1.3.2 课题相关的技术知识

近年来,随着手机使用的一些技术的迅速发展,基于J2ME编写的手机应用,因其具有易用性、通用性和良好的可扩展性等优点而发展迅速,正逐渐成为一种流行的热门技术。那么到底什么是JVAV?什么是J2ME呢?下面让我们先来介绍一下。

1.JAVA技术

首先要说,Java是一门现在使用很普遍编程语言,但是也是一个平台,它基于Java虚拟机技术,并且借助虚拟机技术实现了跨平台的优势。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,再进一步则可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。由于Java技术本身的优势,现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序的优势就更加明显了,甚至可以做到只编译一次,就可以在各种系统中运行的地步。Java技术的重要性就不讲了,从我了解接触过的编程语言来看,接触的最多的编程语言分别是Java 、C 、VB、C++,我对于编程语言的接触程度虽然本身不能不说明什么,但至少在一定程度上可以反映出编程语言的使用率和普及率。

总体的了解了Java技术以后我们来进一步的了解一下Java的语言。

简单的说,如书上所说的概念一样,Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。

在1995年SUN推出Java语言之后,全世界软件工程师的目光都被这个特别的语言所吸引。这种语言的优越性有此可见。

我了解到的Java语言其实最早诞生于1991年,起初也并不叫做Java,而是被称为OAK语言,这种语言是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,在网络出现之前,OAK语言可以说是默默无闻。但是,随着网络的出现和发展,OAK语言的命运被完全的改变了。

在Java出现以前,Internet上的信息内容都是千篇一律的使用HTML这种有点死板的文档。这让网络浏览者对于网络的兴趣有所下降,网络不能满足他们对于趣味性和互动性的要求。这些使用者希望能在网页中看到一些交互式的内容,而网站的开发人员也极希望能够在为网站开发应用程序的时候不用再去考虑用户的软硬件平台是否能够与程序兼容的这些问题,同时这些程序还能够提供足够安全保障。对于用户的这种要求,传统的那些编程语言都表现的无能为力。而SUN公司的工程师十分敏锐的察觉到了这些需求,从1994年起,他们开始将OAK技术应用于WEB上,并且于

6

北京联合大学 毕业设计

同年开发出了HotJava的第一个版本。而当SUN公司1995年正式以Java这个名字推出该语言的时候,几乎所有的WEB开发人员都发现Java这种语言能够完全的满足他们之前的需求,满足用户的需求。于是Java一夜之间成了炙手可热的一种编程语言。

那么Java的主要特性又是什么呢?如上文中所说的,Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。下面我们就来详细的介绍一下这些特点。

① Java语言是简单的。由于Java语言的语法与C语言和C++语言很相近,这就使得大多数的程序员可以只通过很容易学习就能使用Java。另一方面,Java语言祛除了一些C++语言中令人迷惑或者难以理解的特性,比如操作符重载、多继承、自动的强制类型转换等等。另外,在Java语言种不使用指针,并提供了自动的废料收集的功能,从此使用Java的程序员再也不用为了内存管理而担忧了。

② Java语言是面向对象的。Java语言中提供了类、接口和继承等等,其中只支持类之间的单继承,想要进行多继承就要使用接口,支持类与接口之间的实现机制的关键字为implements。与C++ 语言只对虚函数使用动态绑定相比,Java语言全面支持动态绑定。总之,Java语言可以说是一个纯粹面向对象的程序设计语言。

③ Java语言是分布式的。Java语言支持Internet应用的开发,所以在基本的Java应用编程接口中会有一个网络应用编程接口(java net),这个编程接口提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的远程方法激活机制也是开发分布式应用的一个重要手段。

④ Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。而不再使用指针更是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

⑤ Java语言是安全的。由于Java通常被用在网络环境中,因此,Java特意提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类还具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用更加安全。

⑥ Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种适应性使得Java的应用变的更加的广泛。

⑦ Java语言是可移植的。由于Java语言的结构中立的特性,这种语言同时也具备了很强的可移植性,另外,Java语言中还规定了各个基本数据类型的长度。而Java系统的本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。

7

北京联合大学 毕业设计

⑧ Java语言是解释型的。Java程序在Java平台上被编译为一种特殊的字节码格式, 然后该程序就可以在任何系统中装有Java平台的实现运行。在运行时,Java平台中的Java解释器对这些特殊的字节码再进行解释,而在整个过程中所需要的类在联接阶段就会被载入到运行环境中。

⑨ Java是高性能的。我了解到的Java语言与解释型的高级脚本语言相比Java的性能确实是占优势的。Java的运行速度更是随着JIT(Just-In-Time)编译器技术的发展变得越来越快了。

⑩ Java语言是多线程的。Java语言支持多个线程在同一时间一同执行,并且专门的提供了多线程之间的同步机制(关键字为synchronized)。

? Java语言是动态的。在Java语言的设计之初就有要求语言能够适应于动态变化的环境这个目标。Java程序需要的类,既可以动态地被载入到运行环境,又可以通过网络来载入所需要的类。这样的设计有利于软件的升级。另外,我还了解到Java中的类存在一个运行时刻的表示,能进行运行时刻的类型检查。

由于Java语言编写的Java应用具有很强的健壮性和可靠性,这样就能减少很多应用系统的维护费用。Java对面向对象的技术的全面支持和Java平台内嵌的API能极大的缩短应用系统的开发时间同时还能降低开发成本。Java的编译一次,可以在任意装有Java平台的系统运行的特性使得它成为能够直接在多个平台之间传递信息的简单便利的方式。有必要一说的是Java企业应用编程接口还为企业计算及电子商务应用系统提供了有关技术和丰富的类库。

Java编程语言最与众不同之处在于:Java程序既是编译型的又是解释型的。编译型是指,程序会转换为一种称为Java字节码的中间语言,解释型则是指,运行程序的时候JVM 会对字节码进行解析和运行。这个过程中,编译只进行一次,而解释在每次运行程序时都会进行。

Java平台是一种纯软件平台,它有三个版本Java SE、JavaEE、Java ME。下面就来着重介绍一下Java ME。

2.Java ME

Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME的目的是为了在移动设备或者嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME包括用户界面、安全模型、内置的网络协议以及对可以动态下载的应用程序的支持。由于Java ME使用的是基于Java平台的规范,所以使用Java ME开发的应用程序也只需编写一次,就可以用于许多设备,而且可以充分的利用每个设备的本机功能。

从近几年的发展趋势来看,Java ME流行的应用是手机应用软件。Java ME程序可以直接在电脑上开发并且可以在电脑端进行仿真运行,程序开发完成后又可以很容

8

北京联合大学 毕业设计

易的安装到手机上并且运行,这样的开发过程使得Java ME程序无论是开发、测试和发布的变得十分容易而且成本低廉。当然Java ME的用途和前景远比手机应用软件这方面要广泛得多。

与J2SE和J2EE相比,J2ME的运行环境和平台更加多样化,但其中具体产品的用途却更为单一,而且对于的资源限制也更加严格。为了在能够达到标准化和兼容性的同时还可以尽量满足不同方面的需求,J2ME的架构分为Configuration、Profile和Optional Packages(可选包)。它们之间的不同组合形成了具体的运行环境。

1.4 本文内容结构安排

本文第一章对手机计算器的课题背景进行了介绍,同时对本论文的整体结构进行了介绍。

第二章是对手机计算器系统进行了分析,对系统可行性做了分析,对开发语言进行了选择,同时分析了系统需要完成的功能,以及介绍了手机计算器的开发平台。

第三章是对系统设计进行了介绍,内容包括总体设计,功能图,程序流程图,系统框图,以及系统的类设计。

第四章是对系统模块的具体说明,对每个模块都进行了较为详细的说明。 第五章是对系统的测试,对手机计算器实现的各种功能全部进行了测试,验证了手机计算器的功能能否实现。

9

北京联合大学 毕业设计

2 系统分析

2.1 系统可行性分析

手机计算器系统的功能定义为,为用户提供便捷的计算功能。即在使用方便的前提下为用户提供尽量多的计算以及相关功能。意旨将计算器和手机进行有机的结合,使计算器的使用变得更加简便。

随着手机应用软件的不断发展,实用的手机计算器可以算是手机中必不可少的软件之一,使用手机计算器可以方便的对复杂的数据进行计算,为工作生活中带来了很多方便。

1.经济可行性分析

本系统由个人开发,完全开源,在本系统开发的过程中考虑了用户可能需要的计算功能,对于基本计算的功能和记忆功能都有开发,还另行开发了一些其他的计算功能,功能基本比较完善,同时可以免费使用,很实惠,有很强的实用性。

2.技术可行性分析

本系统从技术上来讲是完全可行的,利用J2ME可以相对容易的实现基于触屏的手机软件开发,同时利用了Java的特点,使系统能够在更多的不同操作系统中安装运行。现在手机本身的CPU和存储空间完全可以支持系统的运算以及记忆的储存等等所需要的速度和存储空间。

2.2 系统的开发语言的选择

本次开发的系统为基于触屏手机的手机计算器,手机计算器的实用性相当强,在手机上安装计算器既可以方便计算,又可以解决携带等等问题。需要使用基于触屏的开发模式是因为现在的触屏手机大行其道,基本新上市的主流手机都使用的触屏技术,为了能够使系统跟谁时代的脚步不会过早的被淘汰等等方面的考虑,本系统使用了基于触屏的开发模式。基于触屏的开发模式可以分为好几种,比如入前文提到的微软开发的WM系列,苹果的iOS系统,以及google开发的Android系统等等,那么为什么要选择J2ME作为开发语言呢?选择J2ME语言作为开发语言的原因很简单,因为这些系统基本每种触屏手机的操作系统都有自己的对应的软件格式,由于考虑到了Java的通用性,所以本系统使用了Java这种通用的技术进行开发,使用的是适合于移动平台J2ME语言编写。

10

北京联合大学 毕业设计

图3-1 系统的功能图

以上是系统的功能图,由于系统的功能众多,于是按功能进行了合并,没有完全的一一列举,其中高级计算功能中包括了上文所述的所有高级计算功能,记忆相关功能和清除相关功能同样包括在了图示上所列的功能中。由于没有完全罗列出来,此处特意说明。

清除相关功能 除法运算 记忆相关功能 手机计算器 乘法运算 减法运算 高级计算功能 加法运算 3.3 程序流程图

知道了系统的功能以后,那么系统又是怎么工作的呢?系统通过Form来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,特殊运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。系统流程图如图3-2所示:

16

北京联合大学 毕业设计

开始 监听用户按键输入 系统重置 是 判断是否是清零操作 否 否 判断是否需要结算结果 是 按照用户的要求进行计算 在显示区显示计算出的结果 图3-2 程序流程图

以上就是系统的流程图,不过只是一个简单是示意流程图,不是整个程序的完整

流程图,整个系统的流程图由于模块众多,整个列举不易于理解,故此就只采用简单流程图作为示例说明,反而更加的简单明了。

3.4 系统框图

系统除了总体模块以外主要由三大模块来组成,即输入模块,显示模块和计算模块。用系统框图来表示即如图2-3。

17

北京联合大学 毕业设计

总体系统 输入模块 显示模块 计算模块 图3-3 系统框图

系统这三大模块都各自包含什么内容在下文的系统详细设计中会有进一步的说明,此处就暂且略过。

3.5 系统各模块的详细设计

下面就来详细的说明一下系统的各个模块都是如何设计的。 3.5.1 总体模块详细设计

任何Java程序的实现都需要有MIDlet类作为程序的启动类。总体模块需要完成的任务主要就是系统的程序启动类,需要负责整个系统的生命周期。同时在还要在模块中完成菜单栏的所有功能,即退出程序,记忆数据,显示数据,清除记忆数据这四个功能。

总体模块的功能图如图3-4:

图3-4 总体模块功能图

完成程序启动类 完成菜单功能 总体模块 18

北京联合大学 毕业设计

3.5.2 输入模块详细设计

系统如果想完成计算器中的各种功能,首先用户要能进行数据输入,由于是在触屏手机上开发计算器程序,所以要求输入可以直接使用触屏进行,所以在设计的时候就要充分的考虑要这一点。正是由于考虑到这个特殊的地方,所以在进行模块设计中,选择编写输入模块类的时候会特意选取使用了可以支持触屏输入的特殊增强型图形用户界面类CustomItem。

输入模块主要的任务是描述计算器键盘以及实现键盘的监听,即当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法,本模块还需要为系统提供了一个较为直观的键盘图形用户界面。

输入模块的功能图如图3-5:

图3-5 输入模块功能图

3.5.3 显示模块详细设计

作为手机计算器系统,显示部分也是必不可少的一部分。没有显示部分就没有办法显示用户输入的数字是否正确,甚至不能显示计算出的结果,由此可见显示模块即包括输入的部分也包括输出的部分。由于考虑到Java开发中低级界面和高级界面可能产生不兼容等等问题,所以在对显示模块进行设计的时候也选用了同样的增强型图形用户界面类CustomItem。

显示模块主要要完成的任务是描述计算器的显示区,该区域用于显示用户输入的

19

输入模块 支持触屏 描述计算器键盘 实现按键监听 定义键盘按键和画法 设置按键监听 设置监听调用方法 北京联合大学 毕业设计

数据以及最终的计算结果和一些其他信息。同时本模块还将提供调用和设置显示的具体方法。

显示模块的功能图如图3-6: 显示区的相关设置 显示模块 调用显示区数据方法 设置显示区数据方法 图3-6 显示模块功能图

3.5.4 计算模块详细设计

系统要完成整个的计算器的计算功能,那么计算模块就是整个系统的重点模块。没有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。所以计算模块的设计也是本次系统设计中的重点。

系统想要能在屏幕上显示出计算器的样子要有整体的布局,在本模块中要完成布局的具体设计,使用户能够看到整个计算器的画面。同时系统想完成计算功能必须要处理用户的输入,当输入模块的监听传到计算模块中时,计算模块就要根据相应的方法进行进一步的处理。这部分主要是对输入进行的逻辑判断,基本会通过if else来实现逻辑判断。

计算模块的功能图如图3-7:

20

北京联合大学 毕业设计

5 系统测试

5.1 关于数据输入的测试

计算器要想能够进行计算功能,那么对于监听用户数据的正确与否就变得至关重要了。那么下面我们来测试一下该系统能否正确的响应用户的输入数据。

首先来测试一下普通数据的输入。下面我们以15为例,测试一下计算器能否正确响应用户的输入。

首先运行该程序,得到如图5-1的画面。

图5-1 数据输入测试1

其次我们点击屏幕中的数字1这个按键,屏幕变化如图5-2:

图5-2 数据输入测试2

31

北京联合大学 毕业设计

从上面的画面来看,系统监听成功的读取了用户关于1这个按键的输入,那么下面我们来点击5这个按键,看看系统能否正确的辨识多位数的输入。点击5的结果如图5-3:

图5-3 数据输入测试3

以上结果显示表示,系统能够正确的读取用户输入的多位数。普通的数据能够读取以后,我们再来测试一下系统是否能够在屏幕上显示小数。下面以91.3为例,进行测试。由于前面已经测试过关于多位数的输入,此处就不再累述了,故此,我们直接来测试当用户输入完91以后输入“.”的情况,当输入“.”以后屏幕上的显示如图5-4:

图5-4 数据输入测试4

32

北京联合大学 毕业设计

下面我们再来输入小数点后面的数值,看看系统时候能够正常的响应输入。输入以后的结果如图5-5:

图5-5 数据输入测试5

有此可见,系统成功的响应了用户关于小数的输入。那么下面我们再来测试一下系统是否能够正确的响应用户关于负值的输入。以-17为例,用户先输入17,会得到图5-6的结果:

图5-6 数据输入测试6

33

北京联合大学 毕业设计

下面我们来点击屏幕中的“±”这个按键,这个键可以进行正负转换,下面是点击按键结束以后屏幕上的显示如图5-7:

图5-7 数据输入测试7

以上即是对于数据输入的测试,从显示方面来看,系统可以正确的响应用户关于数值的输入。但是系统是否能够正确的读取数据,并且计算出结果呢?这就需要我们进一步的测试来证实了。

5.2 关于简单运算功能的测试

下面我们先来进行简单运算的测试,即加减乘除的测试。首先我们来测试加法。 5.2.1 加法

上面已经测试了系统能否正确的响应输入,并且显示,下面我们就以15+2=17为例来验证一下系统是否能够正确的计算数值。

用户输入15以后,系统显示如图5-8中的画面:

34

北京联合大学 毕业设计

图5-8 加法测试1

下一步是输入“+”,输入以后显示变为图5-9所示:

图5-9 加法测试2

然后用户输入第二个数据,即2。而此时的画面则变为显示2这个输入数。如图5-10。

35

北京联合大学 毕业设计

图5-10 加法测试3

用户的数据已经都输入完毕了,下面我们就来对计算结果进行检测,看看系统是否能完成用户的计算要求,图5-11即是按下“=”后的显示。

图5-11 加法测试4

从以上测试可以看出,系统可以正确响应出用户的输入,同时正确运用加法功能对用户的输入进行计算,这说明了系统中的加法功能成功的实现了。那么下面我们来继续测试别的运算。

36

北京联合大学 毕业设计

5.2.2 减法

减法运算的测试方法同上,首先是输入被减数。下面以15-2=13为例,进行测试。输入被减数以后的显示如图5-12。

图5-12 减法测试1

下面输入运算符号“-”,输入完符号以后,屏幕变为图5-13所示:

图5-13 减法测试2

然后我们输入的应该是减数了,即数字2。完成后屏幕上显示减数2,如图5-14

37

北京联合大学 毕业设计

所示:

图5-14 减法测试3

以上数据数据完成后进行运算测试,即按下“=”查看结果。所得的结果为图5-15:

图5-15 减法测试4

以上运算结果正确,说明了系统正确的响应了用户的操作,计算器中的减法功能能够正常的进行运算,并且可以得出正确的结果。下面我们来继续测试计算器中的乘法功能。

38

北京联合大学 毕业设计

5.2.3 乘法

乘法即两个乘数相乘,得出最后的积。那么在系统中的乘法功能是否能够入预期的一样得出正确的答案呢,下面我们就以15×2=30为例,进行一下测试。首先我们需要输入第一个乘数15,输入完成后,屏幕会变成以下截图(图5-16)所示的样子。

图5-16 乘法测试1

下面输入代表乘法运算的乘法符号“×”,输入完成后,屏幕如图5-17:

图5-17 乘法测试2

39

北京联合大学 毕业设计

按照式子输入第二个乘数,即数字2,屏幕显示第二个乘数状况如图5-18:

图5-18 乘法测试3

两个乘数以及运算方式都输入完成后,即可以按“=”来测试计算器的乘法功能了,测试结果如图5-19:

图5-19乘法测试4

计算器得出了正确的结果,这说明了计算器的乘法功能确实实现了,系统可以正确的进行乘法运算。

40

北京联合大学 毕业设计

图5-29 除法测试10

以上可以看出,负数作为被除数也是正常运行的,最后我们来测试一下以0为被除数的情况,测试步骤还是与前面两次类似,即先输入0作为被除数,输入除号以后再输入0作为除数,最后等于输出结果,输出的结果如图5-30所示:

图5-30 除法测试11

至此为止关于除法的测试就基本结束了。系统也能成功的完成除法的功能。 加减乘除的简单计算功能已经测试完毕了。下面我们来继续测试系统中的其他功能。

46

北京联合大学 毕业设计

5.3 关于计算器其他高级计算功能的测试

计算器的功能当然不会只有加减乘除的功能,还包括一些其他高级的计算功能,比如三角函数值得计算,比如绝对值的计算,比如平方的计算,开方的计算等等。下面我们主要是测试这些高级计算功能。 5.3.1 平方

首先来测试一下高级计算中的平方功能。我们就以15的平方为例来进行计算器计算是否正确的测试,正确的情况如下152=225。

我们首先在计算器里输入15这个数据。屏幕显示如图5-31:

图5-31 平方测试1

然后我们来点击X×X这个按键来进行平方的运算,点击完按键以后的屏幕上的变化如图5-32:

47

北京联合大学 毕业设计

图5-32 平方测试2

然后点击“=”,使结果在显示区显示。点击完后显示如图5-33:

图5-33 平方测试3

结果正确,说明了计算器中的平方功能也能正常的运行,符合设计需求,能够满足用户的使用。 5.3.2 开平方

有了平方的计算,当然就不能没有开平方的功能。虽然求一个数的平方根的运算只是乘方的逆运算,但是开平方的功能就比平方功能复杂的多,平方根不但会有无理

48

北京联合大学 毕业设计

数,甚至还会有虚数的情况。关于结果为无理数的情况,由于计算器的计算精度有限,无限不循环小数为结果的将进行四舍五入。另,由于虚数的特殊情况,于是默认结果为虚数的计算结果为NaN(Not a Number )。

下面我们就来先测试一下结果为整数的情况。以225=15为例,用户先输入整数225,屏幕响应如图5-34:

图5-34 开平方测试1

用户继续点击“√”来进行运算,点击以后效果如图5-35:

图5-35 开平方测试2

最后点击“=”来显示计算结果。结果如图5-36:

49

北京联合大学 毕业设计

图5-36 开平方测试3

以上即是平方根为整数情况的计算结果,计算器正确的计算出了结果,关于平方根为整数的情况可以说是准确无误的实现了。下面我们继续来测试一下上文中所提到的那些特殊情况。

先以结果为无理数的情况开始,以√2为例,这是一个很典型的无理数,我们就以√2作为测试选择。

步骤一如计算平方根为整数的情况,用户要先输入数字2,然后点击“√”和“=”来进行计算,由于和上步有很多相似之处,就不按步骤截图展示了,主要看计算结果的情况,所以我们在此就只截取结果的情况,计算结果如图5-37:

图5-37 开平方测试4

50

本文来源:https://www.bwwdw.com/article/azd5.html

Top