您的当前位置:首页正文

城市公交查询系统的设计与

2022-08-27 来源:小奈知识网


JIU JIANG UNIVERSITY

毕 业 论 文

题 目 城市公交查询系统的设计与 实现 英文题目 City Public Transport Query

System Design and Implementation

院 系 信息科学与技术学院 专 业 计算机科学与技术 姓 名 付文林 班级学号 A081135 指导教师 邵君

二○一二年五月

信息科学与技术学院学士学位论文摘 要

公交查询系统是城市道路交通的重要组成部分,是城市发展的必然产物,是联系国民生活、社会生产和流通领域的关键环节。我国城市公交查询系统的发展处于一个较落后的水平,人们可以获得信息的方式很少,随着Internet的普及,开发一种基于JSP的公交查询系统更加适应现代社会的要求,这样可以很大程度的方便人们出门乘坐公交车。

论文详细介绍了该公交查询系统所要实现的功能。

首先,实现多种查询功能,包括根据商厦名称、公交车号、日常站点和任意两个站点查询乘车路线。

其次,采用最短路径算法查找任意两个站点之间的最短乘车路线,这也算是一个小小的亮点。

最后,提供了用户留言的功能、管理员留言管理功能和后台车次管理功能。用户留言功能主要是收集用户的留言信息,可以根据用户提供的留言信息中提出的建议,对系统进行修改和完善;管理员留言管理功能主要是回复和删除用户的一些留言;后台车次管理功能主要包含添加车次和站点功能、更新车次和站点功能、删除车次和站点功能,这样做到系统实时更新,为用户查询提供更为准确的信息。

关键词:最短路径算法,公交查询

I

信息科学与技术学院学士学位论文Abstract

Bus inquiries system is an important part of the urban road traffic, the inevitable outcome of urban development is to contact the national life, the key aspects of social production and circulation. The development of China's urban public transport query system in a less advanced level, very few people can get information, with the popularity of the Internet, to develop a JSP-based public transport query system more responsive to the requirements of modern society, so a large extent the convenience of people out to take the bus.

The paper details the functions to be achieved by the query system of the bus. First, to achieve a variety of query functions, including query bus routes under the commercial name, bus number, daily site and any two sites.

Second, using the shortest path algorithm to find the shortest bus route between any two sites, it would be a small bright spot.

Finally, it provides the functionality of the user message the webmaster management capabilities and background trips management functions. Guest main function is to collect the user's message, according to the recommendations made in the message provided by the user to modify and improve the system; the webmaster main function is to reply to and delete the user's message; background trips management functions Include add trips and site features, updates trips and site features, delete trips and site features, so do the systems updated in real time to provide more accurate information for the user query.

Keywords: Shortest path algorithm, public transport inquiry

II

信息科学与技术学院学士学位论文目 录

摘 要 ...................................................... I Abstract .................................................... II 1 绪论

1.1系统研究的背景 ......................................... (1) 1.2系统研究的意义 ......................................... (2) 1.3系统的开发的目的 ....................................... (2) 1.4系统相关技术简介 ....................................... (2) 1.5论文结构 ............................................... (3) 2 需求分析

2.1需求的任务 ............................................. (4) 2.2系统数据流程分析 ....................................... (5) 2.3系统的E-R图 ........................................... (5) 2.4系统的功能需求分析 ..................................... (7) 2.5系统的环境需求分析 ..................................... (7) 2.6本章小结 ............................................... (9) 3 系统设计

3.1系统的总体设计 ........................................ (10) 3.2系统的总体功能图 ...................................... (10) 3.3系统的流程图 .......................................... (11)

III

信息科学与技术学院学士学位论文 3.4系统的数据库设计 ...................................... (13) 3.5本章小结 .............................................. (16) 4 系统实现

4.1系统功能简介 .......................................... (17) 4.2功能模块实现 .......................................... (17) 4.3本章小结 .............................................. (34) 5 系统测试

5.1测试序号 .............................................. (35) 5.2测试模块与运行 ........................................ (35) 5.3本章小结 .............................................. (42) 总结与展望 ............................................... (43) 致 谢 ................................................... (44) 参考文献 ................................................. (45)

IV

信息科学与技术学院学士学位论文1 绪论

1.1系统研究的背景

20多年来,我国经济得到了持续、快速、稳定、健康地发展。

城市经济发展,城市规模越来越大,相应的城市公交系统也越来越庞大。城市交通网络在城市发展中占有至关重要的地位。它不仅是城市的一个重要组成部分,同时也决定了城市中居民的生活方式。长期以来,交通问题已成为困扰城市发展的重要问题。世界各国都面临着日益严重的城市交通问题,如交通拥挤、车辆行驶缓慢、交通事故频繁及其由于交通堵塞造成的大量空气污染等,由此而带来大量的经济损失和人员伤亡。许多发达国家逐渐认识到,欲有效地解决这些问题,仅仅依靠道路建设、扩大路网规模是远远不够的,交通问题的解决必须依赖现在信息技术与管理技术的有机结合[1]。

许多新建小区大量出现,公交线路也日渐增多,给人们的出行带来了极大便利,但是由于城市规模的不断发展,给人们选择出行乘车线路造成了一定的困难。即使一个在城市生活多年的人,给他任意两个地点,要他说出这两个地点之间的乘车方案,他往往也是很难说出来的。但是如果给他一张交通地图之后,他可以很快地找出图上的任意两点之间的乘车方案,所找出的方案即使不是最优的,也是一条可供参考的备选方案。但是这样的查询效率是相当低的,所以需要提供一个高效的查询系统,才是问题更本所在。而基于JSP的公交查询系统,就是利用B/S结构开发出来的查询系统,它通过利用数据结构当中的最短路径算法,可以查出任意两个地点之间最短的乘车方案。它不仅可以用于公交公司管理系统中,也可以单独作为公交管理系统的一个模块存在,并可以制作成公交信息系统查询网,放置于城市的主要场所。这样不仅可以体现出一个城市的智能公交系统的水平,更显示出城市的数字化,信息化水平。

