本科毕业设计城市公交查询系统设计与实现.docx
《本科毕业设计城市公交查询系统设计与实现.docx》由会员分享,可在线阅读,更多相关《本科毕业设计城市公交查询系统设计与实现.docx(41页珍藏版)》请在冰点文库上搜索。
本科毕业设计城市公交查询系统设计与实现
学号:
2015届本科生毕业论文(设计)
城市公交查询系统设计与实现
学院(系):
专业班级:
学生姓名:
指导教师:
合作指导教师:
完成日期:
城市公交查询系统设计与实现
摘要
公交作为城市的主要交通手段之一,随着人们的生活水平的提高和出门次数的增多,占着越来越重要的地位。
随之而来也带来了查询公交路线的问题。
成千上万的公交纵横整个城市,对于一个初来咋到的游客或者求学者来说,坐上正确的、快速的、便利的、优惠的公交去到正确的目的地尤其重要。
在此背景下,公交查询系统应运而生,该系统致力于为乘客提供最新的公交公告信息、最适合乘客的公交路线以及提供方便乘客们讨论路线的留言板功能,让乘客们出行无忧,一帆风顺。
其中主要功能包括:
路线查询(最少换乘、最少时间、最少费用)、站点查询、车次查询、公告信息查看、留言板及管理员对这些信息的管理模块。
关键词:
公交查询系统;JAVA+STRUTS2+JSP;MySql
DesignandImplementationofBusCircuitSearchSystem
Abstract
Bus,asoneofthemostimportanttransportationmeansofthecity,withtheimprovementofpeople’slivingstandardsandtheincreasenumberofouthome,occupyinganincreasinglyimportantrole.However,it’salsobroughttheproblemofqueryingbusroutes.Thousandsofbusesaspectthewholecity,it’sespeciallyimportantforthosewhoisthefirsttimeherefortravelingorattendingschooltoridetheright,thefastest,theconvenient,andthecheapestbusreachtherightdestinations.Forthispurpose,the‘buscircuitsearchsystem’appeared.Thissystemwasdesignedforpassengerstogetthelatestbusannouncementsandthemostsuitablebusroutesandprovide‘messageboard’forpassengerstodiscussroutesorsomeotherthings.Letpassengerstravelwithnoworriesandallthingsgoeswell.Themainfunctionsinclude:
routesinquiry(leasttransfer,leasttime,andleastfee),stationsinquiry,carsinquiry,announcementsview,messageboard,andthemoduleofadministrator’smanagementofthesesinformation.
Keywords:
buscircuitsearchsystem;JAVA+STRUTS2+JSP;MySql
第1章绪论
在这一章节中将主要介绍课题的选题背景和意义,以及在设计与实现该城市公交查询系统过程中使用到的开发技术与运行环境。
1.1课题背景及意义
对于为什么选择这个课题及选择这个课题的意义何在的问题,下文将从城市公交查询系统的现状等方面详细介绍。
1.1.1选题背景
公交作为城市的主要交通手段之一,随着人民生活水平的不断提高,出门旅行的次数和人数不断的增多,占据着越来越重要的地位。
然而,在这些纵横交错的公交路线中,要找到那条便利、便宜、正确以及所需时间最少的公交路线并不容易,而且对于出门在外的旅客或者求学者来说,因为是初次到达某城市,对该城市的公交路线或者公交信息知道的不多,这会大大的影响旅行进程及心情。
目前我国的城市公交查询系统现状来看已经有XX地图这样的大型完善的公交查询系统,乘客可以方便的知道自己的位置、需要乘坐的公交、到达公交站所需不行时间等等,也有一些如西安城市公交查询系统这样的小型系统,而我所设计的是基于B/S模式的更加完善的公交查询系统,虽然不能像XX地图那样定位,但是增加了车次的大略位置定位、公交公告信息、天气信息、留言板等功能,其中还增加了各路线到达目的地所需的时间及费用信息,以更加方便乘客的出行。
在此背景下,我所设计与实现的城市公交查询系统就具有实际的意义。
1.1.2选题意义
随着经济的快速发展,人们的生活节奏也加快了脚步,时间对于大家来说是分秒必争的,尤其是对于假期本来就不多的工作族来说,如果旅行的时间大部分都花在了路线上那就太不值了,而城市公交车以其遍布范围广、费用低、方便、安全的特性作为大多数旅行、出差等等的人首选的交通方式,所以我们急需一个简洁方便的公交路线查询系统指引我们的行程。
以前对于大多数人来说在一个我们并不熟悉的城市坐公交的路线信息等都是通过询问熟人或者询问路人,这不方便、信息不全是一回事,更重要的是还可能不安全。
而现在有了城市公交查询系统我们也可以像当地居民一样知道该在哪儿上公交、在哪一站下车,也不用担心会被骗,城市公交查询系统带给了人们巨大的方便。
鉴于现在已经存在如XX地图这样比较完善的查询系统,所以我设计的城市公交查询系统将在路线查询、车次查询、站点查询的基础上,增加留言板、天气信息查询和公交公告信息查询功能模块以更加贴近实际需求,方便人们生活,达到其利用价值。
1.2系统目标
城市公交查询系统以更加方便人们的生活为目标,前台主要实现以下功能:
1、公交路线查询:
包括公交直达、一次换乘和二次换乘,查询结果按照最少时间、最少换乘和最少费用排序,用户可以选择最适合自己要求的路线。
在所查路线页面也可以查看该路线的车次和站点所对应的详细信息。
说明:
按照最少时间排序时,若时间一样则再按照换乘次数排序,若换乘次数也一样,则再按照所需费用排序;按照最少换乘排序时,若换乘次数一样,则再按所需时间排序,若所需时间也一样,则再按照费用排序;按照最少费用排序时,若所需费用一样,则再按照所需时间排序,若所需时间也一样,则再按照换乘次数排序。
2、公交车次查询:
若用户想要查询某车次的详细信息时可以使用车次查询功能,系统会显示出所查询车次的详细信息以及车次大略定位情况。
3、公交站点查询:
若用户想要查询某站点的详细信息时可以使用站点查询功能,系统会显示出经过该站点的所有车次,用户还可以查看这些车次的详细信息。
4、公交公告信息查询:
管理员可以将公交的一些调整信息等发布在网站上以告知广大用户,让广大乘客即时了解公交系统信息。
5、天气信息:
我所设计的城市公交系统还增加了天气信息的查询功能以方便出门用户尽早知道当天或者近日天气信息而进行调整自己的行程。
6、留言板功能:
乘客可以免费注册公交系统账号,拥有账号的乘客可以在留言板页面进行回复或者发表留言操作,广大乘客可以在留言板页面上尽情讨论大家的经历和好的路线建议,管理员也可以给乘客回复更为详细准确的信息。
功能可能还不能满足所有乘客的要求,但是希望该城市公交查询系统可以为人们提供更为方便的生活。
第2章系统开发工具及环境简介
本次开发工程中我用到的开发工具有JAVA、Struts2、JSP,数据库用的是MySql,使用的数据库连接技术是JDBC,运行环境是Myeclipse和Tomcat7.0。
后台开发时还用到了DWZ框架,后面参考文献会具体介绍。
2.1系统开发工具
在本次设计与实现城市公交查询系统过程中,用到的开发工具(技术)主要有JAVA语言、Struts2、JSP、MySql数据库和JDBC数据库连接技术,下面将分别简要对这些语言和技术进行介绍。
2.1.1JAVA简介
我在设计与实现城市公交查询系统过程中使用的主要是JAVA语言,所以在此我将简单的介绍一下JAVA。
JAVA作为计算机编程语言之一,是Sun公司推出的可以撰写跨平台应用软件的面向对象的程序设计语言,是一个简单的、面向对象的、安全的、与平台无关的、可移植的、多线程、高性能的语言,目前广泛的应用于电脑、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,拥有最大的开发群。
JAVA分为三个体系:
JavaSE(标准版)、JavaEE(企业版)和JavaME(微型版),它提供许多框架服务,比如Spring、Struts、Hibernate等,开发工具也是多种多样,如Myeclipse、Eclipse、NetBeans。
在该系统中我所使用的是运行在Myeclipse10.0上的JAVA+Struts2+JSP框架,数据库使用的是MySql,下面简单介绍Struts2、JSP和MySql。
2.1.2Struts2简介
Struts2是Struts的下一代产品,是以WebWork为核心采用拦截器的机制来处理用户的请求,是在Struts1和WebWork的基础上进行合并的全新产品。
Struts2中的一个Action处理一个实例,在使用Struts2时要先在Web.xml中配置Servlet为struts,然后在Struts.xml中定义Action来处理页面请求。
关于Struts2的详细信息大家可以在网上或者图书馆查看。
2.1.3JSP简介
JSP的全名是JavaServerPages(Java服务器页面),是由Sun公司倡导、众多公司参与一起建立的动态网页技术标准,是在传统HTML文件中插入Java程序段和JSP标记的文件,是跨平台的,既能在Linux上运行,也能在其他操作系统上运行。
JSP以<%%>的形式实现了HTML语法的Java扩展,是一种动态网页技术,主要目的是将逻辑表现从Servlet中分离出来。
JSP的优点:
1):
一次编写,到处运行;用JSP开发的Web应用是跨平台的,除了系统之外,代码不用作任何改变;2):
多平台支持,基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,与系统无关;3):
Java开发工具支持,Java拥有许多开发工具,在这些开发工具中几乎都支持JSP技术;4):
执行速度快,JSP第一次执行的时候需要通过JSP引擎转换成Servlet文件,然后再通过JVM编译和执行程序,其后一直驻留于服务器内存中,所以,JSP程序的第一次执行速度都会比较慢,到第二次以后就会很快。
若不考虑JSP页面第一次编译所花的时间,则JSP的响应速度要比ASP快的多。
2.1.4MySql简介
此次连接数据库使用的是JDBC技术,数据库使用的是MySql。
MySql是一个关系型数据库管理系统,在Web应用方面是最好的关系数据库管理系统软件之一,是由MySqlAB公司开发,目前属于Oracle公司。
与其他大型数据库如Oracle、SQLServer等相比虽然有不足之处,但是其体积小、速度快、总体拥有成本低和开放源码的特点在中小型网站开发中大受欢迎。
在使用MySql数据库时还有许多用户界面操作软件,可以大大方便开发人员使用MySql数据库,而我们学生大多使用的是SQLyog,我们叫它“小海豚”,在SQLyog用户界面化操作软件中我们可以很方便的创建数据库、数据表、视图等,插入数据或者修改表结构都很简单,不用直接写SQL语句,大大的减少了开发时间。
2.1.5JDBC简介
JDBC,全称JavaDataBaseConnectivity(Java数据库连接),是一种用于执行SQL语句的JavaAPI(应用程序编程接口),由一组用Java语言编写的类和接口组成,可以为许多关系数据库提供统一访问。
有了JDBC,向各种关系数据库发送SQL语句就很容易了。
然而JDBC也有不足之处,尽管JDBC在Java语言层面实现了统一,但对不同的数据库仍旧有许多不同,所以为了更好的实现跨数据库操作,最近“大势”的Hibernate诞生了,Hibernate是对JDBC的再封装,实现了对数据库操作更宽泛的统一和更好的可移植性,在各企业和单位项目中很受欢迎。
2.2运行环境
本次设计的城市公交查询系统是一个基于B/S(浏览器/服务器)的网站系统,开发时用的软件是Myeclipse,服务器是Tomcat7.0,详细介绍如下:
2.2.1Myeclipse简介
Myeclipse是在eclipse基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java、JavaEE以及移动应用的开发。
因为有Myeclipse,开发一个网站更加容易,因为它的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持,支持JavaServlet,AJAX,JSP,Struts,Spring,Hibernate,JDBC数据库链接工具等多项功能,可以说是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。
Myeclipse的版本特别多,目前已经有十几个版本,最新版本是2015正式版。
我使用的是Myeclipse10.0版本也很好用。
2.2.2Tomcat7.0简介
Tomcat是一个免费的Web应用服务器,由Apache、Sun及其他一些公司共同开发的轻量级应用服务器,适用于中小型系统和并发访问用户不是很多的场合,是JSP开发和调试的首选。
将Web工程部署到Tomcat服务器上后就可以在浏览器上查看页面的设计效果。
它的版本也很多,目前最新版本是Tomcat8.0,我使用的是Tomcat7.0。
第3章需求分析
需求分析就是站在系统用户的角度思考该系统所应该具备的功能要求、数据要求以及性能要求。
本身平时也会作为一名乘客,我就以自己作为一名乘客出发确定系统边界、功能和性能等要求,下面就从系统需求分析、数据库需求分析和性能需求分析三个方面对城市公交查询系统进行需求分析。
3.1系统需求分析
为了更加方便乘客查询公交信息以及管理员对公交信息进行管理,下面分为用户功能和管理员功能进行阐述:
3.1.1系统用户功能
系统用户功能包括:
公交查询、站点查询、路线查询(公交直达、一次换乘、二次换乘)和留言板(登录用户可留言、回复留言)、用户注册、登录、修改密码、修改个人信息、查看公交公告信息和天气信息。
3.1.2系统管理员功能
管理员功能主要包括:
添加车次、站点;修改车次、站点;删除车次、站点;查询车次、站点;登录、修改资料信息;回复留言板;添加、删除和修改天气信息;添加、删除和修改公告信息、查看所有用户的部分信息。
综上所述,系统功能流程图如下:
图3-1系统功能模块图
3.2数据库需求分析
数据库在一个网站、系统中占据着绝对重要的角色,数据库设计的好坏将直接影响着该网站或系统的顺利运行,因此要做好一个网站或系统,首选要设计好数据库。
数据库设计时主要分为需求分析、概念结构设计、逻辑结构设计、物理结构设计、验证设计和运行与维护设计,最终得到一个完整的数据库。
数据库需求分析将从用户和管理员两个角度分析该系统需要哪些表、表之间有哪些联系、表中有哪些数据及其数据类型、需要哪些视图,即获得用户和管理员对信息的要求、处理要求及安全性与完整性要求。
信息要求:
指系统用户需要从数据库中获得信息的内容和性质,由信息要求可以导出数据要求,即在数据库中需要存储哪些数据;处理要求:
指系统用户要完成什么处理功能,对处理的响应时间又什么要求,处理方式是批处理还是联机处理。
3.2.1信息要求
1、用户(前台):
用户需要从数据库读取或存入的数据包括路线信息数据、车次信息数据、站点信息数据、公告信息数据、天气信息数据、留言信息数据、个人信息数据等。
路线信息数据:
用户所查询站到站的所有路线按所需时间、换乘次数或所需费用排序的路线号、车次、经过的站点、所需总时间、所需总费用、中转站等。
车次信息数据:
用户所查询车次的首班时间、末班时间、目前运行状态、运行区间、经过的站点、次序、时间、票价、发车间隔时间等。
站点信息数据:
包含用户所输入数据的所有站点的信息,经过这些站点的车次的信息。
公告信息数据:
公告的标题、时间、内容等。
天气信息数据:
日期、星期、气候、风况、最高气温、最低气温、空气质量等。
留言信息数据:
留言人、留言标题、留言内容、留言时间、回复人、回复内容、回复时间等;个人信息数据:
个人ID、用户名、登录密码等。
2、管理员(后台):
路线、车次、站点、公告、留言、天气、所有用户及个人信息等数据。
3.2.2处理要求
1、用户(前台):
对路线、车次、站点的查询操作处理,其中对路线进行按时间、换乘次数或者费用排序的处理;登录、免费注册、修改个人用户名、修改密码操作处理;查看所有留言、查看与某人相关留言、查看与自己相关留言、发表留言操作处理;查看公告信息及天气信息操作处理。
2、管理员(后台):
对路线、车次、站点、公告、天气信息的增删改查操作处理;登录、查看个人信息、修改密码操作处理;查看所有留言、回复留言操作处理;查看所有用户的部分信息操作处理。
3.3性能需求分析
为了保证系统能够安全、长久、顺利、高效的运行,城市公交查询系统应该满足以下的性能需求:
3.3.1系统的及时性
系统对于公交车次、路线、站点、公告等信息应及时反应,首先是管理员对数据库中的数据及时进行添加、删除和修改操作,其次是系统从数据库获取更新数据的及时性,只有这样,才能保证用户得到及时的、正确的信息以及时调整自己的行程。
3.3.2系统的准确性
城市公交查询系统是一个正规的、城市公交公司管理的、被乘客信任的系统,若系统中有不正确、过期的信息将会影响乘客的行程、甚至是直接利益,所以,城市公交查询系统一定得保证其数据的正确性。
要保证系统数据的正确性,首选管理员一定得及时有效的更新数据库信息,保证数据的正确性,其次是系统必须要及时获取数据库中的更新数据,所以系统的响应速度要求要快。
3.3.3系统的易用性
决定一个系统的优劣,功能的完整性是一个要素,另一个要素是系统的易用性。
城市公交查询系统作为一个实用性的系统,其易用性非常重要。
对于使用某系统的用户来说,能简单的在该系统找到想要的信息、想要操作的功能才是一个实用的系统,当然系统的外观也会增加用户使用欲望。
第4章系统概要设计
概要设计是指将用户需求转化为数据结构和软件的系统结构,数据结构设计即数据库设计,将用户的信息需求转化为数据库中的表结构设计;软件的系统结构即功能模块设计,将用户的处理需求转化为对系统的功能模块设计。
下面就系统功能模块设计和数据库设计详细介绍。
4.1概述
系统概要设计是将系统需求分析阶段所分析的用户的信息要求和处理要求抽象化为对系统数据库的设计和对系统的功能设计。
功能模块设计是将一个复杂的系统按功能进行模块划分,建立模块的层次结构及调用关系,确定模块间的接口及人机交互界面等。
数据库设计包括设计数据库中的表及表结构,系统要用到的用户子模式(即视图)等。
在系统概要设计阶段中,最终要确定系统的功能和数据库的表及表结构。
4.2功能模块
我将系统功能分为两块:
前台用户功能和后台管理员功能。
4.2.1前台用户
前台功能是用户可以实现的功能,主要包括登录注册、修改密码、修改个人信息、路线查询、车次查询、站点查询、公告信息查看、天气信息查看和留言板;
详细描述:
1、路线查询:
用户输入始发站和终点站,可以直达的为公交直达,给出时间;不能直达的可分为换乘最少、费用最少和时间最少,以供用户选择;
换乘最少:
按换乘次数排序,若换乘次数相等,则按所需时间排序;若所需时间也相等,则再按所需费用排序;
费用最少:
按所需总费用排序,若所需总费用相等,则按所需时间排序;若所需总时间也相等,则再按所需换乘次数排序;
时间最少:
按所需总时间拍排序,若时间相等,则按所需换乘次数排序,若换乘次数也相等,则再按所需费用排序。
2、车次查询:
用户输入要查询的车次,系统给出用户查询的公交所经过的站点及始发站到各站点所需时间、费用及公交的大略定位,用户也可以通过链接查到所经过的各站点的详细信息;
3、站点查询:
用户输入要查询的站点,系统给出经过该用户所查询的站点及含有该站名的车次,用户也可以通过链接查到这些车次的详细信息;
4、用户登录、注册、修改信息:
若用户拥有系统账号就可以在留言板上发表和回复留言;系统为用户提供登录、免费注册、修改密码、修改个人信息功能;说明:
未登录用户可以查看所有留言,但是不能回复和发表留言;
5、留言板:
用户有疑问或不知道的可以在留言板上留言;
6、公交公告信息:
用户可以查看所有公告信息;
7、天气信息:
用户可以在首页查看当天及未来一周的天气信息,包括日期、星期、气候、风况、最高气温、最低气温和空气质量。
综上所述,系统用户的功能模块图如下:
图4-1用户功能模块图
4.2.2后台管理员
介绍再详细一点
综上所述,管理员的功能模块图如下:
图4-2管理员功能模块图
4.3数据库设计
数据库设计是根据用户的需求,在数据库管理系统(在此我用的是MySql)上设计数据库的结构和数据库的过程。
由于设计数据库是一个非常复杂的过程,不可能一蹴而就,在设计过程中会不断的、反复的修改、求精,所以下面将从数据库的概念结构设计、逻辑结构设计和物理结构设计三个阶段详述数据库设计。
4.3.1数据库概念结构设计
在设计数据库的初始阶段要用数据模型来表现数据库的结构与语义以实现对现实世界进行抽象。
目前广泛使用的数据模型分为两种:
独立于计算机系统的“概念数据模型”和“结构数据模型”,在本次系统设计与实现中我将采用概念数据模型中的“实体联系模型(ER模型)”来描述数据库的结构和含义以对现实世界进行抽象。
ER模型是用ER图来表示数据模型的方法,它直接从现实世界抽象出实体类型及实体间联系,它的优点有:
接近人的思维,容易理解;与计算机无关,用户容易接受。
实体和属性的定义如下:
管理员表:
登录ID、用户名和密码;
站点表:
编号和站名;
车次表:
编号、车次、服务类型、车辆类型、运行区间、首班发车时间、末班发车时间、发车间隔时间;
线路表:
编号、车次、站点、次序、时间、票价、方向。
用户表:
用户账号、用户名、登录密码、用户头像。
留言表:
留言编号、用户名、标题、留言人、留言内容、留言时间、状态。
回复表:
回复编号、留言编号、回复人、回复内容、回复时间。
天气信息表:
日期、气候、风况、最高气温、最低气温和空气质量。
公告信息表:
公告ID、公告标题、公告内容、公告时间。
系统总E-R图如下:
图4-3系统总E-R图
4.3.2数据库逻辑结构设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS(DatabaseManagementSystem,数据库管理系统)产品所支持的数据模型相符合的逻辑结构。
逻辑结构设计一般分为三个步骤进行:
1、将概念结构转换为一般的关系、网状、层次模型;
2、将转换来的关系、网状、层次模型向特定的DBMS支持下的数据模型转换;
3、对数据模型进行优化。
将概念结构设计中得到的E-R图转换为关系模型,如下文所示(下