基于jsp的城市公交查询系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

本文主要是介绍基于jsp的城市公交查询系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目报告

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

近年来, Internet推动了以互联网技术为核心的各项工作蓬勃展开,互联网的强大也大大的促进了社会的发展,整个社会信息化进程逐步加快,网络也变成了我们日常活动中越来越重要的组成成分。为了使得我国公交乘客出行及查询有关信息更方便,本文运用JAVA语言技术,Jsp技术,Mysql数据库开发了B/S结构的城市公交查询系统。

该系统顺应了时代发展且具有以下优点:首先,方便乘客的出行,乘客不用询问站牌工作人员如何倒车,便可到达目的地。其次,乘客在网上就可以查询到公交公司发布的路况信息,以便提早做好换乘准备节约出行时间。最后,本系统可以节约人力资源,以往的站牌附近要安排公交公司的工作人员来帮助不熟悉的乘客,有了公交查询系统提前上网查询便可知道。

关键词:B/S架构;JAVA;Mysql;JSP

目录

    摘  要........................................... 1

Abstract......................................... 1

1  绪论............................................................................................. 1

1.1  选题背景.................................................................................................... 1

1.2  国内外发展状况......................................................................................... 1

1.3  选题的目的................................................................................................ 1

1.4  研究手段及意义......................................................................................... 1

2相关技术简介................................................................................ 3

2.1Jsp技术介绍.................................................................................................. 3

2.2 MyEclipse简介.............................................................................................. 4

2.3  数据库技术................................................................................................ 4

2.3.1  数据库的体系结构............................................................................ 4

2.3.2  数据库管理系统(DBMS)............................................................... 5

2.3.3  Mysql数据库.................................................................................... 5

2.3.4  MySQL特点特性.............................................................................. 7

2.3.5  MySQL数据库应用环境................................................................... 7

2.4   JAVA概述................................................................................................ 7

2.5   J2EE技术................................................................................................. 7

2.6  B/S结构..................................................................................................... 8

2.7  Tomcat服务器.......................................................................................... 10

2.8  Web技术.................................................................................................. 10

3  系统需求分析............................................................................ 11

3.1  需求分析.................................................................................................. 11

3.1.1  设计的原则..................................................................................... 11

3.1.2 系统设计目标................................................................................... 11

3.2 系统可行性分析.......................................................................................... 11

3.2.1 经济可行性分析................................................................................ 12

3.2.2技术可行性分析................................................................................. 12

3.3  用户需求.................................................................................................. 12

3.4 系统功能需求概述...................................................................................... 13

3.5 运行环境.................................................................................................... 13

4  系统概要设计........................................................................... 15

4.1  概要设计的概论........................................................................................ 15

4.2  架构设计.................................................................................................. 15

4.3  系统功能结构图及分析............................................................................. 15

4.3.1  系统功能结构图…………………………………………………………………………………………………15

4.3.2  系统基本功能……………………………………………………………………...16

4.4  系统用例图............................................................................................... 17

4.4.1  UML用例图简介............................................................................ 17

4.4.2  系统用例图..................................................................................... 18

4.5  技术架构.................................................................................................. 19

4.6  数据库结构设计........................................................................................ 19

4.6.1  数据库设计的原则.......................................................................... 19

4.6.2  数据库结构分析.............................................................................. 19

4.6.3  数据库概念模型.............................................................................. 20

4.6.4  部分数据库数据表字段设计............................................................ 21

5  系统详细设计........................................................................... 24

5.1 系统数据库连接配置.................................................................................. 24

5.2 系统流程图的分析设计…………………………………………………………………...25

5.3 系统登陆模块实现...................................................................................... 26

5.4 前台功能模块设计...................................................................................... 27

5.4.1  公交查询设计................................................................................. 27

5.4.2  热门线路功能模块设计................................................................... 29

5.4.3  网站公告功能模块设计................................................................... 29

5.4.4  在线提问模块设计.......................................................................... 30

5.5 后台功能模块设计...................................................................................... 30

6系统测试...................................................................................... 33

6.1 程序测试.................................................................................................... 33

6.2 测试的重要性及目的.................................................................................. 33

6.3  测试的步骤............................................................................................... 34

6.4  测试的主要内容........................................................................................ 34

6.4.1  功能测试........................................................................................ 35

6.4.2  可用性测试..................................................................................... 37

6.4.3  性能测试........................................................................................ 38

6.5   测试结论................................................................................................ 38

总结与展望..................................................................................... 39

参考文献......................................................................................... 40

致 谢............................................................................................... 42

外文原文…………………………………………………………………..43

中文翻译…………………………………………………………………..49

1  绪论

1.1  选题背景

随着低碳生活的普及,人们更倾向于低碳环保的出行方式,完善公交系统无疑具有重要意义。公交是居民日常生活中最常使用的交通工具之一,伴随着我国经济繁荣和城市人口增长,出行工具的选择也变得越来越重要。政府在公共交通方面的投入正在逐步加大,使得城市内、城乡间的公交系统更加完善,原来的公交线路不断更新,居民们接收到的信息滞后,出行变得很不方便。纸质公交指南时效性低且不方便使用者查询。本系统加入了浏览器查询、自动更新等功能完善系统使居民的出行更加方便快捷。

1.2  国内外发展状况

除了杭州,上海等几个城市的居民可以通过电子站牌了解公交车的行驶情况外,其它城市需要乘公交出行的居民获取公交实时信息几乎是不可能的。我国许多城市都有一些颇具设计感的公交站台,但我们却很难在这里找到我们出行需要的信息。因此,居民想要找到“静态线路信息”或者“动态实时信息”都感到十分困难。

有了权威的交通信息发布机构才能确保乘客获得信息的时效性,而迄今为止我国大多数城市还没有有关的管理机构和相关法律法规。随着居民对于公共交通出行的需求越来越大,本文基于信息技术和管理理论建立了管理信息系统。从提高居民生活水平的角度看,将计算机管理信息系统应用于我们的日常生活中是时不我待的。所以我的毕业论文选择了公交车查询系统,就因为他是一个较为贴近生活的一个问题,并且如果开发出来,则可以很大的方便乘客查询相关的公交信息,为自己的出行制定良好的乘车计划。

1.3  选题的目的

近年来,我国的城市发展速度之快,道路修缮之完善令很多市民的非常吃惊,城市的范围在不断扩大,随之公交线路的铺设也在随时进行,作为当代的大学生,每学期从学校回到自己的故土,是否发现自己的家乡在经历着一些变化,一时间连自己家乡的方位都有些晕头转向,更何况是那些外地的打工者或是来当地旅游的游客他们未尝不是这样,询问当地的市民看似是一种好办法,但是遇到倒车频繁,路途偏远,也怕是心有余而力不足,所以一个好的,便捷的,用户体验好的公交查询系统甚是重要,想去什么地方把他们输入进去,一目了然,想途径什么地点自己也可随意的查看,也不用因为自己解释不清楚或听得不清楚引起不必要的绕远。我设计的系统不仅包括了站点,公交线路的查询,还包括了公告发布和在线提问功能,让市民实时掌握城市的公交动态,方便他们的出行。

1.4  研究手段及意义

1.研究方法:

本研究课题设计的公交查询系统客户端模块,主要工作有:

(1)亲身体验了解客户需求,进行相关的需求分析。

(2)根据需求分析和设计的本系统的框架。

(3)根据框架结构的设计,制结构图。

(4)编写相关的开发技术文档。

(5)编写代码。

(6)对系统进行单元测试。

2.技术路线:

本文涉及的系统基于B/S(Browser/server,浏览器/服务器),该模式采用了多种技术,在所有平台下都能顺畅地运行。

3.意义:

近年来,我国经济发展迅速,城市建设也越来越完善。随着人口的增加,城市交通压力也在不断加大,公共交通与居民的生活息息相关,同时对于经济发展有着不容忽视的影响。虽然公共交通快捷且客运量大,但是公交信息的更新却跟不上公交系统发展壮大的步伐,居民难以获得及时的信息造成耽误出行。因此,创建一个方便的的公交信息查询系统,包含浏览器查询,实现中心控制、自动更新等功能,将极大地提升居民的出行体验。

2  相关技术简介

2.1  Jsp技术介绍

JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。 JSP是一种Java servlet,主要用来运行Java web的使用者界面。开发者通过使用HTML代码、XHTML代码、XML元素和嵌入JSP操作编写JSP。JSP技术使用web表单得到用户自定义数据、通过数据库和其他数据库资源,接着动态地建立网页。JSP标签有各种各样的功能,像访问数据库、记载用户采取的信息、造访JavaBeans组件等,不仅如此在各种网页中对信息的传达和共用。

JSP程序通过Java的编程语言,对动态网页进行封装。根据tags和scriptlets,网页对存在于服务端的资源的应用逻辑的造访也是可以的。JSP将网页逻辑与网页设计和显示分隔开,对可重新利用的基于组件的设计进行支持,更易于对基于Web的应用程序进行开发。

JSP以及Servlet ,在服务器上运行的,一般将运行后的html文本返送给客户端,仅仅在客户端的浏览器就能显示。先运行调用JSP页面的代码,然后在Web服务器送回的JSP文件的结果中碰到的HTML代码送回到客户端。Java程序段来运行数据库,重定向页面可以插入页面和动态页面的功能需要被新建。运用标记和编程语言技术形成动态生成的网页时,将形成逻辑处理包。

Java Servlet 是JSP的技术根本,并且很多的Web应用程序的设计都要有Java Servlet和JSP的共同合作。JSP简单易用,完全的面向对象,不仅平台无关性还有安全可靠,这些都是继承了java技术。
    从JSP出世后,很多的企业都设立JSP技术的服务器,像IBM、Oracle、Bea这些企业,也让JSP快速变为商业应用的服务器端语言。JSP和 Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java 2 platform Enterprise Edition)应用体系中的一部分。Servlet与 CGI很相似,它是HTML程序和后台隔离开的。它们的开始原理也差不多,都是服务器接到客户端的指令后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process),而Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(Parent Thread)来实现资源共享,这样就减轻了服务器的负担,所以,Java Servlet可以用来做大规模的应用服务

JSP技术的优点:

1.一次编写,到处运行。除了系统之外,代码无需做任何改动。

2.系统的多平台支持。一般可以在所有情况下的平台上进行设计,可以放在所有情况下进行发展。相比ASP/.net来说,优点是显而易见的。

3.强大的可塑性。根据一个小的Jar程序能够对Servlet/JSP进行操作,也能根据不少的服务器进行集群和负载平衡,而且可以根据多个Application处理问题。单个服务器到多个服务器,Java表现了一个创造性的能力。

4.拥有多元化的工具。Java现有的很多设计方法中许多工具不需要成本,其中大部分均可以在各平台中顺利进行。

5.支持服务器端组件。web的运行需要强大的服务器支持,因此为了完善系统的可操作性,开发者应当在使用web时加入其它工具,JSP能够利用 JAVA BEANS 组件来展示出各式各样的商务功能。

内部对象表现出:request 用户端请求,这个请求会包括来自GET/POST请求的参数; response网页传回用户端的反应;管理pageContext 网页的属性;session 与请求相关的会话;application servlet正在进行的内容;out 用来输送响应的输出流; config 代码片段配置对象;page JSP网页本身。

2.2   MyEclipse简介

MyEclipse是基于Eclipse进行插件合成,最终形成功能强大的开发软件。目前主要用于JAVA,JAVAEE的开发,也可以用于移动应用的开发,其主要特点是功能强大,应用广泛,并且支持很多开源的产品,应用前景非常广发。

MyEclipse是由Eclipse通过对插件的集成而来,是对IDE的拓展,可以用来开发网页等应用,可以实现程序的开发,调试,发布等,能极大的提高开发效率,能完美支持HTML、STRUTS等,可以说集成后的MyEclipse包含了当前所有主流的开源产品。MyEclpise也经历了很多代的产品,从最开始的到后来的2014版本,2015版本等都说明了它在发展历程中的变化。

MyEclipse的配置使用也非常智能,不需要使用者懂太多的知识,只需要在自己使用的功能中进行了解即可,在完成项目开发之后,也可以直接通过MyEclipse进行项目部署,可以将网页项目进行选中,直接运行在Tomcat中,也可以将项目打包通过导出功能将项目全部导出,然后将项目发布到tomcat中,通过对配置文件的设置安排项目,之后进行查看。可以说,有了MyEclipse之后,基本就能支持所有的web开发,就能使用快捷的编译工具进行快速的开发,也能在各种各样的服务器上进行代码测试。在其他方面,MyEclispe也有很多的开发前景,比如在云开发领域,在移动端开发领域,在企业级开发领域等等,因此,MyEclipse的应用场景非常的广泛。

2.3  数据库技术

数据库的设计是研究数据库及其应用系统的技术,是数据库在应用领域中主要的研究课题。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效的存储数据,满足各种用户的应用需求(信息要求和处理要求)。一个信息系统的各个部分能否紧密的结合在一起以及如何结合,关键在数据库。因此只有对数据库进行正确的概念设计、合理的逻辑设计以及有效的物理设计才能开发出完善而高效的信息系统。数据库设计是信息系统的开发和建设的重要组成部分。

2.3.1  数据库的体系结构

数据的体系结构分成三级:内部级(Internal),概念级(Conceptual)和外部级(External)。这个三级结构有时也称为“三级模式结构”。

1、 外部级:最接近用户,是单个用户所能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。

2、概念级:涉及到所有用户的数据定义、是全局的数据视图。全局视图的描述称为“概念模式”。

3、内部级:最接近于物理存储设备,涉及到实际数据存储的结构物理存储数据视图的描述称为“内模式”。

数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。

2.3.2  数据库管理系统(DBMS)

数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、查询、更新及各种控制,都是通过DBMS进行的。

在不同的计算机系统中,由于缺乏统一的标准,即使同种数据模型的DBMS,它们在用户接口、系统功能方面也常常是不相同的。

用户对数据库进行操作,是由DBMS把操作从应用程序带到外部级、概念级、再导向内部级,进而操作存储器中的数据。DBMS的主要目标,是使数据作为一种可管理的资源处理。

DBMS的主要功能为:

1、 数据库定义功能:DBMS提供数据定义语言(DDL)定义数据库的三级结构,包括外模式、概念模式、内模式及基相互之间的映象,定义数据的完整性、安全控制等约束。因此,在DBMS中应包括DDL的编译程序。

2、数据库的操纵功能:DBMS提供数据操纵语言(DML)实现对数据库中数据的操作。基本的数据操作分成两类:检索、更新。

3、数据库的保护功能:数据库中的数据是信息社会的战略资源,对数据的保护是至关重要的大事。

4、数据库的恢复功能:在数据库被破坏或数据不正确时,系统有能力把数据库恢复到正确的状态。

5、数据库的并发控制:DBMS的并发控制子系统能防止错误发生,正确处理好多用户、多任务环境下的并发操作。

6、数据库的完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作。

7、数据库的安全性控制:防止未经授权的用户蓄谋或无意地存取数据库中的数据,以免数据的泄露、更改或破坏。

8、数据库的存储管理:把各种DML语句转换成低层的文件系统命令,起到数据的存储、检索和更新的作用。

9、数据库的维护功能:数据装载程序、备份程序、文件重组织程序、性能监控程序
    10、数据字典:数据库系统中存放三级结构定义的数据库称为数据字典(DD)。对数据库的操作都要通过访问DD才能实现,通常DD中还存放数据库运行时的统计信息。

2.3.3  Mysql数据库

MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。MySQL AB是由多名MySQL开发人创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业模型。

1.MySQL是一种数据库管理系统

数据库是数据的结构化集合。它可以是任何东西,从简单的购物清单到画展,或企业网络中的海量信息。要想将数据添加到数据库,或访问、处理计算机数据库中保存的数据,需要使用数据库管理系统,如MySQL服务器。计算机是处理大量数据的理想工具,因此,数据库管理系统在计算方面扮演着关键的中心角色,或是作为独立的实用工具,或是作为其他应用程序的组成部分。

2.MySQL是一种关联数据库管理系统

关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL指得是“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言,它是由ANSI/ISO SQL标准定义的。SQL标准自1986年以来不断演化发展,有数种版本。在本手册中,“SQL-92”指得是1992年发布的标准,“SQL:1999”指得是1999年发布的标准,“SQL:2003”指得是标准的当前版本。我们采用术语“SQL标准”标示SQL标准的当前版本

MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的优点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他应用软件的数据库后端的开发工作。此外,用户可利用许多语言编写访问MySQL数据库的程序。作为开放源代码运动的产物之一,MySQL关系数据库管理系统越来越受到人们的青睐,应用范围也越来越广。速度和易用性使MySQL特别适用于Web站点或应用软件的数据库后端的开发工作。

该数据库是数据和数据库对象的集合,包括表数据库对象是指(表) ,视图(View ),存储过程(存储过程)和触发(触发)等。

数据库通过SQL(Structured Query Language)来对数据进行操作和管理,这里包括一些基本的操作如select、delete、insert、update语句。ADO ( ActiveX数据对象)是微软的数据库应用程序开发和数据库访问技术。数据库访问接口,来自不同数据源的数据。 ADO封装了很多的程序中使用的OLE DB访问接口的COM接口,它是技术的高级别访问。在数据库管理系统和接口如图2-1所示的原则。 MySQL是一个小型关系型数据库管理系统,它的快速,多线程,多用户。可以与网页文件一起方便地放在网站的目录中的MySQL数据库文件,正是由于此类特点,网站开发的数据库支持技术通常采用MySQL数据库。使用图形化的管理工具的数据库管理。

JSP MyAdmin是一个用JSP编写的、基于Web的、跨平台的MySQL管理程序,支持简体中文,使用Web浏览器作为管理界面。通过JSPMyAdmin可以进行绝大部分的MySQL操作,包括对数据库级操作,表级操作,以及数据管理等。

              图2-1 数据库管理系统和接口的原理

2.3.4  MySQL特点特性

(1)可以处理拥有上千万条记录的大型数据

(2)支持常见的SQL语句规范

(3)可移植行高,安装简单小巧

(4)良好的运行效率,有丰富信息的网络支持

(5)调试、管理,优化简单(相对其他大型数据库)

(6)支持多种操作系统,这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。

(7)MySQL的核心采用完全的多线程编程

(8)算法优化查询SQL,切实提高搜索速度。

2.3.5  MySQL数据库应用环境

相对于其他主要数据库如Oracle,DB2,SQL Server,MySQL有自己的缺点,如,如有限MySQL集群,是一个相对贫穷的效率,但它并没有降低它的声誉。一般的个人消费者和中小型企业,非常的适用MySQL数据库,不仅因为其实一个开源的软件而且体积小、速度快、总体拥有成本低,这也是使用者考虑的范畴之一。

目前,互联网的结构来最流行的网站上的LAMP(Linux操作系统,Apache+ MySQL的+ PHP)使用的操作系统,如Linux操作系统,Apache Web服务器,服务器端脚本解释器的MySQL数据库, PHP等四个免费软件或开源软件,因为,可持续和可以创建一个免费的网站系统(劳动力成本),所以你的花费不大。

2.4  JAVA概述

Java非常适合于企业网络和Internet环境,现在已成为Internet中最受欢迎、最有影响的编程语言之一。面向对象主要有四大特性:封装、抽象、继承和多态。

封装:在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类,其中包括属性和行为(在Java中就是方法),就好像人类,可以具有name,sex,age等属性,同时也具有eat(),sleep()等行为,我们在行为中实现一定的功能,也可操作属性,这是面向对象的封装特性;

抽象:抽象就是将一类实体的共同特性抽象出来,封装在一个抽象类中,所以抽象在面向对象语言是由抽象类来体现的。比如鸟就是一个抽象实体,因为抽象实体并不是一个真正的对象,它的属性还不能完全描述一个对象,所以在语言中体现为抽象类不能实例化;

继承:继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体。

多态:多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行为,多态可为程序提供更好的可扩展性,同样也可以代码重用。

2.5  J2EE技术

J2EE 技术,即Java 2平台企业版(Java 2 Platform Enterprise Edition),是一种B/S模式的体系结构,是利用 Java技术简化企业应用系统开发、管理和部署等复杂问题的一套完整的体系结构。该技术由SUN公司推出,基于Java 2平台,它继承了Java语言方便、灵活、跨平台等优势,还提供了对EJB(Enterprise Java Bean)、Java Servlets、JSP(Java Server Pagers)、XML 、API等技术的支持,从而即降低了开发多层应用系统的难度和复杂性,又提供了对现有应用系统的强大支持。

J2EE技术一般分为四个层级:客户层、WEB表示层、业务逻辑层、数据层(EIS)。如下图2-2所示。

图2-2 J2EE层次结构图

