android手机公交线路查询系统设计方案.docx
- 文档编号:24917905
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:59
- 大小:715.32KB
android手机公交线路查询系统设计方案.docx
《android手机公交线路查询系统设计方案.docx》由会员分享,可在线阅读,更多相关《android手机公交线路查询系统设计方案.docx(59页珍藏版)》请在冰豆网上搜索。
android手机公交线路查询系统设计方案
Android手机公交线路查询系统设计方案
摘要
随着人们生活水平的提高,出行坐车成为日常生活中不可缺少的一部分。
而乘往目的地的线路需要随时掌握,于是手机公交线路查询软件,将成为人们生活出行的好帮手。
手机公交线路查询软件主要包括了服务器端以及客户端,服务器和客户端拥有各自独立的数据库,客户端采用数据库同步方式从服务器数据库获取信息。
用户既能从手机本地数据库获取信息,又能从互联网上获取信息,即便脱离服务器也能做为单机版软件使用。
通过手机公交查询软件,用户能够及时更新公交信息和查询线路,也能够借助Google服务器进行地图查询。
服务器有后台管理软件,方便了管理员对服务器的管理操作。
本手机公交线路查询系统采用了B/S-C/S结构。
关键词:
Java;手机公交线路查询;B/S-C/S结构;
第一章引言
随着因特网发展的日新月异,人们利用网络实现资源共享以及协同工作越来越成为时代的潮流,使用各种网上的软件方便生活,已经成为了一个不可扭转的趋势。
以此设计题目为目的,选择湘潭市作为实践对象,以湘潭市公交系统为基础,再利用所学知识,熟练运用开发工具后,开发一个湘潭市手机公交线路查询软件,并且尽可能将其开发为一个方便大众使用的公交线路查询软件。
而且在当今公交出行线路多数是通过PC机查询获得的,但是假想一下在公交出行线路走到一半的时候计划有所变化,公交出行线路需要有所调整,那么如何能够动态掌握线路信息显得尤为重要,而且将来对生活的满意度也不仅仅是百姓致富安居乐业就足以,而是逐渐趋向于一个更人性化的服务。
城市交通服务以及附属的一些服务一直都在不断的随着社会的进步而进步,这些服务从最开始的直接人力服务转向技术型服务,如电话询问,路牌等,然而这些服务总是有比较大的局限性,即纵然你知道了这条路该怎么走,下条路线该通到哪却不知,于是开发这个手机公交线路查询软件,可在手机上随时随地对公交线路进行查询,对用户将要出行的路线了如指掌,这对用户来说可以省去很多麻烦,节省不少时间。
本次毕业设计结合湘潭市公交线路系统开发一个湘潭公交线路手机查询软件,服务于大众。
第二章需求分析与概要设计
2.1需求分析
手机公交线路查询软件最基本的功能是能够有效的为用户提供查询服务,在最短的时间内给用户一条或多条到达目标地的路径。
整个查询过程中,只有数据信息是依靠服务器同步获取,其余功能均在手机端完成。
在此分别对手机公交线路查询软件的服务器端和客户端做需求分析。
2.1.1服务器端需求分析
服务器作为后台,需要专业人员对服务器操作和维护,一般情况可由非专业人员借助管理软件对服务器进行常规维护。
服务器可以通过数据库同步,为客户端数据库提供数据。
通过仔细分析服务器需求之后,服务器端要完成以下功能:
1、服务器后台管理功能
服务器后台管理是针对数据库进行操作,具有增、删、改、查功能。
2、数据同步功能。
采用Servlet技术,响应客户端请求,返回给客户端一端数据流,该数据流按照Xml语言规范写入数据流。
服务器端功能模块划分如图2.1所示。
图2.1服务器端功能模块图
2.1.2客户端需求分析
客户端主要是手机,用户无法通过手机对本地数据库进行操作,也无法对服务器数据库操作,管理员可以通过手机浏览器登录到服务器管理员页面对数据库进行操作,可以使用一些功能。
该软件应满足若干要求,比如能够随时掌握公交信息,动态更新最新数据等。
也要考虑作为手机软件可能会出现查询速度慢,数据流量过大,过度依赖服务器等问题。
通过仔细分析用户需求之后,该软件要完成以下功能:
1、查询线路功能
获得线路经过的每个站点信息以及线路的票价信息和发车时间信息。
2、地图查询功能
借助GoogleMap,完成公交查询并显示地图线路。
3、数据更新功能
服务器响应客户端请求返回一段数据流,客户端接收此数据流后,按照Xml语言规范对数据流进行解析,解析后将数据存入客户端数据库。
4、意见反馈功能
通过手机邮件将意见发送到管理员的邮箱。
客户端功能模块划分如图2.2所示。
图2.2客户端功能模块图
2.1.3开发环境及工具需求分析
服务器端开发环境,以windows7操作系统为开发平台,用Tomcat6.0做为服务器,Mysql5.0作为数据源,JSP作为开发工具,Dreamweaver8.0作为辅助开发工具,运行在一般的PC机上即可。
客户端开发环境,以Android手机操作系统为开发平台,用Android手机操作系统自带的SQLite作为数据源。
Java语言和Xml语言作为开发工具,Eclipse3.5作为辅助开发工具。
整个Android手机操作系统是在AndroidSDK提供的虚拟机中运行,该虚拟机运行在windows7操作系统上,所以客户端的开发是在windows7操作系统上运行的Android操作系统中进行的二次开发。
开发环境配置请参考文献[6]。
2.2概要设计
2.2.1开发流程
开发流程如图2.3所示。
图2.3开发流程图
2.2.2系统数据流图
系统数据流程如图2.4所示。
图2.4系统数据流图
第三章模式设计
3.1C/S模式简介
精简的说:
C/S模式是一种三层结构的系统,第一层在客户机上安装了客户机应用程序,第二层在服务器上安装服务器管理程序,第三层是数据访问层。
在C/S模式的工作过程中,客户机程序发出请求,服务器程序接收并且处理客户机程序提出的请求,然后返回结果。
C/S模式特点:
(1)C/S模式将应用与服务分离,系统具有稳定性和灵活性
(2)C/S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性
(3)由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快
(4)在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升每台客户机都要安装客户机程序,系统升级和维护较为复杂发。
3.2B/S模式简介
精简的说:
B/S模式是一种从传统的三层C/S模式发展起来的新的网络结构模式,其本质也是三层结构的C/S模式。
在用户的计算机上安装浏览器软件,在服务器上存放数据并且安装服务应用程序,服务器有WWW服务器和文件服务器等。
用户通过浏览器访问服务器,进行信息浏览、文件传输和电子邮件等服务。
B/S模式特点:
(1)系统开发、维护、升级方便每当服务器应用程序升级时,只要在服务器上升级服务应用程序即可,用户计算机上的浏览器软件不需要修改,系统开发和升级维护方便。
(2)B/S模式具有很强的开放性在B/S模式下,用户通过通用的浏览器进行访问,系统开放性好。
(3)B/S模式的结构易于扩展由于Web的平台无关性,B/S模式的结构可以任意扩展,可以从包含一台服务器和几个用户的小型系统扩展成为拥有成千上万个用户的大型系统。
(4)用户使用方便B/S模式的应用软件都是基于Web浏览器的,而Web浏览器的界面是类似的。
对于无用户交换功能的页面。
用户接触的界面都是一致的,用户使用方便。
3.3B/S-C/S模式
3.3.1B/S-C/S模式定义
B/S-C/S模式是将B/S模式和C/S模式组合而来的,吸取这两种模式的优点,达到互补的作用。
B/S模式和C/S模式都是三层结构,B/S模式第一层是表现层,第二层是业务逻辑层,第三层是数据访问层。
C/S模式三层结构中第一层是客户端与B/S模式中的第一层不一样,其余两层相同。
在B/S模式和C/S模式数据访问过程和业务逻辑处理过程中是在服务器端完成,用户只需接受服务器返回的结果。
在B/S-C/S模式中,一部分数据访问过程和业务逻辑处理过程在客户端完成,另外一部分数据访问过程和业务逻辑处理过程在服务器端完成。
本手机公交线路查询软件一部分功能只要依靠手机本地数据库就可以实现,令外一部分功能需要借助互联网实现。
目前不论是手机硬件还是计算机硬件,更新速度很快,而且硬件的配置水平也越来越高,在硬件条件允许的情况下把一部分业务处理、数据访问的过程放在客户端去完成,那么对服务器的硬件要求就会低一些,甚至一些高性能的PC机就可以作为服务器。
从整个作业量来看,本质上是把作业量往客户端多分摊一部分,降低服务器的作业量,因此,对客户端的硬件要求是比较高的。
B/S-C/S模式结构如图3.1所示。
图3.1B/S-C/S模式结构图
本软件系统采用B/S-C/S模式,系统框架如图3.2所示。
图3.2系统框架图
3.3.2B/S-C/S模式特点
B/S-C/S模式在继承了B/S模式和C/S模式的优点之后,还具有以下特点:
(1)可靠性高
1、客户端不必完全依赖于服务器,即便脱离服务器,还有手机数据库的支持,可以继续使用一部分功能。
2、客户端的数据丢失的时候,可以采用数据库同步的方式从服务器获得新的数据信息。
(2)省资源
一部分作业在客户端完成,服务器的访问量和作业量都会减少,省资源,维护起来会更加方便。
第四章数据库设计
4.1数据库结构
服务器数据库为总数据源,每一个客户端都拥有独立的小型数据库。
客户端数据库信息从服务器端同步获得。
服务器的数据库是基于Mysql建立,客户端数据库是基于SQLite建立。
数据库体系结构如图4.1所示。
图4.1数据库体系结构图
4.2服务器数据库设计:
E-R关系如图4.2所示。
图4.2服务器数据E-R图
根据上面的E-R图,本软件服务器端定义的arashmen数据库设计了以下4张表:
站点表:
station(表2)、线路表:
routes(表3)、发车时间表:
departuretime(表4)、票表:
fare(表5)。
本软件服务器数据库所包含的表的描述如表1。
表4.1数据库概况表
表名
描述
主要字段
stations(站点表)
保存站点信息
ID,station
routes(线路表)
保存线路信息
ID,RouteName,Content
departuretime
(发车时间表)
保存首班发车时间
保存末班发车时间
RouteName
FirstDepartureTime,LastDepartureTime
fare(票价信息表)
保存公交线路票价信息
ID,isFixed,FullFare
表4.2站点表
字段名
数据类型
长度
主键/外键
默认值
描述
id
Int
4
PK
ID,自动增长
Station
Varchar
50
站点名称
表4.3线路表
字段名
数据类型
长度
主键/外键
默认值
描述
RouteName
Char
20
PK
线路名称
Content
LongText
线路全径
表4.4发车时间表
字段名
数据类型
长度
主键/外键
默认值
描述
id
Int
4
PK
ID,自动增长
RouteName
Char
20
FK
线路名称
FirstDepartureTime
Time
首班发车时间
LastDepartureTime
Time
末班发车时间
表4.5票价信息表
字段名
数据类型
长度
主键/外键
默认值
描述
id
Int
4
PK
ID,自动增长
RouteName
Char
20
FK
线路名称
isFixedFare
Char
5
是否为分段计费
FullFare
Double
8
全程票价
4.3客户端数据库设计:
4.3.1SQLite简介
Android数据库使用的是SQLiteDatabase,我们来简单的介绍下Android平台上的SQLiteDatabase。
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款世界著名开源的数据库管理系统来讲,它的处理速度比他们都快。
该软件数据库的建立是完全在Android平台上执行Java代码,通过DVM编译来建立的,没有什么辅助工具,由于整个SQLite数据库是非可视化操作,所有对数据库的操作都是通过执行Java代码实现,在完成其查询功能的时候没有使用数据库高级编程,较为麻烦的关节是在如何有机的将客户端数据库整体结构实现出来,实现过程是无可视界面,也没有数据库辅助工具情况下,整个过程很抽象。
且表的设计应尽量简单,不要有错综复杂的关系,每张表都是独立的,不存在任何约束,数据库也是独立数据库,不采用Android特有的可共享数据库。
4.3.2数据库设计
E-R关系如图4.3所示。
图4.3客户端数据库E-R图
根据上面的E-R图,本软件客户端定义的arashmen数据库中包含以下4张表:
站点表:
station(表7)、线路表:
routes(表8)、发车时间表:
departuretime(表9)、票表:
fare(表10)。
本软件服务器数据库所包含的表的描述如表6。
表4.6数据库概况表
表名
描述
主要字段
stations(站点表)
保存站点信息
ID,station
routes(线路表)
保存线路信息
ID,RouteName,Content
Departuretime
(发车时间表)
保存首班发车时间
保存末班发车时间
RouteName
FirstDepartureTime,LastDepartureTime
fare(票价信息表)
保存公交线路票价信息
ID,isFixed,FullFare
表4.7站点表
字段名
数据类型
长度
主键/外键
默认值
描述
id
Int
4
PK
ID,自动增长
Station
Varchar
50
站点名称
表4.8线路表
字段名
数据类型
长度
主键/外键
默认值
描述
RouteName
Char
20
PK
线路名称
Content
LongText
线路全径
表4.9发车时间表
字段名
数据类型
长度
主键/外键
默认值
描述
id
Int
4
PK
ID,自动增长
RouteName
Char
20
FK
线路名称
FirstDepartureTime
Time
首班发车时间
LastDepartureTime
Time
末班发车时间
表4.10票价信息表
字段名
数据类型
长度
主键/外键
默认值
描述
id
Int
4
PK
ID,自动增长
RouteName
Char
20
FK
线路名称
isFixedFare
Char
5
是否为分段计费
FullFare
Double
8
全程票价
第五章服务器
端详细设计
5.1后台管理模式
后台制作使用JSP完成。
基本管理流程如图5.1所示。
图5.1管理流程图
通过管理员模式进入管理员添加线路页面,可以添加公交线路名称,首班发车时间,末班发车时间,线路全径。
添加页面如图5.2所示。
图5.2添加线路页面
实现添加功能代码如下所示:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pagelanguage="java"%>
<%@pageimport="com.mysql.jdbc.Driver"%>
<%@pageimport="java.sql.*"%>
<%@pageimport="java.util.regex.Pattern"%>
<%request.setCharacterEncoding("GB2312");%>
<%
//接收从adminPageInsert.jsp传来的数据
StringroutesName=request.getParameter("RoutesName").trim();
Stringroute=request.getParameter("Route");
StringfirstDepartureTime=request.getParameter("FirstDepartureTime");
StringfinalDepartureTime=request.getParameter("LastDepartureTime");
Stringurl="jdbc:
mysql:
//localhost:
3306/arashmen";
Stringuser="root";
Stringpassword="Jone";
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connectioncon=DriverManager.getConnection(url,user,password);
PreparedStatementstmt_routes;
PreparedStatementstmt_departuretime;
try{//抛出异常就直接执行rollback
Stringinsert_routes="insertintoroutes(RouteName,Content)values(?
?
)";
Stringinsert_departuretime="insertintodeparturetime(FirstDepartureTime,LastDepartureTime)values(?
?
)";
//preparedstatement相比statement更具有优势
stmt_routes=con.prepareStatement(insert_routes);
stmt_departuretime=con.prepareStatement(insert_departuretime);
stmt_routes.setString(1,routesName);
stmt_routes.setString(2,route);
stmt_departuretime.setString(1,firstDepartureTime);
stmt_departuretime.setString(2,finalDepartureTime);
stmt_routes.executeUpdate();
stmt_departuretime.executeUpdate();
response.sendRedirect("adminPageInsert.jsp");
}catch(Exceptionex){
//con.rollback();//回滚
}finally{
con.close();
}
%>
通过管理员模式进入管理员修改、删除线路页面,可以对已经添加成功的公交线路信息修改并保存,也可以直接在该页面删除数据。
修改、删除线路页面如图5.3所示。
图5.3修改,删除页面
实现修改、删除功能代码如下所示:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pagelanguage="java"%>
<%@pageimport="com.mysql.jdbc.Driver"%>
<%@pageimport="java.sql.*"%>
<%request.setCharacterEncoding("GB2312");%>
<%
StringrouteName=request.getParameter("routeNameText").substring(0,3).trim();;
StringfirstDepartureTime=request.getParameter("firstDepartureText");
StringfinalDepartureTime=request.getParameter("finalDepartureText");
StringupdateValue=request.getParameter("Update");
Stringroutes=request.getParameter("routesTextArea");
Stringurl="jdbc:
mysql:
//localhost:
3306/arashmen";
Stringuser="root";
Stringpassword="Jone";
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connectioncon=DriverManager.getConnection(url,user,password);
try{
Stringupdate_routes="updateroutessetContent=?
whereRouteName=?
";
Stringupdate_departuretime="updatedeparturetimesetFirstDepartureTime=?
LastDepartureTime=?
whereRouteName=?
";
Stringdelete="deletefromroutes,departuretimewhereRouteName=?
";
StringstrRoutes=null;
if("修改并保存".equals(updateValue)){
PreparedStatementstmt_routes=con.prepareStatement(update_routes);
PreparedStatementstmt_departuretime=con.prepareStatement(update_departuretime);
stmt_routes.setString(1,routes);
stmt_routes.setString(2,routeName);
stmt_departuretime.setString(1,firstDepartureTime);
stmt_departuretime.setString(2,finalDepartureTime)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 手机 公交线路 查询 系统 设计方案