资源描述
(完整word版)网上订票系统
网上订票系统
摘 要
随着我国铁路交通的不断发展,简单的窗口售票模式已经不能满足方便人们出行的目的。采用先进的网络技术开发出方便快捷的网上订票系统是现代客运业务发展的必然需求。本次设计的火车票网上订票系统通过访问主页,可以实现个人信息注册、车次车票价格查询、在线订票退票等基本功能,为用户提供方便快捷的订票服务。
本毕业设计的内容是设计并且实现一个基于web技术的网上订票网站,故而系统主要以j2EE作为开发基础,主要使用了struts2+spring+hibernate等多种框架的结合使用,用myeclipse作为开发工具,以SQL作为数据库,使用JAVA语言开发,页面采取JSP动态页面开发技术。该系统界面简单、操作方便,容易维护。
关键词:网上订票网站 ,S.S.H(Struts ,Hibernate ,Spring),JAVA , JSP
Online booking system
Abstract
With the continuous development of China's railway transportation, simple window ticketing mode cannot satisfy the convenient for people to travel to. The use of advanced network technology to develop the online booking system convenient is the inevitable requirement of modern passenger business development. The online train tickets booking system design through the home page, you can realize the basic functions of the personal information registration, the train ticket price query, online booking, refund, provide convenient booking service for users.
本毕业设计的内容是设计并且实现一个基于web技术的网上订票网站,故而系统主要以j2EE作为开发基础,主要使用了struts2+spring+hibernate等多种框架的结合使用,用myeclipse作为开发工具,以MYSQL作为数据库,以Macromedia公司的Dreamweaver作为界面美化工具,使用JAVA语言开发,页面采取JSP动态页面开发技术。该系统界面简单、操作方便,容易维护。
The contents of this graduation project is to design and implement an online booking website based on Web technology, this system mainly uses j2EE as the basis of development, the main use of the combined use of struts2+spring+hibernate and other frameworks, MyEclipse as a development tool, SQL as the database, using Macromedia's Dreamweaver as the interface landscaping tools, the use of JAVA language development take, page development technology of JSP dynamic pages. The system has a simple interface, easy operation, easy maintenance.
Keywords: Online booking site ,Struts2 ,Hibernate ,Spring ,JAVA ,JSP
目录
摘 要 II
ABSTRACT III
1 绪 论 1
1 绪论 1
2 系统的开发环境及技术简介 1
2.1 系统开发环境 1
2.1.1 MyEclipse 1
2.1.2 数据库简介 2
2.1.3 Tomcat 2
2.2系统开发的思想与技术 3
2.2.1JSP技术与MVC模式以及系统的基本框架 3
2.2.2 S.S.H框架的优点 3
3 系统总体设计 6
3.1 总体功能模块 6
3.2用户的功能模块 7
3.3 系统业务描述 8
3.4 程序流程图 8
4系统详细设计与实现 10
4.1系统和数据库的配置 10
4.2概念模型设计 11
4.3数据库逻辑模型 11
4.4数据库表结构 11
4.5平台数据表的设计 13
5系统功能实现 19
5.1程序的类图 19
5.1.1订单Order类图 19
5.1.2公告Gonggao类图 20
5.1.3类型Leixing类图 21
5.1.4票价Piaojia类图 22
5.1.5时间Shijian类图 23
5.1.6线路Xianlu类图 24
5.1.7用户User类图 25
5.2程序的时序图 27
5.2.1 公告模块时序图 27
5.2.2 类型模块时序图 28
5.2.3 票价模块时序图 29
5.2.4 线路模块时序图 30
5.2.5 用户模块时序图 31
5.3系统功能实现的主要框架 31
5.3.1 SSH框架 31
5.3.2 hibernate配置文件 31
5.3.3 struts配置文件 33
5.3.4 spring配置文件 34
5.4系统功能实现的主要模块 35
5.4.1 登陆页面 35
5.4.2 用户注册页面 37
5.4.3 网站主页面 38
6系统的调试与测试 40
6.1软件测试的目的 40
6.2软件测试的任务 40
6.3测试环境 40
6.4测试环境的配置 41
6.4.1 创建安装项目 41
6.4.2 添加项目输出 42
6.4.3 运行项目 44
参考文献 45
致 谢 46
58
1 绪 论
1 绪论
火车站市场的管理和规范问题,是困扰我们多年的一个老问题,订票是客运业务中的一个最基本的业务,表面上看,它只是火车站业务的一个简单的部分,但是它涉及到管理与客户服务等多方面,因此,过去传统的售票方式已经不能满足现代客运业务流量剧增的客观要求,这就要求一种全新的订票方式——网上订票,来缓解订票高峰时期的客运压力,并为用户提供方便快捷的订票服务。
2 系统的开发环境及技术简介
2.1 系统开发环境
2.1.1 MyEclipse
在开发本平台中所用到的开发工具就是是知名的java项目开发工具MyEclipse。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的一种扩展,利用MyEclipse,我们可以在数据库和J2EE的开发、发布,以及在应用程序服务器的整合当中极大地提高系统的工作效率。MyEclipse是一个功能非常丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。
在结构上,MyEclipse的特征可以被分为7类: J2EE模型,WEB开发工具,EJB开发工具,应用程序服务器的连接器,J2EE项目部署服务,数据库服务,MyEclipse整合帮助。
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。
2.1.2 数据库简介
数据库使用的是SQL开源数据库。
SQL的特性:使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性 。支持AIX、FreeBSD、HP-UX、Mac OS、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统 。为多种编程语言提供API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。支持多线程充分利用CPU资源。优化的SQL查询算法,有效地提高查询速度。既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。提供TCP/IP、ODBC和JDBC等多种数据库连接途径。提供用于管理、检查、优化数据库操作的管理工具。可以处理拥有上千万条记录的大型数据库。
SQL的应用:与其他的大型数据库例如Oracle、DB2、MYSQL Server等相比,SQL自有它的不足之处,如规模小、功能有限(SQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,SQL提供的功能已经绰绰有余,而且由于SQL是开放源码软件,因此可以大大降低总体成本。
2.1.3 Tomcat
Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
2.2系统开发的思想与技术
2.2.1JSP技术与MVC模式以及系统的基本框架
本系统采用jsp技术,基于MVC模式开发,使用SSH框架(struts2、spring、hibernate)来增加系统的开发速度。所谓的MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。程序就是用struts2和hibernate这两个框架来实现模型层和控制器这两层,jsp实现视图这一层。一般来说程序就是在数据库和页面之间起桥梁作用的,jsp页面请求先到action,再到dao,再回到action,回到jsp页面,action主要处理来自页面的请求,dao主要是和数据库的交互,struts2主要用在action,处理来自页面的请求,处理完请求后跳转回页面。Hibernate主要用在dao,包括对数据库的增、删、改、查的操作,spring控制程序的流程。
2.2.2 S.S.H框架的优点
S.S.H框架是J2EE应用中struts2+spring+hibernate三大免费开源框架的结合使用, 它可以看成工具,也是中间件。他是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。他们里面有很多优秀的设计理念及模式应用。比如,struts属于MVC框架,关键是要了解MVC的概念及大致原理;而hibernate属于ORM系统,属于持久层的解决方案,同样需要对ORM的概念及原理有一个总体的了解。而spring属于应用程序框架,其核心是IOC容器以及AOP,Spring中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等,
它由以下3个框架构成:
1.Struts2框架
Struts2是Apache组织的一个开放源码项目。Struts2是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Custom tag library。其基本构成如图2.1所示。
图2.1 Struts框架工作流程
2.Spring框架
Spring 的核心是个轻量级(Lightweight)的容器(Container),它是实现IoC(Inversion of Control)容器、非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVC Web 框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装,是一个全方位的应用程序框架(Application framework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate 等),Spring 也提供了与它们相整合的方案。
Spring框架由以下7个部分组成
图2.2 Spring框架构成
3.Hibernate框架
Hibernate 是一个开放源码的 ORM 持久层框架。作为优秀的持久层框架实现,Hibernate 框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发。简单的说,Hibernate 只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作。
图2.3 Hibernate框架
3 系统总体设计
3.1 总体功能模块
本程序主要分系统管理员和用户两个权限。总功能图如图3-1所示。
图3-1.系统功能需求分析
3.2用户的功能模块
用户主要功能有注册登录功能、查询班次、订票管理、订单管理、查看公告。
用户的功能图如图3-3所示
图3-3.用户的功能图
3.3系统业务描述
本程序主要分系统管理员和用户两个权限。系统管理员的主要功能有常规管理(包括类型管理,线路管理)、经营管理(包括票数管理,订单管理)、注册用户管理、公告管理;用户主要功能有注册登录功能、查询班次、订票管理、订单管理、查看公告。
用例图如下:
图3-4
3.4 程序流程图
用户订票流程图
用户注册流程图
用户登录流程图
4系统详细设计与实现
4.1系统和数据库的配置
系统按通用的B/S(浏览器、服务器)模式进行设计(如图4-1)
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
4.2概念模型设计
概念模型设计的典型方法是用E-R图方法,即用实体-联系模型表示。E-R方法是用E-R图来描述显示世界,E-R图包含三个基本成分:实体、联系、属性。它直观易懂,能够比较准确地反映现实世界的信息联系,从概念上表示一个数据库的信息组织情况。
本系统E-R图如下
4.3数据库逻辑模型
出发时间表(主键、排序、时间、是否删除标志、站点、关联的线路ID)
订单表(主键、下单时间、票价、订单号、手机、身份证、购买数量、订单状态、真实姓名、总价、关联的票价ID、关联的用户ID)
公告表(主键、标题、内容、添加时间、是否删除标志)
类型表(主键、是否删除标志、类型名称)
票价表(主键、出发时间、到站时间、单价、到达站点、排序、是否删除标志、时间格式、关联的路线ID )
路线表(主键、班次、可购买数量、起点站、途径、是否删除标志、终点站、座位数、关联的类型ID)
用户表(主键、注册时间、联系方式、密码、用户权限、真实姓名、是否删除标志、用户名)
4.4数据库表结构
1、 出发时间表
名称
类型
空
备注
id
int(11)
no
主键
paixu
int(11)
no
排序
shijian
varchar(255)
yes
时间
shijianlock
int(11)
no
是否删除标志
zhandian
varchar(255)
yes
站点
xianliid
int(11)
no
关联的线路ID
2、 订单表
名称
类型
空
备注
id
int(11)
no
主键
createtime
datetime
yes
下单时间
dianjia
double
yes
票价
orderid
varchar(255)
yes
订单号
phone
varchar(255)
yes
手机
sfz
varchar(255)
yes
身份证
shuliang
int(11)
no
购买数量
status
varchar(255)
yes
订单状态
truename
varchar(255)
yes
真实姓名
zongjia
double
yes
总价
piaojiaid
int(11)
yes
关联的票价ID
userid
int(11)
yes
关联的用户ID
3、 公告表
名称
类型
空
备注
id
int(11)
no
主键
biaoti
varchar(255)
yes
标题
content
varchar(255)
yes
内容
createtime
datetime
yes
添加时间
gonggaolock
int(11)
no
是否删除标志
4、 类型表
名称
类型
空
备注
id
int(11)
no
主键
leixinglock
int(11)
no
是否删除标志
name
varchar(255)
yes
类型名称
5、 票价表
名称
类型
空
备注
id
int(11)
no
主键
chudashijian
varchar(255)
yes
出发时间
daozhanshijian
varchar(255)
yes
到站时间
jiage
varchar(255)
yes
单价
jieshuzhan
varchar(255)
yes
到达站点
kaishizhan
varchar(255)
yes
出发站点
paixu
int(11)
no
排序
piaojialock
int(11)
no
是否删除标志
t1
varchar(255)
yes
时间格式
xianluid
int(11)
yes
关联的路线ID
6、 路线表
名称
类型
空
备注
id
int(11)
no
主键
banci
varchar(255)
yes
班次
goumaishuliang
int(11)
no
可购买数量
qidianzhan
varchar(255)
yes
起点站
tujing
varchar(255)
yes
途径
xianlulock
int(11)
no
是否删除标志
zhuangdianzhan
varchar(255)
yes
终点站
zuowei
int(11)
no
座位数
leixingid
varchar(255)
yes
关联的类型ID
7、 用户表
名称
类型
空
备注
id
int(11)
no
主键
createtime
datetime
yes
注册时间
lianxifangshi
varchar(255)
yes
联系方式
password
varchar(255)
yes
密码
role
int(11)
no
用户权限
truename
varchar(255)
yes
真实姓名
userlock
int(11)
no
是否删除标志
username
varchar(255)
yes
用户名
4.5平台数据表的设计
根据平台的需求分析和功能模块的划分,定义数据库主要包含7,张表:出发时间表t_shijian,订单表t_order,公告表t_gonggao,类型表t_leixing票价表t_piaojia,线路表t_xianlu,用户表t_user。
出发时间表t_shijian
建表的sql语句为:
CREATE TABLE `t_shijian` (
`id` int(11) NOT NULL auto_increment,
`paixu` int(11) NOT NULL,
`shijian` varchar(255) default NULL,
`shijianlock` int(11) NOT NULL,
`zhandian` varchar(255) default NULL,
`xianluid` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `FK99A89375CAC38117` (`xianluid`),
CONSTRAINT `FK99A89375CAC38117` FOREIGN KEY (`xianluid`) REFERENCES `t_xianlu` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
订单表t_order
建表的sql语句为:
CREATE TABLE `t_order` (
`id` int(11) NOT NULL auto_increment,
`createtime` datetime default NULL,
`danjia` double NOT NULL,
`orderid` varchar(255) default NULL,
`phone` varchar(255) default NULL,
`sfz` varchar(255) default NULL,
`shuliang` int(11) NOT NULL,
`status` varchar(255) default NULL,
`truename` varchar(255) default NULL,
`zongjia` double NOT NULL,
`piaojiaid` int(11) default NULL,
`userid` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `FKA0C0C3C345EAD3A3` (`piaojiaid`),
KEY `FKA0C0C3C314AF715F` (`userid`),
CONSTRAINT `FKA0C0C3C314AF715F` FOREIGN KEY (`userid`) REFERENCES `t_user` (`id`),
CONSTRAINT `FKA0C0C3C345EAD3A3` FOREIGN KEY (`piaojiaid`) REFERENCES `t_piaojia` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
公告表t_gonggao
建表的sql语句为:
CREATE TABLE `t_gonggao` (
`id` int(11) NOT NULL auto_increment,
`biaoti` varchar(255) default NULL,
`content` varchar(255) default NULL,
`createtime` datetime default NULL,
`gonggaolock` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
类型表t_leixing
建表的sql语句为:
CREATE TABLE `t_leixing` (
`id` int(11) NOT NULL auto_increment,
`leixinglock` int(11) NOT NULL,
`name` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
票价表t_piaojia
建表的sql语句为:
CREATE TABLE `t_piaojia` (
`id` int(11) NOT NULL auto_increment,
`chufashijian` varchar(255) default NULL,
`daozhanshijian` varchar(255) default NULL,
`jiage` varchar(255) default NULL,
`jieshuzhan` varchar(255) default NULL,
`kaishizhan` varchar(255) default NULL,
`paixu` int(11) NOT NULL,
`piaojialock` int(11) NOT NULL,
`t1` varchar(255) default NULL,
`xianluid` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `FKFC3C48D0CAC38117` (`xianluid`),
CONSTRAINT `FKFC3C48D0CAC38117` FOREIGN KEY (`xianluid`) REFERENCES `t_xianlu` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
线路表t_xianlu
建表的sql语句为:
CREATE TABLE `t_xianlu` (
`id` int(11) NOT NULL auto_increment,
`banci` varchar(255) default NULL,
`goumaishuliang` int(11) NOT NULL,
`qidianzhan` varchar(255) default NULL,
`tujing` varchar(255) default NULL,
`xianlulock` int(11) NOT NULL,
`zhongdianzhan` varchar(255) default NULL,
`zuowei` int(11) NOT NULL,
`leixingid` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `FK4F982F3231DEA161` (`leixingid`),
CONSTRAINT `FK4F982F3231DEA161` FOREIGN KEY (`leixingid`) REFERENCES `t_leixing` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
用户表t_user
建表的sql语句为:
CREATE TABLE `t_user` (
`id` int(11) NOT NULL auto_increment,
`createtime` datetime default NULL,
`lianxifangshi` varchar(255) default NULL,
`password` varchar(255) default NULL,
`role` int(11) NOT NULL,
`truename` varchar(255) default NULL,
`userlock` int(11) NOT NULL,
`username` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5系统功能实现
5.1程序的类图
5.1.1订单Order类图
对应的程序代码:
public class Order {
@Id
@GeneratedValue
private int id;
private String orderid;//订单号
private Date createtime;//时间
@ManyToOne
@JoinColumn(name="userid")
private User user;//用户
private String truename;//真实姓名
private String sfz;//身份证号码
private String phone;//手机
private int shuliang;//购买数量
private double danjia;//单价
private double zongjia;//总价
private String status;//订单状态
@ManyToOne
@JoinColumn(name="piaojiaid")
private Piaojia piaojia;
5.1.2公告Gonggao类图
对应的程序代码:
public class Gonggao {
@Id
@GeneratedValue
private int id;
private String biaoti;
private String content;
private int gonggaolock;
private Date createtime;
5.1.3类型Leixing类图
对应的程序代码:
public class Leixing {
@Id
@GeneratedValue
private int id;
private String name;
private int leixinglock;
5.1.4票价Piaojia类图
对应的代码:
public class Piaojia {
@Id
@GeneratedValue
private int id;
private int piaojialock;
private String jiage;//价格
private String kaishizhan;//开始站点
private String jieshuzhan;//结束站点
private int paixu;
@ManyToOne
@JoinColumn(name="xianluid")
private Xianlu xianlu;
private String chufashijian;//出发时间
private String daozhanshijian;//到站时间
5.1.5时间Shijian类图
对应的代码:
public class Shijian {
@Id
@GeneratedValue
private int id;
private int shijianlock;
private String shijian;//到站时间
private String zhandian;//站点名称
private int paixu;
@ManyToOne
@JoinColumn(name="xianluid")
private Xianlu xianlu;
5.1.6线路Xianlu类图
对应的代码:
public class Xianlu {
@Id
@GeneratedValue
private int id;
private int xianlulock;
private String banci;//班次
@ManyToOne
@JoinColumn(name="leixingid")
private Leixing leixing;
private String qidianzhan;//起点站
private String zhongdianzhan;//终点站
private int zuowei;//票数
private String tujing;//途径
private int goumaishuliang;//购买数量
5.1.7用户User类图
对应的代码:
public class User {
@Id
@GeneratedValue
p
展开阅读全文