移动互联网APP解决方案之拼车行业解决方案高校版设计.docx
《移动互联网APP解决方案之拼车行业解决方案高校版设计.docx》由会员分享,可在线阅读,更多相关《移动互联网APP解决方案之拼车行业解决方案高校版设计.docx(77页珍藏版)》请在冰豆网上搜索。
移动互联网APP解决方案之拼车行业解决方案高校版设计
移动互联网APP解决方案之拼车行业
解决方案
1绪论
1.1研究背景及意义
当前,随着经济的高速发展,汽车越来越多,开车的成本越来越高。
交通问题越来越严重的影响世界各大城市,大范围的交通拥堵,造成了环境污染、土地紧缺已经能源消耗等诸多社会问题。
交通问题不仅阻碍城市的进一步发展,还与我国目前提倡的地毯环保主题相违背。
针对目前的交通问题,铺设大量的道路,建设城市道路和乡村公路网是一个不错的解决方案。
但修建道路只能在一定时间缓解交通压力,因为道路的建设速度远远比不上车辆的增长速度,所以从远的来说,必须研究出交通可持续发展的策略。
对于这个问题,不少上班族正在把目光投向拼车。
在北京,深圳等一线城市,拼车已经形成了一定的规模。
相互拼车如果形成规模,上下班高峰时段估计车辆能减少1/5~1/4,能缓解目前车辆拥堵的现象。
两家拼车能节省将近一半的燃料,自然同时节约了养车的总支出。
提供了交友的机会,能增进邻里、员工之间的友情,互相学习提高驾驶技术。
互相间有了自己备用的司机,出现了问题互相有个照应。
互相制约减少违章,一旦喝多了或没醒酒能有个人替换。
如今30岁以下多是独生子女,拼车能使之成为挚友是十分可取的方式。
未来家庭人口越来越少了,两家人一起出去游玩,过节一同吃顿饭,都是很不错的选择。
出远门家中宠物无人照顾,就可以放到车友家了!
1.2国内外研究概况
德国老百姓热衷于拼车,除去环保、社交等因素外,最直接的考量就是低廉的费用。
德国老百姓热衷于拼车,除去环保、社交等因素外,最直接的考量就是低廉的费用。
除费用外,在德国拼车也无太多安全之虞。
如果在中介机构寻找拼车,司机及乘客的相关信息都有备份,均有迹可查,而在拼车网站上,司机与拼车客都需注册,双方在拼车完成后会互相给出信用评价,也具有相当的可信度。
在英国,想要拼车很容易,有很多专门的网站提供这项服务。
不过这些网站大部分更适合长途旅行,除了提供英国各个城市之间的拼车之外,还提供欧洲范围之内的拼车服务。
在韩国,随着油价的飙升、开车成本的提高以及日益严重的交通拥堵,拼车正受到韩国年轻一族的青睐。
除了上下班拼车,拼车旅行和拼车回家过节也逐渐成为一种时尚。
事实上,在上下班高峰期、周末、深夜、恶劣天气以及偏僻地区打车不易是日常生活中普遍遇到的一个难题。
有时好不容易来了一辆空车,司机却又漫天要价。
这样的情况在韩国也屡见不鲜。
美国是汽车大国,平均每百人就有80多人有车。
为了节省能源,减少道路和交通压力,美国各级地方政府、各种社团和社区都积极推动“拼车”,为“拼车”牵线搭桥,并提供各种便利和优惠。
拼车费一般都是AA制,支付形式因人因事而异。
有些拼车网站为拼车的人提供费用和安全担保,由网站对参加客户进行信用调查和信用评级,有些网站还提供拼车定期收费服务。
1.3论文的主要研究工作
本课题主要从计算机科学与技术专业着手,研究计算机特色专业建设的各项管理工作。
根据我校周边的实际情况,设计了一套计算机特色专业建设管理系统,主要围绕系统中涉及到的2种用户,对系统的注册、登录、发布信息、地图、个人资料管理模块作了具体的设计与实现。
在系统设计过程中,主要作了以下工作:
(1)根据系统用户角色少、用户分散等特点,系统采用C/S架构进行设计。
同时,由于Mysql体积小、速度快、总体拥有成本低,服务器端采用了PHP+Mysql技术开发。
(2)以系统中2种角色的业务活动为中心,在UML模型的指导下,对系统进行了需求分析、设计和主要功能模块的实现。
(3)为了验证系统的可用性和可靠性,最后,对系统进行了测试。
2关键技术
本章主要围绕系统在设计与开发阶段需要使用的到的相关技术和平台展开介绍,并分别从技术的原理、特点、发展方向等几个方面进行分析,从而说明其适用于本系统的原因。
2.1系统架构
即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。
客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。
开发比较容易,操作简便,但应用程序的升级和客户端程序的维护较为困难。
2.2Android平台概述
Android(安卓),是一个以Linux为基础的开源移动设备操作系统,主要用於智能手机和平板电脑,由Google成立的OpenHandsetAlliance(OHA,开放手持设备联盟)持续领导与开发中。
Android已发布的最新版本为Android5.0(Lollipop)。
Android系统最初由安迪·鲁宾(AndyRubin)等人开发制作[1],最初开发这个系统的目的是创建一个数位相机的先进操作系统;但是後来发现市场需求不够大,加上智能手机市场快速成长,於是Android被改造为一款面向智能手机的操作系统。
於2005年8月被美国科技企业Google收购。
2007年11月,Google与84家制造商、开发商及电信营运商成立开放手持设备联盟来共同研发改良Android系统,随後,Google以Apache免费开放原始码许可证的授权方式,发布了Android的原码,让生产商推出搭载Android的智能手机,Android後来更逐渐拓展到平板电脑及其他领域上。
2010年末数据显示,仅正式推出两年的Android作业系统在市场占有率上已经超越称霸逾十年的诺基亚Symbian系统,成为全球第一大智能手机操作系统。
2.3PHP技术
PHP(外文名:
PHP:
HypertextPreprocessor,中文名:
“超文本预处理器”)是一种通用开源脚本语言。
语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。
PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
PHP的特性包括:
(1)PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。
(2)PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多。
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
(3)PHP支持几乎所有流行的数据库以及操作系统。
(4)最重要的是PHP可以用C、C++进行程序的扩展!
2.4GSP定位技术
GPS英文全名是“NavigationSatelliteTimingAndRanging/GlobalPositionSystem”,其意为“卫星测时测距导航/全球定位系统”,简称GPS系统。
该系统是以卫星为基础的无线电导航定位系统。
GPS全球卫星定位导航系统,开始时只用于军事目的,后转为民用被广泛应用于商业和科学研究上。
GPS空间部分使用了二十四颗卫星组成的星座,卫星高度约20200公里,分布在六条升交点互隔60度的轨道面上,每条轨道上均匀分布四颗卫星,相邻两轨道上的卫星相隔40度,使得地球任何地方至少同时可看到四颗卫星。
传统的GPS定位技术在户外运转良好,但在室内或卫星信号无法覆盖的地方效果较差,而且如果所在位置上空没有3颗以上的卫星,那么系统就无法从冷启动状态实现定位。
2.5XX地图API接口
XX地图API是为开发者免费提供的一套基于XX地图服务的应用接口,包括JavaScriptAPI、Web服务API、AndroidSDK、iOSSDK、定位SDK、车联网API、LBS云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS云存储与检索等功能,适用于PC端、移动端、服务器等多种设备,多种操作系统下的地图应用开发。
2.6MySQL数据库
MySQL(发音为"myesscueel",不是"mysequel")是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在GeneralPublicLicense的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。
大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL这个名字,起源不是很明确。
一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQLAB创始人之一的MontyWidenius的女儿也叫My。
这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。
获胜的名字是由来自非洲斯威士兰的开源软件开发者AmbroseTwebaze提供。
根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。
它的历史也富有传奇性。
2.7本章小结
本章主要通过搜集国内外相似系统的资料,了解其应用的相关技术,通过技术特点的对比进行本系统的技术选择。
3系统需求分析
3.1系统可行性分析
本系统服务器采用PHP+Mysql技术,客户端采用Android平台。
根据本人所掌握的技术:
PHP+Mysql,Android,XXSDK,可以判定要做成这样的一个成品是完全没有问题的。
本系统计划从11月开始开发,于12月底完工,耗时两个月,时间非常充裕。
在选择服务器之前,考察了网上各个服务器的价格,质量以及访问速度,本系统采用了新网虚拟主机作为服务器。
3.2系统功能需求
本系统中,所有的业务都以用户和系统管理员两种角色。
下面对着两种角色进行具体的分析。
3.2.1系统管理员功能需求
系统管理员主要负责审核司机的证件的真伪。
系统管理员主要负责司机的认证管理,已经定期对系统的漏洞进行修复,数据库备份,危险文件删除,以提高系统的安全性。
图3.1
3.2.2用户功能需求
首先,用户必须有注册,登录,管理个人资料这些必备的功能。
然后是定位自己,发布信息,查看信息功能模块。
如图3.2所示:
图3.2
综上所述,本系统需要实现以下模块:
注册模块、登录模块、发布信息模块、消息模块、订单管理模块、个人信息管理模块。
3.3系统安全需求
(1)尽量减少客户端敏感的内容,尽量把这些放在服务端。
(2)防止命令注入攻击。
命令注入攻击是指这样一种攻击手段,黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容。
使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此。
如果使用了被污染数据,命令注入漏洞就产生了。
(3)防止SQL注入攻击,即一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。
用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据。
(4)防止session劫持。
session劫持是一种比较复杂的攻击方法。
大部分互联网上的电脑多存在被攻击的危险。
这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能。
(5)对用户提交的所有数据进行验证。
3.4本章小结
本章分析系统的运行模式,功能需求,技术可行性,安全问题。
4系统的设计
经过对系统的需求分析,更加明确了系统的需求导向,本章针对系统的需求,结合流程图对系统的功能模块进行具体设计。
4.1系统总体设计
本系统架构表示层由Android编写。
Android客户端包含了UI以及UI逻辑控制。
业务层主要在PHP服务期端,Android通过http协议,以POST的方式发送字符串,服务期返回JSON数据格式的结果,Android再根据结果进行业务结果判断。
体系结构抽象如图4.1所示。
图4.1
4.2系统功能模块设计
根据第三章的功能需求,本节对系统进行具体的功能设计。
主要分为5大模块,注册模块,登录模块,发布信息模块,个人信息管理模块,地图定位模块。
如图4.1所示。
图4.2
4.2.1注册模块设计
系统注册用户信息的时候,我们需要用户提交电话phone(13位手机号),密码password(小于20位字符,大于6位字符),昵称name(小于6个汉字,大于2个汉字),性别sex。
注册分成两步奏,第一步提示用户输入手机号,点击获取验证码,php平台发送验证码,验证码正确才可以继续第二步骤。
第二步骤,完善剩余信息(密码,性别,昵称)。
到此,注册完成。
如图4.3所示。
图4.3
4.2.2登录模块设计
Android需要提交3个值,第一个值key,说明要进行的业务逻辑,第二个值账户username,必须是13位手机号码。
第三个值密码password,必须是小于20个字符的字符串。
账户和密码的验证在服务器验证。
整个流程如图4.2所示。
图4.4
4.2.3地图模块设计
关于地图模块,本系统是通过XX地图SDK调用XX地图API接口获取地图数据。
当用户登录成功的时候,客户端调用GPS获取用户当前经纬度,再把经纬度发送给服务器。
服务把用户当前位位置记录在数据库里面。
同时,客户端请求周边用户位置,返回周边其它用户的位置。
在XX地图上,我们通过使用XX地图的mBaiduMap.addOverlay()方法,添加覆盖物,把乘客和司机两种用户分别标示出来。
如果是乘客,只显示他/她的性别,跟昵称,不显示电话。
如果是司机,显示昵称和电话。
乘客通过地图,可以很方便的获取周边司机的信息。
随时可以通过App拨打电话,联系司机。
整个流程如图4.2所示。
图4.5
4.2.3发布信息模块
拼车信息分成两种,一种即时拼车,一种是正常拼车。
即时拼车适用于当天急需用车的乘客,当前城市的司机点击消息界面,切换消息状态,就可以看到即时拼车的信息。
而正常拼车使用于几天后拼车,不急着用车的乘客。
正常拼车需要用户提供起点、终点、约定拼车的时间、给司机留言(不是必须有的)。
即时拼车需要用户提供起点、终点、愿意等待的司机的时间(5分钟,15分钟,25分钟)、给司机留言(不是必须有的)。
同时,用户在客户端输入起点跟终点的时候,提供地图选取位置的功能。
限制起点、终点20字以内。
时间使用Android的时间空间,以标准的格式输入。
4.2.4个人资料管理模块
个人资料管理主要涉及到:
用户的头像修改、昵称修改、性别修改、密码修改、身份的切换(乘客或者司机)、当前城市切换、用户认证(行驶证认证,驾驶证认证)、自动登陆开关、自动定位城市开关。
其中,由于系统是默认30秒更新一次数据库的用户经纬度。
如果个自动定位开关关闭,将不再自动更新定位。
用户认证主要是用于司机的认证,通过认证的司机将会在个人资料上显示他的认证标志。
认证的审核将由系统管理员来完成。
4.3数据库设计
数据库是信息系统的核心和基础,本系统采用Mysql5.4数据库,数据库命名为carshare,主要包括系统管理员信息表(sys),用户表(user),拼车信息表(info)。
(1)系统管理员信息表
系统管理员信息表主要设计了管理员ID、姓名、账号(联系电话)、密码等,如表4-1所示。
表4-1系统管理员信息表(sys)
字段
字段名
类型
宽度
是否主键
备注
1
sys_id
自增长
是
记录表长度
2
phone
Nvarchar
20
账户名,手机号码
3
password
Nvarchar
20
登录密码
4
name
Nvarchar
10
系统管理员姓名
(2)用户信息表
用户信息表主要设计了用户的ID、姓名、账号(联系电话)、密码,经度、纬度、身份(乘客或者司机)、当前所在城市等,如表4-2所示。
表4-2用户信息表(user)
字段
字段名
类型
宽度
是否主键
备注
1
user_id
自增长
是
记录表长度
2
phone
Nvarchar
20
用户账号(联系电话)
3
password
Nvarchar
20
登录密码
4
name
Nvarchar
20
用户昵称
5
sex
Nvarchar
1
性别
6
mystatus
Nvarchar
1
身份d表示司机,p表示乘客)
7
city
Nvarchar
10
用户当前所在城市
8
lat
double
9
经度
9
log
double
9
纬度
10
auth_phone
Nvarchar
5
电话是否真实
11
auth_licence_driver
Nvarchar
5
驾驶证是否真实
12
auth_licence_car
Nvarchar
5
行驶证是否真实
(3)拼车信息表
拼车信息表(info)主要设计了拼车信息的ID、用户表ID、信息类型、起点、终点、出发时间、发布时间、愿意等待时间、用户留言等,如表4-3所示。
表4-3拼车信息表(info)
字段
字段名
类型
宽度
是否主键
备注
1
info_id
自增长
是
记录表长度
2
user_id
int
11
用户表ID
3
type
int
1
拼车类型(1正常,2及时)
4
departure
Nvarchar
32
起点
5
Terminal
Nvarchar
32
终点
6
dep_date
Nvarchar
10
出发日期,格式:
2015-11-12
7
Dep_time
Nvarchar
10
出发时间,格式:
07:
00
8
Wait_time
int
2
等待时间(5,15,25)
9
Pub_date
Nvarchar
10
发布信息时间,格式:
2015-11-1113:
00
10
info
Varchar
200
给拼友留言,可以为空
4.4系统安全性设计
系统安全性,我觉得应该从软硬件结合做起。
硬件方面由新网负责,对此笔者是比较信任的。
软件方面,服务器端是由Apache+PHP+Mysql组成的,apache应该有以下设置:
(1)编译源代码,修改默认的banner
(2)访问特殊目录需要密码.htaccess
(3)关闭索引目录options-Indexes
(4)关闭CGI执行程序options-ExecCGI
(5)apache限制目录php_admin_valueopen_basedir/var/www
(6)apache的php扩展名解析漏洞
apache配置文件,禁止.php.这样的文件执行,配置文件里面加入
orderAllow,Deny
Denyfromall
(7)apache设置上传目录无执行权限
关闭路径/www/home/upload的php解析:
orderallow,deny
Denyfromall
在PHP方面:
(1)配置文件php.ini设置register_globals=Off。
(防止变量滥用)
(2)magic_quotes_gpc=On
(3)safe_mode是唯一PHP_INI_SYSTEM属性,必须通过php.ini或httpd.conf来设置。
要启用safe_mode,只需修改php.ini:
safe_mode=On(避免本地包含、文件打开、命令执行)
(4)如非特殊需要,一定要关闭PHP的远程文件打开功能。
修改php.ini文件(避免远程包含漏洞)
(5)防注入,在php.ini中,找到此节:
;AutomaticallyaddfilesbeforeorafteranyPHPdocument.
;auto_prepend_file="phpids.php"
;auto_append_file="alert.php"
默认是空,请添加所包含的文件。
同时找到:
;UNIX:
"/path1:
/path2"
;include_path=".:
/php/includes"
;
;Windows:
"\path1;\path2"
include_path=".;F:
\PHPnow\htdocs"
(6)修改display_errors=Off(关闭警告及错误信息)。
(7)对于用户所提交的数据,笔者掌专门设计一个过滤类,用来过滤非法数据。
4.5本章小结
本章对系统的结构设计、系统的功能以及安全性进行了详细的阐述,重点指出了开发中需要注意的问题。
5系统的实现与测试
根据系统所涉及的用户,系统分为地图模块、发布信息模块、登录模块、注册模块和个人信息管理模块,本章将围绕这5个模块对主要功能模块进行具体的实现。
最后,并对系统进行测试,以确保系统运行的稳定性和可靠性。
5.1系统开发与运行环境
系统的运行环境涉及到整个系统的质量。
不同的系统,他对环境的要求是不一样的。
笔者对本系统的运行环境做了如下介绍。
(1)网络环境
国内高速节点。
新网linux主机。
(2)硬件环境
服务器采用机架式IBMSystemx3650M42U服务器,内存8G,1颗4核处理器,采用SATA/SAS硬盘接口,1TB容量大小,两块千兆网卡。
(3)软件环境
系统服务器端采用Linux操作系统,采用Mysql5数据库,web服务器采用Apache2.2.16。
独立空间200M,数据库20M(可升级),10G月流量,并发连接150个。
5.2系统主要功能模块的实现
5.2.1注册功能
本系统注册功能暂时只提供手机号码注册,注册账号就是手机号。
在打开APP进入登录界面,点击右下角的注册按钮,进入注册。
账号:
1385077XXXX密码:
123456,昵称:
XXX。
如图5.1,图5.2所示。
图5.1注册第一步图5.2注册第二步
当输入手机号,点击“获取验证码”的时候,客户端把号码发给服务器,服务器验证这个手机号是否被注册了,是否是规范格式的手机号。
是返回验证码,不是将提示手机号被注册了。
点击“下一步”,进入详细资料的填写。
当点击“完成”,APP显示注册成功,否则