《基于JAVA的火车票售票系统毕业论文.doc》由会员分享,可在线阅读,更多相关《基于JAVA的火车票售票系统毕业论文.doc(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 届 别学 号 毕业设计(论文)基于JAVA的火车票售票系统姓 名 系 别、专 业导 师 、职 称 完 成 时 间 基于JAVA的火车票售票系统毕业论文目录摘要IABSTRACTII1 概述11.1 开发背景11.2 系统简介11.3 论文的组织结构22 开发技术简介22.1 JSP概述22.2 Java I/0系统简介22.3 Hibernate框架简介32.4 SQL Server 2000 简介42.5 Struts2框架与MVC简介43系统需求分析53.1 项目开发可行性分析53.2 功能需求53.3性能需求53.4功能描述结构图63.5运行需求73.5.1 硬件环境83.5.2 软件
2、环境84系统概要设计84.1系统架构84.2系统功能流程图94.3数据库设计94.3.1 数据库概念结构设计104.3.2 实体-联系图.104.3.3数据字典125系统的具体实现125.1 用户登入功能的实现125.2 主页面的实现145.3 管理员功能模块的实现.155.4 普通用户功能模块的实现.176系统测试186.1 系统首页186.2 用户登入功能测试196.3 管理员功能测试216.3 普通用户功能测试30结论37参考文献38致谢39附 录.4048 / 511 概述1.1 开发背景目前火车站售票的状况是仅靠手工操作,以现有的工作人员很难应付车票订购高峰时刻的大量数据处理问题。同
3、时还会出现由此带来的大量记录存放和管理所带来的问题。随着经济社会的进步与发展,现有的火车票售票模式已不能完全满足人们的出行要求。在这个互联网高速发达的时代,火车票的售买依然较为传统,除了订票,就是售票厅和代售点。如果利用好互联网这个高效的资源系统,人们购买火车票交更加高效和简洁,也将使每年都将出现的“售票难”问题得到缓解。在另外一个方面,在购票过程省去更多的人力和物力,火车票网上售票使乘客购票更加便捷,免去了在窗口彻夜排队的苦恼,同时也能减轻火车站与代售点在节假日期间的售票压力。如何设计出开发出功能强大,操作方便,安全性强,通用性好,适合我国国情的火车票网上售票系统,这就是我们急须解决的一个问
4、题。火车站市场的管理和规问题,是困扰我们多年的一个老问题,也是政府管理中的一个难点,售票是客运业务中的一个最基本的业务,表面上看,它只是火车站业务的一个简单的部分,但是它涉与到管理与客户服务等多方面,因此,过去传统的售票方式已经不能满足现代客运业务流量剧增的客观要求,这就要求一种全新的售票方式网上售票,来缓解售票高峰时期的客运压力,并为用户提供方便快捷的售票服务。本次系统设计便是利用开发工具JSP 和SQL Server 2000数据库共同开发的一个火车票售票系统,它能方便快捷地运用在火车站售票业务的营运之中。1.2 系统简介在本次系统的设计过程中,以JSP为开发工具,加入JAVA脚本语言,并
5、使用SQL进行数据处理,开发火车票网上售票系统,充分利用互联网的优越性,提供一个界面友好的网上售票平台。使用者能够得利最新的数据信息,从而更好的利用平台进行购买火车票的相应操作。在论文中将为大家介绍网络资源的好处,同时在本课题上将使用网络数据库,将售票系统的功能得到更大的发挥。本系统设计主要是根据售票业务的基本流程进行的,系统功能包括如下几个方面:查询:分为对车次信息的查询和客户对已订车票信息的查询售票:通过查询系统,客户根据自己的需求找到满意的车次,再输入个人信息后直接通过网上售票确定已预订选中的车票。退票:可退票,通过查询系统,客户可以根据自己的名字找到自己的售票信息,通过退票模块退去已购
6、车票。1.3 论文的组织结构系统是基于Java的火车票售票系统,论文的整体组织结构如下:1 第一小节概述火车票售票系统的开发背景和简介。2 第二小节介绍系统的开发技术。3 第三小节介绍系统的整体需求分析。4 第四小节介绍系统的概要设计。5 第五小节描述系统的具体实现。6 第六小节介绍系统的具体测试与结果。2 开发技术简介2.1 JSP概述JSP技术提供了一种简单快速的方法来创建显示动态生成容的Web页面。也就是在MVC中充当V(View)的角色。由业界处于领先地位的Sun公司制定了相关的JSP技术规,该规定义了如何在服务器和JSP页面间进行交互,还描述了页面的格式和语法。JSP页面使用XML标
7、签和scriptlets(一种使用Java语言编写的脚本代码),封装了生成页面容的逻辑。它将各种格式的标签(HTML或者XML)直接传递回响应页面。通过这种方式,JSP页面实现了页面逻辑与其设计和显示的分离。JSP技术是Java系列技术的一部分。JSP页面被编译成servlet,并可能调用JavaBeans组件(beans)或Enterprise JavaBean组件(企业beans),以便在服务端处理。因此,JSP技术在构建可升级的基于web的应用程 序时扮演了重要角色。 JSP页面并不局限于任何特定的平台或web服务器上。JSP规在业界有着广泛的适应性。JSP技术是行业协作的结果,它的设计
8、是开放的,符合行业标准的,并支持绝大多数的服务器、浏览器和相关工具。由于使用可重用的组件和标签取代了对页面本身脚本语言的严重依赖,JSP技术大大加快了开发的速度。所有JSP的实现均支持以Java编程语言为基础的脚本语言,它有与生俱来的可适应性,支持复杂的操作。2.2 Java I/O 系统简介对编程语言的设计者来说,创建一套好的输入输出(I/O)系统,是一项难度极高的任务。这一点可以从解决方案的数量之多上看出端倪。这个问题难就难在它要面对的可能性太多了。不仅是因为有那么多I/O的源和目地(文件,控制台,网络连接等等),而且还有很多方法(顺序的sequential,随机的random-SQLSe
9、rver2000,缓存的buffered,二进制的binary,字符方式的character,行的by lines,字的by words,等等)。 Java类库的设计者们用创建很多类的方法来解决这个问题。坦率地说Java I/O系统的类实在是太多了,以至于初看起来会把人吓着(但是,具有讽刺意味的是,这种设计实际上是限制了类的爆炸性增长)。此外,Java在1.0版之后又对其I/O类库作了重大的修改,原先是面向byte的,现在又补充了面向Unicode字符的类库。为了提高性能,完善功能,JDK 1.4又加了一个nio(意思是new I/O。这个名字会用上很多年)。这么以来,如果你想对Java的I/
10、O类库有个全面了解,并且做到运用自如,你就得先学习大量的类。此外,了解I/O类库的演化的历史也是相当重要的。可能你的第一反应是别拿什么历史来烦我了,告诉我怎么用就可以了!但问题是,如果你对这段历史一无所知,很快就会被一些有用或是没用的类给搞糊涂了。2.3 Hibernate框架简介会使用 Hibernate的开发人员都知道,在使用它实现ORM功能的时候,主要的文件有:映射类(*.java)、映射文件(*.hbm.xml)6以与数据库 配置文件(*.properties或*.cfg.xml),它们各自的作用如下。映射类:它的作用是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把
11、表中的记录映射成为该类的对象。映射文件:它的作用是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以与表字段和类属性名称的对应关 系等。数据库配置文件:它的作用是指定与数据库连接时需要的连接信息,比如连接哪中数据库、登录用户名、登录密码以与连接字符串等。 在这三种主要的文件中,映射类为普通Java源文件、映射文件为XML格式、数据库配置文件为Properties格式或者是XML格式。想理解“映射” 首先SQL Server 2000需要知道如何解析这三种文件,即解析XML格式文件、解析Properties格式文件和解析Java类文件。2.4 SQL
12、Server 2000 简介SQL Server 2000 是 Microsoft公司推出的关系型网络数据库管理系统,它的工作环境可以是Windows NT(Server 或 Workstation)、Windows XP 和 Windows 2000等。SQL Server 2000与 Microsoft公司的其他软件,如 Microsoft Office 或 Microsoft Visual Studio,设计风格一致,并能相互配合。SQL Server 2000支持多层客户机/服务器结构,具有完善的分布式数据库和数据仓库功能,能够进行分布式事务处理和联机分析处理。SQL Server 2
13、000具有强大的数据库管理功能,它提供一套功能完善且具备可视界面的管理工具。SQL Server 2000还具有强大的网络功能,它与Internet高度集成,能够轻易地将Web应用程序与企业营运应用程序集成在一起。SQL Server 2000还支持ANSI SQL(标准SQL),并将标准SQL扩展成为更加实用的Transact-SQL。2.5 Struts2框架与MVC简介 Struts 是第一个真正意义上按照MVC架构模式搭建Web开发框架,是以WebWork优秀的设计思想为核心,吸收了Struts1的部分优点,建立了一个兼容WebWork和Struts1的MVC框架。Strunts 2的
14、目标是希望原来使用Struts1和WebWork的开发人员都可以平稳地过渡到Struts 2。Struts 2的控制组件是Struts 2的核心,事实上所有MVC框架的核心都是控制器组件。Struts 2的控制器由两部分组成:FilterDispatcher和业务控制器Action。其工作流程图如下:MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。Struts2有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts
15、可以很容易的与数据访问技术相结合,包括E,JDBC和Object Relation Bridge5。在视图层,Struts2能够与JSP, Velocity Templates,XSL等等这些表示层组件相结合。3系统需求分析需求分析是介于系统分析和软件设计阶段之间的重要桥梁。良好的需求分析有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。3.1 项目开发可行性分析经济可行性:开发该系统所需的相关资料可以通过已存在的网上售票系统进行调查采集,所需的其他应用软件、硬件系统也易于获得.因此,开发成本较低。而引进使用本系统后,与传统方式相比,具有高效率、低成本、高质量的特点
16、,可以节省不少人力、物力与财力。所以,从经济的角度来看,该系统可行。技术可行性:开发工具:JSP 数据库环境:SQL Server 2000 系统环境:Microsoft Windows 2000或以上版本。系统实现依靠相对熟悉的JSP语言和SQL Server2000数据库系统,其基本操作实质还是对数据库进行添加、删除、查找等操作,暂不存在技术问题。操作可行性:系统采用菜单式,实现用户与数据库的交互,界面简洁友好,操作方便。用户只需对售票流程和业务调查了解即可,不需掌握数据库等相关知识。综上所述,此系统开发目标已明确,在技术和经济,操作三方面都可行,并且投入少、见效快。因此系统的开发是完全可
17、行的。3.2 功能需求 本网上售票系统应该具备如下功能:1.查询分为对车次信息的查询和客户对已订车票信息的查询。要求:1) 对车次的查询,可以按照发车车次进行查询; 2)车次信息包括:车号、出发地、目的地、发车日期、开出时刻、票价。3)座位类型设定。4)车次信息只允许用户查询,不能修改。2.售票通过查询系统,客户根据自己的需求找到满意的车次,再输入个人信息后直接通过网上售票确定已预订选中的车票。要求:售票记录应包括:会员名、车号、发车日期、订购日期、订购票数、总价。3.退票可退票,通过查询系统,客户可以根据自己的名字找到自己的售票信息,通过退票模块退去已购车票。3.3 性能需求为了保证系统能够
18、长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的性能需求。1.准确性和与时性系统处理的准确性和与时性是系统的必要性能。系统应能与时而且准确的根据用户权限与所输入的信息做出响应。由于本系统的查询功能对于整个系统的功能和性能完成举足轻重。作为系统的很多数据来源,而车票的数量和时间又影响用户的决策活动,其准确性和与时性很大程度上决定了系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性和与时性。2.易用性本系统是直接面对用户的,而用户往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界
19、面,从而保证系统的易用性。3.安全性网上售票系统中涉与到的数据是客运公司相当重要的信息,系统要保证用户的权限,对于车次等信息用户只享有查询服务,不得更改;系统还要提供方便的手段供系统维护人员进行数据备份、日常安全管理、以与系统意外崩溃时数据的恢复等工作。同时系统还要保证对数据库进行与时更新,保证数据一致性。3.4 整体功能结构图本火车票售票系统可划分为信息查询、网上售票、退票三个部分。其XX息查询又可分为车次查询和订票信息查询两个部分。其结构图如图3.4所示。NYYYNY开始主界面NY选择订票窗口选择查询窗口查询界面订票订票界面选择退票窗口YN退票退票界面退出N查询车次信息订票查询订票信息退票
20、完毕登录框登录,确定访问权限图3.4 火车票售票系统的功能结构图3.5运行需求3.5.1 硬件环境存:1G以上 硬盘:80G以上3.5.2 软件环境运行环境: WindowsXP、Windows2000、Windows7等开发工具: MyEclipse7.0数据库: SQL Server 2000Web服务器: tomcat-6.0.20浏览器:IE6.0 ,IE7.0或Mozilla Firefox4 系统概要设计4.1 系统架构系统依据MVC模式可分为视图层、控制层、模型层。从程序分布位置角度,系统依次分布在浏览器、应用服务器、数据库系统三层,如图4-1所示。图4-1 系统结构图4.2 系
21、统功能流程图用户登录类型选择登入本系统共有管理员、普通用户两种用户,根据其功能需求,它们相关的操作流程图如图4-2所示:用户 否 成功管理员设置修改密码车次信息管理增加车次信息订票管理会员管理售票情况统计管理员界面返 回 首 页修 改 密 码修 改 详 细 资 料我 的 预 订普通用户界面图4-2 系统功能流程图4.3 数据库设计4.3.1 数据库概念结构设计概念结构的设计是将系统需求分析得到的用户需求抽象为信息结构过程。概念结构设计的结果是数据库的概念模型。只有将系统应用需求为信息世界的结构,才能转化为机器翻译世界中的数据模型,并用DBMS9实现这些需求。概念结构即概念模型,它使用的数据库实
22、体对象与实体E-R图进行描述。1. 概念结构的特点概念结构独立于数据库逻辑结构和支持数据库的DBMS,其主要特点是:1) 概念模型是对现实世界的一个真实模型,能真实、充分反映现实世界,能满足用户对数据的处理需求。2) 概念模型应当易于理解,被用户理解后,才可以与设计者交换意见,参与数据库的设计。3) 概念模型就易于修改,由于现实世界会发生变化,这就需要改变概念模型,易于更改的概念模型有利于修改和扩充。4) 概念模型就易于向数据模型转换,尤其是有利于向特定的数据模型转换。2. 概念结构的设计按照自顶向下分析需求与自底向上设计概念结构方法,概念结构的设计可分为两步:第一步是抽象数据并设计局部视图;
23、第二步是集成局部视图,得到全局的概念结构。4.3.2 实体联系图用户的需求具体表达在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。针对火车票售票系统,通过对网上售票工作的过程、容以与数据流程分析,设计如下所示的数据项和数据结构:1.车次信息包括:车号、出发地、目的地、发车日期、开出时刻、剩余座位数、票价。2.订票记录包括:订单号、号、车号、订购日期、订购票数、总价。3.用户信息包括:用户名、号、性别、。E-R图如图4.3.2所示。nnn11m查询退票订票订单号#号车号订购日期总价发车日期订票信息用 户用户名#号性别 车次车次 出发地目的地发车日期开出时刻坐
24、位数票价订购票数图4.3.2系统实体-联系图(E-R图)4.3.3 数据字典数据库在系统中占有与其重要的地位,数据库结构设计的好坏关系到系统的运行效率、存储数据的效率、系统的复杂程度等,合理的数据库结构设计可以提高系统性能。依据上述E-R图本火车票售票系统数据库中各个表格的设计结果如表1表3所示。每个表格表示在数据库中的一个表。表1 车次信息表BusInfo字段名数据类型与长度约束条件说明BusIDchar(10)NOT NULL UNIQUE车号(主键)BusFromvarchar(50)NOT NULL出发地BusTovarchar(50)NOT NULL目的地BusDateDatetim
25、eNOT NULL发车日期(主键)BusBeginDatetimeNOT NULL开出时刻BusEndDatetimeNOT NULL到达时刻TicketNumintNOT NULL剩余票数PriceMoneyNOT NULL票价表2 订单表OrderInfo字段名数据类型与长度约束条件说明OrderIDChar(10)NOT NULL UNIQUE订单号(主键)UserIDChar(18)NOT NULL号(外键)BusIDchar(10)NOT NULL车号(外键)BusDatedatetimeNOT NULL发车日期(外键)OrderDatedatetimeNOT NULL订购日期Ord
26、erNumIntNOT NULL订购票数TotalMoneyNOT NULL总价表3 用户表User字段名数据类型与长度约束条件说明UserIDchar(18)NOT NULL UNIQUE号(主键)Uservarchar(50)NOT NULL用户名SexChar(2)性别Phonevarchar(12)5系统的具体实现本系统主要主要采用了Hibernate和Struts技术,其中Hibernate作为数据库访问层,可以通过少量的代码即可高效的访问数据库信息。本系统采用了MVC经典的WEB开发模式,其中Struts是起着控制器的角色,Hibernate在模型层中发挥了不少的作用,JSP结合静
27、态页面技术作为视图的角色。三者有力的结合,是本系统的一大特色。5.1用户登入功能的实现系统登录分为会员用户登录和后台管理员登录。只有在登录成功后,用户才可以进行相应权限的操作。登录界面采用JSP动态页面技术和静态页面技术相结合,其核心代码如下:function checklogin() if (document.form1.username.value.replace(/s+$|s+/g,).length=0) alert(请输入您的用户名!);document.form1.username.focus();else if (document.form1.password.value.repl
28、ace(/s+$|s+/g,).length=0) alert(请输入您的密码!);document.form1.password.focus();else if(document.form1.checkcode.value.replace(/s+$|s+/g,).length=0) alert(请输入验证码!);document.form1.checkcode.focus(); else if (document.form1.checkcode.value != document.form1.yzm.value) alert(验证码错误!);document.form1.checkcode.
29、focus();else form1.submit();%String message = (String)request.getAttribute(message);if(message = null)message = ;if (!message.trim().equals()out.println();out.println(alert(+message+););out.println();request.removeAttribute(message);String yzm=code.getCheckCode();% 登陆成功将转到系统主页,失败则跳转到登陆页面。5.2 主页面的实现用
30、户登录到系统之后,既可对火车票的售票,查询,退票等功能模块进行相应的操作。主页面的实现主要采用了静态标签frameset和frame技术来实现,整体的布局是上面整体是一个框架(frameset)。 部分框架代码如下: 序号车辆路线车次开车时间到站时间坐位类型票价预定 %List list2=tb.getAllTrain();if(list3.size()!=0)for(int i = 0; i a href=Job.shtml?method=prepTrain&id=预定 5.3管理员功能模块的实现管理员用户登入到系统后,即可对自身信息进行相应的设置,并进行车次信息管理,增加车次信息,订票管理
31、,会员管理,售票情况统计等功能进行操作。主要相关功能有:1) 管理员设置:可以依据自身权限和系统需要增加一定数量的管理员。2) 修改密码:修改当前管理员的密码。3) 车次信息管理:选定一条已经存在的车次信息进行修改和删除。4) 增加车次信息:给系统增加一条最新的车次信息。5) 订票管理:对系统已订好的车票进行管理,可以删除已订车票信息。6) 会员管理:管理系统已经注册的会员,并可删除相应的会员。7) 售票情况统计:显示所有售票信息,并可对售票情况进行统计和打印。主要页面有: login.jsp:管理员登录信息确认,并提供验证; my.jsp:查看管理员信息; default.jsp:管理已注册
32、会员; info.jsp:修改管理员个人信息; editpwd.jsp:管理密码修改,提示管理员进行密码确认; upprep.jsp:返回上一步操作; editTrain.jsp:增加车次信息,车票信息,时间信息; edit.jsp:用户售票作息汇总; userSale.jsp:显示用户已购买的火车票信息;显示页面的技术还是JSP加静态页面技术,并引入一个action,对管理员的登录进行操作与控制(详见附录1),原代码核心如下:public void doPost( ServletRequest request, ServletResponse response)throws ServletE
33、xception, IOException response.setContentType(Constant.CONTENTTYPE);request.setCharacterEncoding(Constant.CHARACTERENCODING);tryString method=request.getParameter(method).trim();AdminBean loginbean = new AdminBean(); Session session = request.getSession();session.setMaxInactiveInterval(1200);SystemB
34、ean systembean = new SystemBean();String sysdir = systembean.getDir();if(method.equals(one)/admin登录String username = request.getParameter(username);String password = request.getParameter(password);if(username = null|username.trim().equals()request.setAttribute(message, 请正确输入用户名!);request.getRequestD
35、ispatcher(sysdir+/login.jsp).forward(request, response);else if(password = null|password.trim().equals()request.setAttribute(message, 请输入密码!);request.getRequestDispatcher(sysdir+/login.jsp).forward(request, response);elseString agent = request.getHeader(user-agent); StringTokenizer st = new StringTo
36、kenizer(agent,;); String useros=st.nextToken();String loginip = request.getRemoteAddr();int flag = loginbean.adminLogin(username, password,useros,loginip);switch (flag)case Constant.SUCCESS:List list = loginbean.getAdminInfo(username);session.setAttribute(user, username);session.setAttribute(list, l
37、ist);request.getRequestDispatcher(sysdir+/).forward(request, response);break;case Constant.NAME_ERROR:request.setAttribute(message, 用户名错误!请确认管理权限!);request.getRequestDispatcher(sysdir+/login.jsp).forward(request, response);break;case Constant.PASSWORD_ERROR:request.setAttribute(message, 密码错误,请确认管理权限
38、!);request.getRequestDispatcher(sysdir+/login.jsp).forward(request, response);break;5.4 普通用户功能模块的实现普通用户在登录到系统之前,应当要进行注册。只有经过了系统确认的注册会员才可以正确的登录到系统,并进行相应的操作。会员登录后的基本操作包括:修改密码,修改个人信息,查看会员已预订的车票信息,订票,退票等。主要相关功能有:1) 修改密码:普通用户登录到系统之后,可对初始密码进行修改。2) 修改个人信息:普通用户可对初始填写错误的个人信息进行修改。3) 我的预订:查看当前用户已经订好的车票。4) 订票:在
39、查看系统火车票信息后,用户可根据自身需要订票。5) 退票:将已经买好的火车票退还到系统。主要页面有:showInfo.jsp:显示用户个人信息;index.jsp:提示用户售票信息,提供相应可操作的跳转;serchInfo.jsp:查询售票信息,并执行相应售票操作;userSale.jsp:显示用户已购买的火车票信息; delBuy.jsp:用户退票;help.jsp:提醒用户是否确认退票,并帮助用户完成退票;error.jsp:出错提示页面;实现技术基本与管理员操作相似,但在修改个人信息中为方便用户进行日期的修改,增加了一个显示用户生日的日期操作,该操作使用JS来完成,核心代码如下:if (calendar.dateControl != null & calendar.dateControl.value = new Date(calendar.date.getFullYear(), calendar.date.getMonth(),