客户层:可以包括瘦客户端、胖客户端,用户可以与该层进行交互作用,是系统的用户界面,可以呈现出适当的视图,收集查询,显示最终结果,是用户在本地所使用的最后的模型成品。

Web表示层:接收客户层组件的要求,处理请求,然后将请求路由到业务层的适当组件;接受业务层传來的结果,计算一个适当的视图,然后将视图路由到对应客户端。

业务逻辑层:这一层由若干运行在EJB容器下的EJB组件和应用服务器组成。EJB封装了业务逻辑,应用服务器提供了JDBC技术,来访问数据库。

Web表示层和业务逻辑层是给 J2EE 发布工作任务的层次,主要是通过服务器完成工作。这两层是 J2EE 的核心层次。

数据层(EIS): 将前端业务逻辑层的组件与后端数据库层连接起来,收集好的信息放在该层,供用户访问。

2.6  B/S结构

B/S框架是目前被广泛采用的一种先进的框架结构,它是一种基于互联网的程序架构。当前的使用已经非常广泛,突破了传统的C/S结构的模式,给程序开发的模式带来新的技术革命。它是随着互联网技术的不断发展而发展起来的。随着互联网技术的不断发展,各种信息网站已经不能单独在一台电脑上使用和运行了,所以基于互联网的模式就逐步的发展起来了,并且得到了大规模的应用。

B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易。

B/S架构不需要在任何客户端来进行进行程序的部署,使用这样的程序结构来使用开发好的系统是利用浏览器来使用的,就是把开发好的程序配置到一台远程服务器上,在任何可以访问这台服务器的客户端电脑上都可以对程序进行操作和使用,这样的方式给使用者带来了极大的便捷。这样的结构提高了程序的运行效率,打破了地域的限制,降低了程序的使用成本。

对于我的城市公交查询系统,我们可以把系统配置在远程的服务器上,在得到访问权限之后,只要能够上网就可以使用和访问该系统并进行相关的操作,这样的一种先进模式我们之后只需要对服务器上的程序进行维护即可保证程序的正常使用,大大的提高了工作效率,降低了维护的成本。

C/S与B/S 区别:

(1)硬件环境不同 

B/S 建立在广域网之上的,不必是专门的网络硬件环境,例如电话上网,租用设备,信息自己管理。有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。 

(2)对安全要求不同 

C/S 一般面向相对固定的用户群,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S 结构适宜。可以通过B/S发布部分可公开信息。 B/S 建立在广域网之上,对安全的控制能力相对弱,可能面向不可知的用户。

 (3) 对程序架构不同 

C/S 程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上。比C/S有更高的要求 B/S结构的程序架构是发展的趋势,从MS的.Net系列的          BizTalk2000,Exchange2000等,全面支持网络的构件搭建的系统.SUN和IBM推的JavaBean构件技术等,使 B/S更加成熟。

(4) 软件重用不同 

C/S 程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好。 

B/S 面对的多重结构,要求构件相对独立的功能,能够相对较好的重用,就如买来的餐桌可以再利用,而不是做在墙上的石头桌子。 

(5) 系统维护不同 

C/S 程序由于整体性,必须整体考察,处理出现的问题以及系统升级。升级难,可能要再做一个全新的系统。

 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级。系统维护开销减到最小,用户从网上自己下载安装就可以实现升级。 

(6) 处理问题不同 

C/S 程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关,应该都是相同的系统。 

B/S 建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的. 与操作系统平台关系最小。 

(7) 用户接口不同 

C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高。 

B/S 建立在浏览器上,有更加丰富和生动的表现方式与用户交流。并且大部分难度减低,减低开发成本。 

(8) 信息流不同 

C/S 程序一般是典型的中央集权的机械式处理,交互性相对低。 

B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化,更像交易中心。

2.7  Tomcat服务器

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP[15]程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 服务器部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 服务器时,它实际上作为一个与Apache 独立的进程单独运行的。

当配置正确时,Apache 为HTML页面服务,而Tomcat 服务器实际上运行JSP 页面和Servlet容器。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat服务器的默认模式。不过,Tomcat服务器处理静态HTML的能力不如Apache服务器。目前Tomcat服务器最新版本为8.0.0。

Tomcat 服务器运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。因此利用Tomcat服务器作为集群服务器管理系统的Web应用服务器。

2.8  Web技术

网络对人类生活的影响是革命性的。它改变了人们传统的生活方式,有了网络人们可以从众多的信息中搜索,然后找到自己想要的部分;无论何时何地人们都可以通过网络与朋友取得联系,通过网络可以坐在家里就能够认识来自世界各地的陌生人,还可以登陆网上银行或在网上购物,足不出户就可以货比三家。 

网络的快捷是大家有目共睹的,只要几秒种的时间就可以把一封电子邮件发送到大洋彼岸。可以让处在地球上不同角落的人在同一时间收到同一条讯息,这种传递信息的方式可以让消息的传送者与接收者之间能够及时进行互动,快捷的信息交流的方式服务了全人类。 

网络是非常自由的,在网络上人人都是平等的,无论是什么身份什么地位的人都有权力发表自己的观点和看法,做自己想做的事情,不必有所顾忌,不用在乎对方的职位、年龄。  

创新性是网络的另一特性。每一项技术的发展都离不开创新,网络技术的发展也是如此。不断创新是网络之所以始终保持旺盛的生命力的根本,这种创新性也让我们不断地接收新的观念,学习新的技术,从而引导我们更好地去发展我们社会。

Web技术提供了下面的优点:

1.一个提供了很好的用户体验,让用户能很容易地完成任务,并利用了设备本地的一些性能。 

2.一个web应用提供了丰富的视觉体验,又不会分散人的注意力;它注重美学,使用和本地应用一样的设计模式,又不失易用性。 

3.一个web应用非常注重用户的交互、参与和完成任务,而不是让他们仅仅浏览网页。应用程序是自包含的(self-contained),也即用户不用导航到其他站点或者应用来完成任务。

3  系统需求分析

3.1  需求分析

软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。通过对应问题及其环境的理解与分析,为问题涉及的信息、功能及系统行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明,这一系列的活动即构成软件开发生命周期的需求分析阶段。
需求分析是介于系统分析和软件设计阶段之间的桥梁。一方面,需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。

3.1.1  设计的原则

1. 可用性原则。开发此系统本着以方便乘客查询准确的公交信息和方便用户对公交系统合理安排调度为原则。
2. 可靠性原则。必须为管理员和用户提供安全的服务,尤其是要保证从 Internet 上可以访问到的后台用户管理,公交信息管理等功能的安全性。
3. 友好性原则。使城市公交信息查询系统的操作上要求简单方便,便于用户和管理员掌握。
4. 可维护性原则。能够对用户提出的相关的需求对该软件进行相关的修改和维护。

3.1.2  系统设计目标

(1)分析国内外公共交通建设及公交查询的研究现状和特点,简述学者在公交网络路径算法研究的发展历程; 
(2)分析系统的需求。研究乘客出行的心理和行为,包括乘客获取公交信息的 途径、关注的信息、出行的考虑因素等,从用户角度分析得到系统需要完成的目标 和功能; 
(3)设计系统的总体框架。介绍系统的开发环境和流程,从总体上设计系统的 功能,根据系统功能划分子模块,并详述每部分需要完成的功能,设计数据库; 
(4)查找了解现有公交查询系统的网络路径最优算法。分析城市的公交线路特点,通过对地理公交网络的抽象,建立了公交网络的路径模型,并在此模型基础上,探讨了公交网络的最优路径算法。
(5)详述系统的设计与实现过程。对系统各模块的具体实现和结果给出了清晰的说明,以拟定的路线为实验数据,给出了查询的结果分析;

(6)总结了查询系统的特点以及一些不足之处,并对系统的改进作了展望。

3.2  系统可行性分析

可行性分析包括现有的条件和解决的问题,研究方法的分析,采用的技术路线,实验方案的可行性。现有的条件是:对城市公交查询系统的研究和体会,本人计算机完备的软硬件,对文献资料的准备。要解决的问题是实现页面的设计,数据库的建立,数据库连接和创造,每一个表的文件上传功能。

3.2.1  经济可行性分析

由于本系统属于小规模管理使用的系统,整个系统比较小,因此开发成本不是特别大。本人独立完成了整个开发过程,实现全部的开发任务只需要一台PC机和上述的各种软件。由于PC机是我原有的,而且无需专门升级硬件;而在网上又可以免费下载各种软件,因此,整个开发成本较小,这也为我们提供了非常大的方便,可以进一步完善网站。在使用成本上,连接国际互联网上的计算机,用户只需要拥有一台能够了,在世界的任何一个角落使用网站所有功能和服务只需要通过注册就行了。并且没有很高的要求计算机的硬件,软件方面也没有别的要求,访问与使用具有广泛性。因此,从经济可行性分析来看,这个系统体现了经济实惠,但是功能强大的特点。

3.2.2  技术可行性分析

本课题使用的是Java技术,开发平台选用MyEclipse,MyEclipse有这完整配备的功能,便于初学者使用还有代码提示,让我使用更加得心应手。在决定好编程框架后,再说用Java语言编码的优点:效率高、可重用性强、代码量少等。同时,使用的数据库是MySQL,开源的MySQL增添了可视化和稳定化的优点,而且安全方面也做得很好,更别说它的强大的保存数据功能以及查询数据功能。

3.3  用户需求

要设计一个良好的公交查询系统,就必须首先明确该应用环境对系统的要求。公交查询系统的应用背景为:方便市民搭乘公交车出行。所以乘客可以通过对车站站点查询、公交线路查询、站-站查询三种查询形式。同时设有管理员管理界面,负责添加、修改、删除指定的公交线路信息,为了更好的适应公交查询系统的实时性,使本系统更加完善,能更好的为用户所利用,我觉得还设计了在线提问和网站发布公告功能,在线提问能很好,很快的知道市民对公交查询系统的意见和一些对线路上不明确的提问,而网站发布功能则能更好的帮助政府和公交公司发布新闻和紧急情况,方便市民的知晓。因此,该系统需满足以下几方面需求:

查询功能:系统需要提供几种不同方式的查询手段,包括根据公交线路、日常站点、和任意两个站点查询乘车路线。其次,采用算法查找任意两个站点之间的乘车路线。具体功能如下所述:

1. 根据公交站点进行相应的信息查询。

2. 根据公交线路进行相应的信息查询。

3. 通过选择任意两个站点,完成两站点之间最短乘车路线查询。

用户管理功能:主要是删除用户信息和修改用户基本信息;

