




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉工商学院信息工程学院项目名称: 日程管理 学生姓名: 崔倍倍 学 号: 13406057 班 级: 13物联本2 指导教师: 李凤麟 2016年6月18日摘 要随着科技时代的发展变迁,人们的生活变得快捷便利,但是随之而来的是人们的生活方式和生活习惯也变的越来越丰富,每天需要做的事情逐渐增多,当我们忙于工作可能无暇顾及家庭,没有了合理的时间安排不仅使我们的生活变得慌乱,工作的效率也大打折扣。因此,该系统是结合日常生活安排的实际情况、以实际应用为开发背景、经过实际的需求分析、采用在PC端对Android开发环境的模拟技术而开发出来的基于Android系统的一个手机应用。本文运用软件工程原理和软件开发方法,对本应用进行了概要设计和详细设计。该应用操作简便、界面友好、灵活、实用、安全,可以满足不同类型的人们对个人日程的要求,尤其是在该应用中,用户之间交互性的实现更是对传统日程安排的一大突破。本文详细介绍了日程安排平台在Android系统上开发的设计背景,设计思路以及实现方法,着重说明了该应用的创新点、突破点、用户的体验要求和应用的实际运行情况。围绕该应用的实际使用情况来对该应用进行分析设计,对在开发的过程中采用数据流程图、ER图以及程序流程图进行了详细的说明。由于这是一个交互式的应用,用户可以在上面浏览、分享大家的时间安排心得、经验,与志同道合的朋友进行交流,使得该应用的开发对个人的时间管理有着很重要的意义。 关键词:android、软件工程、日程安排、交互性目录1 绪论11.1 选题背景及意义11.2 论文结构12 需求分析12.1 系统功能需求分析22.2 系统非功能需求分析22.3 系统数据分析32.4 数据字典33 系统设计33.1 概要设计33.2 数据概念模型与关系模型设计33.2.1 系统E-R图33.2.2 概念模型转换关系模型43.3 详细设计43.3.1 欢迎界面43.3.2 查询界面43.3.3 日程安排的主界面53.3.5 日程修改功能63.3.6 删除日程功能63.3.7 查看日程功能64 系统实现65 系统测试116 总结13参考文献15物联网应用开发课程设计1 绪论1.1 选题背景及意义时间管理是一项生活中必不可少项目,人们为了生活中的安排,经常弄得头昏眼花,而且导致工作、学习效率大打折扣,失去了时间的自主性,没有了合理的时间安排,事情繁忙的工作者就像迷航的船找不到灯塔在茫茫大海中飘荡,在这种情况下,日程管理APP顺应而生。与此同时,随着信息行业的飞速发展,Android系统在各个系统平台上的优势也日趋凸显。与传统的手机系统平台不同,Android系统采用开源的模式,使得很多人可以自行开发手机软件并共享,从而也就使得这个平台可以使用的用户更多;再者,Android系统反应速度快,操作更简单,这也使得该系统的应用可以得到更广泛的推广。在这种前提下,开发一种基于Android系统的物联网移动应用,对方便人们安排时间、提高时间利用质量有着非常重要的意义。1.2 论文结构本文首先续写了论文的摘要,对本文的设计目的并对整体的文章做了相应的描述,又通过绪论分别表达了选题的背景及意义,其次用需求分析写出该项目的设计需求,而后对系统功能需求和系统的非功能需求进行了详细的分析,使读者能了解该项目的功能及其优缺点,通过数据流图和数据字典将整个项目的使用方法客观的显示在用户的面前。然后分析了数据概念模型与关系模型设计分别用E-R途进行展示,并对系统的相应功能做了详细的设计,对该项目的每个功能进行了详细的说明,在系统实现部分对项目的代码进行了注释,将每段代码的作用进行了详细的阐述,系统测试部分将整个系统运行,对每个功能通过截图的方式展现,最后对本文的设计过程以及心得进行了详细的总结。2 需求分析需求分析的定义:所谓需求分析,是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,在软件工程当中的“需求分析”就是确定要计算机“做什么”,要达到什么样的效果。可以说需求分析是做系统之前必做的。在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后,他们才能够分析和寻求新系统的解决方法。需求分析阶段的任务是确定软件系统功能。在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤。但在近十年内,越来越多的人认识到,需求分析是整个过程中最关键的一个部分。假如在需求分析时分析者们未能正确地认识到顾客的需要的话,那么最后的软件实际上不可能达到顾客的需要,或者软件项目无法在规定的时间里完工。需求分析的原因:需求分析就是分析软件用户的需求是什么。如果投入大量的人力,物力、财力、时间,开发出的软件却没人要,那所有的投入都是徒劳。如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的(相信大家都有体会)。比如:用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件。当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,恨不得找块豆腐一头撞死。需求分析之所以重要,就因为他具有决策性、方向性、策略性的作用,他在软件开发的过程中具有举足轻重的地位,大家一定要对需求分析具有足够的重视。在一个大型软件系统的开发中,他的作用要远远大于程序设计需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求然后在此基础上确定新系统的功能。确定对系统的综合要求,虽然功能需求是对软件系统的一项基本需求,但却并不是唯一的需求,通常对软件系统有下述几方面的综合要求。1.功能需求2.性能需求3.可靠性和可用性需求4.出错处理需求5.接口需求6.约束7.逆向需求8.将来可能提出的要求需求分析需要用到如下工具:Rational Rose, PowerDoidsd, Enterprise Architect2.1 系统功能需求分析(1)添加功能:对将要完成的日程进行安排添加内容、时间、类型等。(2)查询功能:通过已经添加的日程内容、时间、类型查询相关的日程。(3)删除功能:删除不需要或者已经完成的日程安排。(4)修改功能:修改输入错误或者需要完善的日程。(5)查看功能:查看已经添加的日程安排。2.2 系统非功能需求分析(1) 性能需求:用户在使用时响应速度很有优势、结果精度更准确、运行时资源消耗量更低。(2) 可靠性需求:用户使用时故障可预测性较高。(3) 易用性需求:用户对于软件的适用能力很强。(4) 安全性需求:用户可以获得很多的授权,并有严格的私密保护。(4) 运行环境约束:软件系统运行环境不需要较高的配置便可实现。(5) 外部接口:待开发的功能适应多种类型的外部接口以及硬件设备。2.3 系统数据分析主界面查看日程新增日程修改日程删除日程过滤数据库是否被选中选择日程否是图2-1 系统数据流程图2.4 数据字典数据字典表达了数据和处理过程的关系。在SA方法中,处理过程的处理活动常常借助于判定表或判定树来描述。系统中的数据则借助数据字典来描述。数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果,在数据库设计中占有很重要的地位。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程、外部项等六个部分。3 系统设计3.1 概要设计首先设计了系统的欢迎界面,当用户通过欢迎界面进入主界面后,会显示出通过Listview适配器调取数据库里的内容的日程安排,该项目设置了上下文菜单和选项菜单,分别实现打开、删除、修改、添加和查询按钮的设置,点击需要的功能后会显示相应的布局界面以及会达到的界面效果。3.2 数据概念模型与关系模型设计3.2.1 系统E-R图图3-1 系统E-R图3.2.2 概念模型转换关系模型类型日期内容时间添加日程数据库查看日程内容时间日期类型图3-2 概念模型转换关系模型图3.3 详细设计3.3.1 欢迎界面欢迎界面以一个图片为背景添加了布局之后,对该布局的显示设置停留时间,到达几秒的停留效果后通过监听事件设置欢迎界面的跳转,使其跳转到下一个日程安排的显示界面。3.3.2 查询界面该系统的查询界面,首先添加了XML文件设置该界面的布局,在该布局中添加了Edittext控件用来显示查询的内容,而后在数句库中添加相应的查询代码,结合listview适配器显示查询到的整条数据,并单独显示在另一个界面。选择查询查询内容显示数据结束开始图3-3 查询流程图3.3.3 日程安排的主界面主界面用于显示所有的添加了数据内容,以列表的方式对用户进行呈现,当用户添加了日程就会在该页面显示已经添加的安排,在该页面还可以完成对日程任务的修改、删除和查看等功能。在该页面添加了上下文菜单对所要完成的功能进行操作。3.3.4 日程添加功能开始结束添加内容类型日期时间日程添加界面是由Eidttext、Spinner、时间选择控件等组成的界面,通过LieanLyout线性布局将这些控件组合到一起,在JAVA文件中添加各个控件的事件监听,并将所有控件中的输入内容连接到数据库,最后通过点击该界面的“添加”按钮保存输入的数据,将获取的内容保存到数据库,与此同时添加跳转的事件,在触发结束后完成页面的跳转,最终跳转到日程安排的主界面显示所有添加的日程安排数据。图3-4 日程添加流程图3.3.5 日程修改功能修改界面与添加界面类似,但是该界面是由对话框的方式呈献给用户的,也是在布局中添加了线性布局,并在该布局中设置了四个Eidttext控件,与添加界面不同的是该界面的文本中是连接数据库内容并获取其中的内容到相应的位置,用户可选择需要修改的部分直接修改,最后触发修改按钮后,在数据库中更新了修改后的数据,并在修改结束后跳转到主界面显示修改后的信息。开始完成选择修改数据输入修改内容图3-5 日程修改数据流程图3.3.6 删除日程功能删除界面相对来说简单很多,只需在主界面选择要删除的数据,并通过上下文菜单长按那条数据,在显示删除选项后,选择删除,该条数据就会从连接的数据表中被删除,同时在主界面也会去掉该条数据。3.3.7 查看日程功能查看功能是为用户提供日程遗忘后的提醒功能,当用户想要查看某条类型的数据时,只需长按该条数据,选择打开,就会显示该任务的内容以及时间日期等信息。4 系统实现主界面的核心代码:protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);/setContentView(R.layout.activity_guan);mydb=new MydbOpen(context, user1.db,null,1);/参数showList(select * from userss);registerForContextMenu(getListView();getListView().setOnItemLongClickListener(new OnItemLongClickListener() SuppressWarnings(unchecked)Overridepublic boolean onItemLongClick(AdapterView views, View arg1,int p, long arg3) / TODO Auto-generated method stubHashMap hm=(HashMap)views.getItemAtPosition(p);uid= hm.get(uid).toString();return false;);public void showList(String sql) / TODO Auto-generated method stubSimpleAdapter adp=new SimpleAdapter(context, mydb.showUserList(sql,null),R.layout.activity_guan,new Stringuid,uname,uage,uq,us,new intR.id.uidtv,R.id.unametv,R.id.uagetv,R.id.uqtv,R.id.ustv); getListView().setAdapter(adp); public boolean onContextItemSelected(MenuItem item)if(item.getItemId()=itemId1)AlertDialog.Builder builder=new Builder(context);LayoutInflater inf=getLayoutInflater();updView=inf.inflate(R.layout.update, (ViewGroup)findViewById(R.id.updlayout);builder.setView(updView);builder.setTitle(修改用户);Cursor cur=mydb.getReadableDatabase().rawQuery(select * from userss where uid=?, new Stringuid);cur.moveToNext();String name=cur.getString(1);String age=cur.getString(2);String q=cur.getString(3);String s=cur.getString(4);unetupd=(EditText)updView.findViewById(R.id.unetupd);uagetupd=(EditText)updView.findViewById(R.id.uagetupd);uqpd=(EditText)updView.findViewById(R.id.uqpd);uspd=(EditText)updView.findViewById(R.id.uspd);unetupd.setText(name);uagetupd.setText(age);uqpd.setText(q);uspd.setText(s);builder.setPositiveButton(修改, new OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubunetupd=(EditText)updView.findViewById(R.id.unetupd);uagetupd=(EditText)updView.findViewById(R.id.uagetupd);String un=unetupd.getText().toString();String uage=uagetupd.getText().toString();String uq=uqpd.getText().toString();String us=uspd.getText().toString();String sql=update userss set uname=?,uage=?,uq=?,us=? where uid=?;mydb.executeSql(sql,new Stringun,uage,uq,us,uid);showList(select * from userss););builder.setNegativeButton(取消, null);builder.create().show();else if(item.getItemId() = itemId2)String sql=delete from userss where uid=?;mydb.executeSql(sql, new Stringuid);showList(select * from userss);else if(item.getItemId() = itemId3)AlertDialog.Builder builder=new Builder(context);LayoutInflater inf=getLayoutInflater();ukView=inf.inflate(R.layout.kai, (ViewGroup)findViewById(R.id.kailayout);builder.setView(ukView);builder.setTitle(查看日程);Cursor cur=mydb.getReadableDatabase().rawQuery(select * from userss where uid=?, new Stringuid);cur.moveToNext();String name=cur.getString(1);String age=cur.getString(2);String q=cur.getString(3);String s=cur.getString(4);TextView nei=(TextView)ukView.findViewById(R.id.te1);TextView nq=(TextView)ukView.findViewById(R.id.te2);TextView ns=(TextView)ukView.findViewById(R.id.te3);EditText ne=(EditText)ukView.findViewById(R.id.ed1);/nei.setText(name);nq.setText(q);ns.setText(s);ne.setText(name);builder.setPositiveButton(确定, new OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stub);builder.setNegativeButton(取消, null);builder.create().show(); return super.onContextItemSelected(item); public void onCreateContextMenu(ContextMenu menu,android.view.View v,ContextMenuInfo menuInfo) super.onCreateContextMenu(menu, v, menuInfo);menu.add(0,itemId1,menu.NONE,修改);menu.add(0,itemId2,menu.NONE,删除);menu.add(0,itemId3,menu.NONE,打开);/super.onCreateContextMenu(menu, v, menuInfo);public boolean onMenuItemSelected(int featureId,MenuItem item)if(item.getItemId() = 99)Intent i=new Intent(Guan.this,Qi.class);startActivity(i);else if(item.getItemId() = 98)AlertDialog.Builder builder=new Builder(context);LayoutInflater inf=getLayoutInflater();searchView=inf.inflate(R.layout.search, (ViewGroup)findViewById(R.id.searchlayout);builder.setView(searchView);builder.setTitle(查询用户);builder.setPositiveButton(查询, new OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubunet_search=(EditText)searchView.findViewById(R.id.unetsearch);String un=unet_search.getText().toString();String ua=unet_search.getText().toString();String uq=unet_search.getText().toString();String us=unet_search.getText().toString();String sql=select * from userss where uname like % + un + % or uage like % + ua + % or uq like % + uq + % or us like % + us + % ;showList(sql););builder.setNegativeButton(取消, null);builder.create().show();return super.onMenuItemSelected(featureId, item);Overridepublic boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present.menu.add(1,99,1,添加);menu.add(1,98,2,查询);return super.onCreateOptionsMenu(menu);5 系统测试添加功能测试如下:图5-1添加功能测试图查询功能测试如下:图5-2查询功能测试图图5-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论