生活助手详细设计_第1页
生活助手详细设计_第2页
生活助手详细设计_第3页
生活助手详细设计_第4页
生活助手详细设计_第5页
已阅读5页,还剩92页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

生活助手详细设计说明书

设计者:田秋荣

指导教师:李然

2014年4月7日

目录

1引言................................................5

L1编写目的.......................................5

1.2背景...........................................5

1.3定义...........................................5

1.4参考资料.......................................5

1.4用户用例图.....................................6

2项目总体概述........................................7

2.1项目目标.......................................7

1.2系统模型.......................................7

3天气预报设计说明....................................8

3.1程序描述.......................................8

3.2功能..........................................10

3.3性能..........................................21

3.4输入项........................................21

3.5输出项........................................21

3.6接口..........................................21

3.7注释设计......................................21

3.8限制条件......................................22

3.9尚未解决的问题................................22

4通讯录设计说明.....................................22

4.1程序描述&流程逻辑.............................22

4.2功能.........................................22

4.3性能..........................................29

4.4接口.........................................30

4.5注释设计......................................30

4.6限制条件......................................30

4.7尚未解决的问题................................30

5计算器设计说明.....................................31

5.1程序描述&流程逻辑............................31

5.2功能..........................................61

5.3性能..........................................62

5.4输入项.......................................62

5.5输出项........................................62

5.6接口.........................................63

5.7注释设计......................................63

5.8尚未解决的问题................................63

6快递查询设计说明...................................63

6.1程序描述&流程逻辑............................63

6.2功能..........................................65

6.3性能..........................................65

6.4输入项.......................................66

6.5输出项........................................66

6.6接口.........................................66

6.7注释设计......................................66

6.8限制条件......................................66

6.9尚未解决的问题................................66

7记事本设计说明.....................................66

7.1程序描述&流程逻辑............................66

7.2功能..........................................74

7.3性能..........................................75

7.4接口.........................................75

7.5注释设计......................................75

7.6限制条件......................................75

7.7尚未解决的问题................................76

8日历设计说明.......................................76

8.1程序描述&流程逻辑............................76

8.2功能..........................................95

8.3接口..........................................95

8.4注释设计.....................................96

8.5尚未解决的问题................................96

1引言

1.1编写目的

本详细设计说明书是针对网络信息体系结构中android应用开发的课程作业而编写的,

目的是对该项目进行详细设计,在概要设计基础上进一步明确系统结构,详细的介绍系统的

各个模块,对进行后面的实现和测试做准备。本详细设计说明书的预期读者为本项目小组的

成员以及对该项目感兴趣的,在以后想对系统进行扩展和维护的人员。整合复习上一阶段知

识。

1.2背景

当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,

使得手机操作系统也出现了不同种类,现在的市场上主要有三个手机操作系统,IOS,

Windowsmobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的

Android系统有最大的发展前景。那么能在自己的手机上拥有自己编写的手机助手吗?答案

是肯定的。市场上流行的手机助手,了解他们各自的插件和编码方式,分析各种编码的优缺

点,编写出功能实用,方便快捷的手机助手。同时,锻炼程序编写能力,熟悉安卓的设计流

程。

本项目:生活小软件生活助手

本项目的提出者:安卓越由老师指导个人完成。

1.3定义

API:API(ApplicationProgrammingInterface,应用程序编程接口)是一些预

先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组

例程的能力,而又无需访问源码,或理解内部工作机制的细节。

1.4参考资料

参考资料安卓越自编教材

网络资料

老师讲解的Demo实例

1.4用户用例图

天气预报功能中,当输入正确的城市后,点击确定,能够查询出该城市当天

的基本天气情况,由于查询7天的天气接口已经不再刷新,所以只能用这个查询

一天的接口。

通讯录功能,进入通讯录后,将显示出已添加用户的通讯录,并且能够进行

删除和拨打电话的功能。

记事本功能,进入记事本,能够实现记事本的增删改查。

计算器功能,就是实现简单计算器的所有功能。

快递查询功能,输入正确的快递公司英文名称,及其对应快递单号,将查询