后台车次管理功能主要包含添加车次和站点功能、更新车次和站点功能、删除车次和站点功能,这样做到系统实时更新,为用户查询提供更为准确的信息。具体如下:

1. 完成车次和站点添加功能。

2. 完成车次和站点更新功能。

3. 完成车次和站点删除功能。

4. 用户登录验证功能。

5. 用户注册信息功能。

6. 用户注销功能。

7. 删除用户信息功能。

在线提问功能:在线提问主要包括用户对公交线路疑惑的问题发布,旨在让市民和政府和共同为提出疑问的市民进行解决和讨论。

网站公告发布功能:进行一些实时新闻的发布,包括线路的绕行,公交车价格的调整,以及一些实时的路况信息,均可通过此来查询,旨在为用户提供一个实时的,便捷的公交插叙系统。

3.4  系统功能需求概述

需求分析就是分析用户的需要与要求。如果需要评估的结果准确地反映用户的实际需求,这将直接影响到方案设计的整个阶段,而且对系统的使用产生影响。着眼于需求评估是完成调查,收集和研究,并可能受到影响的数据管理和安全信息的需求的过程。一般使用者都相对缺少相关的计算机方面的知识,并且可以确定计算机是否可以为自己做什么,不能做什么,所以无法非常准确的去表达自己的需求,但是他们是最终的用户,他们的需求才是最终的需求,但是技术人员缺少用户的专业方面的知识,不是很容易理解到用户的真正需求,有时候可能还会误解到用户的需求;新的硬件和软件技术的出现也会让系统的业务需求得打变化。所以技术人员必须要使用一些得到的方法来保证可以与用户不断的交流这样才可以确定用户最终的需求。通过与用户不断深入地进行交流,了解到目前系统存在的主要问题。

需要研究是从用户分析和细化的信息,在功能和性能上有描述。它是软件开发过程中的第一阶段的一部分,主要任务是要了解你需要什么,什么应做的工作,以确定系统的,因此在目标系统提出完整,准确,清晰,具体的要求,并表示以书面形式唤醒。

软件的用户界面是与该对象最直接的接触,包括是否允许用户简单,方便使用,该请求的响应时间,对整体的用户感受有很大落差。

要设计一个良好的公交查询系统,就必须首先明确该应用环境对系统的要求。公交查询系统的应用背景为:方便市民搭乘公交车出行;手动(目前)、自动(将来)、及时更新查询数据。因此,该系统需满足以下几方面需求:

1、查询功能:系统需要提供几种不同方式的查询手段,以实现灵活方便地管理整个系统。

2、数据的更新修改:

更新:系统允许管理员级别的用户对数据进行更新、修改并且存盘操作;

编辑:系统允许管理员级别的用户对数据进行编辑、删除的操作,保证现库的真实性与实时性。

系统采用B/S模式。整个系统最关键的就是数据库系统,一个强大的数据库可以支持完善一个优秀的软件设计,通过软件系统与数据库系统的连接来实现通过软件界面观察和处理操作数据                    

3.5  运行环境

本系统是一个WEb版的应用程序,需要在服务器上部署中间件Tomcat、MySQL数据库,其他的客户端通过网络进行访问该服务器即可。

(1)开发硬件平台:

CPU:酷睿双核 3.2GHZ

内存:4G以上

硬盘:500GB

(2)服务器端硬件平台:

服务器参考配置:Intel  Xeon  Quad Core  E5530 80W 2.40GHz/5.8GT/8MB Cache, 2x2GB DDR3-1066MHz, 2.5in HS 146GB SAS,HS  675W PSU, ServeRAID MR10i(RAID 5), 2*Giga Ethernet,Light Path, CD-RW/DVD Combo, 1U,3 Years Onsite Next Business Day. 146GB 10K 6Gbps SAS 2.5" SFF Slim-HS HDD x3550M2/x3650M2/HS22

(3)开发软件平台:

操作系统:Window 8 或Win 7均可

数据库:Mysql

4  系统概要设计

4.1  概要设计的概论

软件概要设计的核心内容就是依据需求规格或规格定义,合理、有效地实现产品规格中定义的各项需求。他注重框架设计、总体结构设计、数据库设计、接口设计、网络环境设计等。概要设计是将产品分割成一些可以独立设计和实现的部分,保证系统的各个部分可以和谐的工作。概要设计的原则包括:模块化和分层细化、模块独立和信息隐蔽。

4.2  架构设计

系统采用B/S模式架构。B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix 、SQL Server或 MySQL等数据库。浏览器与同数据库进行数据交互,可以通过Web Server实现 。

我们的系统使用的应用程序开发模型的B / S结构的三个阶段。目前,互联网应用架构,事务处理分为三个层次,即Web浏览器的互联网服务器数据库服务器。在这种架构中,通过Web浏览器业务表现是容易执行,用户通过Web浏览器提交表单时,将信息提供给消费需求的Internet服务器,Internet服务器,所需的分析查询,数据库服务器,数据库服务器执行,数据库服务器的查询结果返回给使用标准的HTML语言返回给Web浏览器的Internet服务器,Internet服务器。

4.3  系统功能结构图及分析

4.3.1  系统功能结构图

系统功能结构图如图4-1所示

图4-1系统功能结构图

4.3.2  系统基本功能

系统功能的划分方式可以分成很多种类,但是我按照界面流程将它分为了两大模块,第一个模块为前台查询模块。前台查询包括:站点查询,公交线路查询,站-站的查询,在线提问,网站公告。第二个模块为后台管理模块,后台管理模块包括:用户管理、线路维护、公告管理、提问管理。下面本节主要对各个基本的功能进行一个简要的介绍。

1.站点查询

站点查询是本系统的主要功能之一,为用户倒车提供前提条件,用户可以根据自己所到的站点,查询本站所经过的公交线路,从而完成换乘,前往自己的目的地,进入系统首页,在站点查询的对话框内输入自己要查询的地点,接着会转入到另一页面,这个页面包含了经过这一站点的所有公交线路,可点击查看,了解自己需换成的公交车的车号,完成换乘。

2.公交线路查询

公交线路查询是不系统不可缺少的功能之一,用户可根据自己了解到的公交线路名

称,查询该线路途经的站点,事先了解好自己所要经过的站点,提前做好下车准备,防止自己下错站,进入功能页面,在公交线路的对话框里输入所要乘坐的公交线路名称,之后会出现匹配的公交线路,点击查看,了解自己的所经的站点信息。

3.站—站的查询

此功能是整个系统的核心,也是最便捷的公交查询方法,只要用户输入自己的位置,以及所要到的位置,就会出现公交线路名称,途径站,以及所要换乘的下一班车,无需自己查看,系统自己就会给成乘车意见。进入页面输入自己的起始站,然后在第二个对话框输入自己要到达的站点,系统将显示出换乘的路线,这个功能十分的便利,深受广大市民的喜欢。

4.在线提问

在线提问功能是本系统的辅助功能。用户可根据自己对公交线路的不明确,向广大的市民发出提问,也可以抱怨本系统的不完善的地方供系统的设计者进行修改,完善系统的功能。

5.网站公告

网站公告功能也是本系统的辅助功能,用户可以点击此模块,查看网站管理员发布的公交信息,包括一些公交价格的调整,以及道路的施工导致的公交线路的绕行都可以在上面发表。

6.登录功能

登录功能是一个系统的重要组成部分,也是一个系统重要的门户功能,登录功能主要实现了使用者对系统的登录,在本文所设计的系统中,登录主要分成了两种登录身份:一般用户登录和管理员登录。两种身份登陆,能细分系统的功能模块,实现更加方便的操作和管理。

7.用户管理

用户管理是一个系统的重要功能之一,对用户的管理可以实现对系统使用者的了解和查看,能让使用者更加方便的使用本系统,用户的种类分为多种,本文主要体现在一般用户和管理者两种用户上面,可以对用户的信息进行添加修改,也可以删除和禁用用户。

8.线路维护

线路维护是对此系统功能的最大的保障,一个系统的基本功能是否可以实现全靠此功能维护,线路维护功能可对现有公交线路进行修改和删除操作,也可添加新的公交线路,这部分属于管理员用户的功能。

9.公告管理

公告管理是对前面所说的公告发布的一种监管,管理员用户可对已经发布的公告就行修改和删除,也可对新的公告进行添加,旨在为用户提供一个实时的公交线路查询的体验,方便乘客出行。

10.提问管理

提问管理是系统管理员对在线提问内市民发布的问题进行答复的功能,这个功能是系统管理员与市民进行交流的一个模块,管理员不仅能回答市民的问题,也可以发布一些问题征求市民的意见。

4.4  系统用例图

4.4.1  UML用例图简介

用例图用来确定需求的范围,这些需求是设计开发的依据。用例图将系统看作黑盒,从外部执行者的角度来理解系统。

用例图展示了用例之间以及同用例参与者之间是怎样相互联系的。用例图用于对系统、子系统或类的行为进行可视化,使用户能够理解如何使用这些元素,并使开发者能够实现这些元素。

下面简要介绍一下用例图中的组成元素:

1. 角色(Actor)是与系统中的用例交互的一些实体,在实际情况中,角色可以是人,也可以是其他系统或者硬件设备。在画用例图的过程中,角色往往是第一个被确定的,因为系统或者用例在开始时是模糊的,但是参与系统的角色是最容易明晰的。有了角色之后,根据角色与系统的交互,以及角色要求的功能,可以进一步确定系统和用例。

2. 用例(Use case)指的是系统的功能,它是系统某个功能的所有执行动作的集合。在UML图示中它是一个椭圆,但是具体分析用例的时候需要给出这个用例的所有执行动作的步骤。

3. 连接(Assocation)是角色与用例的连接,表达此角色可以初始化此用例。 

4. 注释(Note)可以添加到任何地方,对用例图的不同部分加以说明。

5. 泛化(Generalization)在面向对象的技术中无处不在,它的另一个名字也许更为著名,就是“继承”。

4.4.2  系统用例图

1. 系统总用例图如图4-2所示:

图4-2系统总用例图

此用例图给出了系统所有用户的操作用例的框架,包括乘客用户和后台管理员用户,乘客用户的操作登陆浏览器,进入查询页面,选择查询方式,在线提问,以及查看发布的公告等功能,而后台管理员则可进行用户管理,线路管理及公告发布等功能,根据此用例图一目了然一般用户和管理员用户的职责。

2. 后台管理系统用例图如图4-3所示:

图4-3后台管理系统用例图