项目研究的基于JSP的公交查询系统,让人们通过互联网很快的查出该城市任

1

信息科学与技术学院学士学位论文意两站点之间的最短乘车路线。

1.2系统研究的意义

目前,我国众多大城市普遍存在交通拥挤,延误人们平时上班时间。甚至影响了城市旅游业经济的可持续发展。所以为了切实的改善公交车内拥挤状况,适当增加发车次数以缩短乘客等车时间,但是能够准确为人们提供最短的乘车线路才是得到解决的最好办法,这样大大的缩短了人们的乘车时间。

近十几年来,随着地理信息系统技术的快速发展,地理信息系统的各种应用在城市规划、管理方面越来越起到不可低估的作用。在众多有关城市地理信息的应用中,城市交通地理信息系统的发展越来越受到地理学者、城市管理者的瞩目。交通数据的种类繁多(包括属性数据、空间数据、影像数据等),数据量大,操作复杂,人工管理难度大[2]。

项目研究的基于JSP的公交查询系统,让人们通过互联网很快的查出该城市任意两站点之间的最短乘车路线。

系统是从城市交通现状出发,根据人们的出行规律,设计了一个完整的基于JSP体系的公交车查询系统。该系统可以根据商厦名称,公交车号,日常站点和站点之间为查询条件分别进行查询,解决了市民出行乘坐公交车时经常遇到的困难。

1.3系统的开发的目的

本系统主要是为了人们出行的方便以及节约人们乘坐公交车所用的时间,现在网上的公交车查询系统都有漂亮的网页和完善的功能,所以本系统运用HTML、JSP等技术来编辑网页,并运用JDBC技术把数据库和动态网页相关联。本系统自己设计数据库,使得公交车信息、站点信息、商厦信息等能够及时的添加、删除以及更新,人们还可以留言发表一些合理的建议使得本系统更加的完美。

1.4系统相关技术简介

(1)JSP的概念

JSP程序是一个服务端页面脚本程序,可以在这个脚本中直接编写客户端浏览器需要显示的HTML文档内容,当然也可以依照JSP规范将Java程序代码嵌入脚本。JSP

2

信息科学与技术学院学士学位论文 脚本规范提供了若干内部对象来简化JSP程序和浏览器之间的输入输出处理。由于JSP程序是从HTML页面添加Java动态处理代码而来,因此,JSP程序又称为动态JSP页面[3]。

(2)JavaBean的概念

JavaBean是一种JAVA语言写成的可重用组件,用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。这个对J2EE业务逻辑层处理具有相当重要的部分[4]。

(3)Java Servlet

Java Servlet使用的是一种请求/响应机制,也就是说通过特定的Java程序设计技术,由该Servlet动态产生的响应向某一特定的请求做出响应。Servlet所能应用的请求/响应场合很多,但常用的还是在Web应用程序中用于产生超文本传输协议响应(HTTP)。据此,Servlet可能取代其他类型的HTTP请求/响应机制,譬如通用网关接口(CGI)脚本[5]。

(4)Session对象

Session对象是类javax.servlet.Httpsession的一个对象,是用来保存每个用户信息(以会话的形式直接保存在WEB服务器端),以便跟踪每个用户的操作状态[6]。

1.5论文结构

论文分为以下结构:

第一章:绪论,介绍系统研究的背景及意义,系统研究的工作。 第二章:需求分析,对系统的功能需求以及数据需求进行分析。 第三章:系统设计,对系统的数据库和功能进行设计与实现。

第四章:系统实现,对系统的一些功能进行实现,保证系统没有出现错误,对有错误的地方进行修改及完善。

第五章:系统测试,对系统进行测试,保证系统完整运行。

3

信息科学与技术学院学士学位论文2 需求分析

需求分析是介于系统分析和软件设计阶段之间的重要桥梁[7]。一方面,需求分析以系统规格说明和项目规划为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。

2.1需求的任务

软件需求分析的任务是:深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。

需求提出主要集中于描述系统目的。需求提出和分析仅仅集中在使用者对系统的观点上。用户、开发人员和用户确定一个问题领域,并定义一个描述该问题的系统。这样的定义称作系统规格说明,并且它在用户和开发人员之间充当合同。

在问题分析阶段分析人员的主要任务是:对用户的需求进行鉴别、综合和建模,清除用户需求的模糊性、歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型[8]。分析人员要将对原始问题的理解与软件开发经验结合起来,以便发现哪些要求是由于用户的片面性或短期行为所导致的不合理要求,哪些是用户尚未提出但具有真正价值的潜在需求[8]。

在需求评审阶段,分析人员要在用户和软件设计人员的配合下对自己生成的需求规格说明和初步的用户手册进行复核,以确保软件需求的完整[9]、准确、清晰、具体,并使用户和软件设计人员对需求规格说明和初步的用户手册的理解达成一致。一旦发现遗漏或模糊点,必须尽快更正,再行检查。

公交查询系统需要满足几个方面的需求,一是用户公交查询的需求;二是用户留言的需求;三是管理员车次及站点信息管理的需求;四是管理员留言管理的需求。

在界面需求上要做到美观、操作方便[10],给用户和管理员一个舒适简便的公交

4

信息科学与技术学院学士学位论文及时的了解公交车的信息,不会耽误用户乘坐相关的公交车。

查询系统,管理员能够及时的添加、删除以及更新车次和站点的信息,使用户能够

2.2系统数据流程分析

数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经过的变换[11]。在数据流图中没有任何的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。因为数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员也容易理解,所以是极好的通信工具[12]。此外设计数据流图纸需要考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能[13]。

公交查询系统数据流图如图2-1所示。

