android开发简易计算器的设计报告.docx
- 文档编号:27065509
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:25
- 大小:140.30KB
android开发简易计算器的设计报告.docx
《android开发简易计算器的设计报告.docx》由会员分享,可在线阅读,更多相关《android开发简易计算器的设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
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、功能的操作流程
得出程序结果后,输入数据,选择运算符号,再输入数据,选择等号,即可得到结果。
3、计算器模块
整个项目工程的目录文件
Src文件存放的是文本中开发的所有java文件,java文件时整个项目的代码,gen下面的R.java为Eclipse自动生成的系统文件。
Res是存放整个系统所有到的所有资源。
Layout文件下main.xml文件的配置生成内容。
四、程序源代码
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="@string/shuchu"/> android: layout_width="fill_parent" android: lay
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 开发 简易 计算器 设计 报告