出对应快递信息。

日历功能,正常显示每个月份的日历信息。并且,所有左右滑动能够实现上

下月的切换。

2项目总体概述

2.1项目目标

在android系统手机平台上实现手机助手的天气查询、记事本、快递查询、通讯录、计

算器、日历等功能。

1.天气查询:输入你想查询的城市,查询出当天输入城市的天气状况。

2.记事本:通过添加记事,来添加你想要添加的事件同时可以看到添加记事的时间。

3.快递查询:输入快递公司的英文名称、快递单号查询出所需查询的快递的信息。

4.通讯录:添加常用联系人,找到联系人点击即可打通联系人的电话。

5.计算器:可以实现简单的计算功能。

6.日历:实现日历日期的查询功能。

7.关于:关于生活助手的基本信息,例如版本号……

1.2系统模型

系统模块划分如下:

3天气预报设计说明

3.1程序描述

主界面中点击天气查询按钮进入天气查询界面,因为查询获取天气数据是耗

时的操作,所以都放在非ui线程中进行,通过发送消息实现天气的查询。

基本设计思路如下:

1、检查网络连接状态。

由于是涉及到网络的操作,所有应该首先想到检查网络状态。如果没有可用

的网络,将用Toast提示用户,如果网络没有问题,将进行下面操作。

2、编辑输入框内容,隐藏软键盘。

在查询框中输入要查询的城市,点击确定,程序将调用隐藏手机软键盘的方

法hideSoftInputFromInputMethod(token,flags),以便于显示查询的天气信息。

3、根据输入的城市名字,匹配城市编码

接着运行WeatherPullParser.getCityCode()方法,将输入框中获取的城市名

称传入进去,进行Pull解析,进行解析assets文件下的"weather_city_list.xmT文

件,返回查询城市的code,当返回“error”的时候说明查询的城市有误,弹出提示

错误的Toasto

4、查询天气信息

此时已经是在网络连接良好的状态下,所以说如果获取到正确的城市code

值后,就可以调用WeatherNetUtil.getWeatherInfo(StringcityCode)方法,到网络中

获取code对应城市的天气信息、,由于这时的返回的天气信息result是JSON字符

串的形式,所以需要调用WeatherJsonPaser.getItems(Stringresult)方法进行JSON

解析,又因为从WebService中的path

="http:〃/data/cityinfo/"+code+”.html”获取的天气信息都是键值对

形式的,所以返回的信息采用集合的形式存储,即今天大致天气情况。

5、显示天气信息

再使用Handler把获取的天气信息发送出去,主线程接收到信息后更改UI

界面,显示出今天的天气情况。

使用ListView将接下来几天的信息用列表的形式简单显示出来,使用

SimpleAdapter为其适配,并对ListView的每个Item做监听,当点击Item后,

会将其对应的信息显示当主显示界面,点击主显示界面讲跳转到一个显示详情的

Activity,显示所有相关信息。

3.1.1类

*实现类操作的工具类

*/

