Struts航空订票系统课程设计报告.docx
- 文档编号:25725558
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:30
- 大小:327.42KB
Struts航空订票系统课程设计报告.docx
《Struts航空订票系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《Struts航空订票系统课程设计报告.docx(30页珍藏版)》请在冰豆网上搜索。
Struts航空订票系统课程设计报告
摘要
随着社会发展的不断进步,民航事业的壮大,人均消费水平的提高,航空运输业现在已经成为我国运输事业的重要方式之一。
但由于航空运输的特殊性。
很容易受到天气和人为因素的影响。
从而给旅客及时获取航班信息。
及时准确的预定机票和退订机票带来了极大的不便。
针对以上的问题,可以通过建立一套完善的航空公司订票系统,来公布航班信息、查询航班信息、预订机票、退订机票等操作,从而使旅客能够及时准确获得自己需要的信息或进行查询、订票、退票等操作。
航空订票系统是为机场工作人员及旅客提供订票、退订等与机票相关的内容和管理的系统,它分为前台和后台两个部分。
前台主要提供了航班的查询机票的预定与退订等功能。
后台是管理员管理界面只有管理员才能进行操作。
包括查看机票预订情况,对航班信息进行增、删、改、查。
对用户信息进行增、删、改、查,添加、删除、修改、公布信息的操作。
本系统采用MyEclipse2014作为软件开发的环境,以Tomcat6.0作为Web服务器,后台的数据库是使用MySql5.0。
使用Microsoft公司的win8系统作为开发的系统,运用Struts2+Spring3.0+Hibernate整合开发,从界面友好,功能实用的要求出发。
开发一个利用Web技术发布在网络上的基于B/S模式的航空订票系统。
关键词:
航空订票系统;Struts2+Spring3.0+Hibernate;JSP+jQuery+ExtJS
B/S结构;
一、绪论
1.1.课题背景及现状
随着社会发展的不断进步,人均收入的不断增高,使得越来越多的人将目光放在了提高生活质量上。
因此,旅游在人们的生活中占有越来越重要的地位。
而且人们选择出行的方式也越来越多元化,其中飞机所占的比重越来越高。
信息化是当今世界经济和社会发展的大趋势,也是我国产业优化升级和实现工业化、现代化的关键环节,大力推进国民经济和社会信息化,是覆盖现代化建设全局的战略举措,可见,这是民航快速发展的机遇,更是民航信息化的机遇。
航空公司伴随着业务的增长,不断增长的信息量,落后的工作效率和管理水平也带来了很多的问题。
老套的人工售票方式已经无法满足人们的需求,严重的制约了工作效率。
在计算技术及电子商务高速发展的今天,有必要引入高效的计算机系统来处理航班查询、机票预订、信息管理的工作。
因此,开发一套具有航班查询、机票预订与退订、航班信息管理、客户信息管理的系统已经是势在必行。
1.2.选题意义
航空订票系统是为机场工作人员及客户提供订票退票等与机票相关内容和管理的系统,它具有开放体系结构、易扩充、易维护、具有良好的人机界面的优点。
它除了克服存储乘客信息少,查询效率低下等问题外,更重要的是其安全、可靠,实现航空公司的机票销售的自动化。
他还为企业的决策层提供准确、精细、迅速的机票销售信息,便于机场工作人员对机票信息进行管理,提高机场工作人员的工作效率。
1.3.系统开发工具与技术介绍
1.3.1.开发环境
开发本系统所需要用到的软件环境如下:
(1)JDK:
JDK1.7.0_51版本是目前功能比较全、比较稳定的版本,其新添加了许多以前版本所不具备的新特性,如整合脚本语言、自动打包解包、安全性等功能。
(2)Web应用服务器:
Tomcat6.0服务器功能强大、方便易用,适用于中小型系统的开发服务器,同时Tomcat可以从网上免费下载,从而降低了开发成本。
(3)Database数据库:
MySQL5.0数据库是目前小型应用开发中比较流行的数据库,且其从MySQL5.0版本开始支持事务,保证了数据库的完整性和安全性。
(4)MyEclipse2014开发IDE:
利用MyEclipse2014的集成开发环境,我们可以在整合Struts2+Spring3.0+Hiberbate开发项目时极大地提高工作效率。
它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能。
1.3.2.开发模式简介
本系统采用B/S(浏览器/服务器)架构,在这种结构下,客户机上只需要装有一个浏览器(Browser),用户就可以通过WWW浏览器来访问服务器上的内容,在通用浏览器端就实现了原来需要复杂专用软件才能实现的强大功能,大大节约了开发成本,是一种全新的软件系统的构造技术。
1.3.3.开发技术
本系统采用MyEclipse2014作为软件开发的环境,以Tomcat6.0作为Web服务器,后台的数据库是使用MySql5.0。
使用Microsoft公司的win8系统作为开发的系统,后台运用Struts2+Spring3.0+Hibernate整合开发,前台视图层使用JSP+jQueryJS+ExtJS+CSS开发。
从界面友好,功能实用的要求出发,开发一个利用Web技术发布在网络上的基于B/S模式的航空订票系统。
二、需求分析与总体设计
2.1.功能需求
作为一个机票预订系统,在设计时,首先要充分考虑到问题的可行性,根据机票预订的目前的情况,还有已有的经济可行性,技术可行性,社会可行性三方面,分析机票预订系统具有的可行性。
其次是听取用户的需求,首先要对销售机票站点,航空公司进行业务分析,在分析已有系统的基础上,对本系统进行充分分析,针对用户需求做出具体实施方案,对系统实现的功能、性能、系统要求的运行环境提出完整、准确、清晰、具体的要求。
机票预订系统应该考虑以下几方面的需求:
首先是旅客用户方面的需求:
用户需要能够查询航班信息情况,通过输入起始地址与目的地址还有指定的日期查找所有的航班,采取一些排序功能让用户很轻松的找到所需要的航班;用户查看完航班信息后,可以选择进行预订机票,通过已有的网上银行进行付款,并且查看机票预订后的订单,还有相应的机票;用户可以进行退票,通过查看相应的机票进行退票,将相应的退票后的钱打到用户的帐里;用户还可以进行改签,通过查看相应的机票,选择新的航班完成改签功能,如果是升舱还需要补交差价。
其次是机场工作人员方面的需求:
机场工作人员需要对机场信息,航线信息,飞机信息进行维护,还要将上述信息进行汇总总结,从而产生对应的航班;对外发布航班的各种信息,与航班的各种动态变化;机场工作人员可以查看最近的机票销售情况,航班变动情况以及账务情况,以便对后续工作进行归纳总结。
最后是安全性的需求:
由于系统涉及到人员信息以及财务问题,所以必须要有很好的安全性保障,通过给每个使用系统的人设置用户名以及密码等检验功能,增强系统的安全性,用户只有登录系统才能有相应更多的功能权限。
由此,可得出预定机票模块的功能模块图:
图2-1航班订票系统功能模块图
2.2.业务需求
航班订票系统首先面向的是经常乘坐飞机的用户。
这些用户首先需要在本网站注册一个账号,账号中需要添加联系人,这些联系人在购买机票时,作为乘客的身份出现。
当用户点击购买机票后,系统会自动判断此用户是否处在登陆状态,如果用户没有登录,系统拦截器会自动将程序转向登陆界面提示用户登陆。
当用户登陆成功后,用户选择机票类型,用户点击提交订单,首先后台会验证选择的联系人在选择的订票日期有没有未处理或者已支付的订单,若有,会提示用户不能重复购买,否者,系统会再次验证用户购买的机票数量是否足够,若足够,则系统分配机票算法会为乘客分配合适的机票,向机票订单表中插入一条数据,修改机票座位信息表中的座位信息,并返回json字符串提示给用户,显示某联系人已购买成功某个座位的机票;若不足够则返回机票数量不足,提示用户重新选择机票座位。
以下是项目核心功能预订机票的程序流程图:
图2-2机票预定程序流程图
2.3.用例分析
用例:
查询机票
预定机票
支付机票
退订机票
参与者:
航空公司用户(乘客)
主事件流:
(1)用户登录本机票预定系统
(2)用户输入出发地,目的地和乘机日期查询机票剩余情况
(3)用户选择航班,选择联系人,并为每个联系人选择所需座位舱段,提交订单
(4)系统判断联系人是否重复购买,机票是否足量,若联系人没有重复购买,机票足量,则为用户分配机票,购买成功,否则不成功。
如下是由用例事件流得出的用例图:
图2-3航班预定系统用例图
2.4.预定机票时序图
本系统使用MVC模式,利用Struts2+Spring3.0+Hibernate框架技术编写,所以系统总体架构分为三层,呈现给用户的是视图层View层,主要以JSP页面实现,负责将后台传来的所有数据组织起来,并按一定的样式显示给用户;第二层是控制层Controller层,以Struts2中的Action实现,主要负责将前台传来的数据进行预处理,并传递给Service层或者将Service层处理数据得到的结果传递到前台View层;第三层是Service层,通过自定义的java业务逻辑处理类来实现,主要负责处理业务逻辑,该系统的所有核心代码都在此层中,其中包括验证用户是否重复购买,机票是否足量,为用户分配机票座位,支付机票,以及取消机票订单等;第四层是JDBC层,通过Hibernate实现。
当用户点击预定机票后,系统会根据前台传进的参数查询机票信息,并传递到jsp页面显示给用户,当用户选择某个航班后,会查看机票情况,当用户选择机票后,会将订票信息传递到后台业务逻辑层进行数据处理,如果用户不存在重复购买,且机票余票充足,则订票可以成功,否则,提示用户订票失败。
图2-4机票预定时序图
图2-5支付机票时序图
三、数据库设计
3.1.数据库概念设计
图3-1数据库设计步骤示意图
数据库的概念结构设计是通过对现实世界中信息实体的收集、分类、聚集和概括等处理,建立数据库概念结构(也称为概念模型)的过程。
概念结构的设计策略主要有自顶向下、自底向上、自内向外和混合策略四种。
自顶向下就是先从整体给出概念结构的总体框架再逐步细化;自底向上就是先给出局部概念结构再进行全局集成;自内向外就是先给出核心部分的概念结构再逐步扩充;混合策略是自顶向下方法与自底向上方法的结合。
3.1.1.数据库概念设计过程
根据机票预定系统的特点,可以总结出有如下几个实体:
航线,客机,航班,用户,乘客,订单等实体,各个实体之间的联系如下所述:
(1)一条航线上可以有多架客机飞行,一架飞机可以飞行多条航线,所以航线和客机是多对多的联系。
(2)一条航线被多个航班使用,一个航班有一条航线,所以航线与航班之间是一对多的联系。
(3)一个航班有一个航班经理,一个航班经理可以负责多个航班,所以航班和航班经理是一对多的联系。
3.1.2.生成E-R图
图3-2生成航班E-R图
3.2.数据库逻辑结构设计
在关系数据库中,数据库的逻辑设计就是根据概念模型设计的E-R图,按照E-R图到关系数据模型的转换规则,将E-R图转换成关系模型的过程,即将所有的实体和联系转化为一系列的关系模式的过程。
3.2.1.关系模式
由E-R图可以得到如下的关系模式以及范式规范说明:
(1)航线(航线编号,航程,起飞机场,降落机场,基准票价,航线宽度,航线高度)
主键:
航线编号
函数依赖{航线编号->其他所有属性}
由函数依赖可知,依赖左端为候选码,所以航线关系模式属于BCNF
(2)客机(客机编号,飞机类型,最大航程,飞机状态)
主键:
客机编号
函数依赖{(客机编号)->其他所有属性}
由函数依赖可知,依赖左端为候选码,所以客机关系模式属于BCNF
(3)航班(航班编号,客机编号,航线编号,起飞时间,降落时间,航班班期,航班经理,航班状态)
主键:
航班编号
外键:
航线编号,客机编号
函数依赖{(航班号)->其他所有属性,(航线号,客机编号)->其他属性}
由函数依赖可知,候选码为:
航班号,(航线号,客机编号)。
由于函数依赖左端都为候选码,所以航班关系模式属于BCNF
(4)航班座位信息(航班座位信息编号,航班编号,航班日期,座位信息)
主键:
航班座位信息编号
外键:
航班编号
函数依赖{(航班座位信息编号)->其他所有属性,(航班编号,航班日期)->其他属性}
由函数依赖可知,候选码为:
航班座位信息编号,(航班编号,航班日期)。
由于函数依赖左端都为候选码,所以航班座位信息关系模式属于BCNF。
(5)机票订单(订单编号,用户编号,乘客编号,航班座位信息编号,航班座位,价格,订单时间,订单状态)
主键:
订单编号
函数依赖{(订单编号)->其他所有属性}
由函数依赖可知,依赖左端为候选码,所以订单关系模式属于BCNF
(6)用户(用户编号,用户名,密码,身份证号,名称,性别,乘客类型,地址,手机号码)、
主键:
用户编号
函数依赖{(用户编号)->其他所有属性}
由函数依赖可知,依赖左端为候选码,所以用户关系模式属于BCNF
(7)乘客(乘客编号,用户编号,身份证号,名称,性别,乘客类型,地址,手机号码,角色类型)
主键:
乘客编号
函数依赖{(乘客编号)->其他所有属性}
由函数依赖可知,依赖左端为候选码,所以乘客关系模式属于BCNF
3.2.2.数据表结构
本系统数据库在设计过程中参考E-R模型设计,充分考虑了数据表的划分及其之间的联系,在保障数据流向简明、查询效率较高的前提下,设计了如下数据库表结构:
1.航线表(airline)
表3-1航线表结构
字段名称
含义
数据类型
约束
ID
航线编号
int
主键(非空,自增)
AIRLINERANGE
航线范围
int
无
STARTAIRPORT
起飞机场
varchar
无
ENDAIRPORT
降落机场
varchar
无
STANDARDPRICE
基准票价
double
无
HEIGHT
航线高度
int
无
WIDTH
航线宽度
int
无
2.客机表(plane)
表3-2客机表结构
字段名称
含义
数据类型
约束
ID
客机编号
int
主键(非空,自增)
PLANETYPE
客机类型
varchar
无
PLANERANGE
客机航程
double
无
PLANESTATUS
客机状态
varchar
无
3.航班表(flight)
表3-3航班表结构
字段名称
含义
数据类型
约束
ID
航班编号
int
主键(非空,自增)
FLIGHTNAME
航班名称
varchar
无
PLANEID
客机编号
Int
无
AIRLINEID
航线编号
Int
无
STARTTIME
起飞时间
varchar
无
ENDTIME
降落时间
varchar
无
FLIGHTMANAGER
航班管理员
varchar
无
FLIGHTSCHEDULE
航班班期
varchar
无
FLIGHTSTAUTS
航班状态
varchar
无
4.航班座位信息表(flight_ticket_info)
图3-4航班座位信息表结构
字段名称
含义
数据类型
约束
ID
航班座位信息编号
int
主键(非空,自增)
FLIGHTID
航班编号
int
无
FLIGHTDATE
航班日期
varchar
无
A1-A10
头等舱
int
无
B1-B10
商务舱
int
无
C1-C10
经济舱
int
无
5.航班订单表(flight_order)
图3-5航班订单表结构
字段名称
含义
数据类型
约束
ID
航班座位信息编号
int
主键(非空,自增)
USERID
航班编号
int
无
PASSENGERID
航班日期
int
无
FLIGHTTICKETINFOID
头等舱
int
无
FLIGHTSEAT
商务舱
varchar
无
PRICE
经济舱
double
无
ORDERTIME
商务舱
varchar
无
ORDERSTATUS
经济舱
varchar
无
6.用户表(user)
表3-6用户表结构
字段名称
含义
数据类型
约束
ID
用户编号
Int
主键(非空,自增)
USERNAME
用户名
varchar
无
PASSWORD
登陆密码
varchar
无
IDNUMBER
身份证号
varchar
无
NAME
姓名
varchar
无
SEX
性别
varchar
无
TYPE
用户类型
varchar
无
ADDRESS
地址
varchar
无
TEL
手机号
varchar
无
7.乘客表(passenger)
图3-7乘客表结构
字段名称
含义
数据类型
约束
ID
用户编号
Int
主键(非空,自增)
USERID
用户编号
varchar
无
IDNUMBER
身份证号
varchar
无
ROLE
角色
varchar
无
NAME
姓名
varchar
无
SEX
性别
varchar
无
TYPE
用户类型
varchar
无
ADDRESS
地址
varchar
无
TEL
手机号
varchar
无
3.3.数据库物理结构设计
数据库物理设计是后半段。
将一个给定逻辑结构实施到具体的环境中时,逻辑数据模型要选取一个具体的工作环境,这个工作环境提供了数据存储结构与存取方法,这个过程就是数据库的物理设计。
创建数据库的语句如下:
3.3.1创建数据库
createdatabasepurchase_flight--创建数据库
onprimary
(
name='purchase_flight_data',--主数据文件的逻辑名
filename='d:
\data\purchase_flight.mdf',--主数据文件的物理名
size=10mb,--初始大小
filegrowth=10%--增长率
)
logon
(
name='purchase_flight_log',--日志文件的逻辑名
filename='d:
\data\purchase_flight.ldf',--日志文件的物理名
size=1mb,maxsize=20mb,filegrowth=10%
)
3.3.2.创建数据表
1.SQL语句创建航线表
DROPTABLEIFEXISTS`airline`;
CREATETABLE`airline`(
`ID`int(10)NOTNULLauto_increment,
`AIRLINERANGE`int(10)NOTNULL,
`STARTAIRPORT`varchar(50)NOTNULL,
`ENDAIRPORT`varchar(50)NOTNULL,
`STANDARDPRICE`double(30,0)NOTNULL,
`HEIGHT`int(10)NOTNULL,
`WIDTH`int(10)NOTNULL,
PRIMARYKEY(`ID`)
)ENGINE=InnoDBAUTO_INCREMENT=30DEFAULTCHARSET=utf8;
2.SQL语句创建航班表
DROPTABLEIFEXISTS`flight`;
CREATETABLE`flight`(
`ID`int(10)NOTNULL,
`FLIGHTNAME`varchar(50)NOTNULL,
`PLANEID`int(10)NOTNULL,
`AIRLINEID`int(10)NOTNULL,
`STARTTIME`varchar(20)NOTNULL,
`ENDTIME`varchar(20)NOTNULL,
`FLIGHTMANAGER`varchar(30)NOTNULL,
`FLIGHTSCHEDULE`varchar(10)NOTNULL,
`FLIGHTSTATUS`varchar(10)NOTNULL,
PRIMARYKEY(`ID`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
3.SQL语句创建航班座位信息表
DROPTABLEIFEXISTS`flight_ticket_info`;
CREATETABLE`flight_ticket_info`(
`ID`int(10)NOTNULL,
`FLIGHTID`int(10)NOTNULL,
`FLIGHTDATE`varchar(30)NOTNULL,
`A1`int
(2)NOTNULL,
…………………………….
`A10`int
(2)NOTNULL,
`B1`int
(2)NOTNULL,
…………………………….
`B10`int
(2)NOTNULL,
`C1`int
(2)NOTNULL,
…………………………….
`C10`int
(2)NOTNULL,
PRIMARYKEY(`ID`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
4.SQL语句创建航班订单表
DROPTABLEIFEXISTS`flight_order`;
CREATETABLE`flight_order`(
`ID`int(10)NOTNULLauto_increment,
`USERID`int(10)NOTNULL,
`PASSENGERID`int(10)NOTNULL,
`FLIGHTTICKETINFOID`int(10)NOTNULL,
`FLIGHTSEAT`varchar(10)NOTNULL,
`PRICE`double(30,0)NOTNULL,
`ORDERTIME`varchar(225)NOTNULL,
`ORDERSTATUS`varchar(10)NOTNULL,
PRIMARYKEY(`ID`)
)ENGINE=InnoDBAUTO_INCREMENT=67DEFAULTCHARSET=utf8;
5.SQL语句创建用户表
DROPTABLEIFEXISTS`user`;
CREATETABLE`user`(
`ID`int(10)NOTNULL,
`USERNAME`varchar(50)NOTNULL,
`PASSWORD`varchar(50)NOTNULL,
`IDNUMBER`varchar(50)NOTNULL,
`NAME`varchar(30)NOTNULL,
`SEX`varchar(10)NOTNULL,
`TYPE`varchar(30)NOTNULL,
`ADDRESS`varchar(100)NOTNULL,
`TEL`varchar(30)NOTNULL,
PRIM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts 航空 订票 系统 课程设计 报告