航班订票系统项目文档.docx

上传人:b****5 文档编号:6725319 上传时间:2023-01-09 格式:DOCX 页数:15 大小:23.29KB
下载 相关 举报
航班订票系统项目文档.docx_第1页
第1页 / 共15页
航班订票系统项目文档.docx_第2页
第2页 / 共15页
航班订票系统项目文档.docx_第3页
第3页 / 共15页
航班订票系统项目文档.docx_第4页
第4页 / 共15页
航班订票系统项目文档.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

航班订票系统项目文档.docx

《航班订票系统项目文档.docx》由会员分享,可在线阅读,更多相关《航班订票系统项目文档.docx(15页珍藏版)》请在冰豆网上搜索。

航班订票系统项目文档.docx

航班订票系统项目文档

航班订票系统项目文档

XX航空公司国内机票售票系统项目文档

项目描述:

我们要为某航空公司开发一套国内机票售票系统,要求能通过分布在全国各主要城市的该航空公司的营业网点为顾客提供航班查询,购买机票以及退票的服务。

该系统的工作流程如下:

当顾客到达营业网点后向航空公司营业员提供出发地,目的地和出发日期,营业员根据以上信息,操作软件,连接航空公司的服务器,查询满足条件的航班,然后根据顾客的要求选择某个航班,输入乘客信息,以及舱位信息,然后执行出票操作。

该系统在营业网点内能够完成营业员登录,查询航班,出票等功能;在航空公司内部能够完成添加或删除航班,添加或删除营业网点,添加或删除营业员等功能。

除此之外,该系统还要求能统计每个营业网点的业务量,以及每位营业员的工作量,并将这些信息保存在服务器端,并能在服务器端随时查询。

术语表:

航班计划(FlightScheduler):

用来描述由某个航空公司执行的某个定期航班的计划表。

例如:

由中国国际航空公司执行的每天早上8:

00从北京起飞,上午10:

00到达上海的CA1202就是一个航班计划。

属性:

航班号,起始日期,结束日期,出发地,目的地,离港时间,到港时间,里程,飞机机型,班期,基准票价。

航班(Flight):

用来描述在某个确定日期执行某个定期航班计划的一次航班。

例如:

2008年5月25日从北京飞上海的CA1202就是一个航班的实例。

属性:

航班计划,出发日期,各舱剩余座位数,折扣。

起始日期(StartDate):

用来描述某个航班计划开始的日期。

结束日期(EndDate):

用来描述某个航班计划结束的日期。

营业网点(Branch):

用来描述航空公司的某个分支机构,该机构能使用该系统为顾客提供查询航班和出票的服务。

营业网点通过若干台终端机器与航空公司的服务器相连,属性:

编号,名称,地址,电话。

营业员(Sales):

用来描述在营业网点操作该系统的操作人员,每个营业员必须凭姓名和密码登录系统后才能为顾客提供服务,同时在服务器端要记录每个营业员的工作时间及业务量。

属性:

编号,姓名,密码,所属营业网点编号。

航班号(FlightNumber):

由航空公司给航班计划定义的唯一标识号码,该号码由2位英文字符和4位数字组成,2位英文字符是航空公司编码,4位数字是航班编码。

例如:

CA1202就是一个航班计划的航班号,其中CA代表中国国际航空公司,1202代表航班的编号。

出发地(FromCity):

用来描述某个航班计划的起飞城市和机场,所有国内机场均用三个英文字母的代码表示,详情请见附录I(国内机场代码表)。

目的地(ToCity):

用来描述某个航班计划的到达城市和机场,所有国内机场均用三个英文字母的代码表示,详情请见附录I(国内机场代码表)。

离港时间:

(Departure):

用来描述某个航班计划的从出发地机场离开的时刻,离港时间一般代表飞机舱门关闭,不再接收乘客的时刻。

该时间精确到分钟。

到港时间:

(Arrival):

用来描述某个航班计划到达目的地机场的时间,到港时间一般代表飞机舱门开启,允许乘客下飞机的时刻,该时间精确到分钟。

出发日期(Date):

用来描述某个航班的出发日期,该日期精确到某一天。

班期(Scheduler):

用来描述某个航班计划在一周之内哪些天有航班,哪些天没有航班。

舱位等级:

(CabinClass):

