航班订票系统项目文档Word下载.docx
《航班订票系统项目文档Word下载.docx》由会员分享,可在线阅读,更多相关《航班订票系统项目文档Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
![航班订票系统项目文档Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/25/abc31dfd-e761-406b-8939-7c84a154af94/abc31dfd-e761-406b-8939-7c84a154af941.gif)
该时间精确到分钟。
到港时间:
(Arrival):
用来描述某个航班计划到达目的地机场的时间,到港时间一般代表飞机舱门开启,允许乘客下飞机的时刻,该时间精确到分钟。
出发日期(Date):
用来描述某个航班的出发日期,该日期精确到某一天。
班期(Scheduler):
用来描述某个航班计划在一周之内哪些天有航班,哪些天没有航班。
舱位等级:
(CabinClass):
用来描述航班的不同舱位,一般分为三种:
头等舱(F),公物舱(C),经济舱(Y)。
不同的舱位等级具有不同的机票折扣,详情请参见舱位折扣和机票价格。
**实际情况中航空公司定义的舱位等级可能更复杂,在本项目中为简化业务模型,只对舱位等级作上述三种划分。
乘客类型:
(Passengertype):
用来描述乘坐航班的乘客的类型,一般分为三种:
成人(A)(age>
12),儿童(C)(2<
age<
=12),婴儿(I)(0<
=age<
=2)。
不同的乘客类型具有不同的机票折扣,详情请见乘客折扣。
在这三种乘客类型中,成人和儿童占用座位,而婴儿不占用座位,婴儿票不能单独出售,一张婴儿票必须凭一张成人票售出。
飞机机型:
(AirplaneModel):
用来描述执行某个航班计划的飞机的型号,一般来讲,一个航班计划的各次航班都应该采用同种机型的飞机来执行。
不同的飞机型号有不同的航程及各舱座位数。
详情请参见附录II民航飞机型号一览表。
**实际情况中,各种机型的座位数是不一样的,同一机型还分好几个系列,如B737(波音737)有B737-200、B737-300....B737-900等多个系列,每个系列座位数都不一样。
即使是同一型号、同一系列的机型,所属的航空公司不同,座位数也会不同,因为航空公司在购买飞机时,会根据自己的需要要求厂家采用不同的布局,不同的布局会有不同的头等舱、公务舱、经济舱座位数。
在本项目中为简化业务模型,我们认为同种型号的飞机各舱座位数是固定的。
基准票价:
(FullPrice):
是指某个航班在没有季节折扣时的一张经济舱成人票的价格,该价格作为该航班计划的基准价格,最终机票价格应该在此基础上乘以季节折扣,舱位折扣和乘客类型折扣。
季节折扣:
(SeasonDiscount):
航空公司根据不同季节的客流状况调整的航班的折扣,只有经济舱的成人票才享受季节折扣。
舱位折扣:
(ClassDiscount):
不同舱位在基准价格基础上的价格系数,头等舱为1.5,公务舱为1.3,经济舱为1.0
乘客类型折扣:
(PassengerDiscount):
不同乘客类型在基准票价基础上的价格系数,成人为1.0,儿童为0.5,婴儿为0.1。
机票订单(TicketOrder):
一张成功出票的机票记录,
机票价格:
(TicketPrice):
一张机票的价格,机票价格由以下公式计算:
经济舱成人票票价=基准价格*季节折扣
其他舱位乘客票价=基准价格*舱位折扣*乘客类型折扣
燃油税:
国家统一征收的,由乘坐民航飞机的乘客负担的一种税收,计算办法:
800KM以内(含)的航程,每人税费为60元,800KM以上的航程每人税费为100元,儿童票减半收取,婴儿票免收燃油税。
燃油税的征收不区分乘客舱位。
该项税费捆绑在机票上由航空公司代收代缴。
机场建设费:
国家统一收取的,由乘坐民航飞机的乘客负担的一种收费项目,用于支援民航机场的建设。
收取办法:
乘坐70座以下(含)的小飞机,每人每次收取10元;
乘坐70座以上的大飞机,每人每次收取50元。
儿童和婴儿都不收取机场建设费。
机场建设费的征收不区分乘客舱位。
该项收费捆绑在机票上由航空公司代收代缴。
机票应收款:
一张机票的应收款=机票价格+燃油税+机场建设费。
需求分析:
1,系统功能模块(略):
2,系统活动图(略):
3,用例图(略):
客户端用例:
服务器端用例:
概要设计:
1,业务模型:
2,数据库设计
设计出如下数据库表结构:
机场表(AIRPORT):
字段名
描述
类型
约束
备注
airport_code
机场代码
CHAR(3)
PrimaryKey
city
所在城市
VARCHAR(20)
NOTNULL
airport_name
机场名
若为空,则用城市名表示
飞机机型表(AIRPLANE_MODEL):
model
机型
VARCHAR(20)
PRIMARYKEY
max_sail_length
最大航程
NUMBER(6)
first_class_seats
头等舱座位数
NUMBER(3)
business_class_seats
公务舱座位数
economy_class_seats
经济舱座位数
航班计划表(FLIGHT_SCHEDULER):
flight_number
航班号
CHAR(6)
start_date
开始日期
DATE
end_date
结束日期
from_city
出发地机场
REFERENCESairport.airport_code
to_city
目的地机场
departure_time
离港时间
arrival_time
到港时间
airplane
执行机型
REFERENCESairplane_model.model
scheduler
班期
CHAR(7)
sail_length
航程
NUMBER(5)
航班表(FLIGHT):
id
航班编号
NUMBER(8)
CHAR(6)
REFERENCESflight_scheduler.flight_number
departure_date
出发日期
first_class_remain_seats
头等舱剩余座位数
business_class_remain_seats
公务舱剩余座位数
economy_class_remain_seats
经济舱剩余座位数
season_discount
季节折扣
NUMBER(4,2)
NOTNULL
DEFAULT1.0
营业网点表(BRANCH):
网点编号
NUMBER(4)
name
网点名称
VARCHAR(40)
address
地址
VARCHAR(50)
telephone
电话
VARCHAR(15)
province
所在省份
VARCHAR(10)
营业员表(SALES):
营业员编号
NUMBER(6)
branch_id
NUMBER(4)
NOTNULLREFERENCESBRANCH.id
营业员名称
password
登录密码
出票记录表(TICKET_ORDER):
机票编号
NUMBER(10)
flight_id
REFERENCESFLIGHT.id
passenger_name
乘客姓名
certification_number
证件号码
order_date
出票日期
class
舱位等级
CHAR
(1)
NOTNULLCHECKIN(F,C,Y)
passenger_type
乘客类型
NOTNULLCHECKIN(A,C,I)
营业网点编号
REFERENCESBRANCH.id
sales_id
REFERENCESSALES.id
3,DAO接口设计
1)SalesDAO:
packagecom.xie.abs.dao;
importcom.xie.abs.model.*;
/**
*对营业员数据进行访问的接口。
*
*/
publicinterfaceSalesDAO{
/**
*根据给定的姓名和密码在底层数据源中查找营业员的纪录,
*若找到,则返回该营业员对象,若没找到或密码错误则返回null。
*@paramname营业员姓名
*@parampasswd营业员密码
*@return找到的营业员对象或null
*/
publicSalesgetSales(Stringname,Stringpasswd);
*向底层数据中添加一个营业员纪录。
*@paramuser要添加的营业员对象
*@return若添加成功返回true,否则返回false。
publicbooleanaddSales(Salesuser);
*根据指定的营业员的姓名在底层数据源中删除该营业员。
*@return若删除成功返回true,否则返回false。
publicbooleanremoveSales(Stringname);
*修改指定营业员的密码。
*@paramoldPassword旧密码
*@paramnewPassword新密码
*@return若修改成功返回true,否则返回false。
publicbooleanmodifyPassword(Stringname,StringoldPassword,StringnewPassword);
}
2)FlightDAO:
importjava.util.Set;
importjava.util.Calendar;
*对航班和航班计划数据访问的接口。
publicinterfaceFlightDAO{
*根据指定出发地,目的地和出发日期在底层数据源中查找
*得到所有的航班对象的集合。
*@paramfromAddr出发地
*@paramtoAddr目的地
*@paramdate出发日期
*@return航班集合
publicSetgetAllFlights(StringfromAddr,StringtoAddr,Calendardate);
*添加指定的航班计划对象。
*@paramfs要添加的航班计划对象。
*@return添加成功返回true,否则返回false。
publicbooleanaddFlightScheduler(FlightSchedulerfs);
*根据给定的航班编号在底层数据源中删除该航班计划,以及该计划下的所有航班。
*@paramflightNumber要删除的航班计划的航班编号。
*@return删除成功返回true,否则返回false。
publicbooleanremoveFlightScheduler(StringflightNumber);
*该方法更新航班--删除过期航班,创建可以接受预订的航班。
*航班的接受预订期是指从当前日期开始往后60天。
*
publicvoidupdateFlights();
*得到所有航班计划对象
*@return
publicSetgetAllFlightSchedulars();
3)BranchDAO:
*对营业网点数据访问的接口*
publicinterfaceBranchDAO{
*根据给定的编号在底层数据源中查找营业网点的纪录,
*若找到,则返回该营业网点对象,若没找到则返回null。
*@paramid营业网点编号
publicBranchgetBranch(intid);
*查找指定的省份和城市的所有营业网点
*@paramprovince省份
*@paramcity城市
*@return满足条件的营业网点的集合
publicSet<
Branch>
getAllBranch(Stringprovince,Stringcity);
*向底层数据中添加一个营业网点。
*@parambranch要添加的营业网点对象
*@return返回该营业网点的编号。
publicintaddBranch(Branchbranch);
*根据指定的营业网点的名称在底层数据源中删除该营业网点。
*@paramname营业网点名称
publicbooleanremoveBranch(Stringname);
*根据指定的营业网点的编号在底层数据源中删除该营业网点。
publicbooleanremoveBranch(intid);
4)TicketOrderDAO:
*机票出票记录访问接口
publicinterfaceTicketOrderDAO{
*执行出票的操作。
*@paramord订单对象
*@return若出票成功返回true,否则返回false。
publicbooleanorder(TicketOrderord);
*执行退票操作。
*@paramTicketNumber机票编号
*@return退票成功返回true,否则返回false。
publicbooleancancelOrder(intTicketNumber);
*查询指定营业网点在指定时间段内的出票记录
*@parambranch营业网点
*@paramstartDate开始日期
*@paramendDate结束日期
*@return满足条件的出票记录集合
TicketOrder>
getAllTicketOrder(Branchbranch,CalendarstartDate,CalendarendDate);
*查询指定营业员在指定时间段内的出票记录
*@paramsales营业员
getAllTicketOrder(Salessales,CalendarstartDate,CalendarendDate);
*得到指定营业网点指定日期内的营业额。
*@return营业额
publicdoublegetAllTicketMoney(Branchbranch,CalendarstartDate,CalendarendDate);
*得到指定营业员指定日期内的营业额。
publicdoublegetAllTicketMoney(Salessales,CalendarstartDate,CalendarendDate);
*得到所有营业网点指定日期内的营业额
publicdoublegetAllTicketMoney(CalendarstartDate,CalendarendDate);
4,主要工作流程:
详细设计:
1,各功能模块设计
2,系统配置
3,代码框架
4,
代码框架:
?
附录I:
国内通航机场名及代码表
地区
城市
三字码
北京
PEK
首都
上海
SHA
虹桥
PVG
浦东
重庆
CKG
江北
天津
TSN
滨海
河北
石家庄
SJW
正定
秦皇岛
SHP
山海关
山西
太原
TYN
武宿
常治
CIH
运城
YCU
内蒙古
呼和浩特
HET
白塔
包头
BAV
海拉尔
HLD
东山
锡林浩特
XIL
吉林
长春
CGQ
大房身
JIL
二台子
延吉
YNJ
辽宁
沈阳
SHE
桃仙
大连
DLC
周水子
丹东
DDG
浪头
锦州
JNZ
朝阳
CHG
黑龙江
哈尔滨
HRB
阎家岗
齐齐哈尔
NDG
三