简单的火车票查询系统

更新时间:2023-03-11 23:12:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

简单的火车票查询系统

摘 要

针对火车票查询的实际情况,按照软件工程的结构化设计思想,经过项目的可行性研究和需求分析、总体设计、详细设计,以及编码实现和调试等步骤设计开发了简单的火车票网上查询系统。并运用数据流图和数据字典、E-R图和数据库逻辑结构、层次图、系统流程图、以及程序流程图,对该系统的数据需求、数据库、系统软件结构、系统流程、以及处理过程等进行了分析和设计。

本次课程设计利用JSP 开发工具和SQL Server 2000数据库来开发这个火车票网上查询系统。该系统要解决的是火车票查询工作所要解决的问题,可以满足火车票查询的基本要求,包括查询票信息等方面的功能。该系统能运用到旅游网站对火车票查询的工作中,根据用户的需求,快捷方便的为用户提供服务。 关键词:计算机技术;火车票查询系统;JSP

I

A simple train ticket query system

Abstract

In view of the actual situation of train ticket inquiries, in accordance with a structured software engineering design, the project feasibility study and in the demand analysis, overall design, detailed design, coding and debugging steps as well as the design and development of simple train ticket query system. And use the data flow diagram and data dictionary, E-R diagram and database logical structure, hierarchy diagram, system flow chart, and program flow chart of the system, data requirements, database, system software structure, system process, and the process is analyzed and design.

The curriculum design using JSP development tools and SQL Server 2000 database to develop the train ticket query system. The system is to solve the train ticket query work to solve the problem, can meet the basic requirements of train ticket inquiries, including query ticket information and other functions. The system can be applied to tourism website to train ticket query work, according to user needs, fast and convenient for the user to provide services.

Keywords: computer technology; train ticket query system of JSP.

II

目 录

摘 要 ........................................................................................................................ I ABSTRACT ................................................................................................................. II 绪 论 ....................................................................................................................... 1 1 项目概述 ................................................................................................................. 2

1.1 现系统概述 ................................................................................................... 2 1.2 公司组织机构 ............................................................................................... 2 1.3 系统业务流程 ............................................................................................... 2 1.4 系统功能模块 ............................................................................................... 3 2 系统需求分析 ......................................................................................................... 5

2.1 需求陈述 ....................................................................................................... 5 2.2 USE CASE建模 .............................................................................................. 5

2.2.1 定义活动者 ....................................................................................... 5 2.2.2 Use Case图 ....................................................................................... 6

3 系统架构设计 ......................................................................................................... 7

3.1 架构设计目标 .............................................................................................. 7 3.2 系统架构设计 .............................................................................................. 7

3.2.1 用户界面包 ....................................................................................... 8 3.2.2 业务逻辑包 ....................................................................................... 9 3.2.3 数据访问包 ....................................................................................... 9 3.2.4 权限管理包 ..................................................................................... 10 3.2.5 异常处理包 ..................................................................................... 10 3.3 系统架构类图 ............................................................................................ 11 4 系统详细设计 ....................................................................................................... 13

4.1 系统模块设计 ............................................................................................. 13

4.1.1 登陆 ................................................................................................. 13 4.1.2 车票信息管理 ................................................................................. 13 4.3 数据库设计 ................................................................................................. 14

4.3.1 ER图 ............................................................................................... 14 4.3.2 物理表结构图 ................................................................................. 15 4.4 开发环境的选择 ......................................................................................... 16

4.4.1 系统开发工具 ................................................................................. 16 4.4.2 数据库的选择 ................................................................................. 16 4.4.3 系统网络架构设计 ......................................................................... 17

III

5 编 码 ................................................................................................................. 18

5.1 概述开发工具及编程脚本 ........................................................................... 18

5.1.1 JSP技术 ............................................................................................. 18 5.1.2 JavaBean技术 .................................................................................... 18 5.1.3 JDBC技术 ......................................................................................... 19 5.1.4 用JDBC访问数据库 ....................................................................... 20 5.2 脚本习惯说明 ............................................................................................... 22 6 系统调试与测试 ..................................................................................................... 23

6.1 程序调试 ....................................................................................................... 23 6.2 程序的测试 ................................................................................................... 23

6.2.1 测试的重要性及目的 ....................................................................... 23 6.2.2 测试的步骤 ....................................................................................... 24 6.2.3 测试的主要内容 ............................................................................... 24

结束语 ......................................................................................................................... 26 参考文献 ..................................................................................................................... 27 致 谢 ....................................................................................................................... 28

IV

绪 论

目前火车票查询的状况是仅靠电话手工操作,以现有的工作人员很难应付车票查询高峰时刻的大量数据处理问题。同时还会出现由此带来的大量记录存放和管理所带来的问题。本次设计拟开发一个火车站网上车票查询系统,可以降低工作人员的工作量,提高工作人员的工作效率,同时方便顾客查询车票。

火车站市场的管理和规范问题,是困扰我们多年的一个老问题,也是政府管理中的一个难点,查询车票是客运业务中的一个最基本的业务,表面上看,它只是火车站业务的一个简单的部分,但是它涉及到管理与客户服务等多方面,因此,过去传统的查询车票方式已经不能满足现代客运业务流量剧增的客观要求,这就要求一种全新的方式——网上查询车票,来缓解查询车票高峰时期的客运压力,并为用户提供方便快捷的查询车票服务。本次设计便是利用开发工具JSP和SQL Server 2000数据库共同开发的一个火车站查询车票系统,它能方便快捷地运用在查询车票业务的营运之中。

本系统设计主要是根据查询车票业务的基本流程进行的,系统功能主要包括对车票信息的查询。我利用自己所学的计算机专业知识,模拟设计一个类似与火车站的火车票查询系统,使自己进一步掌握运用JSP语言编程的能力,并更深一步的了解有关计算机技术的相关知识。

1

哈尔滨德强商务学院毕业论文(设计) 3 系统架构设计

软件的系统架构是指通过某种特定的技术平台,完成软件系统整体功能的开发过程。也可以通俗地理解为:总体设计和总体结构布局。

一般而言,软件系统架构有两个要素:

1.它是一个软件系统从整体到部分的最高层次的划分。

2.建造一个系统所做出的最高层次的,以后难以更改的,商业和技术的决定。

3.1架构设计目标

软件架构设计要达到如下的目标:

3.1.1.可行性(Feasible)架构具有可行性是架构设计的基石。

3.1.2.可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。

3.1.3.安全性(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。

3.1.4.可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。

3.1.5.可扩展性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展。

3.1.6.可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费。

3.1.7.可升级性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。

3.1.8.客户体验(Customer Experience)。软件系统必须易于使用。软件的最终用户很可能是不具有计算机专业技术的人员。

3.2 系统架构设计

下面我们将根据架构设计原则和信息系统原理来建立系统的架构设计模型。将信息系统中比较关心的对象分层,可分为三层:用户界面层、业务层、数据访问层(如下图3-2所示),再把各层中的一些公共部分提出来:权限管理、异常处理,这样得到包图如图3-3所示:

7

哈尔滨德强商务学院毕业论文(设计) 用户界面层ASP.NET WEB FormsUser Interface ProcessingBisiness EntitiesBusiness Components业务逻辑层Enterprise ServicesDal Interface数据访问层SQL Server Dal Dal FactorySQL Server DAAB图3-2 系统体系架构图

用户界面业务逻辑数据访问权限管理异常处理

图3-3 火车票查询模块包图

3.2.1 用户界面包 用户界面包的职责是:

(1)与用户的交互,接收用户的各种输入以及输出各种提示信息或处理结果。 (2)对于输入的数据进行数据校验,过滤非法数据。 (3)向业务处理对象发送处理请求。 用户界面展开图如图3-4所示:

8

哈尔滨德强商务学院毕业论文(设计) 用户界面输入,输出数据效验发送业务处理请求 图3-4 用户界面展开图

用户界面含的类见图3-5:

用户界面类#输入输出元素#业务代理对象+数据效验()+业务处理()输入界面输出界面图3-5 用户界面类图

3.2.2 业务逻辑包 业务逻辑包的职责是:

(1)实现各种业务处理逻辑或处理算法。 (2)验证请求者的权限。

(3)向数据访问对象发送数据持久化操作的请求。 (4)向用户界面层返回处理结果。 业务逻辑包图展开如图3-6所示:

实现各种业务处理逻辑或处理算法。验证请求者的权限。向数据访问对象发送数据持久化操作的请求。向用户界面层返回处理结果。业务逻辑

图3-6 业务逻辑包展开图

业务逻辑包包含的类见图3-7:

业务代理类#权限管理对象#业务对象+业务处理()业务逻辑类#数据库连接对象#数据库访问对象+业务处理()

图3-7 业务逻辑类图

3.2.3 数据访问包 数据访问层的职责是:

9

哈尔滨德强商务学院毕业论文(设计) (1)实现数据的持久化操作。 (2)实现事务处理。

数据访问包图展开如图3-8所示:

实现数据的持久化操作。实现事务处理。数据访问图3-8 数据访问包图展开

数据访问包包含的类见图3-9:

数据库访问类#数据库连接对象+读取()+写入()数据库连接类+开始事务()+提交事务()+回滚事务()图3-9数据访问类图

对于每一个业务处理中需要持久化操作的对象都可以对应为一个数据库访问对象,在很多业务处理中需要请求多个数据库访问对象来进行数据的读写操作,而这些操作又必须在同一个事务中,这时需要用同一个数据库连接对象来进行统一的事务处理。这里的数据库连接类的创建用到了单件(Singleton)模式,保证一个类仅有一个实例,一个客户在同一时刻只能用一个数据库连接对象。 3.2.4 权限管理包 权限管理的主要职责是: (1)验证请求者的请求权限。 (2)提供请求者的权限列表。 权限管理包图展开如图3-10所示:

验证请求者的请求权限提供请求者的权限列表权限管理图3-10权限管理包图展开

权限管理包包含的类见图3-11:

操作员类权限管理类#操作员对象+验证权限(in 操作员代码, in 权限列表)+获取权限列表(in 操作员代码)-操作员代码-操作员名称-权限列表+登陆()+退出()+是否已构建权限列表()+构建权限列表()

图3-11权限管理类图

3.2.5 异常处理包

10

哈尔滨德强商务学院毕业论文(设计) 异常处理的职责:

(1)汇报运行时的详细异常信息。 (2)记录异常处理日志。

异常处理包图展开如图3-12所示:

汇报运行时的详细异常信息记录异常处理日志异常处理 图3-12异常处理包图展开

异常处理包包含的类见图3-13:

异常处理类#异常处理对象异常处理实现异常处理实现异常处理实现异常处理实现异常处理实现异常处理实现异常处理实现

图3-13异常处理类图

因为异常处理类型比较多,如:系统异常、数据库异常、业务逻辑异常等,针对不同类型的异常处理方式也容易变,如:显示错误,记录文本日志,记录数据库日志等,所以这里使用了桥接(Bridge)模式来实现,使各部分的变化比较独立。

3.3 系统架构类图

将包图展开,得到类图,它是架构的静态结构图,表达了各个类之间的静态联系。农业银行网上银行中的火车票查询模块系统架构类图如下图3-14所示。

11

哈尔滨德强商务学院毕业论文(设计) 丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地

2.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。

3.很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑Windows 2000的大型多处理器等多种平台使用。

4.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。 5.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。

4.4.3 系统网络架构设计

本系统采用B/S结构,系统网络架构图见图4-5。

路由器数据库服务器 Web服务器防火墙 交换机客户机 客户机客户机交换机 交换机图4-5系统网络架构图

支持软件安装情况如下表4-6所示。 服务器 客户机

(Table 4-6)

1.OS:Ms Windows 2003 Server

2.SQL Server 2000数据库管理软件

1. OS:Ms Windows xp Professional/ Ms

Windows 2000 Professional 2. Microsoft office 2003Adobe 6.0IE 5.0以上

17

哈尔滨德强商务学院毕业论文(设计) 5 编 码

5.1 概述开发工具及编程脚本

5.1.1 JSP技术

JSP是由Sun微系统公司于1999年6月推出的一项技术,是基于JavaServlet以及整个Java体系的Web开发技术,利用这一技术可以建立先进、安全和跨平台的动态网站。JSP技术在多个方面加速了动态Web页面的开发。

与微软公司的ASP技术相比,JSP具有如下优点:

(1) 开放的技术:JSP技术基于平台和服务器的相互独立,技术支持来自广泛的、专门的、各种工具包,有服务器的组件和数据库产品开发商提供。相比之下,ASP技术主要依赖MICROSOFT支持。

(2) 平台和服务器的独立性:JSP编写的代码可运行在任何符合JAVA语法结构的环境中。这样JSP就能够运行在多种WEB服务器上并支持来自多家开发商提供的各种工具包。

(3) 开放的开发过程,开放的源码:自1995年以来,SUN用开放过程方法同国际JAVA组织合作开发和修改JAVA技术和规范。

(4) JSP标记可扩充性:JSP技术能够为开发者扩展JSP标记,充分利用与XML兼容的标记技术强大的功能,大大减少对脚本语言的依赖。

(5)JSP跨平台的可重用性:JSP组件(EJB,JavaBean或定制的JSP标记)都是跨平台可重用的。

5.1.2 JavaBean技术

JSP作为一个很好的动态网站开发语言得到了越来越广泛的应用,在各类JSP应用程序中,JSP + JavaBean的组合成为了一种事实上最常见的JSP程序的标准. JavaBean是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。JavaBean通过Java虚拟机(Java Virtual Machine)可以得到正确的执行,具有平台无关性。

一个JavaBean有三个部分组成: 1) 属性(Property)

Bean的属性就是对象的属性,但提供了属性读取和设置的接口支持。例如一个时钟Bean可以有时区和镇铃属性,日历Bean可以有年份和月份属性。每个属性通常遵守简单的方法命名规则。这样可以很方便的找出Bean提供的属性,然后查询属性值或改变属性值,对Bean进行操作。

