android简单计算器课程设计.docx

上传人:b****4 文档编号:3772498 上传时间:2022-11-25 格式:DOCX 页数:23 大小:273.48KB
下载 相关 举报
android简单计算器课程设计.docx_第1页
第1页 / 共23页
android简单计算器课程设计.docx_第2页
第2页 / 共23页
android简单计算器课程设计.docx_第3页
第3页 / 共23页
android简单计算器课程设计.docx_第4页
第4页 / 共23页
android简单计算器课程设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

android简单计算器课程设计.docx

《android简单计算器课程设计.docx》由会员分享,可在线阅读,更多相关《android简单计算器课程设计.docx(23页珍藏版)》请在冰豆网上搜索。

android简单计算器课程设计.docx

android简单计算器课程设计

摘要

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

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

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

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

而简单计算器又是手机上必备的小程序,所以此次创新实践很有意义。

并且具有很强的使用性。

关键字:

AndroidJava基础计算器

 

第1章开发工具与环境

1.1Android平台

1.谷歌与开放手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家技术和无线应用的领军企业组成。

2.Android是一个真正意义上的开放性移动设备综合平台。

通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。

3.所有的Android应用之间是完全平等的。

4.所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。

撇开这个核心引擎,Android的所有其他的东西都是“应用”。

5.Android打破了应用之间的界限,比如开发人员可以把Web上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。

1.2Java开发环境

Java技术包含了一个编程语言及一个平台。

Java编程语言具有很多特性,如面向对象、跨平台、分布式、多线程、解释性等等。

Java编程语言起源于Sun公司的一个叫“Green”的项目,目的是开发嵌入式家用电器的分布式系统,使电气更加智能化。

1996年1月发布了JDK1.1版本,一门新语言自此走向世界。

之后,1998年12月发布了1.2版本,2002年2月发布1.4版本,2004年10月发布1.5版本(5.0),2006年12月发布1.6(6.0)版本,这是目前的最新版本。

Java1.2版本是一个重要的版本,基于该版本,Sun将Java技术分为J2SE、J2ME、J2EE,其中J2SE为创建和运行Java程序提供了最基本的环境,J2ME与J2EE建立在J2SE的基础上,J2ME为嵌入式应用(如运行在手机里的Java程序)提供开发与运行环境,J2EE为分布式的企业应用提供开发与运行环境。

1.3Eclipse

Eclipse的基础是富客户机平台(RichClientPlatform,即RCP)。

RCP包括下列组件:

●核心平台(Eclipse,运行插件)

●标准集束框架(OSGi:

OpenServiceGatewayinitiative)

