android开发简易计算器的设计报告.docx

上传人:b****6 文档编号:3278126 上传时间:2022-11-21 格式:DOCX 页数:22 大小:138.38KB
下载 相关 举报
android开发简易计算器的设计报告.docx_第1页
第1页 / 共22页
android开发简易计算器的设计报告.docx_第2页
第2页 / 共22页
android开发简易计算器的设计报告.docx_第3页
第3页 / 共22页
android开发简易计算器的设计报告.docx_第4页
第4页 / 共22页
android开发简易计算器的设计报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

android开发简易计算器的设计报告.docx

《android开发简易计算器的设计报告.docx》由会员分享,可在线阅读,更多相关《android开发简易计算器的设计报告.docx(22页珍藏版)》请在冰豆网上搜索。

android开发简易计算器的设计报告.docx

android开发简易计算器的设计报告

简易计算机的设计

摘要:

Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。

Android的功能十分强大,成为当今软件行业的一股新兴力量。

Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:

开放性、应用程序无界限、应用程序是在平等条件下创建的、应用程序可以轻松的嵌入网络、应用程序可以并行运行。

一、实训目的

1、了解Android系统,学会Android开发环境的搭建。

2、了解Eclipse,学会用Eclipse和Java开发一个Android程序。

3、进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,能够熟练的应用面向对象的思想和设计方法解决实际问题的能力。

4、巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。

二、实训任务

1、Activity的相关知识

简单理解Activity代表一个用户所能看到的屏幕,Activity主要是处理一个应用的整体性工作。

Activity是最基本的Android应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。

每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。

大多数的应用是由多个屏幕显示组成,因而要用到多个Activity。

(1)Activity的相关方法及相关函数:

voidonCreate(Bundle)首次启动时调用,接受参数:

NullorsavedInstanceState(保存的以前某些状态信息);

voidonStart()说明了将要显示给用户的活动;voidonRestart()将处于停止状态的活动重新显示给用户;voidonResume()用户可以开始与活动进行交互时调用。

如动画播放和音乐播放;voidonPause()活动将要进入后台运行时调用。

(此时前台启动了另一个活动);voidonStop()不需要某个活动了,就调用;voidonDestroy()销毁活动。

(2)多个Activity之间的跳转:

通过Intent类实现屏幕之间的跳转(包括没有参数关系和需要传递参数两种情况)。

(3)两个Activity之间进行数据交换:

startActivity()只有Intent一个参数;publicvoidstartSubActivity(Intentintent,intrequestCode)(requestCode:

用来标识某一个调用,一般定义一个常量)。

传过去:

函数原型为:

publicIntentsetData(ContentURIdata)然后,参数带到新的Activity后,同样用Activity.getIntent()函数可得到当前过来的Intent对象,然后用getData()就取到参数了。

传回来:

函数原型为:

publicfinalvoidsetResult(intresultCode,Stringdata)。

2、Intent的相关知识

Intent是描述应用想要做什么。

Android使用了Intent这个特殊类,实现在屏幕与屏幕之间移动。

Intent数据结构两个最重要的部分是动作和动作对应的数据。

Intent类绑定一次操作,它负责携带这次操作所需要的数据以及操作的类型等。

3、Layout

用于用户界面设计。

包含AbsoluteLayout,FrameLayout,GridView,LinearLayout,ListLayout,RadioGroup,TableLayout等等。

(1)线性布局LinearLayout:

垂直:

android:

orientation="vertical“;水平:

android:

orientation="horizontal"

(2)相对布局RelativeLayout:

让子元素指定它们相对于其他元素的位置(通过ID来指定)或相对于父布局对象。

在RelativeLayout布局里的控件包含丰富的排列属性:

Layoutabove:

控件在指定控件的上方;Layoutbelow:

控件在指定控件的下方;Layouttoleftof……

根据要求,系统实现以下功能:

计算器界面友好,具有基本的加、减、乘、除功能,支持触屏手机,整个程序基于android技术开发。

三、设计流程

1、系统的软件结构图

计算器

其他运算

基本加减乘除运算

清除运算

正负运算

*2运算

开方

乘法

除法

减法

加法

2、功能的操作流程

得出程序结果后,输入数据,选择运算符号,再输入数据,选择等号,即可得到结果。