2) 方法(Method)

由于Bean本身是Java对象,调用这个对象的方法是与其交互作用的唯一途径。

18

哈尔滨德强商务学院毕业论文(设计) JavaBean严格遵守面向对象的类设计逻辑,不让外界访问其任何实例字段(没有Public字段)。这样,方法调用的是接触Bean的唯一途径。

3) 事件(Event)

Bean与其他软件组件交流信息的主要方式是发送和接收事件。这与对象之间通过消息通信类似。

JavaBean传统的应用在于可视化的领域,如AWT下的应用。自从JSP诞生后,JavaBean更多的应用在非可视化领域,在服务器端应用方面表现出来了越来越强的生命力。利用非可视化JavaBean, 来封装事务逻辑、数据库操作等等,可以很好地实现业务逻辑和前台程序(如JSP)的分离,使得系统具有更好的健壮性和灵活性。 5.1.3 JDBC技术

JDBC是Java的开发者——Sun的JavaSoft公司制定的Java数据库连接

JavaDataBaseConnectivity技术的简称,是为各种常用数据库提供无缝联接的技术。JDBC在Web和Internet应用程序中的作用和ODBC在Windows系列平台应用程序中的作用类似。JDBC有一个非常独特的动态连接结构,它使得系统模块化。使用JDBC来完成对数据库的访问包括以下四个主要组件:Java的应用程序、JDBC驱动器管理器、驱动器和数据源。简单地说,JDBC能完成下列三件事:

1)同一个数据库建立连接; 2)向数据库发送SQL语句; 3)处理数据库返回的结果。

JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface,应用程序设计接口)。它由一些Java语言写的类、界面组成。JDBC给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。

通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQLServer。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。不但如此,使用Java编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上编写不同的应用。Java和JDBC的结合可以让开发人员在开发数据库应用时真正实现“WriteOnce,RunEverywhere!”

Java具有健壮、安全、易用等特性,而且支持自动网上下载,是一种很好的与数据库线连接而使用的编程语言。它所需要的是Java应用如何同各种各样的数据库连接,JDBC正是实现这种连接的关键。

JDBC扩展了Java的能力,如使用Java和JDBCAPI就可以公布一个Web页,页中带有能访问远端数据库的Applet。或者企业可以通过JDBC让全部的职工(他们可以使用不

19

哈尔滨德强商务学院毕业论文(设计) 同的操作系统,如Windwos,Machintosh或UNIX)在Intranet上连接到几个全球数据库上,而这几个全球数据库可以是不相同的。 5.1.4 用JDBC访问数据库

所有的数据库的对象和方法都在java.sql.* 里面,所以首先要import java.sql.*,要想连接数据库,首先要将驱动程序调入。

Class.forName(\这是JDBC-ODBC 的驱动程序。 要想连接一个指定的数据库,必须创建Connection类的一个实例。 String url = \

Connection con = DriverManager.getConnection(url);

注意在此用到的数据库名称是在ODBC设置控制面板中输入的数据资源名。URL语法对于不同类型的数据库会很不一样。 语法是这样的: jdbc:subprotocol:subname 开头都是JDBC,后面是子协议,然后是ODBC名称。

若要使用纯JDBC驱动程序,必须安装第三方软件提供的驱动程序,一般在数据库的官方网站上可以找到这里不做讨论。

本系统采用JDBC-ODBC的驱动程序连接数据库,并使用JavaBean组件,有效的避免了代码的重复,具体过程如下:

package exam; import java.sql.*; public class ExamBean {

String strDBDriver=\ String strDBUrl=\ private Connection conn=null; private Statement stmt=null; ResultSet rs=null;

// public ExamBean() { try {

Class.forName(strDBDriver); }

//

catch(java.lang.ClassNotFoundException e){

System.err.println(\ } }

20

//JDBC-ODBC驱动程序

哈尔滨德强商务学院毕业论文(设计) // public ResultSet executeQuery(String sql){ rs=null; try{

conn=DriverManager.getConnection(strDBDriver); //创建数据库连接对象 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//支持数据回滚

rs=stmt.executeQuery(sql); }catch(SQLException ex){

System.err.println(\ } return rs; }

//

public void executeUpdate(String sql){ stmt=null; try{

conn=DriverManager.getConnection(strDBDriver); stmt=conn.createStatement(); stmt.executeUpdate(sql); stmt.close();

}catch(SQLException ex){

System.err.println(\ } }

// public void closeStmt(){ try{

stmt.close();

}catch(SQLException e){ e.printStackTrace(); } }

public void closeConn(){

21

本文来源:https://www.bwwdw.com/article/nxbw.html

Top