●可移植构件工具包(SWT:

Eclipse'sStandardWidgetToolkit)

●JFace(文件缓冲,文本处理,文本编辑器)

Eclipse采用的技术是IBM公司开发的SWT,这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件:

不过IBM声称SWT比其他Java窗口组件更有效率。

Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。

Eclipse的设计思想是:

一切皆插件。

Eclipse核心很小,其他所有功能都以插件的形式附加于Eclipse核心之上。

Eclipse基于内核包括:

图形API(SWT/JFace),Java开发环境插件(JDT),插件开发环境(PDE)等。

Eclipse的插件机制是轻型软件组件化架构。

在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。

已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby、Python、telnet和数据库开发。

插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。

1.4Android程序基础—Android应用程序的构成

1.Activity顾名思义,Activity就是活动。

应用程序必须至少包含一个Activity。

Activity提供了一个虚拟的用户接口,每一个Activity都有一个默认的窗口可以用来显示用户界面,一般情况下,它是全屏的窗口。

例如,影音播放软件的每个用户界面就是Activity。

2.ServiceService与Activity的主要区别在于,Service是在后台活动的,它没有用户界面。

典型的应用场景是,用户选择了一个播放列表开始播放后,离开了该用户界面(Activity),如果仍然希望歌曲不会暂停,就可以用Service去调用播放器,而不是在Activity中调用播放器。

3.Intent在Android中,每一个行为都可以抽象为一个Intent。

可以简单地把Intent理解为一个包含了数据的消息。

Intent可以用于启动一个Act-ivity或者Service,可以用于进程间的通信。

事实上,应用程序的启动也是通过Intent实现的。

4.ContentprovidersAndroid平台内置了一套SQLite数据储存机制,并包含一系列管理SQLiteDatabase的相关方法。

在应用程序中,可以通过Contentprov-iders访问数据库。

每个Contentprovider都定义了一系列的方法用于访问它对应的数据库。

应用程序在新建数据库时也可以定义相应的Con-tentprovider用于向其他应用程序共享数据。

一般情况下,应用程序不直接调用Contentprovider定义的函数,而是通过ContentResolver间接调用。

 

第2章系统分析与设计

2.1系统的可行性分析

可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的,经过最初的设计目标和进行的实时调查得出以下四点的可行性分析:

(1)技术可行性:

Eclipse+AndroidADT的技术已经较为成熟,通过SUN公司(现被ORCEL公司收购)推出的跨平台、动态的JAVA语言进行开发。

(2)运行可行性:

该系统需要Android虚拟机环境,Eclipse中安装ADT,DDMS等GoogleAndroid相关插件。

其运行环境已经相当稳定,它功能丰富,包括了完备的Android程序的编码、调试、测试和发布功能,其中支持所有Android应用开发相关技术,包括SQLite,Skia,3D制作,AndroidXML,能够很好的发布Android的应用程序APK包。

(3)法律可行性:

因为是自主开发设计,所以不会构成侵权,在法律上是可行的。

通过以上的可行性分析,将采用Eclipse+AndroidADT+DDMS技术,运用JAVA语言进行系统的开发。

2.2系统的需求分析

根据分析需求,这个系统必须实现以下的功能:

(1)实现简单的数字计算功能。

作为计算器,其核心就是加减乘除。

(2)能够在手机里面以良好的界面。

简单计算器能够给予用户良好的人机互动界面。

2.3系统的优势

Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。

本次课程设计一个简易的计算器。

主要了解Activity的创建和Intent的使用。

Intent不仅可以连接两个Activity。

而且可以传递数据。

下面是整个程序的设计流程。

2.4系统的流程图

本程序的流程是一个开机画面,开机画面之后就是计算机的主页面了所有这个简单程序的流程图如图2.1所示。

 

图2.1程序流程图

第3章系统详细设计

3.1动作Activity

参照程序的流程图,设计五个Activity。

分别为进入页面的Activity,和选择运算方式的Activity。

在这里应该注意的是每当创建一个新的class,就要继承Activity如图3.1所示。

图3.1程序所需的Activity

3.2布局文件XML

相应的,需要在res/layout文件夹中建立3个XML文件来对上述的十个Activity进行布局,如图3.2所示。

图3.23个XML布局文件

总体上所需要的Activity和XML布局文件已经建立完毕,下面开始对进入计算器的Activity进行编写,

 

3.3Activity的详细设计

动作模块中CalculatorActivity.java的详细代码如下:

packagecom.calculator.apk;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.TextView;

publicclassCalculatorActivityextendsActivity{

/**

*对layout中各组件进行定义

*/

Buttonbtn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn0,btnPoint;

ButtonbtnJia,btnJian,btnCheng,btnChu;

ButtonbtnC,btnE,btnA,btnB;

ButtonbtnJieGuo;

TextViewtextView01;

EditTextet;

//定义一个float类型,用于数字的运算

floatnum1;

//定义一个float类型,用于数字的运算

floatnum2;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.calculator);

//定义一个方法,完成对个组件的初始化

init();

//设置btn1的监听事件

btn1.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//将num1后面连接1,然后再将值赋给EditText

et.setText(num1+1);

}

});

//设置btn2的监听事件

btn2.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//将num1后面连接2,然后再将值赋给EditText

et.setText(num1+2);

}

});

//设置btn3的监听事件

btn3.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//将num1后面连接3,然后再将值赋给EditText

et.setText(num1+3);

}

});

//设置btn4的监听事件