用来描述航班的不同舱位,一般分为三种:

头等舱(F),公物舱(C),经济舱(Y)。

不同的舱位等级具有不同的机票折扣,详情请参见舱位折扣和机票价格。

**实际情况中航空公司定义的舱位等级可能更复杂,在本项目中为简化业务模型,只对舱位等级

作上述三种划分。

乘客类型:

(Passengertype):

用来描述乘坐航班的乘客的类型,一般分为三种:

成人(A)(age>12),儿童(C)(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_codeCHAR(3)Primary

Key

所在城市cityVARCHAR(20)NOTNULL

机场名若为空,则用城市名表示airport_nameVARCHAR(20)

飞机机型表(AIRPLANE_MODEL):

机型modelVARCHAR(20)PRIMARYKEY

最大航程max_sail_lengthNUMBER(6)NOTNULL

头等舱座位数first_class_seatsNUMBER(3)NOTNULL

公务舱座位数business_class_seatsNUMBER(3)NOTNULL

经济舱座位数economy_class_seatsNUMBER(3)NOTNULL

航班计划表(FLIGHT_SCHEDULER):

航班号flight_numberCHAR(6)PRIMARYKEY

开始日期start_dateDATENOTNULL

结束日期end_dateDATENOTNULL

出发地机场from_cityCHAR(3)REFERENCESairport.airport_code

NOTNULL

目的地机场to_cityCHAR(3)REFERENCESairport.airport_code

NOTNULL

离港时间departure_timDATENOTNULLe

到港时间arrival_timeDATENOTNULL

执行机型airplaneVARCHAR(20REFERENCES

)airplane_model.model

NOTNULL

scheduler班期CHAR(7)NOTNULLsail_lengt航程NUMBER(5)NOTNULLh

航班表(FLIGHT):

航班编号idNUMBER(8)PRIMARYKEY

航班号flight_numberCHAR(6)REFERENCES

flight_scheduler.

flight_number

出发日期departure_dateDATENOTNULL

头等舱剩first_class_remain_seatsNUMBER(3)NOTNULL

余座位数

公务舱剩business_class_remain_seatsNUMBER(3)NOTNULL

余座位数

经济舱剩economy_class_remain_seatsNUMBER(3)NOTNULL

余座位数

季节折扣season_discountNUMBER(4,2)NOTNULL

DEFAULT1.0

营业网点表(BRANCH):

网点编号idNUMBER(4)PRIMARYKEY

网点名称nameVARCHAR(40)NOTNULL

地址addressVARCHAR(50)NOTNULL

电话telephoneVARCHAR(15)

所在省份provinceVARCHAR(10)NOTNULL

所在城市cityVARCHAR(10)NOTNULL

营业员表(SALES):

营业员编号idNUMBER(6)PRIMARYKEY网点编号branch_idNUMBER(4)NOTNULLREFERENCES

BRANCH.id

营业员名称nameVARCHAR(10)NOTNULL登录密码passwordVARCHAR(10)NOTNULL

出票记录表(TICKET_ORDER):

机票编号idNUMBER(10)PRIMARYKEY

航班编号flight_idNUMBER(8)NOTNULL

REFERENCESFLIGHT.id

乘客姓名passenger_nameVARCHAR(40)NOTNULL

证件号码certification_numberVARCHAR(20)NOTNULL

出票日期order_dateDATENOTNULL

舱位等级classCHAR

(1)NOTNULLCHECKIN(F,C,Y)

乘客类型passenger_typeCHAR

(1)NOTNULLCHECKIN(A,C,I)

营业网点编branch_idNUMBER(4)NOTNULL

号REFERENCESBRANCH.id

营业员编号sales_idNUMBER(6)NOTNULL

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);

/**

*根据指定的营业员的姓名在底层数据源中删除该营业员。

*@paramname营业员姓名

*@return若删除成功返回true,否则返回false。

*/

publicbooleanremoveSales(Stringname);

/**

*修改指定营业员的密码。

*@paramname营业员姓名

*@paramoldPassword旧密码

*@paramnewPassword新密码

*@return若修改成功返回true,否则返回false。

*/

publicbooleanmodifyPassword(Stringname,StringoldPassword,StringnewPassword);

}

2)FlightDAO:

packagecom.xie.abs.dao;importjava.util.Set;