publicclassWeatherNetUtil{

publicstaticbooleangetNetState(Contextcontext)(

ConnectivityManagermanager=(ConnectivityManager)

context.getSystemService(Context.CONNECTIVITY_SERVICE);

〃获得网络状态

Networklnfonetlnfo=manager.getActiveNetworklnfo();

if(netlnfo==null){〃网络无法连接

returnfalse;

}else{

if(netlnfo.isAvailable()){

returntrue;

)

}

returnfalse;

)

*根据获得的城市编码进行查询天气,返回查到的数据

*/

publicstaticStringgetWeather(StringcityCode){

Stringpath=nhttp://www.weather,com.cn/data/cityinfo/";

path=path+cityCode+,,.htmr,;

InputStreamis;

StringBufferbuffer=newStringBufferQ;

URLurl;

try(

url=newURL(path);

HttpURLConnectionconn=(HttpURLConnection)url.openConnection();

conn.setRequestMethod(nGETH);

conn.setConnectTimeout(5000);

conn.setReadTimeout(5000);

conn.connect();

if(conn.getResponseCode()==200){〃连接上了

is=conn.getInputStream();

BufferedReaderbr=newBufferedReader(newInputstreamReader(is));

Stringline=null;

while((line=br.readLine())!=null){

buffer,append(line);

)

is.closeQ;

conn.disconnect();

)

returnbuffer.toString();

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

)

returnnerror";

)

〃解析最新天气信息,存入M叩集合中

publicstaticList<Map<String,Object»getTodayWeather(Stringweather){

List<Map<String,Object»list=newArrayList<Map<String,Object»();

Map<String,Object>map=newHashMap<String,Object>();

JSONObjectjson;

try(

json=newJSONObject(weather);

JSONObjectjsonl=json.getISONObject(',weatherinfoH);

Calendarcalendar=Calendar.getInstance();

Datedate=calendar.getTime();

SimpleDateFormatsdf=newSimpleDateFormat(nyyyy年MM月dd日)

Stringcity=jsonl.getString(Hcityn);

Stringtemp1=json1.getString(ntempln);

Stringtemp2=jsonl.getString(ntemp2n);

Stringweather1=json1.getString(nweather'*);

Stringimgl=jsonl.getStringC'imgln);

Stringimg2=jsonl.getString(nimg2");

Stringimg1_sub=img1.substring(1,imgl.length()-4);

Log.d("Tag",imgl_sub);

Stringimg2_sub=img2.substring(1,img2.1ength()-4);

Log.d(nTagn,img2_sub);

Stringdate_y=sdf.format(date);

intimgO=getPicture(img1_sub);

map.put("cityH,city);

map.put(ntempH,temp2+“〜"+templ);

map.put("weather",weather1);

map.put(nimgl",imgl);

map.put(nimg2n,img2);

map.put(nimg1_subn,img1_sub);

map.put(Himg2_subn,img2_sub);

map.put(“date",date_y);

map.put(nimgOn,imgO);

list.add(map);

}catch(JSONExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

)

returnlist;

)

/*

*根据获得的图标号,获得相应的图片

*/

publicstaticintgetPicture(Stringpic){

intim=lnteger.parselnt(pic);

intimg=0;

switch(im){

case0:

img=R.drawable.aO;

break;

case1:

img=R.drawable,a1;

break;

case2:

img=R.drawable.a2;

break;

case3:

img=R.drawable.a3;

break;

case4:

img=R.drawable.a4;

break;

case5:

img=R.drawable.a5;

break;

case6:

img=R.drawable.a6;

break;

case7:

img=R.drawable.a7;

break;

case8:

img=R.drawable.a8;

break;

case9:

img=R.drawable.a9;

break;

case10:

img=R.drawable.alO;

break;

case11:

img=R.drawable,a11;

break;

case12:

img=R.drawable.al2;

break;

case13:

img=R.drawable,a13;

break;

case14:

img=R.drawable.al4;

break;

case15:

img=R.drawable,a15;

break;

case16:

img=R.drawable.al6;

break;

case17:

img=R.drawable,a17;

break;

case18:

img=R.drawable,a18;

break;

case19:

img=R.drawable,a19;

break;

case20:

img=R.drawable.a20;

break;

case21:

img=R.drawable.a21;

break;

case22:

img=R.drawable.a22;

break;

case23:

img=R.drawable.a23;

break;

case24:

img=R.drawable.a24;

break;

case25:

img=R.drawable.a25;

break;

case26:

img=R.drawable.a26;

break;

case27:

img=R.drawable.a27;

break;

case28:

img=R.drawable.a28;

break;

case29:

img=R.drawable.a29;

break;

case30:

img=R.drawable.a30;

break;

case31:

img=R.drawable.a31;

break;

default:

break;

)

returnimg;

)

/*

*获得星期

*/

publicstaticStringgetWeek(inti){

Stringweek=null;

switch(i){

case1:

week="星期日”;

break;

case2:

week="星期一”;

break;

case3:

week一星期二”;

break;

case4:

week="星期三”;

break;

case5:

week一星期四”;

break;

case6:

week一星期五”;

break;

case7:

week="星期六”;

break;

default:

break;

)

returnweek;

)

)

3.2功能

实现功能如图

北京塞冷

8X-3X风力:4-5级转小

于3级

O哂

8X-3X

O08/21

7°C-3*C

O08/22

8。1℃

08/23

SI转多云

10010c

08/24

多云

tDG[5

3.3性能

本项目对精度,时间要求都不高。

3.4输入项

输入正确的城市名字

3.5输出项

输出该城市当天的天气情况

3.6接口

该程序没有使用数据库.

3.7注释设计

在模块首部的添加类的功能注释

在各分枝点处添加详细方法的注视

在各变量的功能、范围、缺省条件等添加注释;

3.8限制条件

必须有网络支持

3.9尚未解决的问题

没有实现连续几天的天气情况

4通讯录设计说明

4.1程序描述&流程逻辑

通讯录实现了存储联系人姓名和电话号码,和长按删除该联系人信息以及点

击拨打电话。和记事本类似涉及到了对数据库的添加、查询和删除的功能,所以

这里就不在描述,下面对实现的其他功能做阐述。

4.1.1类

/*

*调用数据库的增删改的方法来实现记事本内容增删改的方法

*/

publicclassContactsSqlHelper{

/*

*获得联系人列表

*/

publicstaticList<Map<String,String»getContactsInfo(Contextc){

//打开数据库

ContactsDBcontactDB=newContactsDB(c);

SQLiteDatabasedb=contactDB.getReadableDatabase();

List<Map<String,String»datalist=newArrayList<Map<String,String»();

Map<String,String>map=newHashMap<String,String>();

String[]columns=new

String[]{ContactsDB.C_ID,ContactsDB.C_CONTACTS_NAME,ContactsDB.C_CONTACTS_N

UMBER);

Cursorcursor=db.query(ContactsDB.TABLE_NAME,columns,null,null,null,

null,null);

if(cursor!=null){

datalist.clearQ;

for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){

map=newHashMap<String,String>();

map.put("_idn,cursor.getInt(cursor.getColumnIndex(',_id,'))+,"');

map.put(nc_contacts_name",

cursor.getString(cursor.getColumnIndex(Hc_contacts_namen)));

map.put(Hc_contacts_numberH,

cursor.getString(cursor.getColumnIndex(nc_contacts_numberH)));

datalist.add(map);

)

cursor.close();

db.close();

returndatalist;

)

/*

*添加数据

*/

publicstaticlongadd(Contextcontext,ContentValuesvalues){

ContactsDBcontactsDB=newContactsDB(context);

SQLiteDatabasedb=contactsDB.getWritableDatabase();

longcount=db.insert(ContactsDB.TABLE_NAME,null,values);

db.close();

returncount;

)

/*

*删除数据

*/

publicstaticintdeleteContact(Contextcontext,intid){

ContactsDBContactsDB=newContactsDB(context);

SQLiteDatabasedb=contactsDB.getWritableDatabase();

StringwhereClause=',_id=',+id;

intcount=db.delete(ContactsDB.TABLE_NAME,whereClause,null);

db.close();

returncount;

)

*页面重新启动时,更新

*/

@Override

protectedvoidonRestart(){

datalist.clear();

datalist.addAll(ContactsSqlHelper.getContactsInfo(ContactsActivity.this));

myAdapter.notifyDataSetChanged();

super.onRestartQ;

)

/*

*单击item中的任意一项,进行打电话

*/

publicclassMyOnltemClickimplementsOnltemClickListener{

@Override

publicvoidonItemClick(AdapterView<?>argO,Viewargl,intarg2,

longarg3){

Stringnumber=datalist.get(arg2).get(nc_contacts_numbern);

Uriuri=Uri.parse(ntel:n+number);

IntentinCall=newIntent(Intent.ACTION_CALL,uri);

startActivity(inCall);

)

)

/*

*长按删除

*/

publicclassMyOnltemLongClickimplementsOnltemLongClickListener{

privateintindex;

@Override

publicbooleanonItemLongClick(AdapterView<?>argO,Viewargl,

intarg2,longarg3){

index=arg2;

Stringcontact=datalist.get(arg2).get(Hc_contacts_name");

AlertDialog.Builderbuilder=newBuilder(ContactsActivity.this);

builder.setTitle(“删除");

builder.setIcon(R.drawable.ic_launcher);

builder.setMessage("您确定要删I除"+contact+"?");

builder.setPositiveButton(“确定”,newDialoglnterface.OnClickListenerQ{

@Override

publicvoidonClick(DialogInterfacedialog,intwhich){

Stringid=datalist.get(index).get(',_idH);

intinid=lnteger.parselnt(id);

intjudge=ContactsSqlHelper.deleteContact(ContactsActivity.this,

inid);

if(judge>0){

Toast.makeText(ContactsActivity.this,H删除成功!",

Toast.LENGTH_SHORT).show();

datalist.remove(index);

myAdapter.notifyDataSetChanged();

}else{

Toast.makeText(ContactsActivity.this,

”册U除失败!:Toast.LENGTH_SHORT)

.show();

)

)

}).setNegativeButton("取消",null);

builder.createQ;

builder,show();

returnfalse;

)

4.2功能

实现功能如图

模拟器显示图,界面无,点击menu才弹出添加按钮

a

❹5558:abcI口I__I—

4.3性能

本项目对精度,时间要求都不高。

4.4接口

使用SQLiteDatabase对Android的内部数据库进行操作,

4.5注释设计

在模块首部的添加类的功能注释

在各分枝点处添加详细方法的注视

在各变量的功能、范围、缺省条件等添加注释;

4.6限制条件

没有限制条件

4.7尚未解决的问题

拨号拨打电话主界面没有处理

4.8数据库设计

编号字段名类型描述

1_idintegerPrimarykey,increment

2c_contacts_nameVarchar(50)联系人姓名

3c_contacts_numberString(20)联系人号码

5计算器设计说明

5.1程序描述&流程逻辑

计算机模块核心内容就是其加减乘除混合运算的先后顺序的算法问题,然后

就是各种输入判断,达到输入内容符合正常计算器的逻辑,下面直接现看算法工

具类。CalcUtil工具类中先创建2个数组,分别用于存放运算符

char[]compute_sign,和存放算式中数的数组double]]number,生成一个字符串数

组String[]datas=str.split("[+-]");得到datas数组,数组中的元素2种情况,(1)

是单纯的数字,(2)是包含乘除的运算。然后对数组进行遍历,如果数组元素中

包含乘除运算就跳转到getCaculatorMD()方法中先进行乘除运算的处理,返回

运算后得到的数字,然后将数字转成double类型便于接下来的运算。

下面看getCaculatorMD()方法的处理,将传过来的乘除运算组合按照运算

符拆分,得到的数字转成double类型存入数组double]]number中。下面要获取

运算符的数组,从传过来的乘除运算组合中提取乘除运算符,然后放入

compute_sign口中,然后再用for循环,求出这个乘除元算组合的结果。返回去继

续下面的加减运算,原理和乘除元算一样,最终获得该混合运算的结果。

接下来就是计算机的输入显示的逻辑判断。不能连续输入运算符的判断,以

运算符结尾按=时的处理,判断是否是-开头,如果是,前面添加一个0,实现负

数功能,以.0结尾和以•结尾的去掉。点删除按钮使用String.substring(O,length-l);

小数点的操作,用StringBuilder操作数字的操作,而不用String,防止占用

过多的内存。

5.1.1类和方法

publicclassCalculatorActivityextendsActivity{

privateButtonmBtn_l;//按键1

privateButtonmBtn_2;//按键2

privateButtonmBtn_3;//按键3

privateButtonmBtn_4;//按键4

privateButtonmBtn_5;//按键5

privateButtonmBtn_6;//按键6

privateButtonmBtn_7;//按键7

privateButtonmBtn_8;//按键8

privateButtonmBtn_9;//按键9

privateButtonmBtn_0;//按键0

privateButtonmBtn_add;//按键+

privateButtonmBtn_sub;//按键-

privateButtonmBtn_multiply;//按键*

privateButtonmBtn_divide;//按键除

privateButtonmBtn.del;//删除输入的一个字符,键盘的DEL按键

privateButtonmBtn_equals;//按键=

privateButtonmBtn_point;//按键.

privateButtonmBtn_clean;//将计算面板的所有控件清零键,即C键

privateEditTextmEdt_play;//显示运算过程

privateTextViewmTv_result;//显示结果

privateStringmStr_oper;//运算符,如+-*\

privateStringmStr_result=//暂存结果

privateStringBuffermStr_display=newStringBuffer();;//创建的StringBuffer对象,

缓存输入的字符串

privatecharmStr_chr;//单个字符

privatedoublemValue;//运算值

//上下文。Context提供了关于应用环境全局信息的接口。它允许获取以应用为特

征的资源和类型。

//同时启动应用级的操作,如启动Activity,broadcasting和接收intents。

privateContextmContext;

/**

*找到面板上的按键

*/

privatevoidfindViewQ{

mBtn_0=(Button)findViewById(R.id上tn_0);

mBtn_l=(Button)findViewById(R.id上tn_l);

mBtn_2=(Button)findViewById(R.id.btn_2);

mBtn_3=(Button)findViewById(R.id上tn_3);

mBtn_4=(Button)findViewById(R.id上tn_4);

mBtn_5=(Button)findViewById(R.id上tn_5);

mBtn_6=(Button)findViewById(R.id.btn_6);

mBtn_7二(Button)findViewById(R.id.btn_7);

mBtn_8=(Button)findViewById(R.id上tn_8);

mBtn_9=(Button)findViewById(R.id上tn_9);

mBtn_add=(Button)findViewById(R.id.btn_add);

mBtn_sub=(Button)findViewById(R.id.btn_sub);

mBtn_multiply=(Button)findViewById(R.id.btn_multiply);

mBtn_divide=(Button)findViewById(R.id.btn_divide);

mBtn_del=(Button)findViewById(R.id.btn_del);

mBtn_equals=(Button)findViewById(R.id.btn_equal);

mBtn_point=(Button)findViewById(R.id.btn_point);

mBtn_clean=(Button)findViewById(R.id.btn_clear);

mEdt_play=(EditText)findViewById(R.id.et_calculator);

mTv_result=(TextView)findViewById(R.id.tv_calculator);

mEdt_play.setTextCH,);//显示面板纵向第二行输出空字符串

)

@Override

protectedvoidonCreate(BundlesavedlnstanceState){

super.onCreate(savedlnstanceState);

setContentView(R.layout.calculator);//展示当前Activity的布局

mContext=this;//启动应用级操作

findView();//找面板上控件

//注册计算器按键的OnClick监听事件

BtnOnClickbtn_OnClick=newBtnOnClickQ;

mBtn_0.setOnClickListener(btn_OnClick);

mBtn_1.setOnClickListener(btn_OnClick);

mBtn_2.setOnClickListener(btn_OnClick);

mBtn_3.setOnClickListener(btn_OnClick);

mBtn_4.setOnClickListener(btn_OnClick);

mBtn_5.setOnClickListener(btn_OnClick);

mBtn_6.setOnClickListener(btn_OnClick);

mBtn_7.setOnClickListener(btn_OnClick);

mBtn_8.setOnClickListener(btn_OnClick);

mBtn_9.setOnClickListener(btn_OnClick);

mBtn_add.setOnClickListener(btn_OnClick);

mBtn_sub.setOnClickListener(btn_OnClick);

mBtn_multiply.setOnClickListener(btn_OnClick);

mBtn_divide.setOnClickListener(btn_OnClick);

mBtn_point.setOnClickListener(btn_OnClick);

mBtn_equals.setOnClickListener(btn_OnClick);

mBtn_clean.setOnClickListener(btn_OnClick);

mBtn_del.setOnClickListener(btn_OnClick);

)

*

*按钮监听

*/

classBtnOnClickimplementsOnClickListener{

©Override

publicvoidonClick(Viewv){

if(mStr_display!=null){

//判断“二号时”判断是否存在

if(mStr_display.indexOf(H=n)!=-l){

mStr_display=newStringBuffer();//清空mStr_display

mStr_display.append(mValue);//赋运算值

if(mStr_display.toString().endsWith(".0")){

//mStr_display.delete()中传入字符串最后两位的偏移值参

数可以删掉最后两位数点和零值,如3。执行后变为3

mStr_display.delete(

mStr_display.toString().length()-2,

mStr_display.toString().length());

)

mEdt_play.setText(mStr_display.toString());//显示面板纵向第二

行输出字符串

//当得到的mStjdisplay中数据为无穷大,或者数据输入错误时

if(mStr_display.toString().equals(

mContext.getString(R.string.infinite))

||mStr_display.toString().equals(

mContext.getString(R.string.wrong))

||mStr_display.toString().equals(

mContext.getString(R.string.minus_infinity))){

mStr_display=newStringBuffer();//清空mStr_display

mEdt_play.setText(mStr_display.toString());〃清零

}

switch(v.getld()){

//数字键。单击事件

caseR.id.btn_0:

mStr_display.append(n0n);//显示面板的输入缓存在原值上加0

mEdt_play.setText(mStr_display.toString());//显示面板纵向第二

行输出字符串

break;

//数字键1单击事件

caseR.id.btn_l:

//当输入1时,判段输入的值的长度,若>0,看是否包含“二二”,若

含有“==”号,则清空输入缓存,输入缓存1,并清空之前暂存的计算结果

if(mStr_display.length()!=0){

if(CalcTool.isDigitEnd(mStr_result)){//若含有“二=”号

mStr_display=newStringBuffer。;//清空输入缓存

mStr_display.append("1");//输入缓存1

mStr_result="";//并把运算结果清空

}else{

mStr_display.append(nln);//若不含“二二”号,则直接加

入输入缓存即可

)

}else{

//显示面板纵向第二行没有值输入的情况下直接加入1即

mStr_display.append("1");

)

mEdt_play.setText(mStr_display.toString());//显示面板纵向第二

行输出字符串

break;

//数字键2单击事件

caseR.id.btn_2:

//当输入2时,判段输入的值的长度,若>0,看是否包含"==",若

含有“==”号,则清空输入缓存,输入缓存2,并清空之前暂存的计算结果

if(mStr_display.length()!=0){

if(CalcTool.isDigitEnd(mStr_result)){//若含有“二=”号

mStr_display=newStringBuffer。;//清空输入缓存

mStr_display.append("2n);//输入缓存2

mStr_result=并把运算结果清空

}else{//若不含“二=”号,则直接加入输入缓存即可

mStr_display.append(H2n);

}

}else{

mStr_display.append(n2n);//显示面板纵向第二行没有值输

入的情况下直接加入2即可

1

mEdt_play.setText(mStr_display.toString());//显示面板纵向第二

行输出字符串

break;

caseR.id.btn_3:

//当输入3时,判段输入的值的长度,若>0,看是否包含“二二”,若

含有“==”号,则清空输入缓存,输入缓存3,并清空之前暂存的计算结果

if(mStr_display.length()!=0){

if(CalcTool.isDigitEnd(mStr_result)){//若含有"二="号

mStr_display=newStringBuffer。;//清空输入缓存

mStr_display.append(*'3n);//输入缓存3

mStr_result=并把运算结果清空

}else{

mStr_display.append("3");//若不含“==”号,则直接加

入输入缓存即可

)

}else{

mStr_display.叩pend("3");〃显示面板纵向第二行没有值输

入的情况下直接加入3即可

1

mEdt_play.setText(mStr_display.toString());//显示面板纵向第二

行输出字符串

break;

caseR.id.btn_4:

//当输入4时,判段输入的值的长度,若>0,看是否包含—,若

含有“二=,,号,则清空输入缓存,输入缓存4,并清空之前暂存的计算结果

if(mStr_display.length()!=0){

if(CalcTool.isDigitEnd(m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论