Android项目开发实训项目总结报告Word下载.docx
- 文档编号:16200096
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:25
- 大小:2.40MB
Android项目开发实训项目总结报告Word下载.docx
《Android项目开发实训项目总结报告Word下载.docx》由会员分享,可在线阅读,更多相关《Android项目开发实训项目总结报告Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
计算器的运算和显示问题。
第二章第二章需求分析需求分析2.1项目背景项目背景随着社会的发展,经济水平的提高,手机越来越普及。
同时伴随着移动互联网技术的发展,手机的功能也变得越来越丰富。
Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。
面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。
为了进一步巩固课堂上所学到的知识,深刻把握嵌入式系统以及Java语言的重要概念及其面向对象的特性,使我们能够熟练的应用面向对象的思想和设计方法解决实际问题的能力。
通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。
使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。
2.2项目需求项目需求根据需求,符合用户的实际要求,系统应实现以下功能:
计算器界面友好,方便使用,显示到少6位结果,具有基本的加、减、乘、除功能,能够判断用户输入运算数是否正确,支持小数运算,具有退格功能,能够删除最后一个输入,具有清除功能,即“C”。
因为打开(ON)、关闭(OFF)屏幕按键的功能等。
如图2-1所示。
整个程序基于Android技术开发,除总体模块外主要分为输入模块、显示模块以及计算模块这三大部分。
在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算机模块部分负责进行数据的运算以及一些其他的功能。
下面较为详细的做了说明。
具体的说,总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。
输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机动作以及用指针事件处理方法处理触屏的单击动作。
同时提供了较为直观的键盘图形用户界面。
显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时负责显示一些其他的信息。
计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除等各种功能,记忆数据的相关功能,退格以及清零的功能。
系统除了总体模块以外主要由三大模块来组成,即输入模块、显示模块和计算模块,如图2-2所示:
输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机按键动作以及用指针事件处理方法处理触屏的单击动作(以松开按键为准)。
显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时还负责显示一些其他的信息。
计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除、等各种计算功能,记忆数据的相关功能,退格以及清零的功能。
第三章第三章相关技术相关技术3.1Adnroid平台介绍平台介绍Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
可以把它简单理解成Linux上套了一个JAVA的壳。
Android的平台基本上是免费的,虽然有部份原生链接库会要求费用,但大部份是免权利金。
Android的程序可以采用JAVA开发,因为它的虚拟机(VirtualMachine)Dalvik,只是它将JAVA的bytecode转成自己的格式,回避掉需要付给SUN有关JAVA的授权费用。
因此,Android开发环境是需要JDK的。
1.新建项目:
打开Eclipse,选择FileNewProjectAndroidProject,具体输入如图3-1所示:
在Projectname:
中输入工程的名字,buildtarget中选择所用的平台,Applicationname为应用程序的名称,createactivity为活动类的名称,配制运行方式:
点击RunConfigurations会出现图3-2的界面,然后点击androidandroidapplication新建一个动行方式,在右边project中输入要运行的工程名称。
至此运行方式配制完成。
运击会行,便会出下如图3-3界面:
3.2关键技术研究关键技术研究每一个应用程序,我们都要设计一个图标,可以说图标是应用程序的名片,好的图标能够很快地吸引用户。
在此不对图标问题做过多的介绍。
由于不同的android手机有着不同的分辨率,将不同分辨率的图标图片放置在相应位置,如图3-4所示。
drawable-hdpi中放置分辨率最高的图标,drawable-mdpi中放置分辨率中等的图标,drawable-ldpi中放置分辨率最低的图标。
图标图片大小的要求如图3-5所示:
在AndroidManifest.xml文件中进行修改,修改情况如下:
其他设置保持不变。
在value中的String.xml中加入app_name,代码为:
计算器界面设计应该尽量简洁而美观,应该具有良好的交互性。
当然,我们每个人可以根据自己的喜好来进行设计,根据我个人的喜好,我最终设计出来的计算器界面如图3-6所示:
从上图中,我们可以很直观的看到,从上到下分别是:
显示模块、输入模块、计算模块。
输入模块,主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法,具体的处理办法会在相关的地方进行说明。
在本项目中,在触屏上提供了各种功能的按键,分别是C,0,1,2,3,4,5,6,7,8,9,+,-,=,ON,OFF。
在整体界面的设置中,我还为各个按键的设置中我还设置了字体的大小,字体的颜色,分别用下列语句实现:
字体大小:
android:
textSize=25dip字体颜色:
textColor=#7f0000界面背景:
background=#888FFF显示模块,主要描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果和一些其他信息。
显示模块还设置了显示的字体,大小,颜色,同时还设置了显示字体的颜色。
具体设置如下代码:
显示区中使用的是基于增强型的图形用户界面EditText,利用此类的功能,在显示模块中完成了以上设置。
显示模块声明了这些设置,在用户使用系统的时候,会在协同布局设置一同完成以上设置,使用户在使用的时候可以直观的看到显示区的样子。
一般情况下都会选择差不多的字体,所以此处选择的字体和键盘上显示的字体其实是一样的,但是事实上系统中进行了两次声明,即逻辑上这是两种不同的字体,以及设置字符串text为空。
显示区和输入模块中的表格一样,同样分别设置了最小显示以及完美显示这两种状态。
然后声明了显示区的画法,画法中包括了显示区的两个矩形组成的显示框,显示框的颜色和大小以及显示框中显示的文字所使用的字体,还有文字在显示框中的位置。
最后设置了计算模块中的变量得到以及改变显示中所显示的内容的方法,当显示中的内容发生变化时,系统会运行repaint命令来重画显示区,由于使用的是比较低级的方法,所以只能通过整个显示区来实现显示更新这个命令。
这样虽然和使用高级的方法相比速度上可能有点慢,但是由于时间相差的不是很多,在用户的正常使用中是不会有所感觉的。
以上就是显示模块的具体实现流程。
第四章第四章概要设计概要设计4.1系统体系结构系统体系结构计算模块则主要描述了计算器的整体,实现了计算器的界面,定义了用户单击的处理办法,通过定义的处理办法来完成用户的操作命令,实现用户的计算要求,这些计算要求包括了数值的输入,小数点的输入,正负号的输入,记忆相关功能的完成,加、减、乘、除等各种计算功能的完成,运算符的替换,初始化系统等等。
按键监听同时监听了触屏上的按键和键盘上的按键,其中按键的监听使用了的松开为判断的标准,即用户松开按键的时候程序才会读取数据。
计算模块是整个系统的主体部分,整个计算器功能是通过Jisuanq2Activity.java来实现的。
首先,我使用一个数组btn来分别监控十个数字键,用et_led来监控输入内容,用btn_div、btn_mul、btn_sub、btn_plus、btn_equal、btn_dot,分别来表示除法、乘法、减法、加法、等号、点号,具体实现如下代码:
privateButtonbtn=newButton10;
privateEditTextet_led;
privateButtonbtn_div,btn_mul,btn_sub,btn_plus,btn_equal,btn_dot;
其次,对内容的操作。
当有内容输入时,首先接收内容,接受的内容分为两部分:
当输入为数据时,则是通过传递给数组str,根据数据的传递判断数据内容的长度,如果没有内容输入则,则通过et_led.setText()为0,如果有数据输入的时候,则通过et_led.setText()显示数据,并且将第一次输入的数据保存predata;
当输入为符号时,像“+、-、*、/、C、ON、OFF”时,然后对符号进行判断,具体实现代码如下:
privateOnClickListeneractionPerformed=newOnClickListener()publicvoidonClick(Viewv)Stringcommand=(Button)v).getText().toString();
str=et_led.getText().toString();
if(pareTo(Bksp)=0)if(str.length()1)et_led.setText(str.substring(0,str.length()-1);
elseif(str.length()=1)et_led.setText(0);
vbegin=true;
if(et_led.getText().toString().compareTo(-)=0)et_led.setText(0);
elseif;
最后,当第二次输入数据的时候,将会数据存到temp,再根据上次输入的符号进行运算,然后将结果保存在temp,如果按键“=”,则会将将结果输出,如果是其他的符号,则会进行相应的运算。
程序结构图如下:
参照程序的流程图,设计十个Activity。
分别为进入页面的Activity,选择运算的Activity,剩下八个分别为输入数据的Activity和显示运算结果的Activity,如图2。
在这里应该注意的是每当创建一个新的class,就要继承Activity。
需要用到publicclassjisuanqiextendsActivity这句代码因此整理好程序的流程是关键,设计好Activity之间的Intent链接是关键。
程序所需的Activity相应的,需要在res/layout文件夹中建立3个XML文件来对上述的十个Activity进行布局,如图4-4:
总体上所需要的Activity和XML布局文件已经建立完毕,下面开始对进入计算器的Activity进行编写,首先在布局文件main.xml中创建两个Button按钮,并且对两个按钮声明ID和布局。
两个Button按钮显示为“开始计算”和“退出”如图4-5:
然后在jisuanqi.java中,首先要声明Button按钮用到如下代码:
privateButtonbutton1privateButtonbutton2在安卓里面,用ID找控件是个非常方便的方法,使用findViewById方法来找到在XML文件中创建的对象。
因此在jisuanqi.java中,同样需要使用findViewById方法来找到两个Button控件,代码如下:
button1=(Button)findViewById(R.id.button1);
button2=(Button)findViewById(R.id.button2);
接下来开始编辑第二个Activity,也就是选择运算法则的界面,本界面需要创建4个Button按钮,分别为加、减、乘、除。
Id分别为button3、button4、button5、button6。
再下来以加法页面为例,在本页面当中需要创件两个EditText,一个TextView,还有一个Button按钮,TextView显示为“加上”,Button按钮显示为“计算”三个Activity创建完成后,我们需要实现以下动作:
在用户打开软件之后,点击“开始计算”,然后跳转到选择运算法则的界面,当用户点击“加”则程序进入加法界面。
由此可见,在整个动作中,需要使用侦听代码来识别用户的操作,然后使用Intent来实现Activity的切换。
我们以开始界面跳转到选择运算法则界面为例:
首先在“开始计算”按钮上设置侦听代码如下:
button1.setOnClickListener(newbutton1Listener();
然后开始侦听,当用户点击“开始计算”时,启动Intent来将本界面切换到选择运算法则的界面,在这里需要JAVA中侦听的方法和Intent方法,代码如下:
classbutton1ListenerimplementsOnClickListenerOverridepublicvoidonClick(Viewv)/生成一个Intent对象Intentintent=newIntent();
intent.setClass(jisuanqi.this,Activityone.class);
jisuanqi.this.startActivity(intent);
在这句代码当中intent.setClass(jisuanqi.this,Activityone.class);
是规定了本次跳转是从哪个Activity跳转到Activity,在这里是从jisuanqi.java跳转到Activity.java。
完成了Activity之间的切换,下面我们开始进行运算的编辑,在加法界面,我们编写如下代码来实现将用户输入的两个数传送到Intent中:
/生成一个Intent对象/取得两个值StringFactorOnestr=FactorOne.getText().toString();
StringFactorTwostr=FactorTwo.getText().toString();
/取得两个值放在Intent中Intentintent=newIntent();
intent.putExtra(one,jiashuoneStr);
intent.putExtra(two,jiashutwoStr);
/使用这个Intent来激活答案页intent.setClass(plus.this,resultplus.class);
plus.this.startActivity(intent);
接下来要进行的是显示答案的Activity的编写,在这里我们要注意的是Intent传过来的是两个字符串,字符串是不能相加的,因此我们要将两个字符串强制转换为整形,然后才可以相加,代码如下:
plusresult=(TextView)findViewById(R.id.plusresult);
/得到Intent对象当中的值Intentintent=getIntent();
StringFactorOnestr=FactorOne.getText().toString();
/将字符串转为整形Log.i(FactorOnestr,FactorOnestr);
Log.i(FactorTwostr,FactorTwostr);
/计算两数之和intresult=jiashuone+jiashutwo;
plusresult.setText(result+);
减法,乘法,除法的界面类似于加法的界面,这里不再过多介绍了。
最后需要注意的是要在AndroidMainfest.xml文件中将所有的Activity进行注册,然后才可以运行。
4.2用户界面设计用户界面设计4.2.1计算器界面计算器界面图4.2.14.2.2小数点运算界面小数点运算界面图4.2.24.2.3负数运算界面负数运算界面图4.2.34.2.4开方运算界面开方运算界面图4第五章第五章详细设计详细设计5.1数据输入模块数据输入模块系统如果想完成计算器中的各种功能,首先用户要能进行数据输入,由于是在触屏手机上开发计算器程序,所以要求输入可以直接使用触屏进行,所以在设计的时候就要充分的考虑要这一点。
正是由于考虑到这个特殊的地方,所以在进行模块设计中,选择编写输入模块类的时候会特意选取使用了可以支持触屏输入的特殊增强型图形用户界面类。
输入模块主要的任务是描述计算器键盘以及实现键盘的监听,即当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法,本模块还需要为系统提供了一个较为直观的键盘图形用户界面。
5.2数据显示模块数据显示模块作为手机计算器系统,显示部分也是必不可少的一部分。
没有显示部分就没有办法显示用户输入的数字是否正确,甚至不能显示计算出的结果,由此可见显示模块即包括输入的部分也包括输出的部分。
显示模块主要要完成的任务是描述计算器的显示区,该区域用于显示用户输入的数据以及最终的计算结果和一些其他信息。
同时本模块还将提供调用和设置显示的具体方法。
5.3数据计算功能模块数据计算功能模块系统要完成整个的计算器的计算功能,那么计算模块就是整个系统的重点模块。
没有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。
所以计算模块的设计也是本次系统设计中的重点。
系统想要能在屏幕上显示出计算器的样子要有整体的布局,在本模块中要完成布局的具体设计,使用户能够看到整个计算器的画面。
同时系统想完成计算功能必须要处理用户的输入,当输入模块的监听传到计算模块中时,计算模块就要根据相应的方法进行进一步的处理。
这部分主要是对输入进行的逻辑判断,基本会通ifelse来实现逻辑判断。
packagecom.android.calculator;
importjava.math.BigDecimal;
importjava.math.RoundingMode;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.text.Editable;
importandroid.text.Selection;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
classFlagprivateinta0;
privateinta1;
privateinta2;
privateinta3;
publicinta0()returna0;
publicinta1()returna1;
publicinta2()returna2;
publicinta3()returna3;
publicFlag(inta,intb,intc,intd)a0=a;
a1=b;
a2=c;
a3=d;
publicFlagnext;
classFlagListprivateFlagfirst;
publicFlagList(inta,intb,intc,intd)first=null;
publicbooleanisEmpty()return(first=null);
publicvoidinsertFirst(inta,intb,intc,intd)FlagnewFlag=newFlag(a,b,c,d);
newFlag.next=first;
first=newFlag;
publicFlagdeleteFirst()Flagtemp=first;
first=first.next;
returntemp;
classFlagStackprivateFlagListtheFlagList;
privateintcount;
publicFlagStack()theFlagList=newFlagList(0,0,0,0);
count=0;
publicvoidpush(inta,intb,intc,intd)theFlagList.insertFirst(a,b,c,d);
count+;
publicFlagpop()count=count-1;
returntheFlagList.deleteFirst();
publicbooleanisEmpty()return(theFlagList.isEmpty
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 项目 开发 总结报告