Android平台BMI计算的设计与实现文档格式.docx
《Android平台BMI计算的设计与实现文档格式.docx》由会员分享,可在线阅读,更多相关《Android平台BMI计算的设计与实现文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
性能需求
为了保证系统能够稳定、可靠的运行,BMI应该满足以下的性能需求:
1、处理的准确性和及时性
处理的准确性和及时性是BMI的必要性能。
在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足用户对信息处理的需求。
2、要能加入音乐以及动画效果
音乐和动画对一款Android软件是必须的,能让用户不仅有视觉的体验,更要有听觉的体验,让用户能喜欢。
3、软件的易用性
BMI手机软件能让用户很简单的操作,使用户能第一时间会使用此软件,便于用户交流。
4、软件的实际性
BMI手机软件,要贴近用户,能够解决用户所需要解决的问题。
5、系统的响应速度
BMI手机软件在日常生活中的响应速度要快,达到实时要求,以及时反馈信息。
使用户能速度的计算速度。
想睡觉!
!
第二章>
概要设计
根据需求分析的得到的现行业务处理流程,在用户反复研究后,首先确定目标软件功能模块图
依据软件工程的基本原理,综合以上分析的系统的各个功能模块给出系统流程图。
第三章>
详细设计
流程图
依据软件工程的基本原理,详细设计阶段的根本任务是确定应该怎样具体实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在系统实现阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
具体来说就是把经过总体设计得到的各个模块详细的加以描述。
第四章>
软件实现代码
主界面部分代码:
packagelianxi.androidbmi;
importlianxi.androidbmi.R;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
publicclassAndroidBMIextendsActivityimplementsOnClickListener{publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewjisuanButton=findViewById(R.id.jisuan_button);
jisuanButton.setOnClickListener(this);
ViewxiantiaoButton=findViewById(R.id.xiantiao_button);
xiantiaoButton.setOnClickListener(this);
ViewaboutButton=findViewById(R.id.about_button);
aboutButton.setOnClickListener(this);
ViewexitButton=findViewById(R.id.exit_button);
exitButton.setOnClickListener(this);
}
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.jisuan_button:
Intente=newIntent(this,JiSuan.class);
startActivity(e);
break;
caseR.id.xiantiao_button:
Intenti=newIntent(this,DataHuiTu.class);
startActivity(i);
caseR.id.about_button:
Intentt=newIntent(this,About.class);
startActivity(t);
caseR.id.exit_button:
finish();
protectedvoidonResume(){
super.onResume();
Music.play(this,R.raw.liekkas);
}
}
计算界面部分代码:
publicclassJiSuanextendsActivityimplementsOnClickListener{
privateEditTextshengao,tizhong;
privateRadioButtonman,woman;
privateTextViewjiegou,tishixinxi;
privateStringst1,st2,st3,st4,st5;
privateEventsDataevents;
privatefloatbmi,sg,tz;
privateStringsex;
privateViewquxiao,tijiao;
privateMediaPlayermp;
protectedvoidonCreate(BundlesavedInstanceState){
setContentView(R.layout.jisuan);
st1="
你太瘦了!
"
;
st2="
你的体型标准,你注意保持!
st3="
你胖了点,你要注意锻炼!
st4="
你太胖了,注意节食!
st5="
你过度肥胖了!
events=newEventsData(this);
jiegou=(TextView)findViewById(R.id.jiegou);
man=(RadioButton)findViewById(R.id.man);
woman=(RadioButton)findViewById(R.id.woman);
tishixinxi=(TextView)findViewById(R.id.tishixinxi);
shengao=(EditText)findViewById(R.id.shengao);
tizhong=(EditText)findViewById(R.id.tizhong);
quxiao=findViewById(R.id.quxiao);
quxiao.setOnClickListener(this);
tijiao=(Button)findViewById(R.id.tijiao);
tijiao.setOnClickListener(this);
Stringstr="
\\d+"
caseR.id.tijiao:
if(tizhong.getText().toString().equals("
)||shengao.getText().toString().equals("
)){
jiegou.setText(String.valueOf("
身高或体重不能为空!
));
}elseif(tizhong.getText().toString().matches(str)||
shengao.getText().toString().matches(str)){
tz=Float.parseFloat(tizhong.getText().toString());
sg=Float.parseFloat(shengao.getText().toString());
bmi=tz/((sg/100)*(sg/100));
jiegou.setText(String.valueOf(bmi));
pingYu(bmi);
if(man.isChecked()){
sex="
男"
}else{
女"
try{
addEvent(sex,sg,tz,bmi);
}finally{
events.close();
break;
}else{
输入值必须为数字!
caseR.id.quxiao:
mp.stop();
tizhong.setText("
);
shengao.setText("
jiegou.setText(String.valueOf("
tishixinxi.setText(String.valueOf("
privatevoidpingYu(floatbmi){
if(woman.isChecked()){
if(bmi<
19){
tishixinxi.setText(String.valueOf(st1));
}elseif(bmi>
19&
&
bmi<
24){
tishixinxi.setText(String.valueOf(st2));
24&
29){
tishixinxi.setText(String.valueOf(st3));
29&
34){
tishixinxi.setText(String.valueOf(st4));
tishixinxi.setText(String.valueOf(st5));
}else{
if(bmi<
20){
tishixinxi.setText(String.valueOf(st1));
}elseif(bmi>
20&
25){
tishixinxi.setText(String.valueOf(st2));
25&
30){
tishixinxi.setText(String.valueOf(st3));
30&
35){
tishixinxi.setText(String.valueOf(st4));
tishixinxi.setText(String.valueOf(st5));
}
privatevoidaddEvent(Stringsex,floatgao,floatzhongliang,floatbmi){
SQLiteDatabasedb=events.getWritableDatabase();
ContentValuesvalues=newContentValues();
Datedate=newDate(System.currentTimeMillis());
SimpleDateFormatdf=newSimpleDateFormat("
yyyy-MM-dd"
Stringtime=df.format(date);
values.put(TIME,time);
values.put(SEX,sex);
values.put(GAO,gao);
values.put(WEIGHT,zhongliang);
values.put(BMI,bmi);
db.insertOrThrow(TABLE_NAME,null,values);
第五章>
、程序结果
BMI的主界面:
<
输入界面
输出结果<
四>
图形输出
第六章测试分析报告
有两种基本方法可以用来标识测试用例,即功能测试(黑盒测试)和结构测试(白盒测试)。
本次测试我主要采用了功能测试。
功能测试的基本观点是,任何程序都可以看作是将输入定义域取值映射到输出值域的函数。
6.1>
测试计划和要点
软件测试的本质是针对要测试的内容确定一组测试用例。
在讨论之前,我先把要测试各个模块的计划和要点列出:
6.1.1>
主模块测试要点
数据库连接情况:
正常情况,数据库文件缺少,外部系统异常。
系统设置获取:
正常情况,外部系统异常。
对用户输入的响应:
合法输入,能够正常调用子模块;
非法输入,系统能否辨别,并作出响应(提出警告);
子模块的异常状况,系统能否及时做出响应。
6.1.2>
计算模块测试要点
模块正常运行流程
用户输入数据检查(体重,身高),包括数据合理性检查,以及合法性检查
数据库操作
数据库连接异常时的响应情况
6.1.3>
绘图模块测试要点
数据库连接异常;
数据库数据异常(体重或身高为空)
6.1.4>
音乐设置模块测试要点
打开背景音乐
停止背景音乐
6.1.5>
说明模块测试要点
点击按钮处理
对话框弹出
6.2>
测试结论
1.测试目标完成
2.测试已经通过
3.可以进入下一阶段项目目标
第七章>
课程设计总结
这次的课程设计对我来说是一个不小的提高,对于学编程的人来说,自己不动手操作,只看书永远都编不出好的软件,当完成android课程设计时,我不仅是知识体系的完善和知识的验证,更是编程技术的提升,还有通过一个学期的学习,还有这二个星期的课程设计,我认识到最深刻的是:
Android手机平台的优势:
一、开放性
在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。
显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟
二、挣脱运营商的束缚
在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。
当你可以通过手机IM软件方便地进行即时聊天时,再回想不久前天价的彩信和图铃下载业务,是不是像噩梦一样?
三、不受任何限制的开发商
Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生.
四、无缝结合的Google应用
Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。
Android手机平台的不足:
一、安全和隐私
由于手机与互联网的紧密联系,个人隐私很难得到保守。
除了上网过程中经意或不经意留下的个人足迹,Google这个巨人也时时站在你的身后,洞穿一切,因此,互联网的深入将会带来新一轮的隐私危机。
二、运营商仍然能够影响到Android手机
在国内市场,不少用户对购得移动定制机不满,感觉所购的手机被人涂画了广告一般。
三、同类机型用户减少
而对于Android平台手机,由于厂商丰富,产品类型多样,这样使用同一款机型的用户越来越少,缺少统一机型的程序强化。
四、分依赖开发商缺少标准配置
在Android平台中,由于其开放性,软件更多依赖第三方厂商,比如Android系统的SDK中就没有内置音乐播放器,全部依赖第三方开发,缺少了产品的统一性。