btn4.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//将num1后面连接4,然后再将值赋给EditText

et.setText(num1+4);

}

});

//设置btn5的监听事件

btn5.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//将num1后面连接5,然后再将值赋给EditText

et.setText(num1+5);

}

});

//设置btn6的监听事件

btn6.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//将num1后面连接6,然后再将值赋给EditText

et.setText(num1+6);

}

});

//设置btn7的监听事件

btn7.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//将num1后面连接7,然后再将值赋给EditText

et.setText(num1+7);

}

});

//设置btn8的监听事件

btn8.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//将num1后面连接8,然后再将值赋给EditText

et.setText(num1+8);

}

});

//设置btn9的监听事件

btn9.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//将num1后面连接9,然后再将值赋给EditText

et.setText(num1+9);

}

});

//设置btn0的监听事件

btn0.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText中的值

Stringnum1=et.getText().toString();

//判断,如果0为首次输入,并且0为首位数字,则将下列按钮设为不可用

if(num1.length()<=0){

btn1.setEnabled(false);

btn2.setEnabled(false);

btn3.setEnabled(false);

btn4.setEnabled(false);

btn5.setEnabled(false);

btn6.setEnabled(false);

btn7.setEnabled(false);

btn8.setEnabled(false);

btn9.setEnabled(false);

btn0.setEnabled(false);

btnJieGuo.setEnabled(false);

btnJia.setEnabled(false);

btnJian.setEnabled(false);

btnCheng.setEnabled(false);

btnChu.setEnabled(false);

et.setText("0");

}else{

//如果0不为第一个数字,则将num1后面连接0,然后再将值赋给EditText

et.setText(num1+0);

}

}

});

//设置btnPoint的监听事件

btnPoint.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//不论下列按钮可不可用,都将设为可用

btn1.setEnabled(true);

btn2.setEnabled(true);

btn3.setEnabled(true);

btn4.setEnabled(true);

btn5.setEnabled(true);

btn6.setEnabled(true);

btn7.setEnabled(true);

btn8.setEnabled(true);

btn9.setEnabled(true);

btn0.setEnabled(true);

btnJieGuo.setEnabled(true);

btnJia.setEnabled(true);

btnJian.setEnabled(true);

btnCheng.setEnabled(true);

btnChu.setEnabled(true);

//获取EditText中的值

Stringnum1=et.getText().toString();

//此处方法是判断小数点是否存在

if(num1.indexOf(".")<0){//检索“.”的index值,如果不存在,返回的是-1

//此处判断小数点是否在字符串的开头

if(num1.length()>0){

//如果不是在字符串的开头,则将num1后面连接“.”,然后再将值赋给EditText

et.setText(num1+".");

}else{

//如果小数点在字符串的开头,则将EditText的值设为空

et.setText("");

}

}else{

//如果小数点在前面的数字中已经出现,则EditText的值不变

et.setText(num1);

}

}

});

//设置btnC的监听事件

btnC.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

btn1.setEnabled(true);

btn2.setEnabled(true);

btn3.setEnabled(true);

btn4.setEnabled(true);

btn5.setEnabled(true);

btn6.setEnabled(true);

btn7.setEnabled(true);

btn8.setEnabled(true);

btn9.setEnabled(true);

btn0.setEnabled(true);

btnJieGuo.setEnabled(true);

btnJia.setEnabled(true);

btnJian.setEnabled(true);

btnCheng.setEnabled(true);

btnChu.setEnabled(true);

//清空EditText

et.setText("");

//清空TextView

textView01.setText("");

//num1和num2的值归零

num1=0;

num2=0;

}

});

//设置btnE的监听事件

btnE.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//设置一个显式意图,用于CalculatorActivity和AboutActivity之间的跳转

Intentintent=newIntent(CalculatorActivity.this,MainActivity.class);

startActivity(intent);

}

});

//设置btnJia的监听事件

btnJia.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取EditText的值

Stringnum=et.getText().toString().trim();

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

当前位置:首页 > 求职职场 > 简历

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

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