后台管理用户包括的工作有:公交线路管理、公告发布管理、用户管理。公交线路管理包括对所用公交线路的进行的增加还有删除操作的功能。公告发布管理包括对公告的增加和删除操作,用户管理就是对所有使用该系统的管理员用户进行的管理,包括增加用户和删除用户。

4.5  技术架构

所使用的架构是系统建设的关键,传统c/s架构,访问和操作已经不能满足大量用户需求,目前网络系统应用的主流是b/s,它基于浏览器的架构,可以交给服务器端来处理大量的数据处理工作,只用通过普通IE浏览器的客户端,还可以访问系统,操作起来方便快捷,而且利于更新和维护系统,在该方面具有优势的是java语言。

1.系统三层架构如图4-4所示:

图4-4 B/S三层架构示意图

4.6  数据库结构设计

数据库设计( Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。

4.6.1  数据库设计的原则

数据库的结构分析在系统开发前的设计中占有很重要的位置,一个好的系统离不开一个层次清晰、功能完整的后台数据库结构。

在设计数据库时,应尽量分离各个实体和表,一个实体对应一个表;同时,应明确各实体间的关联,明确各实体间的属性,以便确定它的字段。总之,在设计数据库时,应注意各表间的独立性和关联性,这是一个好的数据库结构首先要具备的条件。下面给出了数据库设计中的几点要求:

1. 规范命名。所有的库名、表名、域名必须遵循统一的命名规则,并进行必要说明,以方便设计、维护、查询。

2. 控制字段的引用。在设计时,可以选择适当的数据库设计管理工具,以方便开发人员的分布式设计和数据小组的集中审核管理。采用统一的命名规则,如果设计的字段已经存在,可直接引用;否则,应重新设计。

3. 库表重复控制。在设计过程中,如果发现大部分字段已经存在,开发人员应怀疑所设计的库表是否已经存在。通过对字段所在的库表及相应设计人员的查询,可确认库表是否确实重复。

4. 并发控制。设计中应进行并发控制,即对于同一个库表,在同一时间只有一个人有控制权,其他人只能进行查询。

4.6.2  数据库结构分析

根据系统功能的要求,本系统管理和维护的数据元素(Entity 实体)有:系统用户、普通乘客用户、公交线路、公告发布,在线提问,提问评论。

1. 系统用户实体包含这样一些基本属性:系统用户的ID、登录账户、密码、姓名、联系电话、系统用户的状态。其中,系统用户的ID是用户的唯一标志。系统用户能够实现系统的登录,完成对后台公交线路的管理,包括对线路的添加和删除操作,还有对所有用户的管理,对公告发布的管理。

2. 普通乘客用户可以直接点击主页上的公交信息查询按钮进入查询功能:包括两个站点之间的查询、根据公交线路进行查询、根据站点进行查询。还可以进行公告的查看和在线提问和评论

3. 公交线路的基本属性有:公交线路id,公交线路名称,公交线路所经站点,公交线路开始时间,以及公交线路终止时间。

4. 公告发布的基本属性:公告id,公告的正文以及公告发布的标题。

5. 在线提问的基本属性:问题id,问题的描述,问题的状态,问题发布的时间,问题的标题,问题发布者id。

4.6.3  数据库概念模型

现今应用的最广泛的数据库是关系型数据库。因为它是一个面向对象的系统设计,当然,数据库的设计,必须是面向对象的。现在应该怎么考虑对类进行持久性操作,即对象类是怎样映射到关系数据库的二维表中的。现今,像PowerDesigner、Rose 等都可以采用数据库建模工具来实现

1.用户的信息实体图如图4-6。

图4-6用户信息实体图

2.公交线路实体图如图4-7。

图4-7公交线路实体图

3.公交公告发布实体图如图4-8

图4-8公交公告发布

4.公交在线提问实体图如图4-9

图4-9公交在线提问

4.6.4  部分数据库数据表字段设计

在物理结构设计阶段,首先应该分两步走:                    

一是,在关系数据库中,确定数据库的物理结构,主要是指存取方法和存储结构。时间和空间效率是对物理结构的评价。.

二是要选取存取方法,并且是正确的关系模式,存取索引方法、聚簇存取、HASH存取方法等都是常用的方法。

依据以上规范数据库的部分表设计见下页:

  1. 用户表如表4-1所示

编号

字段名称

数据类型

字段大小

说明

1

userid

char

11

用户id

2

password

varchar

20

密码

3

phone

varchar

15

用户联系电话

4

ralname

varchar

30

用户姓名

5

state

varchar

2

用户状态

6

username

verchar

20

用户账号

7

usertype

verchar

20

用户的类型

4-1用户表

2.公交线路信息表如表4-2所示:

编号

字段名称

数据类型

字段大小

说明

1

bid

char

11

公交线路id

2

bname

varchar

30

公交线路名称

3

buspath

Longtext

公交线路站点

4

endDate

varchar

30

公交线路起始时间

5

startDate

varchar

30

公交线路终止时间

表4-2公交线路信息表

3.公交系统公告发布信息表如表4-3所示:

编号

字段名称

数据类型

字段大小

说明

1

pid

char

11

公告发布id

2

content

varchar

255

公告发布正文

3

title

varchar

30

公告发布标题

表4-3公交系统公告发布信息表

4.公交系统在线提问信息表如表4-4所示

编号

字段名称

数据类型

字段大小

说明

1

talkid

char

11

在线提问id

2

talkcontent

varchar

255

在线提问内容描述

3

talktime

varchar

30

在线提问的时间

4

talktitle

varchar

30

在线提问的标题

5

talkuserid

char

11

在线提问的用户id

表4-4公交系统在线提问信息表

5  系统详细设计

详细设计是将解决问题的办法进行具体化。详细设计主要是针对程序开发部分来说的,但这个阶段是不真的编写程序的,而是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的代码。

详细设计是将概要设计的框架内容具体化,明细化,将概要设计转化为可以操作的软件模型。在实际项目进行过程中,这个过程可以省略,主要是视项目的具体情况和项目要求而定,可以有详细设计,也可以直接按照概要设计进行编码。这个过程主要是保证编码的顺利进行,可以预先扫清编码过程中的障碍,提高代码的质量和编码的效率。详细设计的结果决定了最终的程序代码的质量。详细设计不仅仅要逻辑上正确的实现模块的功能,更重要的是设计出的出处理过程应该进可能简明易懂。

5.1  系统数据库连接配置

数据库连接配置

<bean id="datasource"

              class="org.apache.commons.dbcp.BasicDataSource">

              <property name="driverClassName"

                     value="com.mysql.jdbc.Driver">

              </property>

              <property name="url"

                     value="jdbc:mysql://localhost:3306/newspubs">

              </property>

              <property name="username" value="root"></property>

              <property name="password" value="123456"></property>

       </bean>

5.2  系统流程图的分析设计

1.用户登录流程图

用户登录流程图如图5-1所示:

图5-1用户登录流程图

进入用户登录界面,首先输入用户名和密码,点击登录按钮,后台就行用户名和密码的匹配环节,如若俩个都正确及进入该用户界面,倘若有一个不对则登录失败,系统会提示用户重新输入。

2.会员注册流程图

会员注册的流程图如图5-2所示:

图5-2会员注册流程图

用户注册进入注册页面,注册内容有,账号,密码,姓名以及手机号,当将这些信息输入之后,后台数据库会比对用户输入的信息是否有无注册,假如已经注册,系统则会提示用户这个信息已经注册过,需要重新输入,假如没有比对成功,则成功建立相应的账户,并在数据库中得以保存。

5.3  系统登陆模块实现

用户系统主要分为俩大类:一类是一般用户,一类是管理员用户。

由于系统功能的特殊性,前台使用者不用登陆就可以实现公交查询的功能。

第一部分主要是一般用户,一般用户可以随意注册,注册的信息主要包括:用户的账号,用户的密码,用户的信息,还有用户的电话这四大部分,注册的信息会同数据库中已存在的信息进行对比,查看是否重复,如果重复则重新输入。注册成功就可进行一般用户的登录,比对用户账号和密码是否正确,若正确登录成功,反之重新提醒用户进行登录。

一般用户登录界面如图5-3所示

5-3一般用户登录界面

第二部分为管理员用户登录,因为管理员用户的登录界面不能存在注册按钮,所有管理员用户的信息必须从数据库中直接录入。

实现的过程主要有几个步骤,进入首页后点击右上角的进入后台按钮,将会看到图5-4的登录界面,按照要求输入管理员用户的账号密码,首先对管理员输入的信息进行保存然后利用程序从数据库中进行检索看是不是有管理员输入的信息在数据库中是否存在如果存在就返回正确的结果,如果不正确就返回错误的结果。如果结果数据库中存在就显示登录成功,如果数据库不存在就显示失败请重新登录。

管理员用户登录界面如图5-4所示:

         图5-4 登录界面

5.4  前台功能模块设计

5.4.1  公交查询设计

本系统的首页设计为查询界面,为的是方便高效和快捷,此系统查询分为三大功能:第一个功能为站-站的查询功能,第二个是公交线路的查询功能,第三个是公交站点的查询功能。接下来将介绍三大功能

1.站—站的查询功能;用户可将准备出发的起始站点和终止站点分别对应的输入到换乘查询的输入框内,系统会根据用户输入的站点信息,列出提供的换乘路线,系统将优先查找到的直达公交线路排在前面,方便用户的选择。

2.公交线路的查询功能:用户可以输入完整的公交线路号进行查询公交线路,系统会筛选出匹配的线路,用户可以点击查看,查看所查到的公交线路,里面有每个线路确切的途经站点。

3.公交站点的查询功能:用户在不了解公交线路的情况下,可以搜素要到达的公交站点,输入自己要到达的地点,公交查询系统会对比数据库为用户匹配出所有进过这一站点的公交线路,用户可根据此来选择乘坐的线路。

查询界面如图5-5所示:

图5-5 查询界面

用户输入起始站与终点站查到的结果如图5-6所示:

图5-6 站-站的查询

用户输入公交线路查询如图5-7所示

图5-7 公交线路查询

用户输入公交站点查询如图5-8所示

图5-8公交站点查询

5.4.2  热门线路功能模块设计

热门查询线路模块列举了所有在数据库中的公交线路,本人在网上随意挑选了一些公交线路录入其中,市民可以在热门线路中查看所有公交线路,挑选符合属于自己出行的公交线路

下图是热门线路模块的界面,如图5-9所示:

图5-9 热门线路功能实现界面

5.4.3  网站公告功能模块设计

用户点击网站公告模块后会看到管理员发布的公交新闻,包括一些公交线路的改道,还有公交价格的调整,网站公告由后台管理员进行上传。

下图是网站公告功能模块的实现界面图,如图5-10所示:

图5-10网站公告功能实现界面

下图是网站公告内容的详细信息,如图5-11所示

图5-11网站公告的详细信息

5.4.4  在线提问模块设计

在线提问模块旨在帮助乘客解决他们在实际的乘车过程中遇到的困难,以及对城市公交查询系统的建议,这是一项非常人性化的设计,因为设计员并没有真正的参与使用,有些问题体会不到,用户可在此模块发表问题,提出自己的见解,也可在此回答其他市民的疑惑。

下图是在线提问功能模块的界面,如图5-12所示:

图5-12 在线提问功能界面

5.5  后台功能模块设计

管理员的设置是为了系统能够安全的、系统的平稳运行,本系统为管理员设置了用户管理、公告管理、线路维护和会员提问四大功能模块。

用户管理:用户管理是对已注册用户的基本信息进行更新维护;主要包括对用户的添加,用户的删除,用户的修改

公告管理;公告管理是对公告进行发布和对已发布公告进行修改和删除操作,保证公告的实时性,及时添加新的公告,也要删除旧的,无用的公告

线路维护:线路维护主要是对新线路进行添加和对不用线路的删除,以及对现有线路的修改;

会员提问:对市民提出的问题进行答复,帮助市民解决出行问题,更好的完善城市公交管理系统。

用户管理的实现界面,如图5-13所示:

图5-13 用户管理

线路维护管理管理的实现界面如图5-14所示:

图5-14 线路维护管理

公告管理的实现界面如图5-15所示:

图5-15 公告管理

会员提问的实现界面如图5-16所示

图5-16 会员提问

6  系统测试

6.1  程序测试

网站测试是软件设计的最后一道工序,也是非常重要的一步。用于检查软件的质量、性能、可靠性等是否符合用户需求。一套严谨的、规范的、完善的测试过程将大大提高软件的质量、可信度、可靠性,降低软件的出错率,降低用户风险系数。通常网站测试包括:功能测试,安全测试,可用性测试,性能测试、兼容性测试等方面。

在系统设计的过程中,这是必然的,存在一些错误。对于错误的语言和语法,程序在运行时,会自动提示你错的地方,并请求立即修改,所以,这样类型的错误是比较容易发现和纠正的。但另一类错误是在程序执行时由于不正确的操作,或是导致的错误结果的对某些数据的计算公式的逻辑错误。这类错误隐蔽性很强,时而出现,因此,这是非常耗时费力的,对这一类动态发生的错误的排查。

软件测试,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

为了使本软件运行更加稳定,我对它进行了全面的测试,其中测试分为二部分,一种是界面测试;另一种功能测试。

首先我们来说界面测试,界面测试是为了使程序在不同的的操作平台上能够运行界面,并且能够保持原来的风格。经测试程序运行正常,运行界面上的字体图片等设置都能够保持得非常好。不出现字体变形等情况。

其次进行功能测试。该系统测试采用的是单元测试,集成测试,完善性测试等多种方式进行测试。

经过测试,所有功能都能得以实现,没有任何变形。至此,在功能的测试上也已经比较圆满的完成了。

6.2  测试的重要性及目的

(1)测试的重要性

系统测试是开发一个管理信息周期中非常重要而且漫长的的阶段。其重要性体现在他是保证系统质量与可靠性的重要关口,是对整个系统开发过程的最终审查。

系统测试的主要任务是尽可能的检查出程序中的错误,提高系统的可靠性,主要的目的是位列检验系统“做得如何”。其中这一阶段又可以分为三个步骤:模块测试;组装测试;确认测试;通过测试整个管理系统来确定能不能够满足用户的需求。通过测试发现问题以后,我们要经过不断的调试找出错误具体原因和位置,然后对其进行修改。

系统开发完成后就需要进行系统测试,测试在一个软件的开发过程中是非常重要的,其意义在于:

1.发现软件错误;

2.有效定义和实现软件成分由低到高层的组装过程;

3.验证软件是否满足任务书和系统定义文档所规定的技术要求

4.为软件质量模型的建立提供依据。

(2)测试的目的

Grenford J.Myers曾对软件测试的目的提出过以下观点:

1.测试是为了更好的找出程序中存在的问题、错误。

2.好的测试方案是很有可能是到现在为止仍然未被发现的错误的测试方案。

3.成功的测试则是找出了至今仍然没有被发现的错误的测试。

4.测试并不单纯是为了找出错误。而是通过分析错误,来找出产生错误的原因,来避免发生错误,帮助程序员找出软件开发过程中的缺陷,以便及时进项改正。

5、测试是为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。

6.3  测试的步骤

就像开发过程,测试过程中要完成的一步一步的逻辑上的每一步都是在继续之前的一个步骤。由许多个子系统是大型软件系统,并且多个包括各子系统模块的。因此,一个软件系统的测试基本上由以下步骤组成:

(1)测试模块,编码和详细设计错误往往在本测试程序中找到。

(2)在此测试步骤中遇到的测试系统的软件错误的设计,规范的要求的错误也可以找到。

(3)系统需求规格说明书的错误也是在这个测试程序进行验收测试发现。

在我们设计软件的过程中,测试系统常用的测试方法主要有两种:功能测试和结构测试。

功能测试也被叫做黑盒测试和数据驱动测试,是在已经知道系统应该具有的具体功能的情况下,通过黑盒测试来测试系统功能是不是能够正常运行。在测试时,将系统当做不能打开的盒子,在不管系统内部结构与特性的状况下进行测试,它只检查系统功能是不是根据系统说明书的规定正常运行的,同时检测系统是否能正确接收的输入信息和输出信息的正确对应,并保持系统的完整性的外部信息需求。

白盒测试与黑盒测试相反,它了解系统内部工作的各项具体程序,能够通过测试来检查系统内部的运行是不是按照系统说明书的规定进行正常运作的,因此,白盒测试又被叫做结构测试和逻辑驱动测试。根据测试程序的结构在每个道路试验,当系统运行时不是能按预定要求正确运行,无论其功能如,白盒测试试验,道路试验是一个逻辑驱动器,这种测试主要用来软件测验。

首先我们来说界面测试,界面测试是为了使程序在不同的的操作平台上能够运行界面,并且能够保持原来的风格。我把完整程序拷贝到不同版本的电脑平台环境下,程序运行正常,运行界面上的字体、图片等设置都能够保持得非常好。不出现字体变形等情况。

其次进行功能测试和性能测试,功能测试主要包括五项内容:适用性、准确性、可操作性、依从性、安全性。

系统性能测试主要是通过模拟系统运行环境,测试系统性能是否符合客户的需求。性能测试的重要技术指标是:系统的运行速度、系统响应的时间和支持并发节点数。

最后进行系统的可用性测试,可用性测试用于检测系统的可理解性、可操作性和学习性等方面内容。

6.4  测试的主要内容

测试过程分为哪会保证测试,即质量几个阶段:代码审查,单元测试,集成测试,确认测试和系统测试。

(1)单元测试

集中在一个小软件单元设计审查 - 模块是一个测试单元,意识和定义模块的功能实际发现,这种情况不符合测试说明和编码错误。

(2)集成测试

集成测试模块安装在根据进行集成测试的设计要求,其主要目的是为了发现问题相关的接口。例如有可能是一个问题,由于疏忽,与其他模块的模块,并造成有害影响;不能产生所需的功能键,组合功能;看起来可以接受的个别错误是不可接受的,当积累;可能有错误,如整个数据结构。

(3)确认测试

该试验的目的是验证,该系统能够工作如期,根据需要,以显示未来的用户。集成测试后,已经把一个完整的软件系统,设计按照完成安装的所有模块,从根本上推动问题接口错误的,那么软件的有效性将能够得到进一步的确认,试验工作证实,它是功能和软件的性能,如用户所期望的。

(4)系统测试

在软件开发完成后,并且系统将最终在包的其它部分,在​​测试系统上执行。包括恢复测试,安全性测试,强度测试和性能测试。

系统测试主要从以下几个方面:

①功能测​​试:测试满足发展的需要,旨在提供这里所描述的功能,用户需求是否得到满足。功能测试是测试最常用的系统和强制性测试和正式的规格通常是标准的软​​件测试。

②强度测试和性能测试:该测试系统的最大实际程度的能力,即在某些情况下,负载的软件功能进行。

③安全测试:验证内置到系统中的保护机制,它可以保护系统,所以从很不安。该系统主要是针对权限对系统进行测试,并为void仅仅是数据,错误的数据和测试数据的非法干扰的能力。

6.4.1  功能测试

功能测试主要包括五项内容:适用性、准确性、可操作性、依从性、安全性。

本系统功能测试如表6-1所示:

表6-1  系统功能测试

测试内容

测试结果

适用性

准确性

可操作性

依从性

安全性

本系统功能测试测试用例6-2所示:

表6-2  系统功能测试用例

测试标识

测试项目

测试用例输入及说明

预期结果

测试记录

用户管理模块功能点

新增用户

系统管理员单击”新增”按钮

成功进入到新增用户界面

测试通过

用户管理模块功能点

登录全部置空

令所有文本框为空

提示(请输入账号密码)

测试通过

用户管理模块功能点

提交新增用户信息

在新增用户界面输入有效数据并点击提交按钮

显示注册成功

测试通过

用户管理模块功能点

删除用户

在界面上点击要删除的用户,并点击删除按钮

删除成功,并退回到用户管理界面

测试通过

用户管理模块功能点

编辑用户

系统管理员单击”编辑”按钮

成功进入到编辑用户界面

测试通过

公告管理模块功能点

新增公告

系统管理员单击”添加”按钮

成功进入到新增公告界面

测试通过

公告管理模块功能点

全部置空

令所有文本框为空

提示(标题不能为空)

测试通过

公告管理模块功能点

提交新增公告信息

在添加公告界面,点击保存

添加成功后跳转到公告界面

测试通过

公告管理模块功能点

删除公告

系统管理员点击删除公告并点击删除键

显示删除成功并跳转到公告界面

测试通过

线路维护模块功能点

新增线路

系统管理员单击”添加”按钮

成功进入到添加线路界面

测试通过

线路维护模块功能点

全部置空

令所有文本框为空

提示(线路名称不能为空)

测试通过

线路维护模块功能点

提交新增线路信息

在新增线路输入有效数据并点保存

添加成功后跳转到线路维护界面

测试通过

线路维护模块功能点

编辑线路

系统管理员单击”编辑”按钮

成功进入到编辑线路界面

测试通过

题目管理模块功能点

删除线路

点击删除的线路再点击删除按钮

显示删除成功

测试通过

会员提问模块功能点

查看问题

点击查看按钮

成功查看问题

测试通过

会员提问模块功能点

回复问题

点击查看问题并参与回复

成功增加回复内容

测试通过

6.4.2  可用性测试

可用性测试用于检测网站的可理解性、可操作性和学习性等方面内容。具体测试方面如表6-3所示。

表6-3 网站可用性测试

测试项

测试人员的评价

窗口移动、改变大小、关闭等操作是否正常

操作模块是否友好

模块和提示内容等文字描述是否正确

模块布局是否合理、协调

模块的状态是否正确(对选中项能否发生对应切换)

键盘、鼠标操作是否支持

所需的数据项是否正确显示

操作流程是否合理

是否提供帮助信息

6.4.3  性能测试

系统的性能测试主要是通过模拟网站运行环境,测试网站性能是否符合客户的需求。性能测试的重要技术指标是:网站的运行速度、网络响应的时间和支持并发节点数。

(1)测试网站的运行速度:通过在不同的计算机上进行试运行本网站,没有发现任何停顿、迟滞现象。

(2)测试网络响应时间:网络响应时间主要包括:网络最小响应时间、平均响应时间和最大响应时间这三个参数。经过测试,在网络运营良好状态下,局域网内响应时间三参数为:1/2/5s,外网响应时间三参数为3/7/12s,符合客户的需求,属于在用户的心理可承受范围内。

(3)支持并发节点数:经过模拟的环境测试,本网站在并发节点达到45个时,网络运营的速度会发生比较大的波动,延迟时间10秒左右,符合客户需求。

6.5   测试结论

由于自己独立写的项目不多,考虑问题肯定会不周全,存在很多的难以预料的问题,写的功能有时候也难以满足用户需求,代码和接口也会出现很多问题,不规范的书写习惯,都会导致项目不无法达到用户的目标,无法让用户放心的使用,用户体验效果差。正是因为这样所有的项目在交付用户使用之前,必须经过专业技术人员的测试,一个好的项目需要不断的打磨,需要不断的反馈意见,不断地再加工,才能设计出符合用户要求,用户体验良好的项目。测试的技术人员,需要根据项目设计的人员制作的项目文档,对用户要求的各个功能进行测试并根据测试结果编写好测试的文档,在经过这一系列的工作后,可以有效的规避因设计人员在设计过程中的小纰漏,提升项目的质量,最终交付给用户一个完美的作品。

本系统设计要求基本都可以达到,此系统具有完整的软件功能,良好的用户界面,能够正确的处理错误信息,而且能够准确的提出错误的种类。总体说来,软件通过测试。

经过对上述的测试结果分析,本系统满足用户的通过计算机平台用户使用的要求和需求。所有基本功能齐全,操作简单,产品运行性能良好,是一个值得推广的公交查询系统。

总结与展望

本此毕业的内容所实现的是城市公交查询系统的设计与实现,主要介绍了java与jsp技术。本设计按照以下五个步骤对此项目进行设计:1.需求分析,2.概要设计,3.后台数据库的实现,4.项目的详细设计,5.系统的测试,当下此系统的基本功能已得到实现。从3月份开始准备资料到5月份基本完成了项目的设计,要是想很好的完成这个项目,使它运用到生活中是远远不够的,还需要不断地用户反馈,不断修改,不断地充实,我也将会在今后的学习中,不断的完善它,改进它,使其更好。

本系统具有以下优点:

1、该系统可以运行在多个操作系统平台(Windows NT和Windows 2000 / Windows XP和Windows Vista)数据库管理系统采用MySQL和Java开发环境,可移植性好。

2、该系统界面简单,操作方便,容易进入的信息,人们使用的术语。

但也存在以下缺点:

1、界面跳转复杂,接口不能被刷新,可以改进。

2、功能比较简单,没有进一步提高一些选修的程序等,不能更好的为用户提供更强大的功能服务。

3、数据库设计有冗余,需要进一步优化。

毕业设计的选题是在老师的指导下最终确立的,选题确定好后就开始学习这方面的资料进行学习,开始在这方面可以说是不熟悉的,虽然最初学习JSP技术,但学校学习的东西如果没有运用到实际的设计中终究是不行的,以前都是老师带领我们做,第一次做难免会怯场,但是最终通过自己的努力,老师的指导,同学的帮助,完成了本系统的设计。

本次毕业设计已基本画上句号,在整个设计的道路上是劳动和汗水凝结的成果。为了解决一丢点的困难,我翻阅书籍,询问老师,与同学探讨,从不懂到熟知也是一个新的经验和新的收获的过程。学习是一个长期的过程,系统设计过程中,遇到了很多问题,后来通过自己的努力来解决大部分问题,但同时也学到了很多知识。通过这次毕业设计,我从最初的Java语言,和后来的Web开发学会了很多,然后在训练过程中,通过所学到的知识应用到实际发展实践中,最后到​​软件功能集成的整个设计过程的思想。

该系统在实施过程中也常遇到一些困难,毕竟,JSP技术的掌握不熟练,有许多控件不能真正明白他们的意思,有一个对象调用的一些方法,并不十分了解,美化界面处理不好。所以开始的设计真的遇到了许多困难,但通过和老师同学的帮助以及在线学习,解决设计中的许多问题,但也使我有了一定的JSP技术的掌握,同时巩固了以前学过的知识。实现了质的上升,在一个纯粹的理论学习到实际上手再向完成毕业设计前进,理论联系实际情况,是学术认知的另一次跃进。

总之,本毕业让我学的东西,不仅仅是专业知识增加了很多,也锻炼了我的意志,让我更坚强。走软件开发这条路线,就要不断学习新知识,不断提高自己的实力,也要不断的树立新的目标,也需要是精神上不怕吃苦。

参考文献

  1. 汪光焘.畅通城市交通,实现城市的可持续发展.可持续发展,2002,(2):18-19
  2. 马武定.城市化与城市可持续发展的基本问题.城市规划汇刊,2002,(2):7-9
  3. 冯博.SQL实用教程.北京:人民邮电出版社,2005
  4. 严蔚敏,吴伟明.数据结构(c语言版).北京清华大学出版社,1997
  5. 张海藩.软件工程.北京:人民邮电出版社,2002
  6. 黄斯伟.HTML完全使用详解.北京:人民邮电出版社,2005
  7. Anthony J.Dos Reis. Compiler  Construction Using Java,JavaCC,and Yacc. Wiley-IEEE Computer Society Pr; 1 ,  2011
  8. Joan Casteel. Oracle 12c:SQL. Course Technology; 3, 2015
  9. Richard North Patterson. Eclipse. Pan Publishing, 2009
  10. 李兴华,王月清.名师讲坛:Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax) [平装][M].清华大学出版社,2010.
  11. 李刚.轻量级Java EE企业应用实战(第3版):Struts 2+Spring 3+Hibernate整合开发[M].电子工业出版社,2012.
  12. 孙卫琴:《精通Hibernate:Java对象持久化技术详解》[M].电子工业出版社出版,2010.
  13. Budi Kurniawan (作者),崔毅 (译者),俞哲皆 (译者),俞黎敏 (译者).Servlet和JSP学习指南[M].机械工业出版社,2013.
  14. 陆舟.Struts2技术内幕:深入解析Struts2架构设计与实现原理 [M].机械工业出版社,2012.
  15. 陈亚辉,缪勇.Struts2+Spring+Hibernate框架技术与项目实战[M].清华大学出版社,2012.
  16. 施瓦茨 (Baron Schwartz),扎伊采夫 (Peter Zaitsev),特卡琴科 (Vadim Tkachenko),宁海元.高性能MySQL(第3版)[M].电子工业出版社,2013.
  17. 薛华成.信息管理与信息系统专业教材系列:管理信息系统(第6版)[M].清华大学出版社,2012.
  18. 王颖.基于JSP的学生学籍信息管理系统的设计与实现[J].电子科技大学,2012.
  19. 朱丽萍.基于JSP的高校图书管理系统开发和实现[J].电子科技大学,2011.
  20. 吕勇.基于JSP的实验室项目管理系统的设计与实现[J].武汉理工大学,2012.
  21. 庞丽娜.Java 应用开发技术详解[M],科学出版社,2007:126-235
  22. Cay S.Horstmann,Gary Cornell著,叶乃文,邝劲筠,杜永萍.JAVA核心技术卷I:基础知识,程序设计教程[M].人民邮电出版社,2008.5:87-234
  23. 张超.基于JSP Struts2技术的房地产信息管理系统的设计与实现[D].吉林大学,2012.
  24. (美)Powell.R. (美)Weeks.R.著. 袁鹏飞译. C#和.NET架构. 北京:人民邮电出版社,2002.4 17
  25. 萨师煊,王珊.数据库系统概论(第三版).北京:高等教育出版社,2000.2