管理员 公交车查询 登录 用户 留言 车次 管理 站点 管理 线路 管理 留言信息库 车次信息库 站点信息库 线路信息库

图2-1 系统数据流图

2.3系统的E-R图

通过对公交车查询系统的数据分析,得出系统的E-R图,然后系统的E-R图可以分为管理员实体及属性、留言板实体及属性和车次与站点之间关系,分别如图2-2,图2-3,图2-4所示。

5

信息科学与技术学院学士学位论文管理员名 密码 管理员

图 2-2管理员实体及属性

留言时间 留言标题 留言内容 留言人 留言ID 留言板 管理员留言回复 图2-3 留言板实体及属性

终点站 起点站 票价 车号 车子档次 车次信息 m 车号 票价档次 站点号 经过 站点次序 n 站点号 站点信息 站点名称 6

信息科学与技术学院学士学位论文图2-4 车次与站点之间关系

2.4系统的功能需求分析

系统具有以下基本功能:

(1)公交查询:用户可以通过4种查询方式查询公交车,分别是商厦查询、线路查询、站点查询以及站点之间查询。

(2)用户留言:用户可以对系统不完善的地方以及对系统管理员或是工作人员提出合理的建议在留言上,使系统更加完善。

(3)管理员对车次及站点管理:管理员要及时添加、删除以及更新公交车车次和各个站点的基本信息,使用户可以更好的使用系统。

(4)管理员留言管理:管理员需要及时的查看用户所留的一些合理的留言并且给予回复,对一些不合理的留言可以进行删除。

2.5系统的环境需求分析

2.5.1开发平台

系统开发选用的平台是Struts2+Java Server Page(简称JSP)和Mysql数据库,它适应于Windows操作系统并能很好的与其应用程序结合,而且Mysql数据库也易操作。具体如下:

(1)采用了Internet架构,Bowser/Server模式。

(2)Web服务器采用Tomcat5.5服务器,数据库管理系统为Mysql。 (3)采用了jdk1.6的环境 2.5.2系统开发工具

本系统是基于Struts2+JSP+Mysql数据库技术实现的,现对JSP技术和Mysql数据库以及Struts2框架作简要的介绍。

7

信息科学与技术学院学士学位论文2.5.3开发语言

JSP页面由HTML代码和嵌入其中的Java代码所组成。JavaBean是JSP的技术基础,而且大型的Web应用程序的开发需要JavaBean和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网等特点。JSP的技术的优势:

