基于Android平台的“去哪儿旅行记录与分享”设计
天津市大学软件学院
毕业设计
基于Android系统的“去哪儿”旅行记录与分享APP
姓 名常栓红 专 业 软件工程 学 号1350410909 学 籍 校天津理工大学
学校指导教师王占刚 (副教授) 企业指导教师朱凤山 (高级工程师)
摘要
在如今社会中,旅游作为一个新的服务业态成型,随后各种在线旅游网站相继出现,如去哪儿、驴妈妈、途牛旅行网等,在线旅游业迅猛发展起来。
在如今这个智能手机系统群雄纷争的时候,2008年Google推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所需要的全部软件。Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限的吸引力。
本文就在分析讨论Android手机软件开发技术原理的基础上,开发出能为用户提供更好的基于Android平台的“去哪儿”旅行记录与分享软件。
关键词:旅行记录;记录分享;安卓平台;旅游
ABSTRACT
In today's society, tourism as a new service formats molding, followed by a variety of online travel sites have emerged, such as where to go, donkey mother, the way cattle travel network, the rapid development of online travel industry.
In the system of intelligent mobile phone warlords dispute when in 2008, Google launched a product called the Android open source smart mobile phone operating system, which uses Linux kernel, open mobile phone Alliance (OHA) members can be free to use and modify the SDK package, open source system which has good expansion. The software includes the operating system, user interface and applications that need intelligent mobile phone, all the software. Its open architecture is the biggest characteristic of Android, not only has a very good development, debugging environment, but also supports a variety of scalable user experience, including rich graphical components, multimedia support and powerful browser. Therefore, for software professionals, Android platform has unlimited attraction.
In this paper, based on analyzing and discussing the Android mobile phone software development technology on Android platform, developed the \"where to go to\" travel records and sharing based on the software to provide users with better.
Key words: Travel record, share, Android platform, tourism
目 录
第一章引言 ................................ 1
1.1课
题
背
景
1
1.2国
1
内
外
发
展
现
状
第二章相关技术概述 .......................... 3
2.1主要开发内容
.......................... 3
...................... 3 .......................... 4
................... 5
...... 5 ...... 6
2.2主要开发思路和方法2.3软件开发技术2.4体系结构
............................ 4
2.4.1操作系统层(OS)
2.4.2各种库(Libraries)和Android 运行环境2.4.3应用程序框架(Application Framework)
第三章项目可行性及需求分析 ..................... 7
3.1可行性分析
........................... 7
...................... 7 ...................... 7 ...................... 7
3.1.1经济可行性3.1.2技术可行性3.1.3操作可行性
3.2软件需求分析
.......................... 7
..................... 7 ....................... 8
3.2.1对软件的需求3.2.2基本功能
3.3本软件的预期成果
........................ 8 ...................... 9
第四章系统实现 ............................. 9
4.1软件的主要设计框图4.2软件数据模型设计4.3代码介绍
........................ 9
.................. 10
........................... 10
...................... 11
................... 12 .................. 14
4.3.1背景图片选择实现4.3.2开机动画
4.3.3写记录核心代码
4.3.4记录加密核心代码
第五章软件测试 ............................ 18
5.1测试的重要性及目的5.2测试流程
..................... 18
........................... 18
结束语 .................................. 21 参考文献 ................................ 22 附录文献翻译 ............................. 23
I 英文原文
............................ 23 ............................ 24
II 中文译文
致谢 ................................... 25
天津市大学软件学院软件工程专业2013届本科生毕业设计
20
第一章 引言
1.1 课题背景
美丽的旅游胜地吸引了无数的游客前往观赏,但是有好多游客不能对旅游具体情况做准备。为了让游客能更清晰的认识到“去哪儿”旅行记录与分享APP,游玩舒畅,开发“去哪儿”旅行记录与分享APP的旅游网站很有必要。“去哪儿”旅行记录与分享APP旅游(MIS)是一个具有交互功能的旅游记录软件,本软件的开发主要包括后台数据库的建立和维护以及前台程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于APP设计则要求应用程序功能完备,易使用等特点。该软件符合安卓APP开发的要求,本人也对界面设计、安卓本体数据库设计等进行了较深入的学习和应用,主要完成了旅程的记录、记录的查看、记录的搜索以及记录分享功能。
1.2 国内外发展现状
电子商务可以将信息流、商流、资金流进行有效的管理,提高产业链的工作效率并降低成本。旅游业是最适合开展电子商务的行业之一,通过先进的网络技术手段提高企业内部、企业之间、企业与消费者之间的信息交流与沟通,改进旅游业的业务工作流程,所以电子商务对旅游业的发展具有深远的意义。发达国家和地区在这方面已经取得了巨大的成效。欧美发达国家,旅游电子商务已经成为整个电子商务领域最大、最突出的部分。资料显示,全球旅游电子商务连续5年以35%以上的速度增长,一度占到全球电子商务总额20%以上。
与国外相比,我国旅游电子商务起步稍晚,在1996年才开始出现专业的旅游网站其后旅游电子商务快速发展,到2000年进入第一个高潮期,但在2001年由于受世界旅游业整体负增长形势的影响,中国的旅游业在这一年经历了一定的困境,增长速度有所下降;2002年中国旅游业又开始整体回升,在2005年年底又掀起了新的一轮旅游电子商务热,自此又进入了一个新的“加速发展期”。目前,我国具有一定旅游资讯能力的网站已有五千多家。其中专业旅游网站300余家,主要包括地区性网站、专业网站和门户网站的旅游频道3大类。但是,旅游电子商务还处在初级阶段,与发达国家相比还存在较大差距。(1)国内登录过旅游网站的网民占网民总数的比例较小,而进行过网上旅游预订的网民比例更小。
1
天津市大学软件学院软件工程专业2013届本科生毕业设计
(2)我国旅游业应用电子商务软件的总体发展水平很低,信息服务能力有限,网络营销仅仅是一种时尚,消费者的培育,旅游电子商务软、硬件环境的成熟和政府政策法规的建设等等都是急待解决的问题。作为一个拥有丰富旅游资源的大国, 我国有望借助先进的信息化手段帮助旅游业实现迅猛增长,迎来更大的飞跃。
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
第二章相关技术概述
2.1主要开发内容
“去哪儿”旅行记录与分享APP是一种具有集记录和分享功能一体的实用软件,是在安卓实体机上通过安卓自带数据库储存信息。。因此这必将是广泛应用的网络应用软件,本文会让开发人员更好的开发以及管理本项目,让使用本APP的用户大致了解软件的功能和流程。
(1) 深入了解企业、社会在“去哪儿”旅行记录与分享APP旅游的业务流程以及一些基本的需求和功能,在此基础上绘制用例图,完成基于Android软件的“去哪儿”旅行记录与分享APP的设计与开发的需求说明书;
(2) 借鉴一些书籍,学习和研究开发该软件的相关技术,如JSP项目开发、MySQL数据库、Web编程等等;
(3) 具体实现基于Android软件的“去哪儿”旅行记录与分享APP的设计与开发,包括分析和使用数据库,软件的详细设计。经过以上分析,本人决定将该软件分为以下几个模块:
主要功能:主要包括旅行记录、查看记录、搜索记录、记录加密以及记录分享。
其他设计:背景切换、用户反馈、提醒设置、帮助。
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
2.2主要开发思路和方法
一个功能完整的基于Android软件的“去哪儿”旅行记录与分享APP的设计与开发,本APP未设置用户注册和登陆,进入软件后,可以对软件进行加密上锁,安全性相对提高。软件内日期自动更新,当日天气可进行选择,每日可无限制增加旅游记录,提供查找功能,根据关键字搜索可快速查找到相关记录,对此记录可以通过第三方分享到QQ、新浪微博等社交网站。
硬件环境:本软件运行的硬件环境如下:Android:1G以上;内存:512M以上;
软件开发方法:根据用户的实际情况和需要,最终决定采用在Android 下使用JSP+SQL开发,利用spring框架,采用B/S结构。
2.3软件开发技术
以Android为开发平台,Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由
ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。
View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。 (1)一次编写,到处运行。在这一点上Java比PHP更出色,在不同的软件平台上运行,代码不用做任何更改。
(2)软件的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
环境中进行软件不是和运行。相比ASP/PHP的局限性是显而易见的。 (3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。 (4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
2.4体系结构
2.4.1操作系统层(OS)
Android使用Linux2.6作为操作系统,Linux2.6是一种标准的技术,Linux也是一个开放的操作系统。Android对操作系统的使用包括核心和驱动程序两部分,Android的Linux核心为标准的Linux2.6内核,Android更多的是需要一些与移动设备相关的驱动程序。主要的驱动如下所示:
显示驱动(Display Driver):常用基于Linux的帧缓冲(Frame Buffer)驱动。
Flash内存驱动(Flash Memory Driver)。
照相机驱动(Camera Driver):常用基于Linux的v4l(Video for )驱动。 音频驱动(Audio Driver):常用基于ALSA(Advanced Linux Sound Architecture,高级Linux声音体系)驱动。
WiFi驱动(Camera Driver):基于IEEE 802.11标准的驱动程序。 键盘驱动(KeyBoard Driver)。 蓝牙驱动(Bluetooth Driver)。
Binder IPC驱动: Android一个特殊的驱动程序,具有单独的设备节点,提供进程间通讯的功能。
Power Management(能源管理)2.2.2 C/S模式与B/S模式的分析比较
2.4.2各种库(Libraries)和Android 运行环境(RunTime)
本层次对应一般嵌入式系统,相当于中间件层次。Android的本层次分成两个部分一个是各种库,另一个是Android 运行环境。本层的内容
大多是使用C++实现的。
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
在其中,各种库包括:
C库:C语言的标准库,这也是系统中一个最为底层的库,C库是通过Linux的系统调用来实现。
多媒体框架(MediaFrameword):这部分内容是Android多媒体的核心部分,基于PacketVideo(即PV)的OpenCORE,从功能上本库一共
分为两大部分,一个部分是音频、视频的回放(PlayBack),另一部分是则是音视频的纪录(Recorder)。
SGL:2D图像引擎。
SSL:即Secure Socket Layer位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
OpenGL ES 1.0 :本部分提供了对3D的支持。
界面管理工具(Surface Management):本部分提供了对管理显示子系统等功能。 SQLite:一个通用的嵌入式数据库 WebKit:网络浏览器的核心
FreeType:位图和矢量字体的功能。
Android 的各种库一般是以系统中间件的形式提供的,它们均有的一个显著特点就是与移动设备的平台的应用密切相关。
Android 运行环境主要指的虚拟机技术——Dalvik。Dalvik虚拟机和一般JAVA虚拟机(Java VM)不同,它执行的不是JAVA标准的字节码(bytecode )而是Dalvik可执行格式(.dex)中执行文件。在执行的过程中,每一个应用程序即一个进程(Linux的一个Process)。 二者最大的区别在于Java VM是以基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机
(Register-based)。显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。3.3软件可行性分析
为了给软件开发者提供是否进行项目实施的参考依据,现分析项目的风险、项目需要的投资以及效益。
2.4.3应用程序框架(Application Framework)
Android的应用程序框架为应用程序层的开发者提供APIs,它实际上是一个应用程序的框架。由于上层的应用程序是以JAVA构建的,因此本 层次提供的首先包含了UI程序中所需要的各种控件:
例如: Views (视图组件)包括 lists(列表), grids(栅格), text boxes(文本框), buttons(按钮)等。甚至一个嵌入式的Web浏览器。
一个Andoid的应用程序可以利用应用程序框架中的以下几个部分:
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
Activity (活动)
Broadcast Intent Receiver (广播意图接收者) Service (服务)
Content Provider (内容提供者)
第三章项目可行性及需求分析
3.1可行性分析 3.1.1经济可行性
基于Android软件的“去哪儿”旅行记录与分享APP的设计与开发是一个小型的实用型软件, 在开发时需要软件开发人员花费一定的时间和精力,因此需要一定的资金。开发、运行和维护费用主要包括:购买和安装设备的费用:计算机硬件、软件、 机房、电源等;
但它给企业带来的利润是不可估量的,节省了许多人力,物力上的开支,使资产管理工作变繁为简,使其更加合理化、规范化。工作效率的提高就意为着整体水平的提高,是非常值得投资的。
3.1.2技术可行性
技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。本App管理软件用的是java开发语言,调试相对简单,当前的手机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前单机模式相对发展成熟,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足软件的需求。
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
3.1.3操作可行性
软件是在JDK 环境下开发的,易于操作。而且软件还采用了可视化面向对象的工具开发,其窗口、界面简洁易懂,所以软件在操作上是可行的。
3.2软件需求分析 3.2.1对软件的需求
本类型的软件的种类很多,而每一个分类下又有很多子类。还应该提供用户管理,并对其设置权限管理。软件还应该做到对数据的快速查询。经实际调查,要求本软件具有以下功能:
(1)界面设计美观大方,方便、快捷、操作灵活。
(2)如果软件的使用对象较多,有备份功能防止数据丢失。 (3)对记录要有一个类别管理。
(4)提供对记录的天气、心情、记录操作。 (5)方便信息的查询。
(6)在相应的权限下,可方便的删除、添加、修改数据。
3.2.2基本功能
1. 写记录:可以新增旅游记录,输入地点,选择天气
2. 记录查询:可以通过记录内容的关键字或者地点查询曾经写过的记录。 3. 记录加密:可以通过图形或者数字加密,保证记录的安全性。 4. 记录分享:通过分享功能,将自己旅行所见所想分享给朋友,一同分享
旅行中的快乐。
3.3本软件的预期成果
设计和实现基于Android软件的“去哪儿”旅行记录与分享APP的设计与开发,使旅行记录简单化、快速化。从而达到提高记录效率、降低成本的目的,本软件应达到如下目标:
(1) 灵活的人机交互界面,操作简单方便,界面简洁美观 ; (2) 可以通过菜单、工具栏等灵活操作;
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
(3) 对客户和操作员的信息互通提供相应的管理功能:
(4) 查询方便,无论是按地点、内容其中任一项都可以进行有效查询 ; (5) 软件可以加密
(6) 软件运行稳定,安全可靠。
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
第四章系统实现
4.1软件的主要设计框图
本软件的主要设计框图,如图3-1所示,主要描述了此软件应该具有的功能模块以及实现的功能模块。
加密 备份 直接操作 软件相
图4-1软件框图
4.2软件数据模型设计
计算机信息软件以数据库为核心,在数据库管理软件的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。对于数据库应用开发人员来说,为使现实世界的信息流计算机化,并对计算机化的信息进行各种操作,就是如何利用数据库管理软件、软件软件和相关硬件软件,将用户的要求转化成有效的数据结构,并使数据库结构易于实现用户新的要求的过程。 确
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
切的说,数据库设计是指对于一个给定的应用环境,提供一个确定最优数据模型与处理模式的逻辑设计,以及一个确定数据库存储结构与存取方法的物理设计,建立起既能反映现实世界信息和信息联系,满足用户数据要求和加工要求,又能被某个数据库管理软件所接受,同时能实现软件目标,并有效存取数据的数据库。
4.3代码介绍
4.3.1背景图片选择实现
软件内置四种图片,可供选择成为背景图片。如图4-2
图4-2 背景图片
具体代码实现如下: //软件背景图片选择
privatevoidsetBackground() {
// 得到当前布局
LinearLayout layout = (LinearLayout)
this.findViewById(R.id.about_layout);
// 得到id,此处id是在设置背景里面产生的,此处暂不解释 int id = preferences.getInt(\"id\", 0); if (id == 0) {// id=0说明是初始化时的背景
// 设置背景方法
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
}
layout.setBackgroundResource(R.drawable.diary_view_bg);
} elseif (id == 1) {// id=1说明用户选择了第一幅图片
layout.setBackgroundResource(R.drawable.diary_view_bg);
} elseif (id == 2) {// id=2说明用户选择了第二幅图片
layout.setBackgroundResource(R.drawable.spring);
} elseif (id == 3) {// id=3说明用户选择了第三幅图片
layout.setBackgroundResource(R.drawable.summer);
} elseif (id == 4) {// id=4说明用户选择了第四幅图片
layout.setBackgroundResource(R.drawable.autumn);
} elseif (id == 5) {// id=4说明用户选择了第四幅图片 }
layout.setBackgroundResource(R.drawable.winter);
4.3.2开机动画
为了增强用户体验感,本软件新添开机欢迎界面,如图4-3
图4-3 开机动画图片
//软件加载
Animation leftOutAnimation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.translate_left);
Animation rightOutAnimation = AnimationUtils.loadAnimation(
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
getApplicationContext(), R.anim.translate_right);
// 左布局向左移动
leftLayout.setAnimation(leftOutAnimation); // 右布局向右移动
rightLayout.setAnimation(rightOutAnimation); // 设置动画监听器
leftOutAnimation.setAnimationListener(newAnimationListener() {
@Override
publicvoidonAnimationStart(Animation animation) { }
@Override
publicvoidonAnimationRepeat(Animation animation) { }
// TODO Auto-generated method stub // TODO Auto-generated method stub
4.3.3写记录核心代码
本软件使用单纯文本记录旅程,占用内存少,字数不限。
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
图4-4 写记录
publicclassAccessActivityextends Activity {
private Button access;
privateSharedPreferencessp=null; @SuppressLint(\"NewApi\") @Override
protectedvoidonCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.access);
access = (Button)this.findViewById(R.id.access); access.setOnClickListener(newOnClickListener() {
@Override
publicvoidonClick(View v) {
// TODO Auto-generated method stub
sp=getSharedPreferences(\"pass\", Context.MODE_PRIVATE); String passWay=sp.getString(\"passway\", null); Intent intent = null; if (passWay!=null) {
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
if (passWay.equals(\"graphicpass\")) {
intent =new
Intent(AccessActivity.this,CheckPassActivity.class);
startActivity(intent);
overridePendingTransition(android.R.anim.fade_in,
android.R.anim.fade_out);
} else {
intent = new Intent(AccessActivity.this, AccessActivity.this.finish();
MainActivity.class);
startActivity(intent);
overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_ou
t);
AccessActivity.this.finish(); } else {
intent = new Intent(AccessActivity.this, }
MainActivity.class);
overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_ou
startActivity(intent);
t); }
}
AccessActivity.this.finish(); }
}
});
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
4.4.4 记录加密核心代码
“去哪儿”旅行记录与分享实现了软件加密功能,共有两种加密方式,图形加密和数字加密,只有正确输入密码才可以进入系统,查看旅行记录。
图4-5 记录加密图片
//记录加密实现
privatevoiddrawCircle(Canvas canvas, intleftX, inttopY, booleanpartOfPattern) {
Bitmap outerCircle; Bitmap innerCircle;
if (!partOfPattern || (mInStealthMode&&mPatternDisplayMode != DisplayMode.Wrong)) { // unselected circle
outerCircle = mBitmapCircleDefault; innerCircle = mBitmapBtnDefault; } elseif (mPatternInProgress) { // user is in middle of drawing a pattern outerCircle = mBitmapCircleGreen; innerCircle = mBitmapBtnTouched;
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
} elseif (mPatternDisplayMode == DisplayMode.Wrong) { // the pattern is wrong
outerCircle = mBitmapCircleRed; innerCircle = mBitmapBtnDefault;
} elseif (mPatternDisplayMode == DisplayMode.Correct || mPatternDisplayMode == DisplayMode.Animate) { // the pattern is correct
outerCircle = mBitmapCircleGreen; innerCircle = mBitmapBtnDefault; } else {
thrownewIllegalStateException(\"unknown display mode \" + mPatternDisplayMode); }
finalint width = mBitmapWidth; finalint height = mBitmapHeight;
finalfloatsquareWidth = mSquareWidth; finalfloatsquareHeight = mSquareHeight;
intoffsetX = (int) ((squareWidth - width) / 2f); intoffsetY = (int) ((squareHeight - height) / 2f);
// Allow circles to shrink if the view is too small to hold them. floatsx = Math.min(mSquareWidth / mBitmapWidth, 1.0f); floatsy = Math.min(mSquareHeight / mBitmapHeight, 1.0f);
mCircleMatrix.setTranslate(leftX + offsetX, topY + offsetY); mCircleMatrix.preTranslate(mBitmapWidth/2, mBitmapHeight/2); mCircleMatrix.preScale(sx, sy);
mCircleMatrix.preTranslate(-mBitmapWidth/2, -mBitmapHeight/2);
canvas.drawBitmap(outerCircle, mCircleMatrix, mPaint); canvas.drawBitmap(innerCircle, mCircleMatrix, mPaint);
}
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
第五章软件测试
5.1测试的重要性及目的
(1)测试的重要性:
软件测试是保证软件质量的重要活动,它贯穿于整个软件开发生命周期,是软件项目实施的不可缺少的环节。软件测试的直接目的是发现软件中存在的缺陷,进而改正软件中的错误、弥补缺陷、完善功能,从而保证开发软件的质量、性能。 测试的目的: (2)测试的目的
如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。软件测试是为了发现错误而执行程序的过程; 测试是为了证明程序有错,而不是证明程序无错误; 一个好的测试用例是在于它能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。
5.2测试流程
(1)单元测试
集中在检查软件设计的最小单位—模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。 下面是以用户管理模块为例的部分功能测试用例,如下图5-1所示:
序号 输入 预期输出 显示新增对话框,对话框中无1 点击“新增”按钮 数据 显示修改对话框,对话框中显2 点击“修改”按钮 示原始数据 3 点击“删除”对话框 弹出删除确认对话框 是 是 是 是否正常 备注 图5-1 功能测试用例
(2)集成测试
集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
差可能积累到不能接受的程度;全程数据结构可能有错误等。 在单元测试的基础上,需要将模块按照设计要求组装成为软件。这时需要考虑的问题是: 把各个模块连接起来的时,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
在单元测试的同时可进行集成测试,发现并排除在模块连接中可能出现的问题,最终构成要求的软件软件。子软件的集成测试特别称为部件测试,它所做的工作是要找出集成后的子软件与软件需求规格说明之间的不一致。
下面是会员管理模块的集成测试用例,如下图5-2所示:
是否序号 输入 预期输出 正常 在新增对话框中点击“新1 增”按钮 在修改对话框中点击“修2 改”按钮 在修改对话框中点击“修3 改”按钮 新到页面上 录更新到页面上 成功修改,将数据录入数据库。更新后的记录更是 录显示在页面上 成功修改,将数据录入数据库,并将更新后的记是 成功提交新增信息,将数据录入数据库。新增记是 注 备图5-2
功能测试用例
(3)确认测试
确认测试的目的是向未来的用户表明软件能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件软件,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。 (4)软件测试
软件开发完成以后,最终还要与软件中其他部分配套运行,进行软件测试。包括恢复测试、安全测试、强度测试和性能测试等。 单独对软件的测试主要从以下几方面入手:
1.功能测试:测试是否满足开发要求,是否提供设计所描述的功能,是否用户的需求都得到满足。功能测试是软件测试最常用和必须的测试,通常还会以正式的软件说明书为测试标准。
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
2.强度测试及性能测试:测试软件能力最高实际限度,即软件在一些超负荷情况下功能实现的情况。
3.安全测试:验证安装在软件内的保护机构确实能够对软件进行保护,使之不受各种非常的干扰。针对本软件主要是对权限软件的测试和对无效数据、错数据、和非法数据干扰的能力的测试。
经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束。
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
结论
在开发软件之前,本人首先对国内旅游事业以及各地旅游景点做了一些调查,进而了解了开发该软件的一些基本需求和功能,这对本人开发提供了很大的帮助。软件的开发是严格按照软件工程的思想,从需求分析、可行性分析、总体设计、最后到详细设计。软件的开发在开发的过程中由于对JSP技术不够熟练,遇到了很多难题,但是在老师的解答和一些资料中都得到了解答。软件初步完成后老师提了很多建议,比如软件中未涉及到的数据备份,还有报表的打印等,所以在后期做了一些改进,是软件更加完善。
软件工程是一门融管理科学、信息科学、软件科学、计算机科学与现代通信技术为一体的一门综合性边缘学科。在软件开发之前,必须了解该软件的特点、适用范围以及使用者需要一个什么样的软件,以此作为基础为开发软件准确定位,然后对使用者所需实现的功能进行分析总结,根据使用者的实际要求来给软件设计一个初步方案。软件的开发不仅是要实现对数据处理的及时与正确,而且要考虑软件是否具有控制功能,及时将数据反馈给操作者,以进行监测和协调,保证软件的正常运行;也要考虑是否具有预测功能,运用一定的数学方法利用历史的数据对未来进行预测的工作。
在程序设计过程中,遇到了很多技术上的问题,才意识到好多问题都是一知半解,比如数据库的链接,以前也实践过,理论上也掌握了,但是在开发的过程中还是遇到了问题,这让我充分的体会到了“实践出真知”这一点。在设计的过程中,我掌握了很多Android的编程知识,并对这种成熟并广泛应用的技术进行了深入的学习。设计的过程也是一个再学习的过程,在遇到问题的时候我尽量自己想办法解决,这在很大程度上激发了我们的自学能力。
通过这次的毕业设计,真正的实践过了学过的专业基本理论、专业知识和基本技术,对自己的别业设计也有了更深入的了解和体会,真正达到了学以致用。
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
参考文献
[1] Android A Programmer’s Guide . Jerome (J.F.) DiMarzio DOI:
10.1036、 0071599886
[2] 林城. Android 2.3 应用开发实战[J] . 机械工业出版社,2011:17-321. [3] 韩超. Android经典应用程序开发[J] . 人力资源出版社,2011:5-18. [4] (美)Cay S. Horstmann,Gary Cornell. Java核心技术[J]. 机械工
业出版社, 2008:15-17.
[5] 刘卫国,姚昱禹. Android与J2ME平台间即时通信的研究与实现[J].
中南大 学 信息科学与工程学院. 2008年12期:118-120. [6] 刘平. Android手机访问服务器的一种数据交互方法[J] . 西安财经
学院 网络 与现在教育技术中心,2010-09:96-102.
[7] 刘玉平. Java输入输出流及在网站开发中的应用探讨[J]. 郴州市
科技局, 2009,(18):35-49.
[8] 赵亮,张维. 基于Android技术的界面设计与研究[D] . 徐州:徐州
建筑职业 技术学院, 2001.
[9] 陈璟,陈平华,李文亮. Android内核分析[J] . 广东工业大学计算
机学院 实践 与经验,2009:112-115.
[10] 刘卫国,姚昱禹. Android的架构与应用开发研究[J] . 中南大学:
信息科学 与工程学院 计算机系统应用 2008-11:110-112. [11] 张海藩. 软件工程导论(第4版)[J]. 北京:清华大学出版社,2006:
34-38.
[12] 邝孔无,王晓敏. 信息系统分析与设计(第三版)[M]. 清华大学出版
社, 2006:23-26.
[13] 亢勇,陈自力,李鹏,路平. 面向对象的软件测试[J]. 测试技术学
报, 1999,(02):15-23.
[14] 何玉洁. 数据库原理与应用教程[M]. 机械工业出版社,2005.12 [15] KEN ARNOLD,JAMES GOSLING,DAVID HOLMES: JAVA PROGRAMMING
LANGUAGE [M],POSTS & TELECOM PRESS,2006:23
1
20
天津市大学软件学院软件工程专业2013届本科生毕业设计
附录文献翻译
I 英文原文
Filtering the Reference Documentation by API Level
Reference documentation pages on the Android Developers site offer a \"Filter by API Level\" control in the top-right area of each page. You can use the control to show documentation only for parts of the API that are actually accessible to your application, based on the API Level that it specifies in the android:minSdkVersion attribute of its manifest file.
To use filtering, select the checkbox to enable filtering, just below the page search box. Then set the \"Filter by API Level\" control to the same API Level as specified by your application. Notice that APIs introduced in a later API Level are then grayed out and their content is masked, since they would not be accessible to your application.
Filtering by API Level in the documentation does not provide a view of what is new or introduced in each API Level — it simply provides a way to view the entire API associated with a given API Level, while excluding API elements introduced in later API Levels.
If you decide that you don't want to filter the API documentation, just disable the feature using the checkbox. By default, API Level filtering is disabled, so that you can view the full framework API, regardless of API Level.
Also note that the reference documentation for individual API elements specifies the API Level at which each element was introduced. The API Level for packages and classes is specified as \"Since 20 天津市大学软件学院软件工程专业2013届本科生毕业设计 II 中文译文 通过API级别进行文档内容过滤 Android开发者站点上的参考文档的每个页面的右上方提供了“Filter by API Level”控件。你可以用这个控件来仅仅显示你应用程序相关的那部分API文档,可以通过应用程序清单文件中的android:minSdkVersion属性值进行过滤。 要使用过滤功能,可以通过页面搜索框下面的选择框来启用过滤功能。比如设定“Filter by API Level”控件内容与你应用程序申明的相同。注意:在选定级别之后引入的心API会以灰色显示,并且内容被隐藏,因为你的应用程序是无法访问这些新功能。 API级别过滤方法不会提供每个API级别中新添加的功能视图,仅仅展现对应API级别的整个内容,其中去除了后续新版本中的内容。 如果你不想过滤API文档了,只需要关闭该选择框的特性。API级别过滤默认是关闭的,因此你可以看到整个框架API的全貌,而不管具体的API级别。 还要注意的是个别的API元素申明了该API参考文档在哪一级引入的。这通过在每个文档页面正文部分的右上角的“Since 20 天津市大学软件学院软件工程专业2013届本科生毕业设计 致谢 毕业设计从选题、查阅资料、设计到确定课题经历了较长时间。在这段时间得到了老师、同学们的帮助和支持,在此深表感谢!感谢他们的耐心指导和热心帮助,对于他们提出的一些见解和建议真的让我获益匪浅。 首先感谢我的导师,在百忙之际仍然尽力帮我解决遇到的问题,尽心尽力的给我讲解了很多专业方面的知识,并教我学习的方法。在毕业设计期间,从开题报告到毕业论文的撰写,都给了我很多好的建议,有表扬,有批评,从而是我的毕业设计日渐完善。让我在不断学习中日益进步,也锻炼了我联系实际的能力,让我思考问题也更加多元化。导师的严谨治学的态度、诲人不倦的品格、实事求是的工作作风和宽厚的待人品德也深深地影响着我,这对以后不论是在学校还是在工作岗位上都有很大的帮助。 其次要感谢我的同学和朋友们,因为自己在专业课方面缺乏动手能力,所以经常会因微小的问题而不知所措,他们一直耐心的辅导我。感谢他们在技术上给与我的帮助,还有其他的朋友,平时在相互交流中,大家也取长补短,学到了很多,也得到了很多的帮助,感谢他们。 我还要感谢我的母校,以及在大学四年生活中给予我关心和帮助的老师和同学,是他们教会了我专业的知识和做人的道理,这些都让我受益终生。通过这次毕业设计我还明白了作为一名计算机专业的大学毕业生,我们要会的不仅仅是编写代码,更重要的是要有整体把握软件设计的能力。 最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢! 20 因篇幅问题不能全部显示,请点此查看更多更全内容