武汉工商学院
信息工程学院
项目名称: 日程管理 学生姓名: 崔倍倍 学 号:班 级: 13物联本2 指导教师: 李凤麟
2016年6月18日
摘 要
随着科技时代的发展变迁,人们的生活变得快捷便利,但是随之而来的是人们的生活方式和生活习惯也变的越来越丰富,每天需要做的事情逐渐增多,当我们忙于工作可能无暇顾及家庭,没有了合理的时间安排不仅使我们的生活变得慌乱,工作的效率也大打折扣。
因此,该系统是结合日常生活安排的实际情况、以实际应用为开发背景、经过实际的需求分析、采用在PC端对Android开发环境的模拟技术而开发出来的基于Android系统的一个手机应用。本文运用软件工程原理和软件开发方法,对本应用进行了概要设计和详细设计。该应用操作简便、界面友好、灵活、实用、安全,可以满足不同类型的人们对个人日程的要求,尤其是在该应用中,用户之间交互性的实现更是对传统日程安排的一大突破。
本文详细介绍了日程安排平台在Android系统上开发的设计背景,设计思路以及实现方法,着重说明了该应用的创新点、突破点、用户的体验要求和应用的实际运行情况。围绕该应用的实际使用情况来对该应用进行分析设计,对在开发的过程中采用数据流程图、ER图以及程序流程图进行了详细的说明。
由于这是一个交互式的应用,用户可以在上面浏览、分享大家的时间安排心得、经验,与志同道合的朋友进行交流,使得该应用的开发对个人的时间管理有着很重要的意义。
关键词:android、软件工程、日程安排、交互性
目录
1 绪论 ............................................................................................................................................ 1
1.1 选题背景及意义 ....................................................................................................... 1
1.2 论文结构 ..................................................................................................................... 1
2 需求分析 .................................................................................................................................. 1
2.1 系统功能需求分析 .................................................................................................. 2
2.2 系统非功能需求分析 ............................................................................................. 2
2.3 系统数据分析 ............................................................................................................ 3
2.4 数据字典 ..................................................................................................................... 3
3 系统设计 .................................................................................................................................. 3
3.1 概要设计 ..................................................................................................................... 3
3.2 数据概念模型与关系模型设计 .......................................................................... 3
3.2.1 系统E-R图 .................................................................................................... 3
3.2.2 概念模型转换关系模型 ............................................................................ 4
3.3 详细设计 ..................................................................................................................... 4
3.3.1 欢迎界面 ........................................................................................................ 4
3.3.2 查询界面 ........................................................................................................ 4
3.3.3 日程安排的主界面 ..................................................................................... 5
3.3.5 日程修改功能 ............................................................................................... 6
3.3.6 删除日程功能 ............................................................................................... 6
3.3.7 查看日程功能 ............................................................................................... 6
4 系统实现 .................................................................................................................................. 6
5 系统测试 ................................................................................................................................ 11
6 总结 .......................................................................................................................................... 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 Architect
2.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.3 详细设计
3.3.1 欢迎界面 图3-2 概念模型转换关系模型图
欢迎界面以一个图片为背景添加了布局之后,对该布局的显示设置停留时间,到达几秒的停留效果后通过监听事件设置欢迎界面的跳转,使其跳转到下一个日程安排的显示界面。
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")
@Override
public boolean onItemLongClick(AdapterView views, View arg1,int p, long arg3) {
// TODO Auto-generated method stub
HashMap hm=(HashMap)views.getItemAtPosition(p);
uid= hm.get("uid").toString();
return false;
}
});
}
public void showList(String sql) {
// TODO Auto-generated method stub
SimpleAdapter adp=new SimpleAdapter(context, mydb.showUserList(sql,null),R.layout.activity_guan,new String[]{"uid","uname","uage","uq","us"},new
int[]{R.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 String[]{uid});
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() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
unetupd=(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
String[]{un,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 String[]{uid});
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 String[]{uid});
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() {
@Override
public 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() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
unet_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);} @Override
public 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-3查询功能结果测试图
修改功能测试如下:
图5-4修改功能测试图
删除功能测试如下:
图5-5删除功能测试图
查看功能测试如下:
图5-6查看功能测试图
6 总结
该系统的设计完成为人们日常生活的时间安排带来的极大的便利,通过使用该软件可以提高用户的工作效率,大大减少对时间的浪费和在时间管理上的缺陷。
一学期的结束课程设计的写作,让我从最初的茫然,到慢慢的
进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。遇到困难,我会觉得无从下手,不知从何写起;当困难解决了,我会觉得豁然开朗,思路打开了;而这一切都离不了我的指导老师。
刚选好主题的时候比较的茫然,不知从何下手,老师给我介绍了几本参考书,我下去之后到了学校图书馆、阅览室、书店等地方寻找资源,利用空闲时间上网搜集等各种方式方法,尽量使我的资料完整、精确、数量多,这有利于论文的撰写。然后,我认真对资料进行分类,理论的、实际的例子、图片等等相关内容整理出来,列出提纲,再与老师进行沟通。
通过这个毕业设计,使我对android系统的开发有一个更好的了解,在实际操作中我针对java里的android应用系统开发有了更深入的研究和学习,为以后工作和学习积累了宝贵的经验。
以上是我在本次毕业设计中的过程与体会,当然我知道我作的还是不够的,在以后的日子中,我还要再提高我的实际操作能力。
该项目还有很多不周到的地方需要完善,将会通过用户的实际体验及反馈不断加强该软件的功能,使用户可以更好的完成对时间的安排从而提高效率。
参考文献
[1]崔群法,王咏梅,李有军.Eclipse3.0从入门到精通[M]. 北京:电子工业出版社,2008.
[2]林建素,孟康健.Eclipse开发学习笔记[M]. 北京:电子工业出版社,2008.
[3]范春梅,王新刚,张卫华.XML基础教程[M]. 北京:人民邮电出版社,2009.
[4] Erik[美]. XML入门[M]. 译者:卓小涛. 北京:中国电力出版社,2001.
[5]梅尔斯T[美],奈克莫夫斯基 A[美].Java XML 编程指南[M]. 译者: 王辉等.电子工业出版 社,2001.
[6]麦克劳林 B[美]. JAVA与XML[M]. 北京:中国电力出版,2001.
[7]威尔顿P[美],科尔比J[美].SQL入门经典[M]. 北京:清华大学出版社,2006.
[8]王虔.Flash矢量设计[M].北京:清华大学出版社,2007.
[9]管贻生.Java高级实用编程[M].北京:清华大学出版社,2006.
物联网应用开发课程设计成绩评定
成绩评定: (百分制)
检查时间:
年 月 日 指导教师签字:
武汉工商学院
信息工程学院
项目名称: 日程管理 学生姓名: 崔倍倍 学 号:班 级: 13物联本2 指导教师: 李凤麟
2016年6月18日
摘 要
随着科技时代的发展变迁,人们的生活变得快捷便利,但是随之而来的是人们的生活方式和生活习惯也变的越来越丰富,每天需要做的事情逐渐增多,当我们忙于工作可能无暇顾及家庭,没有了合理的时间安排不仅使我们的生活变得慌乱,工作的效率也大打折扣。
因此,该系统是结合日常生活安排的实际情况、以实际应用为开发背景、经过实际的需求分析、采用在PC端对Android开发环境的模拟技术而开发出来的基于Android系统的一个手机应用。本文运用软件工程原理和软件开发方法,对本应用进行了概要设计和详细设计。该应用操作简便、界面友好、灵活、实用、安全,可以满足不同类型的人们对个人日程的要求,尤其是在该应用中,用户之间交互性的实现更是对传统日程安排的一大突破。
本文详细介绍了日程安排平台在Android系统上开发的设计背景,设计思路以及实现方法,着重说明了该应用的创新点、突破点、用户的体验要求和应用的实际运行情况。围绕该应用的实际使用情况来对该应用进行分析设计,对在开发的过程中采用数据流程图、ER图以及程序流程图进行了详细的说明。
由于这是一个交互式的应用,用户可以在上面浏览、分享大家的时间安排心得、经验,与志同道合的朋友进行交流,使得该应用的开发对个人的时间管理有着很重要的意义。
关键词:android、软件工程、日程安排、交互性
目录
1 绪论 ............................................................................................................................................ 1
1.1 选题背景及意义 ....................................................................................................... 1
1.2 论文结构 ..................................................................................................................... 1
2 需求分析 .................................................................................................................................. 1
2.1 系统功能需求分析 .................................................................................................. 2
2.2 系统非功能需求分析 ............................................................................................. 2
2.3 系统数据分析 ............................................................................................................ 3
2.4 数据字典 ..................................................................................................................... 3
3 系统设计 .................................................................................................................................. 3
3.1 概要设计 ..................................................................................................................... 3
3.2 数据概念模型与关系模型设计 .......................................................................... 3
3.2.1 系统E-R图 .................................................................................................... 3
3.2.2 概念模型转换关系模型 ............................................................................ 4
3.3 详细设计 ..................................................................................................................... 4
3.3.1 欢迎界面 ........................................................................................................ 4
3.3.2 查询界面 ........................................................................................................ 4
3.3.3 日程安排的主界面 ..................................................................................... 5
3.3.5 日程修改功能 ............................................................................................... 6
3.3.6 删除日程功能 ............................................................................................... 6
3.3.7 查看日程功能 ............................................................................................... 6
4 系统实现 .................................................................................................................................. 6
5 系统测试 ................................................................................................................................ 11
6 总结 .......................................................................................................................................... 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 Architect
2.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.3 详细设计
3.3.1 欢迎界面 图3-2 概念模型转换关系模型图
欢迎界面以一个图片为背景添加了布局之后,对该布局的显示设置停留时间,到达几秒的停留效果后通过监听事件设置欢迎界面的跳转,使其跳转到下一个日程安排的显示界面。
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")
@Override
public boolean onItemLongClick(AdapterView views, View arg1,int p, long arg3) {
// TODO Auto-generated method stub
HashMap hm=(HashMap)views.getItemAtPosition(p);
uid= hm.get("uid").toString();
return false;
}
});
}
public void showList(String sql) {
// TODO Auto-generated method stub
SimpleAdapter adp=new SimpleAdapter(context, mydb.showUserList(sql,null),R.layout.activity_guan,new String[]{"uid","uname","uage","uq","us"},new
int[]{R.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 String[]{uid});
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() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
unetupd=(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
String[]{un,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 String[]{uid});
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 String[]{uid});
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() {
@Override
public 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() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
unet_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);} @Override
public 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-3查询功能结果测试图
修改功能测试如下:
图5-4修改功能测试图
删除功能测试如下:
图5-5删除功能测试图
查看功能测试如下:
图5-6查看功能测试图
6 总结
该系统的设计完成为人们日常生活的时间安排带来的极大的便利,通过使用该软件可以提高用户的工作效率,大大减少对时间的浪费和在时间管理上的缺陷。
一学期的结束课程设计的写作,让我从最初的茫然,到慢慢的
进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。遇到困难,我会觉得无从下手,不知从何写起;当困难解决了,我会觉得豁然开朗,思路打开了;而这一切都离不了我的指导老师。
刚选好主题的时候比较的茫然,不知从何下手,老师给我介绍了几本参考书,我下去之后到了学校图书馆、阅览室、书店等地方寻找资源,利用空闲时间上网搜集等各种方式方法,尽量使我的资料完整、精确、数量多,这有利于论文的撰写。然后,我认真对资料进行分类,理论的、实际的例子、图片等等相关内容整理出来,列出提纲,再与老师进行沟通。
通过这个毕业设计,使我对android系统的开发有一个更好的了解,在实际操作中我针对java里的android应用系统开发有了更深入的研究和学习,为以后工作和学习积累了宝贵的经验。
以上是我在本次毕业设计中的过程与体会,当然我知道我作的还是不够的,在以后的日子中,我还要再提高我的实际操作能力。
该项目还有很多不周到的地方需要完善,将会通过用户的实际体验及反馈不断加强该软件的功能,使用户可以更好的完成对时间的安排从而提高效率。
参考文献
[1]崔群法,王咏梅,李有军.Eclipse3.0从入门到精通[M]. 北京:电子工业出版社,2008.
[2]林建素,孟康健.Eclipse开发学习笔记[M]. 北京:电子工业出版社,2008.
[3]范春梅,王新刚,张卫华.XML基础教程[M]. 北京:人民邮电出版社,2009.
[4] Erik[美]. XML入门[M]. 译者:卓小涛. 北京:中国电力出版社,2001.
[5]梅尔斯T[美],奈克莫夫斯基 A[美].Java XML 编程指南[M]. 译者: 王辉等.电子工业出版 社,2001.
[6]麦克劳林 B[美]. JAVA与XML[M]. 北京:中国电力出版,2001.
[7]威尔顿P[美],科尔比J[美].SQL入门经典[M]. 北京:清华大学出版社,2006.
[8]王虔.Flash矢量设计[M].北京:清华大学出版社,2007.
[9]管贻生.Java高级实用编程[M].北京:清华大学出版社,2006.
物联网应用开发课程设计成绩评定
成绩评定: (百分制)
检查时间:
年 月 日 指导教师签字: