1、实实训训报报告告实训项目名称 基于 Android 计算器的开发与测试二 级 学 院信息工程学院专 业 班 级 11 级姓名学号日期 2014-11-19项目名称地点教 13 603在本报告中,我们主要介绍了国内目前手机系统和软件的现状和发展,针对这方面我们设计了基于 Android 计算器。报告内容大致分为三个部分。第一部分首先介绍了需求分析,其中介绍了计算器最基本的功能。之后还有一些按键的设置以及计算器的基本功能。基于安卓计算器的开发与测试报第二部分我们介绍了关于计算器的总体设计和详细设计其中我们用了两个流程图来表示,分别是程序设计流程图和软件设计流程图。然后还包含了计算器模块的设计。第三
2、部分为计算器的测试部分,其中我们对计算器进行了多方的测试。此外还有测试用例图。告内容教师评语成绩:教师签名:摘要Android 是当今最重要的手机开发平台之一,它是建立在 Java 基础之上的,能够迅速建立手机软件的解决方案。Android 的功能十分强大,成为当今软件行业的一股新兴力量。Android 基于 Linux 平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5 个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的,应用程序可以轻松的嵌入网络、应用程序可以并行运行。而简单计算器又是手机上必备的小程序,所以此次创新实践很有意义。并且具有很强的使用性。关键字关键字:计算
3、器计算器,AndroidAndroid,移动设备,移动设备目录目录1 绪论.51.1 研究背景.52 游戏系统开发平台.63 系统分析与设计.73.1 可行性研究.73.2 系统的需求分析.73.3 系统的优势.83.4 系统的流程.84.模板设计与实现.95 测试用列和结果.125.1 测试用列.125.2 测试用列展示图.126 小结.15参考文献.16附录:.171 1 绪论绪论1.11.1研究背景研究背景(1)计算器背景目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。
4、手机上的软件也随着手机的发展变得丰富起来了,时至今日已经出现了很多专门制作手机软件的公司,虽然制作的多是游戏软件,但是一些辅助性的工具软件也有了很多.我们在此次系统中所做的工作主要是设计整个系统以及利用编程语言实现整个系统,使系统能够正确的运行计算功能。(2)Android 系统简介Android 系统构架简介:Android 是一个基于 LinuxV2.6 内核的交互性操作环境,同时它也是一个分层系统,Android 系统架构显示如下图 1.1。图图 1.11.1 系统架构图系统架构图应用层由所有的 Android 应用程序组成。其中包括电子邮件客户端,SMS程序,地图,浏览器,联系人及其他
5、。所有的应用程序都是用 Java 编程语言编写的。1.Activity顾名思义,Activity 就是活动。应用程序必须至少包含一个 Activity。Activity 提供了一个虚拟的用户接口,每一个Activity 都有一个默认的窗口可以用来显示用户界面,一般情况下,它是全屏的窗口。例如,影音播放软件的每个用户界面就是 Activity。2.ServiceService 与 Activity 的主要区别在于,Service 是在后台活动的,它没有用户界面。典型的应用场景是,用户选择了一个播放列表开始播放后,离开了该用户界面(Activity),如果仍然希望歌曲不会暂停,就可以用 Servi
6、ce去调用播放器,而不是在 Activity 中调用播放器。3.Intent在 Android 中,每一个行为都可以抽象为一个 Intent。可以简单地把 Intent 理解为一个包含了数据的消息。Intent 可以用于启动一个Act-ivity 或者 Service,可以用于进程间的通信。事实上,应用程序的启动也是通过 Intent 实现的。4.Content providers Android平台内置了一套 SQLite 数据储存机制,并包含一系列管理 SQLite Database 的相关方法。在应用程序中,可以通过 Contentprov-iders 访问数据库。每个 Content
7、provider 都定义了一系列的方法用于访问它对应的数据库。应用程序在新建数据库时也可以定义相应的 Con-tent provider 用于向其他应用程序共享数据。一般情况下,应用程序不直接调用 Content provider定义的函数,而是通过 ContentResolver 间接调用。2 2游戏系统开发平台游戏系统开发平台采用 Eclipse 开发工具,在 Windows 7 下进行,基于 Android 4.2.2 操作系统,使用的语言是 Java 语言。环境搭建:1)2)3)4)JDK 安装Eclipse 安装Android SDK 安装ADT 安装创建 AVDJDK(Java D
8、evelopment Kit)是 Sun Microsystems 针对 Java 开发员的产品。自从 Java 诞生以来,JDK 已经成为最广泛的 Java SDK。JDK 是整个 Java 的核心内容,包括了 Java 运行环境、Java 工具和 Java 基础类库三部分。从 Sun的 JDK1.5 开始,提供了一些非常使用的功能,其版本也不断更新,运行效率得到了非常大的提高。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组建构建开发环境。Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java
9、Development Kit,JDK)。Android SDK 即软件开发工具包(software development kit)。被软件开发工程师用于为特定的软件包、软件架构、硬件平台、操作系统等建立应用软件工具的集合。因此 Android SDK 是 Android 专属的开发工具包。其授权协议为Apache,开发语言为 Java、需要 Android 操作系统的支持。23 3 系统分析与设计系统分析与设计3.13.1可行性研究可行性研究可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必
10、要的,也是很重要的,经过最初的设计目标和进行的实时调查得出以下四点的可行性分析:(1)技术可行性:Eclipse+Android ADT 的技术已经较为成熟,通过 SUN公司(现被 ORCEL 公司收购)推出的跨平台、动态的 JAVA 语言进行开发。(2)运行可行性:该系统需要 Android 虚拟机环境,Eclipse 中安装 ADT,DDMS 等 Google Android 相关插件。其运行环境已经相当稳定,它功能丰富,包括了完备的Android程序的编码、调试、测试和发布功能,其中支持所有Android应用开发相关技术,包括 SQLite,Skia,3D 制作,Android XML,
11、能够很好的发布 Android 的应用程序 APK 包。(3)法律可行性:因为是自主开发设计,所以不会构成侵权,在法律上是可行的。通过以上的可行性分析,将采用 Eclipse+Android ADT+DDMS 技术,运用JAVA 语言进行系统的开发。3.23.2系统的需求分析系统的需求分析根据分析需求,这个系统必须实现以下的功能:(1)实现简单的数字计算功能。作为计算器,其核心就是加减乘除。(2)能够在手机里面以良好的界面。简单计算器能够给予用户良好的人机互动界面。3.33.3系统的优势系统的优势Android 是以 Linux 为核心的手机操作平台,作为一款开放式的操作系统,随着 Andro
12、id 的快速发展,如今已允许开发者使用多种编程语言来开发 Android应用程序,而不再是以前只能使用 Java 开发 Android 应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。3.4 系统的流程系统的流程本程序的流程是一个开机画面,开机画面之后就是计算机的主页面了所有这个简单程序的流程图如图 3.1 所示。图图 3.1 3.1 流程图流程图结束加减乘除clear判断选项选择功能键输入数值显示计算机界面开始4.4.模板设计与实现模板设计与实现4.14.1 计算模块详细设计计算模块详细设计系统要完成整个的计算器的计算功能,那么计算模块就是整个系统的重点模块。没
13、有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。所以计算模块的设计也是本次系统设计中的重点。系统想要能在屏幕上显示出计算器的样子要有整体的布局,在本模块中要完成布局的具体设计,使用户能够看到整个计算器的画面。同时系统想完成计算功能必须要处理用户的输入,当输入模块的监听传到计算模块中时,计算模块就要根据相应的方法进行进一步的处理。这部分主要是对输入进行的逻辑判断,基本会通过 if else 来实现逻辑判断。4.24.2 用户界面设计用户界面设计界面设计应该尽量简洁而美观,应该具有良好的交互性。当然,我们每个人可以根据自己的喜好来进行设计,根据我个人的喜好,我最终设计出来的计算器界面如图
14、 4.1 所示。图图 4.14.1 界面图界面图部分代码:4.34.3 计算模块设计的实现计算模块设计的实现计算模块则主要描述了计算器的整体,实现了计算器的界面,定义了用户单击的处理办法,通过定义的处理办法来完成用户的操作命令,实现用户的计算要求,这些计算要求包括了数值的输入,小数点的输入,正负号的输入,记忆相关功能的完成,加、减、乘、除等各种计算功能的完成,运算符的替换,初始化系统等等。部分代码:private class CommandAction implements OnClickListener Overridepublic void onClick(View view)Button
15、 btn=(Button)view;String inputCommand=(String)btn.getText();if(firstFlag)/首次输入-的情况if(inputCommand.equals(-)editText.setText(-);/显示区域的内容设置为-firstFlag=false;/改变首次输入的标记 else if(!clearFlag)/如果 flag=false 不需要清空显示区的值,就调用方法计算jsp(Double.parseDouble(editText.getText().toString();/保存显示区域的值,并计算/保存你点击的运算符lastCo
16、mmand=inputCommand;clearFlag=true;/因为我这里已经输入过运算符,加、减、乘、除等各种计算功能的实现:private void jsp(double x)if(lastCommand.equals(+)result+=x;else if(lastCommand.equals(-)result-=x;else if(lastCommand.equals(*)result*=x;else if(lastCommand.equals(/)result/=x;else if(lastCommand.equals(=)result=x;editText.setText(+
17、result);5 5 测试用列和结果测试用列和结果5.15.1 测试用列测试用列通过以下的测试用例进行对游戏各功能模块的测试并加以修改,如表5.1所示。测试编号123456测试输入1+21*21/21/01-(-3)-2期望结果3.02.00.5无结果4.0程序错误表表 5.15.1 测试用例表测试用例表实际结果3.02.00.5错误-2.0程序错误5.25.2 测试用列展示图测试用列展示图1.测试 1+2 时的状态如图 5.2 所示:图图 5.25.2 测试结果图测试结果图2.测试 1*2 时如图 5.3 所示:图图 5.35.3 测试结果图测试结果图3.测试 1/2 时如图 5.4 所示
18、:图图 5.45.4 测试结果图测试结果图4.测试 1/0 时如图 5.5 所示:图图 5.55.5 测试结果图测试结果图5.测试 1-(-3)如图 5.6 所示:图图 5.65.6 测试结果图测试结果图6.测试输入-2 时如图 5.7 所示:图图 5.75.7 测试结果图测试结果图6 6 小结小结这次项目 android 计算器项目设计是在 eclipse 平台下设计,到现在为止,该系统的功能基本符合了普通计算器的要求,整个系统界面简单明了,使用起来十分方便,具有普通计算器的基本功能,同时拓展了一些普通计算器上没有的部分科学计算功能。在整个开发过程中,从需求分析到总体架构的构思,到最后代码的
19、编写我投入了大量的时间和精力,对系统中的每个功能都进行了反复的调试,修改。因为这是我是第一次系统性的进行软件的开发,不论是在知识层面、开发平台的使用层面还是经验方面都有着很大的欠缺和不足,因此本软件难免会有一些功能不完善、界面不美观等一些不尽如人意的地方,但是再短短一个星期的时间内,我已经进行了很大的努力。通过这个 android 计算器项目设计,我不经巩固了我们在书本上学到和平时老师传授的知识,而且还学到了许多书本上学不到的知识,并运用了网络这个平台查询一些不明白的知识点。指导老师在我软件代码编写和后期软件调试期间,给我很大的帮助。要谢谢各位帮过我的老师和同学。这次的实验让我对我的学过的知识
20、有了深一步的了解。参考文献1 刘敏.移动终端的 Android 移植与应用程序设计D.西安电子科技大学 20112 王蕾.哈尔滨招行 Android 手机银行汇率换算模块的设计与实现D.吉林大学 20113 施金兰.基于 Android 平台的网络共享研究与实现D.华东师范大学 20114 赵建勋.基于 Android 平台的移动位置服务的开发与实现J.现代商贸工业.2010(20)5 李林涛,朱珊虹.基于 Android 系统的手机游戏黑白棋的设计与实现J.新乡学院学报(自然科学版).2011(03)6 丛秋波.用于 Android 手机操作系统的视频引擎J.电子设计技术.2010(07)7
21、 王丰,付明栋,冯海亮,施玉海.智能终端图形用户界面设计与实现J.广播电视信息.2011(08)8 温敏,艾丽蓉,王志国.Android 智能手机系统中文件实时监控的研究与实现J.科学技术与工程.2009(07)9 刘牛.基于 Android 平台的数字电视机顶盒模拟器的研究与开发D.兰州大学 201210 王康.Android RIL研究及其在无线通讯模块上的实现D.太原科技大学 2012附录:附录:package com.example;import android.app.Activity;import android.os.Bundle;import android.view.View
22、;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity private Button btnNum=new Button11;/数值按钮private Button btnCommand=new Button5;/符号按钮private EditText editText=null;/显示区域private Button btnClear=null;/clear按
23、钮private String lastCommand;/用于保存运算符private boolean clearFlag;/用于判断是否清空显示区域的值,true 需要,false 不需要private boolean firstFlag;/用于判断是否是首次输入,true 首次,false 不是首次private double result;/计算结果public MainActivity()/初始化各项值result=0;/x 的值firstFlag=true;/是首次运算clearFlag=false;/不需要清空lastCommand=;/运算符Overridepublic void
24、 onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/获取运算符btnCommand0=(Button)findViewById(R.id.add);btnCommand1=(Button)findViewById(R.id.subtract);btnCommand2=(Button)findViewById(R.id.multiply);btnCommand3=(Button)findViewById(R.id.divide)
25、;btnCommand4=(Button)findViewById(R.id.equal);/获取数字btnNum0=(Button)findViewById(R.id.num0);btnNum1=(Button)findViewById(R.id.num1);btnNum2=(Button)findViewById(R.id.num2);btnNum3=(Button)findViewById(R.id.num3);btnNum4=(Button)findViewById(R.id.num4);btnNum5=(Button)findViewById(R.id.num5);btnNum6=(
26、Button)findViewById(R.id.num6);btnNum7=(Button)findViewById(R.id.num7);btnNum8=(Button)findViewById(R.id.num8);btnNum9=(Button)findViewById(R.id.num9);btnNum10=(Button)findViewById(R.id.point);/初始化显示结果区域editText=(EditText)findViewById(R.id.result);editText.setText(0.0);/实例化监听器对象NumberAction na=new N
27、umberAction();CommandAction ca=new CommandAction();for(Button bc:btnCommand)bc.setOnClickListener(ca);for(Button bc:btnNum)bc.setOnClickListener(na);/clear 按钮的动作btnClear=(Button)findViewById(R.id.clear);btnClear.setOnClickListener(new OnClickListener()Overridepublic void onClick(View view)editText.s
28、etText(0.0);/初始化各项值result=0;/x 的值firstFlag=true;/是首次运算clearFlag=false;/不需要清空lastCommand=;/运算符);/数字按钮监听器private class NumberAction implements OnClickListener Overridepublic void onClick(View view)Button btn=(Button)view;String input=btn.getText().toString();if(firstFlag)/首次输入/一上就.,就什么也不做if(input.equa
29、ls(.)return;/如果是0.0的话,就清空if(editText.getText().toString().equals(0.0)editText.setText();firstFlag=false;/改变是否首次输入的标记值 else String editTextStr=editText.getText().toString();/判断显示区域的值里面是否已经有.,如果有,输入的又是.,就什么都不做if(editTextStr.indexOf(.)!=-1&input.equals(.)return;/判断显示区域的值里面只有-,输入的又是.,就什么都不做if(editTextSt
30、r.equals(-)&input.equals(.)return;/判断显示区域的值如果是0,输入的不是.,就什么也不做if(editTextStr.equals(0)&!input.equals(.)return;/如果我点击了运算符以后,再输入数字的话,就要清空显示区域的值if(clearFlag)editText.setText();clearFlag=false;/还原初始值,不需要清空editText.setText(editText.getText().toString()+input);/设置显示区域的值/符号按钮监听器private class CommandAction i
31、mplements OnClickListener Overridepublic void onClick(View view)Button btn=(Button)view;String inputCommand=(String)btn.getText();if(firstFlag)/首次输入-的情况if(inputCommand.equals(-)editText.setText(-);/显示区域的内容设置为-firstFlag=false;/改变首次输入的标记 else if(!clearFlag)/如果 flag=false 不需要清空显示区的值,就调用方法计算jsp(Double.p
32、arseDouble(editText.getText().toString();/保存显示区域的值,并计算/保存你点击的运算符lastCommand=inputCommand;clearFlag=true;/因为我这里已经输入过运算符,/计算用的方法private void jsp(double x)if(lastCommand.equals(+)result+=x;else if(lastCommand.equals(-)result-=x;else if(lastCommand.equals(*)result*=x;else if(lastCommand.equals(/)result/=x;else if(lastCommand.equals(=)result=x;editText.setText(+result);