3、计算器模块

整个项目工程的目录文件

Src文件存放的是文本中开发的所有java文件,java文件时整个项目的代码,gen下面的R.java为Eclipse自动生成的系统文件。

Res是存放整个系统所有到的所有资源。

Layout文件下main.xml文件的配置生成内容。

4、程序源代码

1、主文件JisuanqiActivity.java

Src/jisuqi.a/JisuanqiActivity.java文件时此项目的主要文件,它调用各个公用文件来实现具体的功能。

文件JisuanqiActivity.java的具体代码如下:

packagejisuanqi.a;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.EditText;

publicclassJisuanqiActivityextendsActivity{

/**Calledwhentheactivityisfirstcreated.*/

privateEditTextoutput=null;

privateEditTextinput=null;

privateButtonbtn0=null;

privateButtonbtn1=null;

privateButtonbtn2=null;

privateButtonbtn3=null;

privateButtonbtn4=null;

privateButtonbtn5=null;

privateButtonbtn6=null;

privateButtonbtn7=null;

privateButtonbtn8=null;

privateButtonbtn9=null;

privateButtonbtnadd=null;

privateButtonbtnsubtract=null;

privateButtonbtnmultiply=null;

privateButtonbtndivide=null;

privateButtonbtnclear=null;

privateButtonbtnresult=null;

privateButtonbtndot=null;

privateButtonbtnzhengshu=null;

privateButtonbtnkaifang=null;

privateButtonbtnpingfang=null;

privateStringstr="";//保存数字

privateStringstrold="";//原数字

privatecharact='';//记录“加减乘除等于”符号

privateintcount=0;//判断要计算的次数,如果超过一个符号,先算出来一部分

privateDoubleresult=0.0;//计算的输出结果

privateBooleanerrBoolean=false;//有错误的时候为true,无错为false

privateBooleanflagBoolean=false;//一个标志,如果为true,可以响应运算消息,如果为false,不响应运算消息,只有前面是数字才可以响应运算消息

privateBooleanflagDot=false;//小数点标志位

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

output=(EditText)findViewById(R.id.output);

input=(EditText)findViewById(R.id.input);

btn0=(Button)findViewById(R.id.zero);

btn1=(Button)findViewById(R.id.one);

btn2=(Button)findViewById(R.id.two);

btn3=(Button)findViewById(R.id.three);

btn4=(Button)findViewById(R.id.four);

btn5=(Button)findViewById(R.id.five);

btn6=(Button)findViewById(R.id.six);

btn7=(Button)findViewById(R.id.seven);

btn8=(Button)findViewById(R.id.eight);

btn9=(Button)findViewById(R.id.nine);

btnadd=(Button)findViewById(R.id.add);

btnsubtract=(Button)findViewById(R.id.subtract);

btnmultiply=(Button)findViewById(R.id.multiply);

btndivide=(Button)findViewById(R.id.divide);

btnclear=(Button)findViewById(R.id.clear);

btnresult=(Button)findViewById(R.id.result);

btndot=(Button)findViewById(R.id.dot);

btnzhengshu=(Button)findViewById(R.id.zhengfu);

btnkaifang=(Button)findViewById(R.id.kaifang);

btnpingfang=(Button)findViewById(R.id.pingfang);

//设置按钮侦听事件

btn0.setOnClickListener(listener);

btn1.setOnClickListener(listener);

btn2.setOnClickListener(listener);

btn3.setOnClickListener(listener);

btn4.setOnClickListener(listener);

btn5.setOnClickListener(listener);

btn6.setOnClickListener(listener);

btn7.setOnClickListener(listener);

btn8.setOnClickListener(listener);

btn9.setOnClickListener(listener);

//执行运算

btnadd.setOnClickListener(listener);

btnsubtract.setOnClickListener(listener);

btnmultiply.setOnClickListener(listener);

btndivide.setOnClickListener(listener);

btnclear.setOnClickListener(listener);

btnresult.setOnClickListener(listener);

btndot.setOnClickListener(listener);

btnzhengshu.setOnClickListener(listener);

btnkaifang.setOnClickListener(listener);

btnpingfang.setOnClickListener(listener);

}