中文翻译

JSP 的优点与劣点

JSP页面能够执行的任何任务都可以用servlet 来完成。然而,这种底层的等同性并不意味着servlet 和JSP 页面对于所有的情况都等同适用。问题不在于技术的能力,而是二者在便 利性、生产率和可维护性上的不同。毕竟,在特定平台上能够用 Java 编程语言完成的事情,同样可以用汇编语言来完成,但是选择哪种语言依旧十分重要。和单独使用servlet 相比,JSP 提供下述好处:JSP中HTML的编写与维护更为简单。

JSP 中可以使用常规的 HTML:没有额外的反斜杠,没有额外的双引号,也没有暗含的Java 语法。能够使用标准的网站开发工具。即使对那些对JSP 一无所知的HTML工具,我们也可以使用,因为它们会忽略JSP 标签(JSP tags)。可以对开发团队进行划分。Java 程序员可以致力于动态代码。目中的某些请求,您可能会在MVC 构架下组 合使用这两项技术。我们总是希望用适当的工具完成相对应的工作,仅仅是 servlet 并不能填满您的工具箱。Java 社团没有发明这一思想----将页面设计成由静态 HTML 和用特殊标签标记的动态代 码混合组成.。ColdFusion 多年前就已经这样做了。甚至ASP 来自于前述经理所 在公司的一项产品 都在JSP 出现之前推广了这种方式。实际上,JSP 不只采用了 这种通用概念,它甚至使用许多和ASP 相同的特殊标签。 因此,问题变成:为什么使用 JSP,而不使用其他技术呢。我们的第一反应是 我们不是在争论所有的人应该做什么。其他这些技术中,有一些也很不错,在某些情况下也的确是合情合理的选择.然而,在其他情形中,JSP明显要更好一些。

