资源描述
《Android平台软件开发》课程设计汇报
题 目 基于安卓计算标准体重应用程序
专 业 计算机科学和技术
学生姓名
学 号
二O一六年 六 月 五 日
目 录
1背景介绍 1
2需求分析 1
3设计目标 2
4技术介绍 2
4.1 Android Studio--开发软件 2
4.2 java+Android类库+xml 2
4.2.1 java 2
4.2.2 xml 2
5 设计思绪 2
5.1功效分析 2
5.2模块划分 2
5.3程序步骤图 3
6 程序实现及代码分析 3
6.1用户登录界面 3
6.2输入和提交信息程序界面 8
6.3显示计算结果程序界面 10
7 总结 12
参考文件 13
基于安卓计算标准体重应用程序
周超
南京信息工程大学滨江学院计算机系,江苏 南京 210044
摘要:本汇报关键叙述是依据身高计算标准体重应用程序。本应用程序是以安卓技术、Java开发语和android studio开发平台为背景来进行设计。本应用程序包含了用户登录功效、背景音乐播放功效和计算标准体重功效。
关键词:Java;android studio;安卓;
1 背景介绍
伴随移动通信和Internet向移动终端普及,网络和用户对移动终端要求越来越高,而Symbian,Windows Mobile,PalmOS等手机平台过于封闭,不能很好满足用户需求,所以市场迫切需要一个开发性很强平台。经过多年发展,第三代数字通信(3G)技术活动了广泛接收,它为移动终端用户带来了愈加快数据传输速率。伴随3G网络使用,移动终端不再仅是通讯网络终端,还将成为互联网终端。所以,移动终端应用软件和需要服务将会有很大发展空间。谷歌为此于11月推出了一个专为移动设备设计软件平台——Android。
Android是一套真正意义上开发性移动设备综合平台,它包含操作系统、中间件和部分关键平台应用。Android是由Linux+Java组成开源软件,许可全部厂商和个人在其基础上进行开发。Android平台开放性等特点既能促进技术(包含平台本身)创新,又有利于降低开发成本,还能够是运行商能很方便地制订自己特色化产品。所以,它含有很大市场发展潜力。
2 需求分析
现在,伴伴随谷歌 Android操作系统盛行,基于Android SDK系统开发和基于Android应用开发等已倍受大家关注。Android应用面向是一般个体用户,这些用户往往会愈加关注用户体验,所以Android应用增加多媒体功效十分必需。就现在手机发展趋势来看,手机已经不再是单一通讯工具,更多手机用户期望在工作、学习之余经过方便灵巧可随身携带仪器休闲娱乐。
而且多年来,因为大家生活水平提升,越来越多人开始关注人体健康,而体重也成为了大家关注关键,尤其是女性。所以为了迎合众多用户需求并适应现在手机规模,我设计了一个计算标准体重应用程序。
3 设计目标
本设计是在学习Android平台软件开发课程基础上进行一次综合实践。经过本课程设计,让学生们巩固下相关Android平台软件开发知识,也考查学生们学习情况。
4 技术介绍
4.1 Android Studio--开发软件
Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成 Android 开发工具用于开发和调试。
4,2 java+Android类库+xml--开发语言
4.2.1 java
java是在计算机史上影响深远编程语言,它是一门面向对象编程语言,不仅吸收了C++语言多种优点,还摒弃了C++里难以了解多继承、指针等概念,所以Java语言含有功效强大和简单易用两个特征。Java语言作为静态面向对象编程语言代表,极好地实现了面向对象理论,许可程序员以优雅思维方法进行复杂编程[1] 。
Java含有简单性、面向对象、分布式、健壮性、安全性、平台独立和可移植性、多线程、动态性等特点 。Java能够编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
4.2.1 xml
可扩展标识语言XML(eXtensible Markup Language)是一个简单灵活文本格式可扩展标识语言,起源于SGML(Standard Generalized Markup Language),是SGML一个子集合,也就是SGML一个简化版本,很适合于在Web上或其它多个数据源间进行数据交换。
5 设计思绪
5.1 功效分析
该设计实现了一个可计算输出标准体重功效应用程序。依据世界卫生组织推荐计算标准体重方法为:男性标准体重=(身高- 80)*0.7;女性标准体重=(身高-70)*0.6”。所以需要输入信息有性别、身高。
用户在登录界面里,输入用户名和密码后,点击“登录”按钮,便可进入计算标准体重功效应用程序。然后,在该程序中输入对应信息后,点击“提交”按钮,接着,会跳转到结果界面,显示计算结果。
我还在登录界面中设计了背景音乐播放功效,点击“开启背景音乐”按钮,就会播放音乐;只有点击“关闭播放音乐”按钮,音乐才会停止,不然会一直播放。
5.2 模块划分
我设计了三个模块,即三个Activity,分别为用户登录(activity_Login)、输入和提交信息(activity_main)和显示计算结果(activity_result)。
(1) 用户登录(activity_Login)模块:一个图片控件(ImageView)用于加载图片,两个文本框(TextView)分别是用户名和密码,两个编辑框(EditText)用于输入用户名和密码,三个按钮(Button)分别为“登录”、“开启背景音乐”和“关闭播放音乐”,和部分标题文本。
(2) 输入和提交信息(activity_main)模块:一个图片控件(ImageView)用于加载图片一个RadioGroup组件,三个编辑框(EditText)分别是性别、身高和cm,两个单选框(RadioButton)分别是“男”和“女”,一个“提交”按钮(Button),和部分标题文本。
(3) 显示计算结果(activity_result)模块:一个图片控件(ImageView)用于加载图片,三个文本框(TextView),和部分标题文本。
5.3 程序步骤图
依据以上分析,可画出对应程序步骤图,图5-1所表示。
图5-1 程序步骤图
6 程序实现及代码分析
6.1 用户登录界面
用户登录程序界面(activity_Login)功效是实现用户登录,并能够开启背景音乐功效。用户必需输入正确用户名和密码,才可进入计算标准体重界面,不然,会出现“输入不正确”提醒信息,程序界面图6-1所表示。
图6-1 用户登录程序界面
功效代码:
activity_Login.java(实现用户登录功效)
package com.example.zc.myfirstapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.view.View;
import android.widget.Toast;
import android.view.View.OnClickListener;
public class LoginActivity extends AppCompatActivity {
private EditText name=null;
private EditText password=null;
Button login;
private static String TAG = "MusicService";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
name=(EditText)findViewById(R.id.edtName);
password=(EditText)findViewById(R.id.edtPassword);
login=(Button)findViewById(R.id.btnLogin);
initlizeViews();
login.setOnClickListener(new View.OnClickListener(){
public void onClick(View view) {
if (name.getText().toString().equals("zc") &&
password.getText().toString().equals("666666")) {
Intent intent = new Intent();
intent.setAction("com.example.zc.action.LOGIN");
startActivity(intent);
Toast.makeText(getApplicationContext(), "正在登录中...",
Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getApplicationContext(), "用户名或密码错误!"
Toast.LENGTH_SHORT).show();
}
}
});
}
private void initlizeViews() {
Button btnStart = (Button) findViewById(R.id.btnStart);
Button btnStop = (Button) findViewById(R.id.btnStop);
OnClickListener ocl = new OnClickListener() {
@Override
public void onClick(View v) {
//显示指定 intent所指对象是个 service
Intent intent = new
Intent(LoginActivity.this, MusicService.class);
switch (v.getId()) {
case R.id.btnStart:
startService(intent); //开启服务
break;
case R.id.btnStop:
stopService(intent); //停止服务
break;
}
}
};
btnStart.setOnClickListener(ocl);
btnStop.setOnClickListener(ocl);
}
}
MusicService.Java(实现背景音乐播放功效)
package com.example.zc.myfirstapplication;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class MusicService extends Service{
//为日志工具设置标签
private static String TAG = "MusicService";
//定义音乐播放器变量
private MediaPlayer mPlayer;
//该服务不存在需要被创建时被调用,不管startService()还是bindService()全部会开启时调用该方法
@Override
public void onCreate() {
mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.music);
//设置能够反复播放
mPlayer.setLooping(true);
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "开始播放音乐"
, Toast.LENGTH_SHORT).show();
Log.e(TAG, "MusicService onStart()");
mPlayer.start();
super.onStart(intent, startId);
}
@Override
public void onDestroy() {
Toast.makeText(this, "停止播放音乐"
, Toast.LENGTH_SHORT).show();
Log.e(TAG, "MusicService onDestroy()");
mPlayer.stop();
super.onDestroy();
}
//其它对象经过bindService 方法通知该Service时该方法被调用
@Override
public IBinder onBind(Intent intent) {
Toast.makeText(this, "MusicService onBind()"
, Toast.LENGTH_SHORT).show();
Log.e(TAG, "MusicService onBind()");
mPlayer.start();
return null;
}
//其它对象经过unbindService方法通知该Service时该方法被调用
@Override
public boolean onUnbind(Intent intent) {
Toast.makeText(this, "MusicService onUnbind()"
, Toast.LENGTH_SHORT).show();
Log.e(TAG, "MusicService onUnbind()");
mPlayer.stop();
return super.onUnbind(intent);
}
}
6.2 输入和提交信息程序界面
输入和提交信息程序界面(activity_main)功效是输入人性别和身高信息,并提交信息。用户只有输入对应信息,点击“提交”按钮,才会计算出结果,不然,会出现“输入不正确”提醒信息,程序界面图6-2所表示。
图6-2 输入和提交信息程序界面
功效代码:
package com.example.zc.myfirstapplication;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity{
Button submit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
submit=(Button)findViewById(R.id.btnSubmit);
submit.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
User user=new User();
if("".equals(((EditText)findViewById
(R.id.edtStature)).getText().toString())){
Toast.makeText(MainActivity.this,
"输入不正确,请重新输入!",Toast.LENGTH_SHORT).show();
return;
}
int stature=Integer.parseInt(((EditText)findViewById
(R.id.edtStature)).getText().toString());
RadioGroup sex=(RadioGroup)findViewById(R.id.ragSex);
for (int i=0;i<sex.getChildCount();i++){
RadioButton r=(RadioButton)sex.getChildAt(i);
if(r.isChecked()) {
user.setSex(r.getText().toString());
break;
}
}
user.setStature(stature);
Bundle bundle=new Bundle();
bundle.putSerializable("user",user);
Intent intent=new Intent(MainActivity.this
,ResultActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}
6.3 显示计算结果程序界面
显示计算结果程序界面(activity_result)功效是依据提交过来信息来进行进行计算,并显示出计算结果和部分口号,程序界面图6-3所表示。
图6-3 显示计算结果程序界面
功效代码:
package com.example.zc.myfirstapplication;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class ResultActivity extends AppCompatActivity
{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
TextView sex=(TextView)findViewById(R.id.tvSex);
TextView stature=(TextView)findViewById(R.id.tvStature);
TextView weight=(TextView)findViewById(R.id.tvWeight);
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
User user=(User)bundle.getSerializable("user");
sex.setText("您性别是:"+user.getSex()+"性");
stature.setText("您身高是:"+user.getStature()+"cm");
weight.setText("标准体重为:"+getWeight
(user.getSex(),user.getStature())+"千克");
}
private String getWeight(String sex,float stature)
{
String weight="";
NumberFormat format=new DecimalFormat();
if(sex.equals("男"))
{
weight=format.format((stature-80)*0.7);
}
else
{
weight=format.format((stature-70)*0.6);
}
return weight;
}
}
7 总结
对于这次课程设计,我感受是不难,但也不简单,为何这么说呢。不难,是因为课程设计要求不高,不少于300行代码,应用最少由两个Activity类组成,最少需要有一个Service组件和和数据存取相关功效就能够了;不简单,是因为相关用Android Studio作为开发软件案例和书籍实在是极少,所以还是有点难度。
从确定课程设计内容,到程序设计计划,查找相关资料,具体实施等,在整个过程中,花了不少时间和精力,而且还碰到部分问题。首先,是在用户登录功效上,我想利用Intent隐式方法打开,但一开始怎么也行不通,以后发觉在xml文件中总缺乏Intent隐式方法代码。接着,我想使用service实现一个背景音乐功效,不过,在我所借书籍中相关service内容原来就少,更不用说相关service案例了。所以,我在网上寻求部分有用service实现一个背景音乐功效关资料,然后选择了一个比较靠谱点代码,挪用到用户登录界面上来。经过一番修改和调试,成功实现了背景音乐播放功效。
即使这程序挺简单,不过,能够从各个界面布局和设计看出,我还是花不少心思和精力。不管怎么样,全部毕竟是自己亲手制作,即使有点缺点,不过,当把它完成那一刻,我还挺快乐。
总而言之,经过这次课程设计,我不仅巩固了所学到知识,而且还学到了部分新知识,能够说是受益匪浅。
参考文件
[1] 李刚.疯狂Android讲义(第三版).北京:电子工业出版社..
[2] 丁伟雄.宋晓光.李伟平.Android程序设计和应用.北京:清华大学出版社..
[3] 毋建军.徐振东.林瀚.Android应用开发案例教程.北京:清华大学出版社..
[4] 胡文.金雪松.陈铭.Android嵌入式系统程序开发.北京:机械工业出版社..
展开阅读全文