(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不需要做任何更改。

(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。

(3)JSP技术是用Java语言作为脚本语言的。Java语言是成熟的、强大的、易扩充的编程语言。

(4)高效性与安全性。JSP在执行前先被编译成字节码,字节码由Java虚拟机解释执行,比源码解释效率高。

(5)可维护性。由于JSP技术是一种开放的、跨平台的结构,因此Web服务器、平台及其他组件能很容易升级或切换,且不会影响JSP基本的应用程序。

(6)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。 2.5.4数据库

Mysql是Oracle公司的一款数据库产品,因为其小巧亦操作,却十分稳定,成为一些中小型项目和我们学习中最常用的数据库,在这里便使用了这款成熟稳定的数据库。 2.5.5框架

在Stru ts2出现之前,Struts1就是一个非常有名的框架,它实现了MVC模式。之后出现的WebWork框架也是一个很优秀的框架,随着时间的发展,Struts1渐渐淘

8

信息科学与技术学院学士学位论文 汰,有人用WebWork的核心并包装上Struts1,由此产生了更先进的技术—Struts2。Struts2是经典的MVC结构框架,将显示,控制,逻辑很好的分离,可以使我们开发起来更具延展性。

2.6本章小结

本章首先介绍了需求分析的作用,其次介绍了数据流程分析,把系统的数据流图画出来,接着介绍系统的功能需求分析,讲述系统的一些功能,最后介绍系统的环境需求分析,本章主要就是为了让大家理解系统的一些需求,结合实际来合理的开发使用公交查询系统。

9

信息科学与技术学院学士学位论文3 系统设计

3.1系统的总体设计

公交查询系统的功能模块可以分为以下模块:

(1)管理员登陆功能模块:管理员登陆要输入正确的管理员名、密码以及账号,否则登陆失败。

(2)站点和车次查询模块:用户可以直接以4种查询方式查询公交车的站点和车次信息,分别是商厦查询、线路查询、站点查询以及站点之间查询,其中站点之间查询还可以告诉你2个站点之间的最短路劲以及相应的换乘车次和站点。

(3)用户留言模块:用户可以对系统的进行留言,对系统的一些不足之处提出合理建议给管理员,是系统更加的完善。

(4)管理员操作模块:管理可以对公交车站点和车次信息进行添加、删除以及更新,使广大用户能够及时的查看最新的公交车站点和车次信息,不耽误广大用户乘坐公交车。

(5)管理员管理留言模块:管理员可以查看用户的留言并对用户的留言进行回复以及删除,对用户对本系统提出的一些合理的意见给予感谢。

3.2系统的总体功能图

城市公交查询系统从功能上可以分为用户查询公交车信息、用户留言、管理员对公交车信息管理操作、管理员留言管理5部分。具体功能结构图如图3-1所示。

3.3系统的流程图

城市公交查询系统中用户可以用4种查询方式查询公交车信息,分别是商厦查询、线路查询、站点查询、站点之间查询;用户可以留言以及查看留言;管理员公交车信息操作,对公交车信息进行添加、删除以及更新;管理员留言管理,对用户的留言进行回复或是删除,每一个都有不一样的流程,对应有各自的流程图,具体的系统流程图如下。

10

信息科学与技术学院学士学位论文(1)用户查询公交车信息工作流程如图3-2所示。

城市公交查询 用户公交车查询 用户留言 公交车信息管理 留言管理 商厦查询 线路查询 站点查询 站点之间查询 留言 查看留言 站点和车次添加 站点和车次删除 站点和车次更新 删除留言 回复留言

图3-1 系统功能结构图

首页 商厦查询 线路查询 站点查询 站点之间查询

图3-2 用户查询流程图

11

信息科学与技术学院学士学位论文(2)用户留言以及查看留言工作流程如图3-3所示。

首页 留言 否 是否填写留言主题和内容 是 留言成功 查看留言

图3-3 用户留言流程图

(3)管理员公交车信息操作工作流程如图3-4所示。

开始 管理员登陆 否 验证管理员名和密码是否正确 是 站点与车次添加 站点与车次删除 站点与车次更新 退出 12

信息科学与技术学院学士学位论文图3-4 管理员公交车信息操作流程图

(4)管理员留言管理工作流程如图3-5所示。

开始 管理员登陆 否 验证管理员名和密码是否正确 是 删除留言 回复留言 退出 图3-5 管理员留言管理流程图

3.4系统的数据库设计

本系统数据库采用Mysql5数据库,系统数据库名称为bus,共包含7张表。 (1)管理员表administrator如表3-2所示。

表3-2 管理员信息

字段名 adminiID adminipassword 数据类型 Varchar Varchar 长度 50 50 允许空 Not null Not null adminiID: 管理员名

13

信息科学与技术学院学士学位论文adminipassword: 密码

(2)车次信息表BusInfo如表3-3所示。

表3-3 车次信息表

字段名 BusNum BeginSt EndSt TicketNote BusLevel Note 数据类型 Int Varchar Varchar Varchar Varchar Varchar 长度 4 50 50 50 50 50 允许空 Not null Not null Not null null null null BusNum: 车号 BeginSt: 起点站 EndSt: 终点站 TicketNote: 票价 BusLevel: 车子档次 Note: 票档次

(3)站点信息表StInfo如表3-4所示。

表3-4 站点信息表

字段名 StID StName 数据类型 Int varchar 长度 4 50 允许空 Not null Not null StID: 站点号 StName: 站点名称

(4)车次与站点关系表BusSt如表3-5所示。

表3-5 车次与站点关系表

14

信息科学与技术学院学士学位论文字段名 BusNum StID StOrder 数据类型 Int Int Int 长度 4 4 4 允许空 Not null Not null Not null BusNum: 车号 StID: 站点号 StOrder: 站点次序

(5)商厦信息表publicplace如表3-6所示。

表3-6 商厦信息表

字段名 Placesid Placesname 数据类型 Int varchar 长度 4 50 允许空 Not null null Placesid: 商厦号 Placesname: 商夏名称

(6)站点与商厦关系表stplace如表3-7所示。

表3-7 站点与商厦关系表

字段名 StId PlaceId 数据类型 Int Int 长度 4 4 允许空 Not null Not null StId: 站点号 PlaceId: 商厦号

(7)留言信息表message如表3-8所示。

表3-8 留言信息表

字段名 Username 数据类型 Varchar 长度 50 允许空 Not null 15

信息科学与技术学院学士学位论文Messagedate Topic Messagetext Id Reply Datetime Varchar Varchar Int Varchar 8 50 200 4 200 Not null Not null Not null Not null null Username: 用户名 Messagedate: 留言日期 Topic: 留言主题 Messagetext: 留言内容 Id: 留言序号 Reply:回复

3.5本章小结

本章节主要就是介绍系统的功能还有数据库的设计,系统的功能不是一个人可以完善的,需要很多人的意见结合起来才可以做成一个完美的系统,所以加了留言系统让广大用户对系统提出意见来进一步的完善系统;数据库是一个项目的核心,所有的数据都要存储在数据库中,将这些数据设计好不是很好做的事情,需要根据业务来设计,数据库的设计让我对数据库有了进一步的理解。

16

信息科学与技术学院学士学位论文

4 系统实现

系统实现是软件项目开发过程中的主要部分,在系统实现中要有简洁、美观、可读性好、整体统一等准则。

4.1系统功能简介

城市公交查询系统从功能上可以分为管理员登陆模块、站点和车次查询模块、管理员操作模块、用户留言模块、管理员管理留言模块5部分。

管理员登陆管理:对是否输入正确的管理员名以及密码进行验证,正确的话进入管理员操作界面,失败的话继续管理员登陆界面。

站点和车次查询:用户可以使用商厦查询、线路查询、站点查询以及站点之间查询来了解公交车的站点和车次信息,方便用户乘坐合理的公交车。

管理员操作管理:管理员必须及时的添加、删除以及更新公交车的站点和车次信息,是广大用户能够及时的知道最新的公交车的信息,不会误导用户乘坐公交车。

用户留言管理:用户可以再留言板上进行留言,对本系统提出一些合理的建议。 管理员留言管理:管理员查看用户留言,对一些留言进行回复,对一些无用的留言进行删除或者不回复。

4.2功能模块实现

4.2.1管理员登录实现

管理员登录主要是为了让系统更好的管理,让一个管理员可以及时的添加、删除以及更新车次及站点信息,是广大用户能够及时准确的了解最新的公交车及站点信息,不会使广大用户乘坐错误的公交车耽误用户的时间,使用户能够更舒服的享受本系统带给用户的方便。管理员登陆后输入正确的管理员名、密码以及验证码后就可以进入到管理员操作界面,在操作界面中可以对一些用户留言进行回复以及删

17

信息科学与技术学院学士学位论文

除。

管理员登录界面如图4-1所示。

图4-1 管理员登录界面

相应核心代码:

private void login(HttpServletRequest request,HttpServletResponse response){

Connection conn=null; Statement stmt=null; ResultSet rs=null;

HttpSession session=request.getSession(true);//如果用户session为空重新分配一个新的session给用户

DBConnection2 db=DBConnection2.getInstance();

String adminname=request.getParameter(\"adminname\") ==null ? \"\" : request.getParameter(\"adminname\");

adminname =exChange(adminname);//字符串乱码处理

String password = request.getParameter(\"password\") == null ? \"\" : request.getParameter(\"password\");

password=exChange(password);//字符串乱码处理 String sql=\"\";

String rand=(String) session.getAttribute(\"rand\"); String input=request.getParameter(\"vaild\"); int n=0; try{

18

信息科学与技术学院学士学位论文conn = db.getConnection(); stmt = conn.createStatement();

sql = \"select * from administrator where adminiID = '\"+adminname+\"' and adminipassword = '\"+password+\"'\"; rs=stmt.executeQuery(sql); if(rs.next() && rs!= null){

n++; }

if (n >0 && input.equals(rand)){

session.setAttribute(\"adminname\session.setAttribute(\"adminpassword\session.removeAttribute(\"rand\");

response.sendRedirect(\"loginSuccess.jsp\"); }else{

response.sendRedirect(\"error.jsp\"); }

}catch(Exception e){

e.printStackTrace(); }finally{

try{

if(stmt!=null){ stmt.close(); }

db.freeConnection(conn); }catch(Exception e{

e.printStackTrace();

}

19

信息科学与技术学院学士学位论文

} }

4.2.2站点和车次查询

(1)商厦查询:商厦查询是为用户提供按具体的名称(如:派拉蒙)查询,并显示到这个地点所有公交车车次的相关信息(如:车号,站点名称,票价,车子的档次和这个商厦的名称等信息)。

商厦信息查询结果如图4-2所示。

图4-2 商厦查询

相应核心代码:

public ArrayList queryPlace(String placeName,String page) {

ArrayList arrayList = new ArrayList();

DBConnection2 db=DBConnection2.getInstance(); Connection conn=null; Statement stmt=null; ResultSet rs=null; String sql=\"\"; try {

if (placeName != null) { if (!placeName.equals(\"\")) {

placeName = exChange(placeName);//字符串转码 int m = (Integer.parseInt(page) - 1) * pageSize; int i = 0; sql=\"select

20

信息科学与技术学院学士学位论文businfo.busnum,stinfo.stname,ticketnote,buslevel,note

from stinfo,businfo,busst where busst.stid = stinfo.stid and businfo.busnum = busst.busnum and busst.stid in (select stid from stplace where placesid in (select placesid from publicplace where placesname = '\"+placeName+\"'))\"; conn = db.getConnection();

stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(sql); if (rs.first()) {

rs.absolute(m + 1); //将游标放到指定位置再加1(也是开始的第一条记录的序号)

while(i < pageSize && rs != null && !rs.isAfterLast()){ HashMap hashMap = new HashMap();

hashMap.put(\"busnum\将从数据库中查出的值放入

hashMap.put(\"stname\hashMap.put(\"ticketnote\hashMap.put(\"buslevel\hashMap.put(\"note\

arrayList.add(hashMap); //将所有的hashmap放入arrayList rs.next(); i++;

}

} } }

21

信息科学与技术学院学士学位论文

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (stmt != null) { stmt.close(); }

db.freeConnection(conn); } catch (Exception e) { e.printStackTrace(); } }

return arrayList;

}

(2)线路查询:线路查询是为用户提供一个按公交车的车号(如:1路)查询,并显示该公交车的相关信息(如:公交车的起点站、终点站、票价和车子的档次等信息)。

线路查询结果如图4-3所示。

图4-3 车次信息查询

相应核心代码:

public ArrayList statisticsByBusInfo(String busNum,int page) {

22

信息科学与技术学院学士学位论文ArrayList arrayList = new ArrayList();

DBConnection2 db = DBConnection2.getInstance(); Connection conn = null; Statement stmt = null; ResultSet rs = null; String sql = \"\"; try {

int m = (page-1)*pageSize; //计算游标的位置 int i = 0;

busNum = exChange(busNum);//字符串转码 if (busNum.equals(\"\") || busNum == null) { sql = \"select * from busInfo\"; } else {

busNum = exChange(busNum);//字符串转码

sql = \"select * from busInfo where busnum = '\"+Integer.parseInt (busNum)+\"'\"; }

conn = db.getConnection(); stmt=

conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(sql); if (rs.first()) {

rs.absolute(m + 1); //将游标放到指定位置再加1(也是开始的第一条记录的序号)

while (i < pageSize && !rs.isAfterLast() && rs != null) { HashMap hashMap = new HashMap();

23

信息科学与技术学院学士学位论文的值放入hashmap中

hashMap.put(\"BeginSt\hashMap.put(\"EndSt\hashMap.put(\"TicketNote\hashMap.put(\"BusLevel\hashMap.put(\"Note\

arrayList.add(hashMap); //将所有的hashmap放入arrayList rs.next();

i++;

} }

} catch (Exception e) {

e.printStackTrace(); } finally {

try {

if (stmt != null) { stmt.close(); }

db.freeConnection(conn); } catch (Exception e) { e.printStackTrace();

} }

return arrayList; }

(3)站点查询:站点查询是为用户提供按公交车某一个站点查询到该站点需要

hashMap.put(\"BusNum\将从数据库中查出

24

信息科学与技术学院学士学位论文

乘坐公交车的车号。

站点信息查询结果如图4-4所示。

图4-4 站点信息查询

相应核心代码:

public ArrayList queryStInfo(String stname) {

ArrayList arrayList = new ArrayList();

DBConnection2 db = DBConnection2.getInstance(); Connection conn = null; Statement stmt = null; ResultSet rs = null; String sql = \"\"; try {

stname = exChange(stname);//字符串转码 conn = db.getConnection();

stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

sql=\"selectbusInfo.busnum,busInfo.BeginSt,busInfo.EndSt,busInfo.TicketNote,stInfo.stname from busInfo,stInfo,busst where stname like '%\"+stname+\"%' and stInfo.stid = busst.stid and busst.busnum = busInfo.busnum\";rs = stmt.executeQuery(sql); while (rs.next() && rs != null) { HashMap hashMap = new HashMap();

hashMap.put(\"BusNum\//将从数据库中查出的值放入hashmap中

hashMap.put(\"BeginSt\hashMap.put(\"EndSt\

25

信息科学与技术学院学士学位论文

hashMap.put(\"TicketNote\hashMap.put(\"StName\

arrayList.add(hashMap); //将所有的hashmap放入arrayList }

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (stmt != null) {

stmt.close();

}

db.freeConnection(conn); } catch (Exception e) {

e.printStackTrace();

}

}

return arrayList;

}

(4)站点之间查询:输入任意2个站点就可以查询这2个站点之间的最短乘车线路以及相应的所要换乘的车号。

任意两个站点间查询结果页面如图4-5所示。

图4-5 任意两个站点间查询结果

(5)广度优先遍历概念

给定一个起点,广度优先遍历首先访问起点与起点的邻接点,然后分别考察每一个邻接点并访问它们的邻接点。遍历使用一个队列存放顶点的未被访问邻接点,

26

信息科学与技术学院学士学位论文即为顶点插入这个队列的顺序。

最短路径算法原理图如图4-6所示。

每当从队列中删除一个顶点,就将这个顶点的未访问邻接点插入队列,遍历的顺序

A2B4C138D7G10寻找顶点A到I的最短路径步骤如下E691113B出列DEH12IE出列HADEEFHDCHFGFD出列CGHCHF出列H出列ICGI结果入栈

5FA出列AAAADEBBEDAEHI图4-6 最短路径算法原理图

最短路径算法原理描述:

①将顶点A入队,同时将顶点A设置为已经被访问。

②判断队列是否为空,如果不是则顶点A出队,同时判断顶点A的邻接顶点B、E、D是否已经被访问,如果没有,则将顶点B、E、D入队,并分别设置为已经被访问,接着将入队顶点B、E、D分别指向他们的前置顶点A,并分别判断顶点B、E、D是否为目的顶点I,不是则进入下一步3。

③判断队列是否为空,如果不是则顶点B出队,同时判断顶点B的邻接顶点E是否已经被访问。判断可知顶点B的邻接顶点E已经被访问,则顶点E不用指向他的前置顶点B。接着进入下一步4。

④判断队列是否为空,如果不是则顶点E出队,同时判断顶点E的邻接顶点F、H是否已经被访问,如果没有,则将顶点F、H入队,并分别设置为已经被访问,接

27

信息科学与技术学院学士学位论文点I,不是则进入下一步5。

⑤判断队列是否为空,如果不是则顶点D出队,同时判断顶点D的邻接顶点G是否已经被访问,如果没有,则将顶点G入队,并分别设置为已经被访问,接着将入队顶点G分别指向他们的前置顶点D,并分别判断顶点G是否为目的顶点I,不是则进入下一步6。

⑥判断队列是否为空,同时判断入队的顶点F是否是目的顶点I。如果不是则顶点F出队,同时判断顶点F的邻接顶点C是否已经被访问,如果没有,则将顶点C入队,并分别设置为已经被访问,接着将入队顶点C分别指向他们的前置顶点F。并分别判断顶点C是否为目的顶点I,不是则进入下一步7。

⑦判断队列是否为空,如果不是则顶点H出队,同时判断顶点H的邻接顶点I是否已经被访问,如果没有,则将顶点I入队,并分别设置为已经被访问,接着将入队顶点I指向他们的前置顶点H,并分别判断顶点I是否为目的顶点I,可以判断顶点I就是目的顶点,将顶点I入堆栈,进入下一步8。

⑧判断I的前置顶点是否为空,如果不是则将前置顶点入堆栈,循环判断前置顶点的前置顶点,如果不为空,则入堆栈,直到循环判断到空为止。这样堆栈中的所有顶点出堆栈,出堆栈的顶点A->E->H->I就是查询出来最短路径。

最短路径算法相应的代码(利用广度优先遍历算法查找最短路径): public Stack getShortestPath2(Object begin,Object end){

this.resetVertices(); boolean done=false;

ArrayList vertexQueue=new ArrayList(); Vertex beginVertex=(Vertex) vertices.get(begin); Vertex endVertex=(Vertex) vertices.get(end); beginVertex.visit();

vertexQueue.add(beginVertex);

while(!done && !vertexQueue.isEmpty()){

着将入队顶点F、H分别指向他们的前置顶点E,并分别判断顶点F、H是否为目的顶

28

信息科学与技术学院学士学位论文Vertex frontVertex=(Vertex) vertexQueue.get(0); vertexQueue.remove(0);

Ierator edges=frontVertex.getNeighborIterator(); while(!done && edges.hasNext()){

edge edgeToNextNeighbor=(Edge) edges.next();

vertex nextNeighbor=edgeToNextNeighbor.getEndVertex(); if(!nextNeighbor.isVisited()){ nextNeighbor.visit();

nextNeighbor.setPredecessor(frontVertex); vertexQueue.add(nextNeighbor);} if(nextNeighbor.equals(endVertex)){ done=true;

}

} }

Stack path=new Stack(); path.push(endVertex);

while(endVertex.getPredecessor()!=null){

endVertex=endVertex.getPredecessor(); path.push(endVertex);

}

return path; }

4.2.3管理员操作实现

(1)添加车次:添加车次功能主要是增加一个车次详细信息,其中包括:车次号,起点站,终点站,票价,汽车档次,票价类型。需要注意,在添加起点站和终

29

信息科学与技术学院学士学位论文

点站的时候,数据都是从站点库获得然后添加到起点站和终点站中去。因为添加车次它只涉及到车次的详细信息,如果要想添加站点,则需要在添加站点功能页面中进行相应的操作。

添加车次页面如图4-7所示。

图4-7 添加车次

(2)添加站点:在添加站点的文本框中输入要添加的站点名称。提供了一个站点重名的查找功能,该功能可以对你输入添加的站点名称进行名称查重,通过查询站点编码表,显示这个站点是否已经存在。如果不存在,则将此新增站点名称插入到站点编码表中,如果存在,则不需将此站点名称插入到站点编码表中。通过下拉选择框选择新增站点所对应的车次号。如果查询站点总数在文本框中显示为“0”,则需要将起点站和终点站同新增的站点一起插入车次和站点的关系表中。如果查询站点总数在文本框中显示不为“0”,则只需将新增的站点插入车次和站点关系表中即可。

添加站点页面如图4-8所示。

图4-8 添加站点

(3)删除车次:分页列出车次信息表中所有的车次信息,选择操作中的删除,就可以将对应的车次信息删除,但是在删除车次信息的时候需要先删除车次与站点

30

信息科学与技术学院学士学位论文

删除车次页面如图4-9所示。

关系表中所有对应该车次的信息。如果不先删除就会出现违反数据库完整性。

图4-9 删除车次

(4)删除站点:通过车次的下拉选择框选择车次,进行查询列出该车次的所有站点信息,然后点击删除操作就可以删除该站点。需要注意:因为在车次中从起点站到终点站计算,其所有的站点是一个有次序的排列,所以删除一个站点,则它的下个站点次序号依次减少一位。

删除站点页面如图4-10所示。

图4-10 删除站点

(5)更新站点:通过车号的下拉选择框选择车次,进行查询流出该车次的所有站点信息,然后点击更新操作就可以更新该站点。需要注意的是,在更新起点站(或是终点站)的时候,也要同时更新车次表中的起点站(或是终点站)。

更新站点页面如图4-11所示。

(6)更新车次:点击更新车次,然后查看需要更新哪个车次选择更新,更新的车次会显示更新成功,然后更新后的车次信息就会及时的出现在最新的界面中,用

31

信息科学与技术学院学士学位论文

户就可以查看最新的车次信息了。

更新车次页面如图4-12所示。

图 4-11 更新站点

图4-12 更新车次

4.2.4用户留言实现

(1)发表留言是公交查询系统的一个新增的功能,主要是收集用户的留言信息,可以根据用户提供的留言信息或是提出的建议,对系统进行修改和完善。使得系统更加趋于成熟完整。

发表留言页面如图4-13所示。

(2)查看留言很简单为用户提供了一个查看发表过的留言以及管理员回复的留言用户可以根据管理员回复的留言信息进行新的留言,可以进一步的对系统的一些不完善的地方提出一些合理的建议,让系统更加的人性化,更加的完美,让广大用户可以更舒服的运用本系统,享受公交查询系统带来的方便,让广大用户再不用坐

32

信息科学与技术学院学士学位论文

错公交车而耽误大家的时间。

查看留言如图4-14所示。

图4-13 发表留言

图4-14 查看留言

4.2.5管理员留言管理实现

(1)删除留言功能只有管理员才能查看并操作,在删除的显示页面中会将所有的用户留言信息及用户名显示出来。

删除留言页面如图4-15所示。

33

信息科学与技术学院学士学位论文

图4-15 删除留言

4.3本章小结

本章节主要就是讲述系统的功能以及对这些功能的实现,这个系统最主要的就是站点之间查询那个最短路径的算法问题,公交查询系统主要就是为了方便大家能够乘坐最方便的公交车,而广度优先遍历算法就是解决这个问题关键。

34

信息科学与技术学院学士学位论文5 系统测试

5.1测试序号

表5-1 测试序号表

序号 1 2 3 4

测试名称 用户查询公交车信息 管理员登陆 管理员操作 留言操作 描述说明 不同的查询方式查询不同的结果 登陆 添加、删除、更新系统中公交车的信息 用户留言,管理员管理留言 5.2测试模块与运行

5.2.1用户查询公交车信息

用户查询公交车信息如表5-2所示

表5-2 用户查询公交车信息测试表

步骤 1 测试描述说明 商厦查询 预期结果 根据商厦查询公交车的信息 根据线路查询公交车的信息 根据站点查询公交车的信息 实际结果和测试数据 测试结果:正确 2 线路查询 测试结果:正确 3 站点查询 测试结果:正确 4 站点之间查询 根据站点之间查询公交车的信息 测试结果:正确 (1)商厦查询结果如图5-1所示。

35

信息科学与技术学院学士学位论文

图5-1 商厦查询结果

(2)线路查询结果如图5-2所示。

图 5-2 线路查询结果

(3)站点查询结果如图5-3所示。

图 5-3 站点查询结果

(4)站点之间查询结果如图5-4所示。

图 5-4 站点之间查询结果

36

信息科学与技术学院学士学位论文

5.2.2管理员登陆

管理员登陆如表5-3所示。

表5-3 管理员登陆测试表

步骤 1 测试描述说明 管理员登陆 入管理员操作界面 预期结果 管理员名及密码正确进测试结果:正确 实际结果和测试数据

管理员登陆页面如图5-5所示。

图 5-5管理员登陆页面

5.2.3管理员操作

(1)管理员操作如表5-4所示。

表5-4 管理操作测试表

步骤 1 2 3 测试描述说明 添加车次和站点信息 删除车次和站点信息 更新车次和站点信息

预期结果 公交车信息添加 公交车信息删除 公交车信息更新 实际结果和测试数据 测试结果:正确 测试结果:正确 测试结果:正确 添加车次和站点信息如图5-6所示。

37

信息科学与技术学院学士学位论文

图 5-6 添加车次和站点信息

(2)删除车次和站点信息

删除车次和站点信息如图5-7所示。

38

信息科学与技术学院学士学位论文

图 5-7 删除车次和站点信息

(3)更新车次和站点信息

更新车次和站点信息如图5-8所示。

39

信息科学与技术学院学士学位论文

图 5-8 更新车次和站点信息

5.2.4留言操作

留言操作如表5-5所示。

5-5 留言操作测试表

步骤 1 2 测试描述说明 用户留言 预期结果 查看留言中有用户刚刚的留言 实际结果和测试数据 测试结果:正确 测试结果:正确 管理员查看留言,删除或回复留言 删除或回复留言成功 (1)用户留言如图5-9所示。

图 5-9 用户留言界面

40

信息科学与技术学院学士学位论文

(2)查看留言如图5-10所示。

图 5-10 查看留言界面

(3)管理员删除或回复留言如图5-11所示。

图 5-11 管理员删除留言界面

41

信息科学与技术学院学士学位论文5.3本章小结

本章主要是对系统进行测试,编制测试大纲。测试大纲是测试的依据。它明确详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的基本测试项目和测试完成的标准,根据测试大纲设计和生成测试用例。在设计测试用例的时候,可综合利用前面介绍的测试用例和设计技术,产生测试设计说明文档,其内容主要有被测项目、输人数据、测试过程、预期输出结果等,实施测试。测试的实施阶段是由一系列的测试周期组成的。在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进行完整的测试。

42

信息科学与技术学院学士学位论文总结与展望

通过对JSP知识的认真学习,理论联系实践,最终完成了基于JSP公交查询系统的设计与实现。经过多次测试,运行效果良好。对于该系统,加强后台管理,就可以单独作为大型公交管理系统的一个模块,也可以将它的功能更加完善后放置于城市公共场所,为人们提供快捷、方便的查询。这样不仅体现出一个城市的公交查询系统的发展水平,更可以显示出城市的数字化和信息化水平。公交查询系统的开发利用也必将促使城市公交更好的服务于人们。

在完成这次毕业设计的过程中,自己查阅了大量的书籍,并且通过互联网也查阅了许多相关资料,开发出具有B/S结构模式的公交系统,从而使我的编程能力和自学能力得到了很大程度的提高,对网站设计有了更深地了解。

但是,由于整个系统完全都是由个人设计的,有关JSP许多知识都要靠自己去摸索,加之自己水平有限,因此,系统还存在着许多不足之处希望大家能够多多体谅,谢谢!

43

信息科学与技术学院学士学位论文致 谢

论文完成之际,谨向我的导师邵君老师致以衷心的谢意!

导师渊博的科学知识、敏锐的学术思维、严谨求实的治学态度和不断进取的科研作风使本人受益匪浅。在论文撰写期间,恩师不辞辛劳的指导以及鼓励,对我在专业方向上的进一步发展产生了积极的影响。在此向邵君老师表示崇高的敬意和最衷心的感谢。

感谢四年来指导和帮助我的老师,是你们让我了解软件技术,掌握了计算机体系的基础知识。感谢四年来一起走过的同学,从你们身上我学到了很多自己不具备的东西,谢谢你们在四年中对我的帮助。

感谢信息学院给我提供这次学习和锻炼的机会,通过这次实践,我对自己所学的知识又有了更加深入的了解。在本次设计中,自己也学到了不少新的东西,自己的动手实践能力得到了很大的提升。

感谢我的母校,在这里,我不仅学到了很多知识,还结交了很多朋友,留下了很多美好的回忆。祝母校的明天更加美好。

感谢四年来一起走过的同学,从你们身上我学到了很多自己不具备的东西,谢谢你们在四年中对我的宽容和帮助。和你们一起的日子,将是我人生中最珍贵的回忆。

感谢我的父母,在我求学的路上,是你们一直在默默的支持着我。你们无私的爱让我永远不会感到无助。

感谢所有关心和帮助过我的老师、同学和朋友,愿他们身体健康、工作愉快! 由于本人经验不足、能力有限,论文中难免有缺陷和不足,恳请各位老师和同学多多指正。

44

信息科学与技术学院学士学位论文参考文献

[1] 刘晓华.J2EE企业级应用开发[M] .北京:清华大学出版社,2003.45~67 [2] 赛奎春,陈威.JSP工程应用与项目实践[M] .北京:清华大学出版社,

2010.111~144

[3] Cay S.Horstmann,Gary Cornell.java核心技术卷2高级特性[M] .北京:机械工

业出版社,2003.25~31

[4] Frank M.Carrano,Walter Savitch.数据结构与抽象:Java语言版[M] . 北京:清

华大学出版社,2005.78~123

[5] 孙卫琴,李洪成.Tomcat与Java Web开发技术详解[M] .北京:电子工业出版社,

2004.11~45

[6] 高铁杠,顾巧论.智能公交查询系统[J] .西北大学学报,2005,(1):31~32 [7] 王宏.SQL Server 2000 数据库管理[M] .北京:人民邮电出版社,2001.25~30 [8] 李传之,陈勇等.基于Windows Mobile的无线公交线路查询系统[J] .西北大学学

报,2010,5(2):80~81

[9] 李天文,汤国安.基于ComGIS的城市公交查询系统[J] .西北大学学报,2006,

36(1):22~33

[10] 吴永军,蔡永香,郭庆胜.城市公交查询系统的设计与实现[J] .北京印刷学院学

报,2009,17(2):68~71

[11] 陈箫枫.最短路径算法分析及其在公交查询的应用[J] .工程图学学报,2009,14

(1):53~61

[12] 李传之,陈勇等.基于Windows Mobile的无线公交线路查询系统[J] .微计算机

信息报.2010,5-2:80-81

[13] 刘京华等.Java Web整合开发 [M] .北京:清华大学出版社,2010.244~287 [14] 郭珍,王国辉等.JSP程序设计教程[M] .北京:人民邮电出版社,2008. 25~32 [15] 潘锦平.软件系统开发技术[M] .西安:西安电子科技大学出版社,2003.25~30

45

因篇幅问题不能全部显示,请点此查看更多更全内容