Jsp与其他技术的比较

与.NET 和Active Server Pages ASP 相比 .NET 是Microsoft 精心设计的一项技术。ASP.NET 是与servlets 和JSP 直 接竞争的技术。JSP 的优势体现在两个方面。首先,JSP 可以移植到多种操作系统 和Web 服务器,您不必仅仅局限于部署在Windows 和IIS 上尽管核心.NET 平台可 以在好几种非Windows 平台上运行,但ASP 这一部分不可以。您不能期望可以将 重要的ASP.NET 应用部署到多种服务器和操作系统。对于某些应用,这种差异没 有什么影响。但有些应用,这种差异却非常重要。其次,对于某些应用,底层语 言的选择至关重要。例如,尽管.NET 的C#语言设计优良,且和Java 类似,但熟 悉核心C#语法和众多工具库的程序员很少。此外,许多开发者依旧使用最初版本 的 ASP。相对于这个版本,JSP 在动态代码方面拥有明显的优势。使用 JSP,动态 部分是用Java编写的,而非VBScript过其他ASP专有的语言,因此JSP更为强劲, 更适合于要求组件重用的复杂应用。 当将JSP 与之前版本的ColdFusion 对比时,您可能会得到相同的结论。应用JSP您可以使用Java 编写“真正的代码”不必依赖于特定的服务器产品。然而,当前版本的ColdFusion 满足J2EE 服务器的环境,允许开发者容易的混合使用ColdFusion 和Servlet/JSP代码。

