摘要:课题名称:体重档案APP小组小组成员:xxxxxxxxx目录1概述31.1项目背景31.2系统目标32需求分析42.1系统功能分析42.1.1数据保存42.1.,Android应用源码和设计方案:体重管理APP 安卓程序源代码下载

大家好,如果无论兄弟们还对Android应用源码和设计方法:体重管理APP(含答辩示范PPT)不太了解,没有关系,今天就由本站为大家同享Android应用源码和设计方法:体重管理APP(含答辩示范PPT)的姿势,包括的难题都会给大家解析到,还望可以化解大家的难题,下面大家就开始吧!</p>n<p>课题名称:体重档案APP小组</p>n<p>小组成员:xxx xxx xxx</p>n<p>目录</p>n<p>1概述31.1项目背景31.2体系目标32需求解析42.1体系功能解析42.1.1数据保存42.1.2图标功能42.1.3诊断功能52.1.4更多功能52.2体系平台62.2.1Android开发环境说明62.2.2Android开发平台搭建63概要设计83.1总体设计83.1.1体系总体结构83.1.2子体系体系接口93.2数据库设计93.2.1数据库E-R图设计93.2.2数据表设计103.3相关技术说明103.3.1Activity ……103.3.2Intent ……113.3.3Service ……113.3.4Layout布局……123.3.5控件说明……134函数设计154.1函数列表154.2函数调用图1错误!未定义书签。5体系实现175.1设计经过175.1.1 “图表”界面内功能的实现……175.1.2 “数据”界面内各功能的实施……185.1.3“诊断”界面内各功能的实现……205.1.4 “更多”界面内各功能的实现……216运用说明226.1.1 体重档案软件在PC模拟环境下测试226.1.2 体重档案软件在Android手机下测试247项目拓展资料268作业具体分工</p>n<p>简介:</p>n<p>Window 操作体系的诞生成就了微软帝国,同时也造就了 PC 时代的繁盛, 然而如今,以 Android 和 iPhone 手机为代表的智能移动设备的发明和互联网云技术的兴起预示着移动互联网时代已经来临。</p>n<p>在这个互联网繁盛的时代,有一颗超新星,以它特殊性能优势和人性化的 UI 设计使它在短短的几年迅速的占领了智能移动设备的市场份额,它就是 Google 的 Android!这也意味着 Google 在移动互联网时代开始抢跑并领跑。</p>n<p>Android 是基于 Linux 平台完全开源的手机操作体系,同时开发语言为 Java。在本次课程设计中大家组选择了以 Android 为平台的手机体重记录app来作为我的课程设计,选择体重记录app不仅可以提高技术,同时也很实用,为大众时刻了解自身的体重和健壮带来了方便。也有利于提高自己的气质,健壮生活</p>n<p>决定因素词:</p>n<p>移动互联网时代 Android 体重记录app 健壮生活</p>n<p>概述</p>n<p>项目背景</p>n<p>胖是历来已久的一种多影响引起的代谢障碍疾病。早在1948年,全球卫生组织已将“肥胖”列入疾病名单。随着全球经济的快速进步,移动互联网的兴起、人民生活水平的进步,加上不合理的膳食结构、不良生活方法等出现,肥胖已成为公共卫生焦点难题。随着大众对肥胖危害的认知度进步,减重的治疗方式也在历久弥新,健壮生活,控制体重已日益成为大众所重视的难题。和此同时,大众审美意识的动向也促使了大众对自身体重的高度重视。随着移动互联网和智能手机的进步和不断提高,当今市场上已出现各种五花八门的健壮记录APP,几乎全部人的智能手机上都会有一款检测身体状况的APP,这些APP可以很好的帮助大众了解自身身体状况,及时做出调整。</p>n<p>体系目标</p>n<p>根据用户对该类软件的运用标准,大家组制定了如下体系目标:</p>n<p>操作简单、易于掌握、界面简洁清爽。</p>n<p>方便对屏幕进行触摸操作。</p>n<p>要包含对身体状况的评估,并记录长时刻内的数据。</p>n<p>App占用内存不应过大。</p>n<p>体系运行稳定,不能和手机固有的软件冲突。</p>n<p>保密性好,安全可靠。</p>n<p>需求解析</p>n<p>体系功能解析</p>n<p>该体系具有的功能有:</p>n<p>可以长时刻保存体重状况</p>n<p>根据数据显示出散点图,直观反映体重变化情况</p>n<p>可以查找出某一天的数据</p>n<p>可以根据输入的身高、体重、性别判断出身体状况</p>n<p>给出合理饮食提议</p>n<p>说明一些和身高体重相关的指标</p>n<p>数据保存</p>n<p>建立了壹个数据库用来记录长期的数据。如图:</p>n<p>图表功能</p>n<p>通过图表直观的反映出体重变化情况。如图:</p>n<p>诊断功能</p>n<p>可以根据输入的身高、体重、性别判断出身体状况,如图:</p>n<p>更多功能</p>n<p>个人信息的配置和体系功能的配置等,如图:</p>n<p>体系平台</p>n<p>Android开发环境说明</p>n<p>Android平台运用Java编程语言来开发应用程序,而Android提供了对Java的核心支持。思考到Java虚拟机的执行效率和占用资源情况,Google从头设计了Java的编译器,命名为Dalvik。Dalvik是经过优化的Java编译器,允许在有限的内存中同时运行多个虚拟机的实例,而且每壹个Dalvik应用小编认为是一个独立的Linux进程执行,独立的进程可以防止在虚拟机崩溃的时候全部程序都被关闭。</p>n<p>项目的开发在Eclipse环境中进行,由于进行的是Android应用程序的开发,</p>n<p>由以升分析可知,Android平台的搭建需要Android SDK、Java SDK、和AVD三个软件。</p>n<p>Android开发平台搭建</p>n<p>①Java JDK的配置;(选择适合自己PC配置的版本)</p>n<p>②下载完成后,开始配置</p>n<p>③配置java的环境变量</p>n<p>(1)新建变量名为”JAVA_HOME”,变量值为JDK的配置途径</p>n<p>(2)编辑(若变量中没有则新建)变量名为”PATH”,在原变量名字后加上“;%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin”</p>n<p>(3)编辑(若变量中没有则新建)变量名为”CLASSPATH”,变量值“.;%JAVA_HOME%\\lib;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\lib\\tools.jar”</p>n<p>④确认环境配置是否正确</p>n<p>⑤Androidstudio的下载,链接:http://tools.android-studio.org/。</p>n<p>⑥下载完成后开始配置</p>n<p>概要设计</p>n<p>总体设计</p>n<p>体系总体结构</p>n<p>在这里说明体系的总体结构流程图如下图所示。</p>n<p>子体系体系接口</p>n<p>数据库设计</p>n<p>数据库E-R图设计</p>n<p>数据库的概念设计,即利用数据模型进行概念数据库的玩法设计。根据体重档案体系的需求,设计出下面内容的实体-关系模型(E-R)图如图。</p>n<p>性别</p>n<p>体重</p>n<p>身高</p>n<p>生日</p>n<p>用户</p>n<p>计算</p>n<p>身体状况</p>n<p>BMI</p>n<p>BMR</p>n<p>数据表设计</p>n<p>数据库的逻辑设计,即把概念设计得到的概念数据库玩法变为逻辑数据玩法,它依赖于DBMS。根据体重档案体系的需求解析及数据库的概念设计,建立数据库了info_db。</p>n<p>建库语句:create database info_db;</p>n<p>用户信息表(usertbl)</p>n<p>列名</p>n<p>数据类型</p>n<p>是否允许为空</p>n<p>说明</p>n<p>birth</p>n<p>date</p>n<p>是</p>n<p>出身日期</p>n<p>weight</p>n<p>float</p>n<p>是</p>n<p>体重</p>n<p>height</p>n<p>float</p>n<p>是</p>n<p>身高</p>n<p>sex</p>n<p>bool</p>n<p>否</p>n<p>性别</p>n<p>表3.5 身体状况信息表(healtbl)</p>n<p>列名</p>n<p>数据类型</p>n<p>是否允许为空</p>n<p>说明</p>n<p>BMI</p>n<p>float</p>n<p>否</p>n<p>BMI值</p>n<p>BMR</p>n<p>float</p>n<p>是</p>n<p>BMR值</p>n<p>相关技术说明</p>n<p>Activity</p>n<p>在Android应用程序中,壹个活动主题Activity通常就一个单独的界面。每壹个界面都被实现为壹个独立的类,而且从Activity基类中继承而来,Activity将会显示由空间组成的用户接口,并对事件做出响应。大多数的应用都是由多个Activity显示组成。</p>n<p>简单的说,Activity代表壹个用户所能看到的界面,主要用于处理应用程序的整体性职业,例如,监听体系事件如按键事件、触摸屏事件等,为用户显示指定的View,启动其他Activity等。全部应用的Activity都继承于android.app.Activity类,该类是Android提供的基层类,其他的Activity继承该父类后,通过父类的方式实现各种功能,这种设计在其他领域也较为常见。</p>n<p>3.3.2 Intent</p>n<p>Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent,Intent提供了一种通用的消息体系,它允许在你的应用程序和其他的应用程序间传递Intent来执行动作和产生时刻。运用Intent可以激活Android应用的三个核心组件:活动主题、服务和广播接收器。</p>n<p>Intent可以划分为显示意图和隐式意图。显示意图调用Intent,SetClass方式明确制定了组件名的Intent为显示意图,显示意图明确制定了Intent应该传递给那个组件,在同壹个应用内部运用的。隐式意图没有明确指定组件名的Intent为隐式意图,Android体系会根据隐式意图中配置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。</p>n<p>Intent负责对应用中一次操作的动作、动作涉及数据和附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着壹个媒体中介的影响,专门提供组件互相调用的相关信息,实现调用者和被调用者之间的结构。</p>n<p>3.3.3 Service</p>n<p>如果把Activity比喻为前台程序,那么Service就是后台程序,Service的整个生活周期都只会在后台执行。Service跟 Activity一样也由Intent调用,由于Service在后台运行,因此没有界面,用来处理耗时相对长,而且Service不一个单独的进程,也不一个单独的线程。Service有两种类型:</p>n<p>本地服务(Local Service):用于应用程序内部;</p>n<p>超距离服务(Remote Sercie):用于android体系内部的应用程序之间。</p>n<p>前者用于实现应用程序自己的一些耗时任务,比如查询更新信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户尝试相对好。后者可被其他应用程序复用,例如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。</p>n<p>Service的生活周期,Service有startService和bindService两种启动Service方式,每种方式Service的生活周期是不一样的。</p>n<p>通过startService()——Service会故事 onCreate –>onStartCommand(),stopService的时候直接onDestroy,如果是调用者直接退出而没有调用stopService的话,Service会一直在后台运行,下次调用者再起来仍然可以stopService;</p>n<p>通过bindService()——Service只会运行onCreate()–>onBind() 这个时候调用者和Service绑定在一起 unbindService的时候onUnbind() –>onDestroyed(),调用者退出了,Srevice就会调用onUnbind() –>onDestroyed()。在这里需要注意的是Service的onCreate的方式只会被调用一次,就是你无论几许次的startService又 bindService,Service只被创建一次。如果先是bind了,那么start的时候就直接运行Service的onStart方式,如果先是start,那么bind的时候就直接运行onBind方式。如果你先bind上了,就stop不掉了,只能先UnbindService, 再StopService,因此是先start还是先bind行为是有不同差异的。</p>n<p>3.3.4 Layout布局</p>n<p>相对布局 Relative:里面可以放多个控件,允许子元素指定它们相对于父元素或其他元素的位置(通过ID指定)。因此你可以按正确的顺序对齐两个元素,或者让壹个视图在另外壹个下面,居于屏幕中间,左边的中间,等等。元素通过给定顺序来绘制,因此如果第壹个元素在屏幕中间,其他以它对齐的元素都会对齐到屏幕中间。同样,由于这个顺序,如果运用XML来指定这个布局,你将引用的元素(为了定位其它视图对象)必须被列在XML文件中,在你通过引用ID从其他视图中引用它之前。其中一些特性直接由元素支持,另外一些由它的LayoutParams成员变量支持(为全部这个屏幕中的元素子类化RelativeLayout,由于全部元素都是RelativeLayout父对象的子元素)。已定义的相对布局RelativeLayout参数是:width,height,below,alignTop,toLeft以及</p>n<p>padding[Bottom|Left|Right|Top]和margin[Bottom|Left|Right|Top]。注意其中一些参数明确是相对于其他元素的布局位置,因此它们的数值必须是你的相对位置元素的ID。</p>n<p>线性布局 LinearLayout:线性布局是所用布局中最常用的方法其中一个,RadioGroup, TabWidget,TableLayout,TableRow,ZoomControls类的父类。LinearLayout可以让它的子元素垂直或水平的方法排成一行(不配置路线的时候默认按照垂直路线排列)。LinearLayout以你为它配置的垂直或水平的属性值,来排列全部的子元素。全部的子元素都被堆放在其它元素之后,因此壹个垂直列表的每一行只会有壹个元素,而不管他们有多宽,而壹个水平列表将会只有壹个行高(高度为顶尖子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对壹个元素的右对齐、中间对齐或者左对齐)。</p>n<p>LinearLayout还支持为单独的子元素指定weight 。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在壹个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定壹个weight 值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。</p>n<p>控件说明</p>n<p>1、TextView——文本控件,可以用它来显示文字,就像壹个标签一样,对TextView是如何配置显示的文本,如何配置字体的大致,字体的颜色,字体的样式。TextView包含下面内容子类:Button, CheckedTextView,Chronometer,DigitalClock,EditText。</p>n<p>android:id——控件的标识符</p>n<p>android:layout_width——配置控件的宽度</p>n<p>android:layout_height——配置控件的高度</p>n<p>android:layout_marginTop——配置文本的上外边距</p>n<p>android:paddingLeft——配置元素左内边距</p>n<p>2、Button——按钮控件,在button内部可以放置内容,比如文本或图像。<button>和</button>标签之间的全部内容都是按钮的内容,其中包括任何可接受的正文内容,比如文本或或多媒体。例如,大家可以在按钮中包括了壹个图像和相关的文本,用它们在按钮中创建壹个吸引人的标记图像。不过button禁止运用的元素是图像映射,由于它对鼠标和键盘敏感的动作会干扰表单按钮的行为。下面是Button的部分属性:</p>n<p>android:id——控件的标识符</p>n<p>android:layout_width——配置按钮的宽度</p>n<p>android:layout_height——配置按钮的高度</p>n<p>android:textSize——配置按钮里文字的大致</p>n<p>android:layout_marginTop——配置按钮的上外边距</p>n<p>android:text——配置按钮中的文字</p>n<p>android:visibility——配置按钮里的元素是否可见</p>n<p>3、EditText——文本编辑框,TextView的直接子类,因此EditText会继成父类TextView的一些方式。在布局中配置EditText也需同时配置壹个Button,这样可以在代码中监听Button的事件,以便获取当前在EditView中输入的内容而且显示出来。在EditView可以限制输入的字符串类型。下面是EditText的部分属性:</p>n<p>android:id——控件的标识符</p>n<p>android:layout_width——配置输入框的宽度</p>n<p>android:layout_height——配置输入框的高度</p>n<p>android:layout_weight——配置输入框占父控件的比例</p>n<p>android:inputType——配置输入框内的字符串类型</p>n<p>android:hint——配置在输入框输入内容前默认的文字</p>n<p>android:id——配置图片的标识符</p>n<p>android:layout_width——配置图片的宽度</p>n<p>android:layout_height——配置图片的高度</p>n<p>android:visibility——配置图片是否可见性</p>n<p>函数设计</p>n<p>函数列表</p>n<p>返回类型</p>n<p>方 法</p>n<p>简 述</p>n<p>boolean</p>n<p>clipRect (int left,int top,int,right,int,bottom)</p>n<p>裁剪壹个矩形区域</p>n<p>SetStorkeWidtg(float width)</p>n<p>配置笔刷的宽度</p>n<p>onKeyDown(int keyCode, KeyEvent event)</p>n<p>点击后触发事件</p>n<p>int</p>n<p>getAudioSessionId()</p>n<p>返回体重的会话ID</p>n<p>getCurrentPosition()</p>n<p>取得当前显示的位置点</p>n<p>getDuration()</p>n<p>取得文件的长度</p>n<p style=\"text-align:center;\"></p>n<p>static WeightMaker</p>n<p>create(Context context, int resid)</p>n<p>从指定的源id中创建壹个WeightMaker对象</p>n<p>create(Context context, Uri uri)</p>n<p>从指定的Uri中创建壹个WeightMaker对象</p>n<p>create(Context context, Uri uri, SurfaceHolder holder)</p>n<p>从指定的Uri中创建壹个WeightMaker对象,并在Surfaceview中显示</p>n<p>void</p>n<p>DrawPoint(float[]pts,int offset,int count,Paint paint)</p>n<p>绘制多个点</p>n<p>addSettingItem(int layout_id, String title)</p>n<p>添加下拉选项</p>n<p>onDateSelected()</p>n<p>搜索前异步准备</p>n<p>release()</p>n<p>释放此WeightMaker对象占用的资源</p>n<p>reset()</p>n<p>重置WeightMaker到未初始化情形</p>n<p>seekTo(int msec)</p>n<p>寻找特定日期的体重</p>n<p>start()</p>n<p>开始计算</p>n<p>stop()</p>n<p>停止计算</p>n<p>4.2函数调用图</p>n<p>体系实现</p>n<p>设计开发经过</p>n<p>“图表”界面内功能的实现</p>n<p>页面的设计</p>n<p>整体采用线性布局(LinearLayout ),而且有用作图的的类函数来实现曲线的绘制。</p>n<p>主要代码具体如下:</p>n<p>public static interface OnChartModeChangeListener {</p>n<p>public void onChartModeChanged(int chartmode);</p>n<p>}</p>n<p>public static void initialize(Context context) {</p>n<p>mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);</p>n<p>}</p>n<p>public static void setOnChartModeChangeListener(OnChartModeChangeListener listener) {</p>n<p>mChartModeChangeListener = listener;</p>n<p>}</p>n<p>public static boolean isFirstStart() {</p>n<p>return mSharedPreferences.getBoolean(CONFIG_FIRST_START,true);</p>n<p>}</p>n<p>“数据”界面内各功能的实施</p>n<p>该界面主要功能为数据的添加、删减、和查找。</p>n<p>主要的代码实现如下:</p>n<p>//查找</p>n<p>protected void onCreate(Bundle savedInstanceState) {</p>n<p>super.onCreate(savedInstanceState);</p>n<p>setContentView(R.layout.activity_data);</p>n<p>mDataSummary = (LinearLayout)findViewById(R.id.DataSummary);</p>n<p>mCondition = getIntent().getStringExtra(“Condition”);</p>n<p>if (mCondition != null && !””.equals(mCondition)) {</p>n<p>getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg));</p>n<p>getActionBar().setTitle(getString(R.string.activity_title_search_result));</p>n<p>mDataSummary.setVisibility(View.GONE);</p>n<p>}</p>n<p>mTextContinuousDays = (TextView)findViewById(R.id.TextContinuousDays);</p>n<p>mTextReduceWeek = (TextView)findViewById(R.id.TextReduceWeek);</p>n<p>mTextReduceMonth = (TextView)findViewById(R.id.TextReduceMonth);</p>n<p>updateDataSummary();</p>n<p>mWeightListView = (ListView)findViewById(R.id.WeightDataListView);</p>n<p>mWeightDataAdapter = new WeightDataAdapter(this,mCondition);</p>n<p>mWeightListView.setAdapter(mWeightDataAdapter);</p>n<p>registerForContextMenu(mWeightListView);</p>n<p>OnItemLongClickListener longListener = new OnItemLongClickListener() {</p>n<p>public boolean onItemLongClick(AdapterView<?>parent, View view,int position, long id) {</p>n<p>mSelectedPosition = position;</p>n<p>mWeightListView.showContextMenu();</p>n<p>return true;</p>n<p>}</p>n<p>};</p>n<p>mWeightListView.setOnItemLongClickListener(longListener);</p>n<p>}</p>n<p>添加和删除:protected void updateDataSummary() {mTextContinuousDays.setText(WeightDBHelper.getContinuousDays()+“天”);Double reduced = 0.0;reduced = WeightDBHelper.getWeightReduceThisWeek();if (reduced >0) {mTextReduceWeek.setText(“+” + new DecimalFormat(“0.00”).format(reduced) + ” kg”);}else {mTextReduceWeek.setText(reduced + ” kg”);}reduced = WeightDBHelper.getWeightReduceThisMonth();if (reduced >0) {mTextReduceMonth.setText(“+” + new DecimalFormat(“0.00”).format(reduced) + ” kg”);}else {mTextReduceMonth.setText(reduced + ” kg”);}}</p>n<p>“诊断”界面内各功能的实现</p>n<p>public void onClick(View v) {</p>n<p>Intent intent = null;</p>n<p>switch (v.getId()) {</p>n<p>case R.id.MoreAccount:</p>n<p>intent = new Intent(this,PersonalActivity.class);</p>n<p>startActivity(intent);</p>n<p>break;</p>n<p>case R.id.MoreBackupOrRestore:</p>n<p>break;</p>n<p>case R.id.MoreSetting:</p>n<p>intent = new Intent(this,SettingActivity.class);</p>n<p>startActivity(intent);</p>n<p>break;</p>n<p>case R.id.MoreWhatBMI:</p>n<p>intent = new Intent(this,WhatActivity.class);</p>n<p>intent.putExtra(“What”, “BMI”);</p>n<p>startActivity(intent);</p>n<p>break;</p>n<p>case R.id.MoreWhatBMR:</p>n<p>intent = new Intent(this,WhatActivity.class);</p>n<p>intent.putExtra(“What”, “BMR”);</p>n<p>startActivity(intent);</p>n<p>break;</p>n<p>case R.id.MoreAboutUs:</p>n<p>intent = new Intent(this,AboutActivity.class);</p>n<p>startActivity(intent);</p>n<p>break;</p>n<p>default:</p>n<p>return;</p>n<p>}</p>n<p>}</p>n<p>“更多”界面内各功能的实现</p>n<p>该界面主要实现各个页面间的跳转,相对简单,就不附源代码了。</p>n<p>测试说明</p>n<p>体重档案软件在PC模拟环境下测试</p>n<p>软件编写完成,对其进行测试,首先将手机体重档案体系在PC模拟环境下测试的方法,下面内容是对体系进行测试,在Android 的菜单栏中用鼠标点击运行按钮,在弹出的窗口中选择”Run As”→”Android Application”配置该应用程序到Android 模拟器并启动它,如图4所示:</p>n<p>等待模拟器启动完成软件的配置,接着单击图表,就会显示近期的体重变化情况,PC模拟测试结局如图所示:</p>n<p>通过数据按钮可添加当下的体重,和查询历史体重,如图所示</p>n<p>通过诊断按钮可查询身体的状况,如图所示</p>n<p>在更多的界面里可以配置个人信息、体系配置等,如图所示:</p>n<p>体重档案软件在Android手机下测试</p>n<p>该测试说明开发的体重档案软件可以独立在Android设备运行,满足设计标准的独立性,通过观察其所占内存,可以发现,体重档案软件特别小,获取的数据的准确性很高,实时性;满足设计标准。</p>n<p>项目拓展资料</p>n<p>经过这几周的代码及开发文档书写,课程设计也随之进入收尾阶段,体重档案体系的基本功能也逐个完成了。</p>n<p>在这次课程设计中,经过和队友的协同配合,通过进修和思索并操作,加强了大家的团队协作觉悟,而且进步了大家的进修水平,使大家对Google Android开发及Java等相关的技术初步了解,同时,由于大家做的是移动软件的开发,从起初资料的查询,让大家在有限的时刻内丰盛了对Android开发的认知,积累了学说上的姿势。需求解析,可行性解析,再到后来的Java配置环境,书写代码及其调试,让大家作为用户对该类体系的需求和软件运行的环境有了一定了解。将之前学过的数据库姿势跟Java技术结合在一起,学说联系实际,在操作中锻炼了大家解析处理难题的能力并激发了这方面的兴趣。</p>n<p>这次课程设计的经过中,还让大家巩固了并加深了对软件工程这门学科的认识,尤其让我在运用工程流程的各个阶段有了进一步的了解,并相对独立地完成各个阶段的任务。通过这次设计还让大家明白了需求解析和总体设计是体系真正开发的决定因素,它规划出体系的大致模块和业务接口,流程转换以及模块之间的关系。如果总体设计规划不科学,将会导致之后的详细设计职业出现冗余,目标不明确甚至失去路线。虽然在开发经过中受水平和时刻所限,在设计中还有些欠缺或思考不周全的地方,但这次课程设计的故事将对大家今后的进修和职业都将产生重大意义。</p>n<p>作业分工</p>n<p>xx:代码+world+ppt制作</p>n<p>xxx:app设计+ppt制作</p>n<p>2体重档案App设计</p>n<p>用户研究</p>n<p>各年龄段都有用户</p>n<p>体重高于正常标准,而且关注自身情况想要有所改变的人群</p>n<p>B.体重较为正常,然而想要保持体形的人群;</p>n<p>C.关心自身身体情况的。</p>n<p>(二)主要用户定位</p>n<p>用户目标:希望能再APP上清楚的了解自己身体近期的体重变化,并能通过体重曲线图更直观地反映,清楚自己所需要达到的正常值。</p>n<p>尝试目标:运用户能制定更合理适合自身的运动规划,了解自身体重的近期变化情况,逐步增强自负。</p>n<p>最终目标:督促体重超标人群完成健身目标,增强信心,身体更加健壮。</p>n<p>人生目标:表达了对美妙生活的憧憬和给往</p>n<p>概要设计</p>n<p>需求定义</p>n<p>前景综述运用户对自身体重有即时的了解,更加清楚自己身体的健壮状况。采取相应的措施改善现状。(2)人物人物的期望对自身体重有更多的了解;能随时直观、方便地,了解自身体重变化情况;能了解当前体重和正常值的差距;登录、登记时刻,体重信息经过简单,管理方便。</p>n<p>情境场景剧本小K是个体重超标的孩子,小的时候不以为意,可随着年龄的增长,渐渐感受到了同学们的异样眼观,这让他的自尊心受到了伤害。因此他给自己定下了一系列的减肥规划。壹个阳光明媚的早晨,小K像往常一样来到了操场上开始自己的晨练。他打开了手机上的体重档案,配置好今天的日期,以及当前体重。接着开始了新的一天的锻炼。晨练结束后看了一眼体重档案上显示的步数以及消耗的卡路里,满意地点了点头,去食堂简单地吃过早饭准备上课。下午下课之后,小K和兄弟约好一起去健身房健身。一套组合下来让他大汗淋漓,洗过澡之后习性性地去称量一下体重,身体虽然有些虚弱感,但脸上渐渐浮现出了满意的笑容,没错,自己体重今天又降低了一些,距离自己目标的正常值又近了一步。并将当前体重登记到体重档案,看了一眼自己近期的体重变化曲线,他更加清楚自己是应该加强锻炼量还是适当休息调理一下,毕竟物极必反太大的运动量也不一定是好事。看着逐渐体重逐渐降低的曲线,信心也在逐步进步,他坚信自己总有一天能变成正常身材,而且身体越来越健壮。</p>n<p>确定需求</p>n<p>在主页注册和登陆用户账号;</p>n<p>在“图表栏”更直观反映自身体重的近期变化;</p>n<p>在“诊断”了解自身和正常值得差距;</p>n<p>2.框架定义</p>n<p>(1)输入法:键盘、触屏点击。</p>n<p>(2)数据和功能元素:界面中主要展现给用户的数据和功能。</p>n<p>A.主要数据元素:</p>n<p>主页——用户名,密码;</p>n<p>图表——体重曲线:x轴日期,y轴体重;</p>n<p>数据——日期,体重;</p>n<p>诊断——当前身体指标,诊断结局;</p>n<p>更多——健壮小常识;</p>n<p>B.主要功能元素:</p>n<p>对数据元素的操作及其在界面上的表达(比如需用控件、工具、位置等)。</p>n<p>满足主页需求的主要功能元素如下</p>n<p>在“用户”输入框中输入用户名;</p>n<p>在“密码”输入框中输入密码;</p>n<p>通过点击“登录”按钮进行登录。</p>n<p>满足体重档案需求的主要功能元素如下:</p>n<p>从首页点击数据进入数据列表界面,;</p>n<p>从数据列表界面点击某一类别数据进行对时刻以及体重的登记;</p>n<p>(3)决定功能组及层次(顺序)</p>n<p>把数据和功能元素按需求之间的关联程度、相互之间的相对关系等,在屏幕(页面)中利用网络、标签页、组框等方法进行分组、聚合并组织好功能组之间的层次关系。</p>n<p>(4)勾画大致的交互框架</p>n<p>根据需求、数据信息元素和功能元素归纳结局以及功能组和层次划分,勾画大致的交互框架草图。</p>n<p>构建决定因素线路场景剧本</p>n<p>第二天,小K依旧来到操场上进行晨练,他在“更多”里了解到了一些新的健壮小常识,于是改进了锻炼方法,同时饮食方面也更加注重合理组合了,这对他起到了事半功倍的效果。看一眼“图表”里他近期体重变化情况,发现最近体重变化过快,他并不急于求成,了解这样下去会对身体造成负担,这并不是件好事,于是决定先稳固下现阶段身体情况再开始下个阶段的锻炼。在“诊断”里输入自己现在的体重,并和正常值作对比,一系列规划也渐渐在他脑海中成型,深深地吸了一口气目光坚决地看了一眼操场上还在晨练的大众,转身离开了。</p>n<p>3答辩PPT</p>n<p>安卓源码(带报告)39</p>n<p>安卓源码(带报告) · 目录</p>n<p>上一篇安卓APP源码和设计报告——Android小程序超级小猫下一篇[开题报告+文献综述+论文+源码]基于蓝牙技术的 Android 聊天软件