importjava.util.Calendar;importcom.xie.abs.model.*;

/**

*对航班和航班计划数据访问的接口。

*

*/

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:

packagecom.xie.abs.dao;

importcom.xie.abs.model.*;importjava.util.Set;

/**

*对营业网点数据访问的接口*

*/

publicinterfaceBranchDAO{

/**

*根据给定的编号在底层数据源中查找营业网点的纪录,

*若找到,则返回该营业网点对象,若没找到则返回null。

*@paramid营业网点编号

*/

publicBranchgetBranch(intid);

/**

*查找指定的省份和城市的所有营业网点

*@paramprovince省份

*@paramcity城市

*@return满足条件的营业网点的集合

*/

publicSetgetAllBranch(Stringprovince,Stringcity);

/**

*向底层数据中添加一个营业网点。

*@parambranch要添加的营业网点对象

*@return返回该营业网点的编号。

*/

publicintaddBranch(Branchbranch);

/**

*根据指定的营业网点的名称在底层数据源中删除该营业网点。

*@paramname营业网点名称

*@return若删除成功返回true,否则返回false。

*/

publicbooleanremoveBranch(Stringname);

/**

*根据指定的营业网点的编号在底层数据源中删除该营业网点。

*@paramid营业网点编号

*@return若删除成功返回true,否则返回false。

*/

publicbooleanremoveBranch(intid);

}

4)TicketOrderDAO:

packagecom.xie.abs.dao;

importjava.util.Set;

importjava.util.Calendar;

importcom.xie.abs.model.*;

/**

*机票出票记录访问接口

*

*/

publicinterfaceTicketOrderDAO{

/**

*执行出票的操作。

*@paramord订单对象

*@return若出票成功返回true,否则返回false。

*/

publicbooleanorder(TicketOrderord);

/**

*执行退票操作。

*@paramTicketNumber机票编号

*@return退票成功返回true,否则返回false。

*/

publicbooleancancelOrder(intTicketNumber);

/**

*查询指定营业网点在指定时间段内的出票记录

*@parambranch营业网点

*@paramstartDate开始日期

*@paramendDate结束日期

*@return满足条件的出票记录集合

*/

publicSetgetAllTicketOrder(Branchbranch,CalendarstartDate,Calendar

endDate);

/**

*查询指定营业员在指定时间段内的出票记录

*@paramsales营业员

*@paramstartDate开始日期

*@paramendDate结束日期

*@return满足条件的出票记录集合

*/

publicSetgetAllTicketOrder(Salessales,CalendarstartDate,Calendar

endDate);

/**

*得到指定营业网点指定日期内的营业额。

*@parambranch营业网点

*@paramstartDate开始日期

*@paramendDate结束日期

*@return营业额

*/

publicdoublegetAllTicketMoney(Branchbranch,CalendarstartDate,CalendarendDate);

/**

*得到指定营业员指定日期内的营业额。

*@paramsales营业员

*@paramstartDate开始日期

*@paramendDate结束日期

*@return营业额

*/

publicdoublegetAllTicketMoney(Salessales,CalendarstartDate,CalendarendDate);

/**

*得到所有营业网点指定日期内的营业额

*@paramstartDate开始日期

*@paramendDate结束日期

*@return营业额

*/

publicdoublegetAllTicketMoney(CalendarstartDate,CalendarendDate);

}

4,主要工作流程:

客户端启动

出票查询航班营业员登录修改密码

是否已查是否已登是否已登输入用户名/NONONO询出航班录录密码

YESYESYES

输入出发地/输入乘客信输入旧密码/目的地/出发数据有效NO息新密码日期性验证

YES数据有效数据有效NONO数据有效NO性验证性验证性验证

封装RequestYESYESYES

对象

将Request对

象写往服务

器端

登录请求调用分拣请求SalesDao

修改

调用密码分拣请求SalesDao请求

航班查

调用询请求分拣请求FlightDao

出票请求调用分拣请求

FlightDao

解析Response对将Response对象封装Response象,将结果显写往客户端对象示在客户端

详细设计:

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三家子黑龙江加木斯JMU东郊

牡丹江MDG海浪

郑州CGO新郑河南洛阳LYA洛阳

南阳NNY姜营

杭州HGH萧山

宁波NGB

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1