与PHP 相比 PHP(“PHP:Hypertext Preprocessor”的递归字母缩写词)是免费的、开 放源代码的、HTML 嵌入其中的脚本语言,与 ASP和JSP 都有某种程度的类似。 JSP 的一项优势是动态部分用Java 编写,而Java 已经在联网、数据库访问、分布式对象等方面拥有广泛的API,而PHP 需要学习全新的、应用相对广泛的语言。JSP 的第二项优势是,和PHP 相比,JSP 拥有极为广泛的工具和服务器提供商的支持。

与JavaScript 相比 JavaScript 和Java 编程语言完全是两码事,前者一般用于在客户端动态生 成 HTML,在浏览器载入文档时构建网页的部分内容。这是一项有用的功能,一 般与JSP 的功能(只在服务器端运行)并不发生重叠。和常规HTML 页面一样, JSP 页面依旧可以包括用于JavaScript 的SCRIPT 标签。实际上,JSP 甚至能够 用来动态生成发送到客户端的 JavaScript。因此,JavaScript 不是一项竞争技 术,它是一项补充技术。 JavaScript 也可以用在服务器端,最因人注意的是 SUN ONE(以前的 iPlanet)、IIS 和BroadVision 服务器。然而,Java 更为强大灵活、可靠且可移 植。

与WebMacro 和Velocity 相比 JSP 决非完美。许多人都曾指出过JSP 中能够改进的功能。这是一件好事, JSP 的优势之一是该规范由许多不同公司组成的社团控制。因此,在后续版本中, 这项技术能够得到协调的改进。但是,一些组织已经开发出了基于 Java 的替代技术,试图弥补这些不足。据我们的判断,这样做是错误的。使用扩充JSP 和Servlet 技术的第三方工具,如 Apache Structs,是一种很好的思路,只要该工具带来的好处能够补偿工具带来的额外复杂性。但是,试图使用非标准的工具代替JSP 则不理想。在选择一项技术时,需要权衡许多方面的因素:标准化、可移植性、集成性、行业支持和技术特性。对于JSP 替代技术的争论几乎只是集中在技术特性上,而可移植性、标准化和集成性也十分重要。Servlet 在编译后,载入到服务器的内容中,初始化并执行。但是每一步发生在什么时候呢?要回答这个问题,要记住以 下两点:JSP 页面仅在修改后第一次被访问时,才会被转换成servlet 并进行编译; 载入到内存中、初始化和执行遵循servlet 的一般规则。 最常被误解的项已经突出标示出来。在参考该表时,要注意,由JSP 页面生 成的servlet 使用_jspService 方法(GET 和POST 请求都调用该函数),不是doGet 或doPost 方法。同样,对于初始化,它们使用jspInit 方法,而非init 方法。 将JSP 页面转换成servlet 编译Servlet? 将Servlet 载入到服务器内存中调 用jspInit 调用_jspService。

应用框架

什么是应用框架: 框架(framework)是可重用的,半成品的应用程序,可以用来产生专门的 定制程序。像人一样,软件应用的相似性比不同点要多。它们运行在相似的机器 上,期望从相同的设备输入信息,输出到相同的显示设备,并且将数据存储到相 同的硬盘设备。开发传统桌面应用的开发人员更习惯于那些可以涵盖应用开发同 一性的工具包和开发环境。构架在这些公共基础上的应用框架可以为开发人员提 供可以为他们的产品提供可重用服务的基础架构。

框架向开发人员提供一系列具有以下特征的骨架组件:

1.已经知道它们在其它程序上工作得很好;

2.它们随时可以在下一个项目中使用;

3.它们可以被组织的其它团队使用;

对于框架是典型的构建还是购买命题。如果你自己构建它,在你完成时你就 会理解它,但是在你被融入之前又将花费多长时间呢?如果要购买,你必须得克 服学习曲线,同样,在你可以用它进行工作之前又得花多长时间?这里没有所谓 正确答案,但许多观察者都会同意,象 Struts 这样的框架能提供比从头开始开 发更显著的投资回报,特别是对于大型项目来说。

其它类型的框架: 框架的概念不仅用于应用程序也可用于组件。在其它的资料里面,我们也介 绍了一些可以和Struts 一起使用的框架。这些包括Lucene 搜索引擎,Scaffold 工具包,Struts 验证器,以及 Tiles 标签库。与应用框架一样,这些工具也提 供了一些半完成的版本,可以用在用户的定制组件之中。某些框架被限制于专门 的开发环境中。Struts 以及本文中涉及的组件却不是这样。你可以在很多环境 中来开发 Struts: Visual Age for Java, JBuilder, Eclipse, Emacs, 甚至 使用Textpad。对于你的工具,如果你可以用来开发Java, 你就可以用它来开发 Struts。

使用的技术: 使用Struts 的应用开发使用了大量的其他基础技术。这些技术并不是专门 针对Struts,而是所有Java web 应用都可以使用的。开发者使用Struts 之类 的框架是为了隐藏在诸如HTTP,CGI,以及JSP 之类技术后面的繁琐的细节。作 为一个Struts 开发者,你并不需要知晓所有的相关知识,但是这些基本技术的 工作原理可能有助于你针对棘手问题设计出创造性的方案。

Servlet简介

Java servlet: Sun 公司的Java Servlet 平台直接解决了CGI 程序的两个主要缺点: 首先,servlet 比常规 CGI 程序提供更好的性能和资源利用。其次,一次 编写,随处运行的JAVA 特性意味着servlet 在有JVM 的操作系统间是轻便的可 移动的。Servlet 看起来好像是一个微小的web server。它接受请求并产生响应。 但和常规 web server 不同,servlet API 是专门设计来帮助 Java 开发人员 创建动态应用的。Servlet是要编译成字节码的 Java 类,就像其他Java对象一样。 Servlet访问HTTP 特定服务的API,但它仍然是一个运行于程序之中的Java 对象,并可以利用所有的Java 资产。为了使常规web servers 能访问servlet, servlet 被安插在一个容器之中。Servlet 容器连接到Web 服务器。每servlet 都 可以声明它可以处理何种样式的URL。当符合所注册样式的请求到达,web server 将请求传递给容器,容器则调用响应的servlet。

 JavaServer Pages:虽然servlets 对CGI 程序来说前进了一大步,但它也不是万能灵药。为了 产生响应,开发人员不得不使用大量的 println 语句来生成 HTML。比如这样的 代码: out.println " One line of HTML. " ; out.println " Another line of HTML. " ; 在产生HTTP 响应的Servlet 中是很普遍的。也有一些库有助于你产生HTML。 随着应用越来越复杂,Java 开发人员将不再扮演HTML 页面设计的角色。同时, 大多数项目经理更喜欢将团队分成不同的小组。它们喜欢HTML 设计人员处理表 现层的工作,而Java 工程师则专注于业务逻辑。单独使用servlet 的做法鼓励 混合标记和业务逻辑,很难区分团队人员的专业工作。为解决这个问题,Sun 提出了一个将脚本和模板技术结合到一个组件中的服 务器页面技术(JavaServer Pages)。为创建JSP 页面, 开发者按创建HTML 页面 类似的方式创建页面,使用相同的HTML 语法。为将动态内容引入页面,开发人 员可以将脚本元素置入页面之中。脚本元素是一些标记,封装了可以被JSP 识别 的逻辑。你可以在 JSP 页面中很容易的识别出脚本元素,他们被封装在一对 % 和 % 标记中。 为了识别JSP 页面,文件需要保存为扩展名.jsp。当一个客户请求JSP 页面 时,容器将页面翻译成 Java servlet 源代码文件,并将它编译成 Java 类文 件――就象你写的servlet 文件一样。在运行时,容器也能检测JSP 文件和相应 的类的最后更新时间。如果,JSP 文件自上次编译以来被修改了,容器将重新翻 译和编译JSP 文件。项目经理现在可以将表现层分派给HTML 开发人员,将业务 逻辑工作分派给JAVA 开发人员。重要的是记住,JSP 页面事实上是一个servlet。 你可以在servlet 做的,也可以在JSP 中做。现在你已经有关于 Strtus Web 应用程序模样的初步印象,以后我们将更深入的讨论 Strtuts 框架 的理论和具体应用。

参考资料:

基于jsp的城市公交查询系统毕业设计(项目报告+答辩PPT+源代码+数据库+截图+部署视频)icon-default.png?t=N5K3https://download.csdn.net/download/dwf1354046363/87813614Java毕业设计174例,包含部署视频_易小侠的博客-CSDN博客icon-default.png?t=N5K3https://cv2022.blog.csdn.net/article/details/124463185?spm=1001.2014.3001.5502

这篇关于基于jsp的城市公交查询系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/246188

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文