在互联网技术迅速发展的形式下,人们的生活节奏逐步信息化。移动终端的Android系统正在悄无声息的改变人们的生活方式,更多的人选择足不出户地在手机上自助购买电影票。本文基于Android平台,结合移动终端和影院,对在线电影购票系统进行了研究。
本文首先介绍了在线电影购票的研究背景及现状,论述了本课题的研究意义,进行了系统需求分析,总体设计,详细功能设计与系统测试等。该系统在订票客户端实现了用户注册、用户登录、用户个人中心、电影详情浏览、影院场次选择、座位选择、支付购票、电影评价等功能。在实现功能的过程中,通过自定义View优化了选座界面,利用JAVADB数据库设计服务器端。本次开发的系统界面简单大方,操作便捷,高可用性。
关键词 电影购票系统,移动终端,Android,自助
毕业设计说明书(论文)外文摘要
Title Caroline Movie Ticketing System Based on Android
Abstract
In the form of the rapid development of Internet technology, the frequency of modern people is constantly informatization. The mobile terminal’s Android system is quietly changing people’s lifestyles, and more people choose to self-order movie tickets on the phone without leaving the home. This article is based on the Android platform, combined with mobile terminals and theaters, on the online movie ticketing system.
This article first introduces the research background and status of online movie ticket purchase, discusses the research significance of the project, and analyzes the system requirements, overall design, specific functional requirements design and system testing. The system already has some features such as user registration, user login, user personal center, movie details browsing, cinema screening selection, seat selection, payment ticket purchase, and movie evaluation in the ticketing client. In the process of implementing the function, the selection interface is optimized through the custom view, and the server side is designed using the JAVADB database. The design of system interface style is very simple and beautiful, with convenient operation and high availability.
Keywords Movie ticketing system, mobile terminal, Android, self-service
1 引言 1
1.1 课题的研究背景 1
1.2 课题的研究目的及意义 1
1.3 课题的研究现状 2
2 系统分析 3
2.1 可行性分析 3
2.2 功能需求分析 4
2.3 性能需求分析 9
3 系统总体设计 11
3.1 系统环境 11
3.2 系统整体框架 11
3.3 系统功能概述 12
3.4 系统静态建模 13
3.5 数据库概念设计 15
4 详细设计 16
4.1 动态建模 16
4.2 数据库设计 19
5 系统部分实现及测试 21
5.1 测试目的 21
5.2 测试内容 21
结 论 27
致 谢 28
参考文献 29
1.1 课题的研究背景
国内外经济的飞速发展,在不断拉动科技领域的全面发展,人们的生活品质在不断提升,移动互联网技术与人们的生活紧密联系在了一起。人们不再简单地局限于物质需求的满足,更多的人开始追求精神上的需求。可以说,电影是文化与艺术相结合而生的高品质产物,正在不断地融入进人们的日常生活之中,越来越多的影迷倾向于去影院看电影。因此,人们已经不再满足于抽时间去现场排队购买电影票了。
过去人们只能早早的到影院现场买票,这意味着人们即使提前去影院踩点排队,也并不能保证可以购到。如果碰到热门影片上映,电影院里更是场场爆满、一票难求。观众们可能提前了好多天去排队也买不到自己心仪的影票,这对于当下快节奏的生活来说,会造成大量且不必要的时间浪费,所以面向大众公布电影的排片情况和观影时的座位选择等就成了重中之重的问题。但是关于用户账号的问题,现在有一种方案,是以移动终端特有的标识信息等等实现组合,这包括设备型号、IMSI码、IMEI码等,继而通过生成的终端身份信息来认证客户端用户的身份。这里的自定义生成身份信息的算法,可以提供给用户更好的体验方式,对安卓系统本身的安全性能来说也是提高了保障[1]。
当电影购票与当代的移动互联网技术相碰撞的时候,移动端在线订购电影票的安卓系统就顺势出现了。
1.2 课题的研究目的及意义
观影人群和数量都在不断地增大,现场直接购票的方式已经无法满足用户的需求。此次开发这个基于Android的卡卢琳电影购票系统,就是为了方便人们足不出户也能及时地了解各城市影院的电影排片状况,大家可以随时随地的选购自己心仪的观影场次和座位。
本系统致力于解决用户平日里到电影院现场排队购买电影票的不便,以及热门电影抢票难、抢座难的弊端。用户只需要在自己的手机软件上点一点,就能方便的了解当前热映的影片信息、各影院的电影场次、剩余观影位置,电影评价等信息,充分结合了移动互联网的高效便捷性,用户们可以随时随地用手机购买到自己需要的电影票,节省了不必要的人力和物力,将繁琐的电影购票简单化、便捷化。
不久的将来,传统的现场电影售票方式或将成为历史。本系统设计的缩略图选座功能,为大家手机端在线购票、自由选择合适的观影位置提供了便利,美观而又简约的图形选座界面更是方便用户选择合适的观影位置,用户进入影厅时可以更快的找到自己订购的座位。用户在购票时需要输入有别于登录系统的支付密码,在用户的个人订票中心,客户端所有的交易记录都可以一一查看,让用户在使用本系统的过程中更加的安全与放心。该系统不仅让电影与人们的生活联系地倍加紧密,更给人们的生活带来了无限地便捷和愉悦的享受。
1.3 课题的研究现状
1.3.1 电影行业的国内外现状
2016年全球总票房340亿美元,中国内地电影的总票房就占了66亿美元,当年上映影片的总场次为7510万次,观影总人次达13.72亿,人均年观影一次。到了2017年,电影票房持续走高,国内票房更是高达79亿美元,同比2016年增长了20%,全球票房同比增长10%,刷新了多项票房纪录。从下表1-1中不难看出,越来越多的人选择去电影院观影。随之而来的就是各影院的售票问题,各大影院平台纷纷推出了各自的电影购票系统,以此来满足用户日益增长的需求。开发一个广大用户都适用的安卓在线电影购票系统,便成了各影院平台迫切需要解决的问题。
单位(亿美元) 2016 2017 年度同比增长率
中国内地 66 79 20%
海外 274 295 7%
全球票房 340 374 10%
表1-1 2016-2017年度国内外电影票房数据分析表(数据来源中国产业信息网)
1.3.2 电影票自助系统的研究现状
在移动端智能系统的发展如此迅猛的今天,手机早已不再是一个简单的通讯设备了,它已经慢慢地融入了我们的生活,成为一个多媒体的智能移动终端。在这种大背景之下,基于Android的自助电影订票系统就应运而生了。
目前,应用市场上比较受欢迎的电影购票系统是由美团公司开发的猫眼电影,一般情况下只需要30-60秒就可完成选座购票流程,使用方便,而且价格更为便宜,深受用户们的喜爱。猫眼电影是一个集电影资讯、影票评分、电影衍生品销售、用户观影互动为一体的一个软件系统,同时,它可以给电影制片的发行方以及有相关合作的影院提供适合于各个消费人群的营销方案,助于各影片的票房热卖。另外,阿里旗下开发的淘票票也是广受人们的青睐,它是集影片评分和各种时下热门影片相关的资讯为一体的电影平台,这包括海量的影片预告片,主演们的高清海报与剧照、电影解读、电影评论评分等。
还有其他较受用户喜爱的手机端购票软件有微信电影、拉手团购、时光网等,但是这些软件的用户圈还没有猫眼和淘票票广泛,因为这些软件都没有足够大的用户交互平台。用户在系统上在线购票后,无法在购票平台与其他用户们互相交流自己的观影体验和感受,用户关于电影和购票平台的建议也没有方式上传服务端。因此,开发一个便于用户间交流的Android电影购票系统具有十分重要的意义。
2.1 可行性分析
对系统开发而言,进行多方面的可行性分析是必不可少的环节,我们分析系统的可行性通常是从综合系统技术、经济和操作三方面的调查与研究,来判定本系统是否可以顺利进行到下一步,以及评估系统的发展方向是否符合实际。可行性分析通常是根据前期的市场调研、项目资金链、现阶段的技术水平等方面做出测评报告,通过评价系统的可实施性以及所具备的价值来拟定评估报告,会更有公信度。
基于Android的卡卢琳电影购票系统课题将从如下的技术、操作、经济三个角度切入,做出深层次地分析。
2.1.1 技术可行性
本系统采用的架构模式是Android系统的分层模式:应用层、应用框架层、系统运行库层和Linux核心层,每一层都只专注于当层所需提供的服务即可,且各层服务器所需的服务皆自下而上[2]。
从最底层的Linux内核层分析来看,可以说整个Android的操作系统都是基于Linux内核来建立的,它为操作系统的内存管理、内核驱动程序、进程管理、硬件交互、以及中断管理等提供了最基础且最核心的功能。
系统运行库层就在Linux内核之上,它是用C或C++语言编写封装好的程序包,系统运行库层可支持多格式下的媒体库、Web支撑的浏览器引擎,以及通过在移动终端内置特殊的引擎来实现高质量的2D图片等,这将有利于开发者直接使用Android系统提供的库来访问硬件工作[3]。
为系统的应用框架层提供支撑的就是Android的系统运行库层,应用框架层需要调用系统的组件,它所提供的API可以直接调用,以及访问应用程序的核心,我们大多是基于Application Framework进行开发和研究应用程序的。
一般都是在应用层来完成Android的应用开发,我们所开发的这个应用程序,即在线电影购票系统就是在最高层应用层来运行,系统里的编程语言都运用了Java来实现。当然,应用层也有Android系统自带的部分核心应用程序,但是可以说所有的应用程序,都是通过Android系统的应用程序编程的接口函数来实现的。
综合技术层面的分析而言,本购票系统是以Android Studio的开发环境来完成客户端的设计,并借用了Android系统的分层架构,用JavaDB来开发订票系统的后台数据库,使用Java作为此次研发编程的系统语言。纵观整个系统的开发来说,从技术到语言都非常的贴近当前的高端开发水平,在手机终端成功实现用户界面与服务器之间的无缝交互,与良好的开发环境以及十分合适的开发结构是分不开的。所以不得不说,技术开发的可行性层面,也是实际可行的。
2.1.2 操作可行性
本次系统基于了Android的多层架构模式,是以不需要用户们再配备别的一些软件,亦或是配置别的计算机,用户就可以使用起来[4,5]。除此以外,本次开发的系统界面十分友好,色彩的搭配选择以及框框线条都非常的柔和,比较符合用户们的使用习惯,操作起来也非常的简单,方便理解。用户只需要像一般的手机软件一样去安装这个电影购票软件,就可以进行其他各种操作了,这样可以节省大量的系统层面的培训时间以及不必要的费用开销。因此,在系统操作的可行性层面,本系统绝对是可操作性的。
2.1.3 经济可行性
本次系统的开发是以毕业设计的形式展现的,所以我们在开发研究的过程中都没有花费多余的财力,单单只是动用了身边现有的简单资源完成了整个设计过程。因为我们开发的这个订票系统对各种软硬件的要求不是特别高,所以我们通过普通的校园局域网,以及学生的个人电脑即可完成服务器的搭建。整个开发流程都没有需要购买其他多余的设备、软硬件资源等等,周边可用的资源就已经能够满足系统的需求了,从我们的研发经济角度而言,节省了大量不必要的开发开支。所以,从研发的经济层面上考虑,本系统也是可实施的。
2.2 功能需求分析
在此次开发的基于Android的卡卢琳电影购票系统中,依据功能需求的分析,划分了两大模块,即用户模块与电影模块两部分。
用户如果有订票的需求时,就必须先登录到个人的系统账号,因此用户只要想对系统进行更多的操作时,都必须先注册属于用户个人的购票账号。用户成功注册购票账号后,系统都会自动为用户提示成功信息;相应的,一旦注册失败,系统同样也会给出相应的提示,例如该用户名已被注册,或两次密码不同等,以此来方便用户们注册使用。当用户注册成功以后,就可以登录自己的账号来操作本系统了,包括电影场次的选择,地区影院的选择,浏览影片的详情,查看电影评分,收藏自己喜爱的电影,以及通过图形界面可视化的选择自己心仪的座位等[6]。用户选定座位以后可以选择不同的支付方式,包括支付宝、微信、或银行卡,验证支付密码后即可订票成功,这也是出于用户的支付方便以及账户安全的角度来考虑。此外,如果用户在没有订票的情况下进行评论,该条评论记录上会被标注为未订票。
不可避免的是电影的上映场次和时间都有期限,一旦过期,影片就会自动从系统中下架删除。在用户角度来说,卡卢琳电影购票系统不仅可以方便的查看正在热映的影片信息,还可以查看未来上档的影片讯息,包括影片的超清海报,有助于用户知晓相关影片的内容详情,如电影的导演,参演人员等。同时,本系统还会提供订购过这部电影的人的观影评价,可供用户们在购票选择时做出简单的参考。
符合上述描述的电影购票系统的功能模块详图可见图2.1。
图2.1 系统主要模块图
根据上文描述的系统功能需求,画出了基于Android的卡卢琳电影购票系统的用例图,图2.2是用户的用例图。
图2.2 用户用例图
依据详细的功能需求,我们围绕了与用户相关的多个模块的用例图进行详尽的说明,可以参考如下表2-1,2-2,2-3,2-4,2-5,2-6,2-7,2-8,其分别为注册账号、修改城市(省市)、修改头像、修改登录密码、电影详情、收藏电影、用户选座、以及影片评价功能的详细说明。
用例类型 注册账号
功能简述 如果用户不注册账号,则只能简单查看电影的相关资讯,不可进行其他的系统类操作。
相关方 用户,计算机(服务器端),手机(客户端)
前提 计算机服务器端正常,卡卢琳电影购票系统正常运行,用户了解该系统的注册流程。
主要流程 进入系统后,不管登录与否,用户都可以查看各种影讯资料。当用户有其他更多的使用需求时,就必须先注册独一无二的账号。这需要用户填写系统唯一没被占用的用户名,密码,手机号码等个人基本信息,即算注册完成。
其他可能 从未注册过本系统;不按要求键入账号、登录密码、手机号码等重要信息;系统闪退等自身错误,添加用户操作无法成功;注册数据提交失败,数据库的添加出现错乱。
结果 成功注册,数据更新到系统数据库,新添加用户资料被数据库录入。
表2-1 注册账号的用例图叙述
用例类型 修改城市(省市)
功能简述 登录账号后可以自由修改城市,以及选择对应城市的影院。
相关方 用户,计算机(服务器端),手机(客户端)
前提 用户已经成功注册、登录,计算机服务器端正常,卡卢琳电影购票系统客户端正常,用户知晓修改省市的流程。
主要流程 注册并登录成功,用户可以行使更多权限操作购票系统,如修改所在城市,即用户随时自主的选择自己的目标城市。
其他可能 并未注册过个人账号;系统出现闪退等错误,客户端无法即时修改城市;提交的修改城市数据失败,更新出错。
结果 修改城市(省市)成功,数据库同步成功,系统显示修改后城市。
表2-2 修改城市的用例图叙述
用例类型 修改头像
功能简述 用户可以随时更换客户端头像。
相关方 用户,计算机(服务器端),手机(客户端)
前提 用户已经成功注册、登录,服务器端运行正常,客户端一切正常,用户了解更换系统头像的流程。
主要流程 登录后,可以通过选择手机内部图片作为客户端头像。
其他可能 未注册过系统账号;系统出现闪退等问题,更换头像失败;修改后数据无法提交,数据库添加时出错。
结果 用户头像更换成功,并更新至数据库。
表2-3 修改头像的用例图叙述
用例类型 修改登录密码
功能简述 用户可以自由修改软件的登录密码。
相关方 用户,计算机(服务器端),手机(客户端)
前提 用户已注册、登录系统,服务器端正常,客户端正常,用户熟悉更改登录密码的流程。
主要流程 用户可以通过忘记密码来修改密码,只需填写自己的注册手机号和邮箱,系统自动与数据库匹配是否一致即可。
其他可能 从没有注册过账号;系统出现卡顿等错误,不能正常进行修改密码;修改数据无法提交,数据库更新总出错。
结果 用户登录密码修改提交成功,并更新至数据库中。
表2-4 修改登录密码的用例图叙述
用例类型 电影详情
功能简述 用户对影片有较少的了解时,就可以通过影片资讯来找出喜欢的影片。
相关方 用户,计算机(服务器端),手机(客户端)
前提 登录正常,服务器正常,客户端正常,用户知道查看资讯的方法。
主要流程 用户可能对影片无太多了解,可能需要查看影片的详细信息,包括电影的导演,参演人员,影片简介等相关资讯。更重要的是,系统支持查看其它用户的观影评分和观影感受发布,帮助用户参考。
其他可能 非用户登录;数据库发生读取错误,无法对应影片的资讯;影片海报读取错误,导致系统端图片无法显示;无法看到其他用户的评分和评价;用户不注册也可查看影片的具体资讯。
结果 查看影片详细的资讯成功。
表2-5 电影详情的用例图叙述
用例类型 收藏电影
功能简述 用户只有登录后才可以把自己喜欢的影片收藏至收藏夹,便于快速找到那个收藏的影片。
相关方 用户,计算机(服务器端),手机(客户端)
前提 注册登录,服务器端网络正常,客户端正常,用户知道如何收藏影片。
主要流程 用户登录之后,进入电影详情页面,可以收藏电影,方便下次找到电影选座购票,节省时间。
其他可能 并非系统用户;没有注册账号;系统卡顿或闪退,无法将影片收藏至收藏夹内;提交收藏数据一直失败,数据库添加失败。
结果 用户收藏电影成功,并更新到数据库中。
表2-6 收藏电影的用例图叙述
用例类型 用户选座
功能简述 用户可以通过图形化界面选择观影座位。
相关方 用户,计算机(服务器端),手机(客户端)
前提 注册登录,服务器提供的网络正常,客户端正常运行,用户了解选座流程。
主要流程 用户只有登录之后,才可以进行影院和场次的挑选,继而可查看已选场次的剩余座位情况,并为自己选择观影座位,一次最多可选三个座位。
其他可能 非用户登录;未注册账号;系统出现闪退或卡顿,无法放大缩小选座界面;
座位数据提交失败,数据库更新频繁出错。
结果 选座成功,并将座位信息更新至数据库。
表2-7 用户选座的用例图叙述
用例类型 影片评价
功能简述 当用户观影结束后,可对电影内容进行星级评分和评价,将自己的观影感受与其他用户进行分享。
相关方 用户,计算机(服务器端),手机(客户端)
前提 注册登录完成,服务器网络正常,客户端运行正常,用户熟悉评价流程。
主要流程 登录进入系统,可对电影做出评价和评分,直观的为其他用户选择影片时提供参考。
其他可能 非用户登录;未注册账号;系统出现卡顿现象,无法发布评价和影片评分;
影评的数据提交失败,更新数据出错。
结果 影片评价记录添加成功,并将新数据更新至数据库中。
表2-8 影片评价的用例图叙述
2.3 性能需求分析
从高级恶意程序的典型性行为特征角度来看,无论恶意程序是否root了终端设备,可以信任以中间网络为获取渠道的网络连接数据,这其中包括了数据的采集,以及审计策略的管理。通过在协作检测的设计基础之上,文伟平等人提出了以手机客户端与服务器端相互协作的恶意代码检测方案[7,8]。方案中主要是采用了Permission检测技术,来实现手机端轻量级的检测,而服务器端则是对手机端提交上来的样本进行检测分析,最终与手机端同步完成行为分析,以及特征库的更新[9,10]。Android应用程序是使用Java语言编写,并通过虚拟机(VM)来执行的,它的两种JPF扩展都不支持本地方法的验证[11]。
另外,Android系统的开源特性使得基于AOSP的OS操作系统定制版本的数量众多,可能会造成更多软件上的威胁[12,13]。因此,有人提出了通过构造分类器来使用机器学习算法、学习类特征,以及训练相关系统的有效性恶意软件来检测[14]。现如今,Android恶意软件分析与检测框架已十分广泛,引发了关于安卓恶意软件的组织分析和规避自检测能力的热论[15]。权限控制已经作为防止恶意软件的主要安全机制之一,系统允许用户自行提高Android权限的使用效率,以及系统的权限[16],并着重讨论了特定应用程序独有的安全排名算法[17,18]。
安卓应用系统本身是基于事件驱动和交互式行为开发的,通俗的来说就是键入不同的事件,都可以通过驱动完成系统各种不同的逻辑功能[19]。此外,系统良好的可维护性、可拓展性,以及优化了用户请求的优先级队列调度,都将极大地改善了用户的体验感[20]。
2.3.1 标准性
整个系统的开发和使用都必须在国家法律的可执行以内进行。
2.3.2 稳定性
系统开发需从多方面多角度的综合考虑系统本身的机能,包括研究的技术手段、软硬件平台、系统的保护能力、系统的结构布局等,以此来保障系统本身的高可用性。
2.3.3 安全性
对安卓操作系统来说,完整的安全体系和系统结构功能非常重要,例如用户注册时往往会对输入的密码进行加密处理,甚至进行二次加密,更有甚通过用户唯一的身份认证、不同用户权限管理等功能来增强系统安全的巩固。以此来禁止非用户、无权限的非法访问,以及因系统设计缺陷而产生的系统漏洞、非法访问。
Android操作系统为应用开发提供了广泛的平台,它基本上可以独立于实时数据源,通过安全隔离系统来保障数据传输的安全与高效[21]。根据Android信息安全技术体系中的设计原则,我们划分出不同的终端安全层次,并依照不同安全层次的威胁去准备相对应的安全防护措施之类[22]。从Android系统的安全性角度考虑,这样的数据传输和安全体系层次很是必要。
2.3.4 可维护性
对于大型的系统开发来说,程序出现问题时很难排错,这是因为程序模块间零零碎碎,模块与模块之间的衔接能力较差。所以我们把程序不断地规范化、刻制化,只为了结构与层次条理清晰,便于找出系统编程的错误。系统需要确保无论出现了什么问题,或闪退,或卡顿,使用者看到的界面都是统一的。
Java是目前最为普遍的系统开发语言,Android操作系统就是以Java为主的应用层研发语言,好处就是使得订票系统的开发时间被极大的缩短。运行应用程序的顶层操作时,Application Framework会被系统自动由下调用过来,Java编写了系统的顶层程序。同时在Android的运行时环境下,调用了Libraries,最终交付至安卓底层的Linux Kernel,以达到硬件之间交互的目的[23,24]。
2.3.5 可使用性
系统的可操作性要求必须高,开发出的界面应该十分简洁明了,便于各个年龄层群体的用户使用,系统整体的风格设计必须美观大气,迎合大众喜好。系统的可用性另外一方面表现在可以自检错误,比如说密码修改失败的提示,确认密码与初次输入的密码不一致,以及账户已被注册等,这都是为了帮助用户熟悉系统的使用。
2.3.6 先进性
先进性就是要求保证系统在开发出来以后,短时间内不能太过落后,这就需要在开发过程中使用较为先进的新技术。此外,开发者还需对本次开发的系统的设计质量做出最正确的评估和预测。
3.1 系统环境
1)硬件要求:1G内存或更高
2)操作系统:Android 4.3以上
3)脚本解释器:Netbeans与Android studio脚步解释器
4)数据引擎:JAVADB
5)编程语言:JAVA
6)数据库:Netbeans内置数据库
7)开发工具:Netbeans、Android studio等
3.2 系统整体框架
如图3.1所示,本次开发的系统层次主要包括数据库层、应用层以及客户层。其中,数据库层主要是为了存储原始的数据和系统处理过的数据,并且为系统提供最基础、核心的数据访问方法。系统应用层则主要是通过基础的服务方式,来加快系统数据的访问速度,减少控制层与业务逻辑层需要的数据自动检索时间,这包括中间件和消息队列等方式。当对用户进行数据的传输与展示时,系统会使用JSON格式去传递相关的数据信息,并通过POST方式把用户的一些隐私数据传送至系统的服务器端。
图3.1 整体架构图
3.3 系统功能概述
本系统的需求功能主要分为了以下几个方面,即原始数据处理、注册账户、登录系统、用户个人中心、城市影院选择、电影场次选择、影片详细信息浏览、座位选择、影片评分、支付方式选择等。原始数据处理,就是把原始数据先进行预处理,需要保证预处理后的数据的完整性与兼容性,且需要适用于不同平台的编码环境。
如果从未在本系统注册过账户,需得完整填写个人信息,用户想要更多操作权限包括选座购票、电影评分之类都需先登录到系统。用户可以在个人中心查看、修改个人信息,包括用户名、电话、邮箱、修改登录密码、支付方式等,还可以查看自己购票的座位详情,影票实行过时作废。另外,本系统支持影片的相关资讯的展示,全方位帮助用户了解电影详情。此外,系统会根据城市、影院、日期以及厅号等将电影分类,便于用户快速查找到目标影片。
同时,获取已选择的电影场次的座位情况也可以通过UI可视化显示,图形座位界面便于用户直观的选择想要坐的位置,观影时也可更加快速的找到自己预定的座位,并且系统会对已售已选的座位进行标记。订票时可以选择付款方式,且需验证付款密码,安全放心,手机支付购票符合现代人的生活习惯。用户订过票以后可以为电影打分,发表自己的观影感受,查看自己或别人的评价信息,执行删除评论的操作等。系统获取的影评讯息,允许用户的电影评分和评价内容一并录入到数据库。
系统整体的流程,首先将当前城市影院的全部影片信息从数据库中导出,并通过用户依据时间、影院、场次信息来筛选电影。最后,在系统的选座模块中会向用户展示出已选场次的影片当前座位剩余情况,继而选择是否订这个场次的票。
3.4 系统静态建模
所谓建模最主要的是先确定系统类,我们会有很多种方式来确定系统类,这包括通过用例中识别名词法,或通过用例描述来识别出系统类。因为用例图是一种很好的描述系统的方式,所以本系统中我们将以用例图的形式来确定系统类。
我们根据功能板块深刻分析了系统需求,并通过这些分析用例来具体分析用例图,作出说明,包括用户个人信息(users),电影信息(movies),订单信息(orders),影片排片(times),影厅排片(rooms),电影评价(message)等。
其中在电影信息的用例中,会出现并需要存储影片的编号(movieid),电影名称(moviename),影片价格(price),主演(movieactors)和电影评价(moviescore)等信息,详细可见图3.2电影详情类。
图3.2 电影详情类
在注册账户例和登录系统的用例中,需要把用户编号(userid),姓名(username),密码(password)等信息,并根据这些来确定用户个人信息(users)类,详情可见图3.3用户个人信息类。
图3.3 用户个人信息类
在订单详情的用例中,根据订票编号(orderid),排片编号(timeid),用户编号(userid),以及座位(seats)等信息,由此来确定订单详情(orderid)类,详情可见图3.4订单信息类。
图3.4 订单详情类
在影院排片用例中,按照电影排片序号(timeid),座位号(selectedseats),影厅(roomid)等信息,确定影院排片(times)类,详细可见图3.5电影排片类。
图3.5影院排片类
在排片的用例中,需要存储影厅的序号(roomid),影厅名(roomname),坐位数量(rseats)等信息,根据此来确定电影排片(rooms)类,详细可见图3.6电影厅的排片类。
图3.6影厅排片类
通过对总体功能的分析,类之间彼此依存的状态,相互之间的紧密关联,可见图3.7系统整体类图。
图3.7系统整体类图
3.5 数据库概念设计
由用户详情、影片详情,影厅详情,订单详情,影评详情和排片详情组成的系统数据库,其层次清晰,各实体的E-R图分别见下图3.8,3.9,3.10,3.11,3.12,3.13。
图3.13 排片详情
4.1 动态建模
4.1.1 用户登录模块
用户可以使用游客的身份去浏览影片信息和影院的排片信息,但当订购电影票的时候,登录账号,系统将会账号密码信息与数据库中的数据是否匹配。如果身份信息通过验证,用户就可以进入系统并可执行购票退票等一系列操作;相反,数据库比对失败,系统会给出登录不成功的原因,以此来帮助用户成功登录到系统内部[25]。如图4.1所示。
图4.1用户登录活动图
用户登录系统需要经过如下:
1)登录首页,填入账户密码;
2)自动检测账户的身份信息是否与数据库匹配;
3)如若身份信被息验证成功,则会进入用户各自的页面;如若身份信息的验证不成功,则会弹出提示框,告知用户验证失败的原因,来帮助登录。
系统登录的序列图,如图4.2所示。
图4.2系统登录序列图
可能存在如下情况:
1)游客状态,即只是点开系统首页,未操作;
2)登录进系统,即根据账户和密码,通过数据库比对来验证身份是否正确;
3)无法登录,即用户输入了正确的账户和密码,由于一系列原因没有通过系统的身份验证。
用户登录状态图,如图4.3所示。
图4.3用户登录状态图
4.1.2 用户模块动图建模
本系统的用户在登录成功时,进入到系统主页面,这时候可以对订购的影票信息做出选择了,点击确认购票,最多可订购3张电影票等,如果操作符合系统规范,则完成购票;相反,如果不符合系统流程,也会附上相应的提示,帮助你顺利订票成功。用户购票活动图,如图4.4所示。
图4.4用户购票活动图
在用户购票模块中,主要包括如下步骤:
1)已登录,进入电影选择界面;
2)选择喜欢的电影名、时间、座位等信息;
3)如果系统验证身份信息成功,数据库中将会自动插入本次的购票信息,并跳出弹框提示订票成功。用户购票序列图,如图4.5所示。
图4.5用户购票序列图
在系统的用户模块中,用户需先订购当前场次的电影的票,才可发表评论,用户评论电影主要包括如下几种情况:
1)添加评论,选择星级,输入评价内容,即可;
2)完成评论,即评分与评论皆按照要求来,数据也正确,系统会给成功提示;
3)无法评论,即给分评论频繁出错,包括操作和数据,从而导致系统添加用户评论到数据库时失败。用户评价状态图,如图4.6所示。
图4.6用户评价状态图
4.2 数据库设计
该系统的后台数据库设计是以JAVADB为基础的,其中相关的数据库表格包括用户基本信息表、电影资讯表、影院表、影院排片表、影座表、收藏表、影评表、订单表、城市(省市)表等。
根据数据库结构,以及系统功能需求等,设计了本系统的数据库,分别如下表4-1,4-2,4-3,4-4,4-5,4-6,4-7,4-8,4-9所示:
列名 数据类型 允许NULL值 说明
userid Int NO 序号为系统账号,主键
username string NO 用户注册名
image string NO 用户头像
paypassword string NO 用户注册时,自己键入的支付密码
loginpassword string NO 用户注册时,自己键入的登录密码
Email string NO 用户注册时,自己输入的邮箱
Phone string NO 用户注册时,自己键入的手机号
表4-1用户信息表
列名 数据类型 允许NULL值 说明
id Int NO 为电影的编号,为主键
Moviename string NO 电影的名称
image string NO 电影的相关海报图
starttime timestamp NO 电影的放映时间
rate float NO 电影评分
ratenum Int NO 电影评价的人数
director string NO 导演
actors string NO 主演
collectednum Int NO 影片收藏的数量
表4-2电影信息表
列名 数据类型 允许NULL值 说明
id Int NO 为影院的编号,为主键
Cinemaname string NO 影院的名称
City string NO 影院所在的城市
Location string NO 影院的具体位置信息
表4-3影院信息表
列名 数据类型 允许NULL值 说明
id Int NO 为排片的编号,为主键
Movieid Int NO 电影的ID编号
Cinemaid Int NO 影院的ID编号
Hall string NO 影院的厅名
time timestamp NO 影片的放映时间
cost Float NO 影片的单价
表4-4影院排片信息表
列名 数据类型 允许NULL值 说明
id Int NO 为座位信息的编号,为主键
Cinemaid Int NO 影院的ID编号
Hall string NO 影院的厅名
time timestamp NO 影片的放映时间
Seatrow Int NO 座位行号
Seatcol Int NO 座位列号
ordered bool NO 座位是否已售
表4-5影院座位信息表
列名 数据类型 允许NULL值 说明
id Int NO 为收藏信息的编号,为主键
Movieid Int NO 电影的ID编号
Userid Int NO 用户的ID编号
表4-6电影收藏信息表
列名 数据类型 允许NULL值 说明
id Int NO 为评价信息的编号,为主键
Movieid Int NO 电影的ID编号
Userid Int NO 用户的ID编号
Evaluation String NO 影片的评价内容
Rate Float NO 影片的评分
Time timestamp NO 评价时间
表4-7电影评价信息表
列名 数据类型 允许NULL值 说明
id Int NO 为订单信息的编号,为主键
Userid Int NO 用户ID编号
Movieid Int NO 电影ID编号
Cinemaid Int NO 影院的ID编号
Hall string NO 影院的厅名
showtime timestamp NO 影片的放映时间
time timestamp NO 购票的时间
Seatrow Int NO 座位行号
Seatcol Int NO 座位列号
Cost float NO 影片的单价
表4-8订单信息表
列名 数据类型 允许NULL值 说明
id Int NO 为省市对应的编号,为主键
Province string NO 省名
City string NO 市名
表4-9城市信息表(省市)
5.1 测试目的
基于Android卡卢琳电影购票系统的测试是本次课题研究的最后一部分,系统的测试是从多方面来对开发完成的电影购票系统进行测试,包括该软件的安装测试、详细的功能性测试、软件性能测试,以及数据测试等等。我们进行程序上的测试就是为了找出进程中的错误,测试时需要有针对性的按照系统软件的各个模块来进行测试检验,我们通常也会用错误的数据去测试系统性能的高低,以及测试系统是否能够满足得了用户的需求。
其实,我们此次测试是为了通过使用最少的人力资源、财务以及时间,找到该订票系统中设计过程并未发现的各种问题和弊端。而且我们测试时必须站在用户使用的角度来进行,尽最大的可能去测试未知的可能,来完成高可靠性测试。
5.2 测试内容
5.2.1 注册测试
当用户注册时可能会遇到如下几种情况,分别一一做了测试。
用户注册的用户名唯一,当已被其他用户使用时,系统会自动为用户弹出提示框“用户名已被使用!”,如下图5.1所示。注册时需要输入两次密码,一旦两次密码不一致,就会告诉我们“确认密码和输入密码不一样!”,且两次密码输入皆不可见,确保了密码输入时不会泄露,测试结果如下图5.2所示。
图5.1 用户名测试 图5.2 确认密码测试
当注册的手机号码数据库中已存在,即该号码已被其他用户注册使用,弹跳框会提示用户“手机号已被使用!”,测试结果可见下图5.3。当用户键入的个人基本信息均符合注册规范后,会提示注册成功,并自动跳转至登录界面,可见图5.4。
图5.3 手机号测试 图5.4 完成注册
测试结果:所有测试目标达成,完成用户注册的测试,且自动跳转登录界面。
5.2.2 用户登录测试
当用户输入的是未注册的账号时,系统并不会跳出用户头像,如图5.5所示。当用户登录系统输入的密码与注册密码不一致,即密码有误时,系统会自动提示“密码错误!”,如图5.6所示。用户登录完成后会自动进入系统,并提示“登录成功!”,测试结果如图5.7所示。
图5.5 未注册账户测试 图5.6 登录密码错误测试 图5.7 登录成功
测试结果:所有关于登录可能会出现的问题都测试达成,成功后自动跳转页面。
5.2.3 电影收藏测试
当电影从未被该用户收藏过时,星标识系统显示为暗灰色,如图5.8所示。当用户点击星标增加收藏后,在电影详情的页面,星标识会自动由灰色变为黄色,如图5.9所示,并且个人收藏中心会自动增加此项收藏记录,用户同样可以选择取消收藏的操作,如图5.10所示。取消操作成功后,收藏记录立即消失并弹框提示“取消收藏成功!”,如图5.11所示。
图5.8 未收藏测试 图5.9 已收藏测试
图5.10 取消收藏测试 图5.11 取消收藏完成
测试结果:测试的几个目标均达成,电影收藏测试成功。
5.2.4 电影购票测试
进入选座界面后,左上角会有座位的缩略图,方便查看座位在影院中的大致位置,另外手机端有购票数量的限制,最多可订三张电影票,如图5.12所示。选择好座位以后点击购买,跳出弹框,提示用户选择支付方式,如图5.13所示。订票成功后,个人影票中心会增加购票的纪录,如图5.14所示。
图5.12 订票数量测试 图5.13 支付方式测试 图5.14 购票成功纪录
测试结果:所有测试目标达成,完成电影购票相关的测试。
5.2.5 电影取票测试
用户可以在个人影票中心查看自己已购买票的具体信息,如图5.15所示。用户现场取票时,可以通过订票详情页中的取票二维码取票,如图5.16所示。
图5.15 订票详情测试 图5.16 二维码取票测试
测试结果:所有测试目标达成,完成电影取票测试。
5.2.6 电影退票测试
点击已订票记录中的“X”图标,系统会提示用户是否退票,如图5.17所示。退票操作成功后,当条影片订购记录会被自动删除,系统会同步提示用户“退票成功!”,如图5.18所示。
图5.17 退票测试 图5.18 退票成功
测试结果:测试退票的所有可能,均达成,退票测试成功。
5.2.7 电影评价测试
用户可以对电影做出评分和评论,评论成功时系统会自动提示,如图5.19所示。另外,用户还可以删除自己的评论,点击“X”图标,确认删除即可,如图5.20所示。当条评论被用户删除后,系统同时会提示用户“删除评论成功!”,如图5.21所示。
图5.19 添加评论测试 图5.20 删除评论测试 图5.21 删除评论成功
测试结果:所有测试目标达成,完成电影评论相关的测试。
本次我的论文课题是“基于Android卡卢琳电影购票系统”,采用了Android分层的结构来设计了系统,架构清晰,规范标准,模块性好,便于找到对应代码。本系统以Android Studio作为客户端的开发环境,Netbeans作为服务器端的编程环境,用安全性能较高的JavaDB作为数据库支撑开发。实现了相对全面的功能,用户可以选择支付方式来购票,浏览和收藏自己心仪的影片,还可以对观影感受购票体验做出评价,通过可视化的选座界面让用户更加直观地选择观影位置。
因为实习的问题,导致我开始做毕设的时间比较晚,外加上我自身的技术不太好,基于Android的卡卢琳电影购票系统有些预期的功能并未实现,例如支付功能未能与银行对接,且系统的界面设计较为简单、系统数据的安全问题还未解决、客服功能未实现等等。所以在后面的学习中,我会不断地加强自己的专业知识。虽然本次开发的系统在众多Android电影购票系统之中只是冰山一角,但是伴随移动互联网的快速发展,以及现在选择进入影院观影的人越来越多,Android电影购票系统今后发展的空间还是巨大的,为了以后让更多人使用卢卡琳电影购票系统,今后还要不断地进行完善和改进。
1 Khokhlov I,Reznik L.Data security evaluation for mobile android devices[C]. Open Innovations Association.IEEE,2017:154-160.
2 刘新宇,翁健,张悦.基于APK签名信息反馈的Android恶意应用检测[J].通信学报, 2017,5:190-198.
3 何伟超.软件工程需求分析与质量保障研究[J].河套学院学报,2014,11(04):68-71.
4 孙志强. Android开发现状及职业发展[J]. 电脑迷, 2017(6):88-89
5 张国防, 白晓波, 孙超. 基于Android的APP开发平台的搭建[J]. 通讯世界, 2015(12):68-69
6 周峰.UML在面向对象程序设计中的应用[J].电脑知识与技术,2017,13(23):186-187+225.
7 Aaditya Jain,Samridha Raj,Dr.Bala Buksh.A Comparative Study of Mobile Operating Systems with Special Emphasis on Android OS [J].IJCMS,2016,5(7):5-14.
8 Jamil Q,Shah M A.Analysis of machine learning solutions to detect malware in android[C].International Conference on Innovative Computing Technology. IEEE,2017:226-232.
9 黄勇军,刘东鑫,金华敏.云端结合的 Android 智能终端应用审计技术[J].电信科
学,2018,2:122-129.
10 卿斯汉.Android安全的研究现状与展望[J].电信科学,2016,32(10):2-14.
11 Moussa M,Penta M D,Antoniol G,et al.ACCUSE: Helping Users to Minimize Android App Privacy Concerns[C].Ieee/acm,International Conference on Mobile Software Engineering and Systems. IEEE,2017:144-148.
12 Joshi J,Parekh C.Android smartphone vulnerabilities:A survey[C]International Conference on Advances in Computing,Communication,&Automation.IEEE,2016:1-5.
13 叶益林,周振吉,洪征,等.基于静态分析的Android应用事件输入生成方法[J].网络与信息安全学报,2017,3(6):21-32.
14 许艳萍,马兆丰,王中华,等.Android智能终端安全综述[J].通信学报,2016, 37(6):169-184.
15 Singh P,Tiwari P, Santosh Singh D.Analysis of Malicious Behavior of Android Apps[J].Procedia Computer Science,2016,79:215-220.
16 文伟平,梅瑞,宁戈,等.Android恶意软件检测技术分析和应用研究[J].通信
学报, 2014,35(8):78-85.
17 Tam K,Feizollah A,Anuar N B,et al.The Evolution of Android Malware and Android Analysis Techniques[J].Acm Computing Surveys,2017,49(4):76.
18 尚振阳,杨瑞先.实时数据库系统数据安全采集方案[J].电信科学,2016, 32(10):175-180.
19 Kohan A,Yamamoto M,Artho C,et al.Java Pathfinder on Android Devices[J].Acm Sigsoft Software Engineering Notes,2017,41(6):1-5.
20 Hu H,Song J.Integration and optimization of Android applications based on service-oriented architecture[C].International Conference on Natural Computation,Fuzzy Systems and Knowledge Discovery.IEEE,2016:2098-2103.
21 Jain A,Prachi.Android security:Permission based attacks[C].International Conference on Computing for Sustainable Global Development.IEEE,2016.
22 王亚伟,彭长根,丁红发,等.基于标识符的Android客户端身份认证方案[J].网络与信息安全学报,2017,3(4):32-38.
23 Kaur P, Sharma S. Google Android a mobile platform: A review[C].Engineering and Computational Sciences. IEEE, 2014:1-5.
24 Kavitha K, Salini P,Ilamathy V.Exploring the malicious android applications and reducing risk using static analysis[C]//International Conference on Electrical,Electronics,and Op- -timization Techniques.IEEE,2016:1316-1319.
25 郭文峰. 基于ASP.NET的在线投票系统的设计与实现[D].华中科技大学,2014.