安卓应用程序设计
——简易计算器的实现院(系)名称
专业名称
学生姓名
学生学号
用java编写一个简单的计算器
课程名称
2016年6月日
1.系统需求分析
Android就是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android 的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再就是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。计算器通过算法实行简单的数学计算从而提高了数学计算的效率,实现计算器的界面优化,使界面更加友好,操作更加方便。
基于android的计算器的设计,系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作,即可单机按钮进行操作,即时准确地获得需要的计算的结果,充分降低了数字计算的难度与节约了时间。
2. 系统概要设计
2、1计算器功能概要设计
根据需求,符合用户的实际要求,系统应实现以下功能:计算器界面友好,方便使用,,具有基本的加、减、乘、除功能,能够判断用户输入运算数就是否正确,支持小数运算,具有清除功能。
图2、1系统功能图
整个程序基于Android 技术开发,除总体模块外主要分为输入模块、显示模块以及计算模块这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其她的功能。具体的说,总体模块的作用主要就是生成应用程序的主类,控制应用程序的生命周期。
输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机动作以及用指针事件处理方法处理触屏的单击动作。同时提供了较为直观的键盘图形用户
界面。
显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时负责显示一些其她的信息。
计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除等各种功能,记忆数据的相关功能,清零的功能。
图2、2三大模块 2、2 输入模块设计
系统如果想完成计算器中各种功能,首先用户要能进行数据输入,由于就是在触屏手机上开发计算器程序,所以要求输入可以直接使用触屏进行,所以在设计的时候就要充分的考虑这
总体系统 显示模块 计算模块 输入模块
一点。正就是由于考虑到这个特殊的地方,所以在进行模块设计中,选择编写输入模块类的时候会特意选取使用可以支持触屏输入的特殊增强型图形用户界面类。
输入模块主要的任务就是描述计算器键盘以及实现键盘的监听,即当用户点击按键或者屏幕的时候监听会去调用相应的处理办法,本模块还需要为系统提供一个较为直观的键盘图形用户界面。输入模块的功能图如图
2、3显示模块设计
作为手机计算器系统
,显示部分也就是必不可少的一部分。没有显示部分就没有办法显示用户输入的数字就是否正确,甚至不能显示计算出的结果,由此可见显示模块即包括输入的部分(因个人技术原因不能显示表达式的形式)也包括输出的部分。
显示模块主要完成的任务就是描述计算器的显示区,该区域用于显示用户输入的数据以及最终的计算结果与一些其她信息。同时本模块还将提供调用与设置显示的具体方法
2、4计算模块设计
系统要完成整个的计算器的功能,那么计算模块就就是整个系统的重要模块。没有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。所以计算模块的设计也就是本次系统设计的重点。
系统想要能在屏幕上显示出计算器的样子要有整体的布局。在本模块中要完成布局的具体设计,使用户能够瞧到整个计算器的界面。同时系统想完成 计算功能必须要处理用户的输入,当输入模块的监听传到计算模块中时,计算模块就要根据相应的方法进行进一步的处理。
3、设计与实现部分
3、1应用程序构成
Android应用程序一般就是由Activity、Serviece、Content Provider、Intent、Intent Receiver、Notification六个组件构成。但并非每一个Android应用程序都包含这六个组件。
(1)Activity(活动):应用程序的表示层。Activity就是Android的基本组件。每一个activity 代表一个单独的屏幕。每一个activity都就是继承于Activity的独立类。这个activity类将会显示出几个Views控件组成的用户接口,并对事件作出响应。Android使用了Intent,实现在屏幕与屏幕之间跳转。Activity跳转时只需要调用startActivity(Intent myIntent)方法。然后,系统会在所有安装的应用程序中定义的IntentFilter中查,到最匹配myIntent的Intent对应的activity。新的activity接收到myIntent的通知后,开始启动运行。当startActivity方法被调用将触发解析myIntent的动作,这个机制提供了两个关键的好处:能够重复利用从其她组件中以Intent的形式产生的一个请求与可以在任何时候被一个具有相同IntentFilter的新的startActivity取代。
(2)Service(服务):Android应用程序的后台运行组件。Service没有用户界面的程序。服务组件在后台运行,它们可以更新数据源与可见的Activity,并触发Notification。它们被用来执行一些需要在后台持续的常规处理。例如媒体播放器这个activity会使用Context、 startService()方法,连接到一个service上(如果
这个service还没有运行将启动它)。当连接到一个service之后,我们还可以通过service提供的接口与它进行通讯。
(3)Content Provider(内容提供器):用来管理与分享应用程序数据库。Content Provider就是在应用程序之间共享数据的首选方法。通过配置Content Provider允许其她应用程序访问存储的数据,也可以使用其她应用程序提供的Content Provider来访问它们存储的数据。Android 平台也提供了系统自带的Content Provider,如联系人信息等。
(4)Intent(意向):Activity之间的粘合剂。使用Intent,可以在系统范围内向目标活动或者服务广播消息,说明希望执行某个动作的意图。之后系统就会确定那些最适合执行动作的目标。
(5)Notification(通知):一种用户通知框架。通过允许向用户发送信号,而不会过分吸引她们的注意力或者打断她们当前的活动。它们就是服务或者广播接收器吸引用户注意的首选方法。例如,当设备接收到一个文本消息或者来电的时候,它可以通过闪灯、发出声音、显示图标或则会显示对话框信息的方式提示用户。
(6)Intent Receiver(意向接收器):通过Intent Receiver实现应用能够对一个外部的事件作出响应,Intent Receiver在AndroidManifest、xml中注册,但也可以在代码中使用Context、registerReceiver()进行注册。当一个intent receive被触发时,应用不必对请求调用intent receive,系统会在需要的时候启动您的
应用。各种应用还可以通过使用Context、broadcastIntent()将它们自己的intent receive广播给其她应用程序。
3、2功能的具体实现
(1)计算器布局设计:
分别实用Button按钮操作17个按钮,分别就是+、—、*、/、=、0-9、清除按钮,以及EditTest 的文本域,并通过代码布局调整布局,使布局更加清晰,简洁。布局方式如图所示:
代码实现如下:
<RelativeLayout xmlns:android=""
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="、MainActivity">
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginTop="17dp"
android:ems="10"/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"