privateOnClickListenerlistener=newOnClickListener()

{

publicvoidonClick(Viewv)

{

//TODOAuto-generatedmethodstub

switch(v.getId())

{

//输入数字

caseR.id.zero:

num(0);break;

caseR.id.one:

num

(1);break;

caseR.id.two:

num

(2);break;

caseR.id.three:

num(3);break;

caseR.id.four:

num(4);break;

caseR.id.five:

num(5);break;

caseR.id.six:

num(6);break;

caseR.id.seven:

num(7);break;

caseR.id.eight:

num(8);break;

caseR.id.nine:

num(9);break;

caseR.id.dot:

dot();break;

//执行运算

caseR.id.zhengfu:

zhengfu();break;

caseR.id.kaifang:

kaifang();break;

caseR.id.add:

add();break;

caseR.id.subtract:

sub();break;

caseR.id.multiply:

multiply();break;

caseR.id.divide:

divide();break;

caseR.id.clear:

clear();break;

//计算结果

caseR.id.result:

result();

if(!

errBoolean&&flagBoolean){

output.setText(String.valueOf(result));

}

default:

break;

}

if(act=='k')

{

input.setText(strold);

}

else{

input.setText(strold+act+str);

}

output.setText(String.valueOf(result));

}

privatevoidkaifang()

{

//TODOAuto-generatedmethodstub

if(flagBoolean){

act='k';

strold=str;

result();

}

}

privatevoidzhengfu()

{

//TODOAuto-generatedmethodstub

if(strold==""){

result=Double.valueOf(str);

}

else{

result=Double.valueOf(strold);

}

result=result*(-1);

strold=String.valueOf(result);

output.setText(String.valueOf(result));

}

privatevoiddot()

{

//TODOAuto-generatedmethodstub

if(!

flagDot){

str=str+".";

flagBoolean=false;

flagDot=true;

}

}

privatevoidclear(){

//TODOAuto-generatedmethodstub

str=strold="";

count=0;

act='';

result=0.0;

flagBoolean=false;

flagDot=false;

input.setText(strold+act+str);

output.setText("");

}

privatevoiddivide(){

//TODOAuto-generatedmethodstub

if(flagBoolean){

check();

act='/';

flagBoolean=false;

}

}

privatevoidmultiply(){

//TODOAuto-generatedmethodstub

if(flagBoolean){

check();

act='*';

flagBoolean=false;

}

}

privatevoidsub(){

//TODOAuto-generatedmethodstub

if(flagBoolean){

check();

act='-';

flagBoolean=false;

}

}

privatevoidadd(){

//TODOAuto-generatedmethodstub

if(flagBoolean){

check();

act='+';

flagBoolean=false;

}

}

privatevoidcheck(){

//TODOAuto-generatedmethodstub

if(count>=1){

result();

str=String.valueOf(result);

}

strold=str;

str="";

count++;

flagDot=false;

}

//计算输出结果

privatevoidresult(){

//TODOAuto-generatedmethodstub

if(flagBoolean){

Doublea,b;

a=Double.parseDouble(strold);

b=Double.parseDouble(str);

if(b==0&&act=='/'){

clear();

output.setText("除数不能为零!

");

errBoolean=true;

}

if(!

errBoolean){

switch(act){

case'+':

result=a+b;break;

case'-':

result=a-b;break;

case'*':

result=a*b;break;

case'/':

result=a/b;break;

case'k':

result=Math.sqrt(a);break;

default:

break;

}

}

}

}

privatevoidnum(inti){

//TODOAuto-generatedmethodstub

str=str+String.valueOf(i);

flagBoolean=true;

}

};

}

2、布局文件main.xml

布局文件main.xml的具体代码如下所示:

xmlversion="1.0"encoding="utf-8"?

>

android="

android:

layout_width="fill_parent"

android:

layout_height="wrap_content">

android="

android:

layout_width="fill_parent"

android:

layout_height="fill_parent"

android:

orientation="vertical">

android:

id="@+id/input"

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

layout_gravity="center"

android:

editable="false"

android:

hint="@string/shuru"/>

android:

id="@+id/output"

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

layout_gravity="center"

android:

editable="false"

android:

gravity="right"

android:

hint="@s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1