XX航空公司国内机票售票系统项目文档
项目描述:
我们要为某航空公司开发一套国内机票售票系统,要求能通过分布在全国各主要城市的该航空公司的营业网点为顾客提供航班查询,购买机票以及退票的服务。该系统的工作流程如下:当顾客到达营业网点后向航空公司营业员提供出发地,目的地和出发日期,营业员根据以上信息,操作软件,连接航空公司的服务器,查询满足条件的航班,然后根据顾客的要求选择某个航班,输入乘客信息,以及舱位信息,然后执行出票操作。该系统在营业网点内能够完成营业员登录,查询航班,出票等功能;在航空公司内部能够完成添加或删除航班,添加或删除营业网点,添加或删除营业员等功能。除此之外,该系统还要求能统计每个营业网点的业务量,以及每位营业员的工作量,并将这些信息保存在服务器端,并能在服务器端随时查询。
术语表:
航班计划(Flight Scheduler):用来描述由某个航空公司执行的某个定期航班的计划表。例如:由中国国际航空公司执行的每天早上8:00从北京起飞,上午10:00到达上海的CA1202就是一个航班计划。
属性:航班号,起始日期,结束日期,出发地,目的地,离港时间,到港时间,里程,飞机机型,班期,基准票价。
航班(Flight):用来描述在某个确定日期执行某个定期航班计划的一次航班。例如:2008年5月25日从北京飞上海的CA1202就是一个航班的实例。
属性:航班计划,出发日期,各舱剩余座位数,折扣。
起始日期(Start Date):用来描述某个航班计划开始的日期。
结束日期(End Date):用来描述某个航班计划结束的日期。
营业网点(Branch):用来描述航空公司的某个分支机构,该机构能使用该系统为顾客提供查询航班和出票的服务。营业网点通过若干台终端机器与航空公司的服务器相连,
属性:编号,名称,地址,电话。
营业员(Sales):用来描述在营业网点操作该系统的操作人员,每个营业员必须凭姓名和密码登录系统后才能为顾客提供服务,同时在服务器端要记录每个营业员的工作时间及业务量。
属性:编号,姓名,密码,所属营业网点编号。
航班号(Flight Number):由航空公司给航班计划定义的唯一标识号码,该号码由2位英文字符和4位数字组成,2位英文字符是航空公司编码,4位数字是航班编码。例如:CA1202就是一个航班计划的航班号,其中CA代表中国国际航空公司,1202代表航班的编号。
出发地(From City):用来描述某个航班计划的起飞城市和机场,所有国内机场均用三个英文字母的代码表示,详情请见附录I(国内机场代码表)。
目的地(To City):用来描述某个航班计划的到达城市和机场,所有国内机场均用三个英文字母的代码表示,详情请见附录I(国内机场代码表)。
离港时间:(Departure):用来描述某个航班计划的从出发地机场离开的时刻,离港时间一般代表飞机舱门关闭,不再接收乘客的时刻。该时间精确到分钟。
到港时间:(Arrival):用来描述某个航班计划到达目的地机场的时间,到港时间一般代表飞机舱门开启,允许乘客下飞机的时刻,该时间精确到分钟。
出发日期(Date):用来描述某个航班的出发日期,该日期精确到某一天。
班期(Scheduler):用来描述某个航班计划在一周之内哪些天有航班,哪些天没有航班。
舱位等级:(Cabin Class):用来描述航班的不同舱位,一般分为三种:头等舱(F),公物舱(C),经济舱(Y)。不同的舱位等级具有不同的机票折扣,详情请参见舱位折扣和机票价格。
**实际情况中航空公司定义的舱位等级可能更复杂,在本项目中为简化业务模型,只对舱位等级作上述三种划分。
乘客类型:(Passenger type):用来描述乘坐航班的乘客的类型,一般分为三种:成人(A)(age>12),儿童(C)(2<age<=12),婴儿(I)(0<=age<=2)。不同的乘客类型具有不同的机票折扣,详情请见乘客折扣。在这三种乘客类型中,成人和儿童占用座位,而婴儿不占用座位,婴儿票不能单独出售,一张婴儿票必须凭一张成人票售出。
飞机机型:(Airplane Model):用来描述执行某个航班计划的飞机的型号,一般来讲,一个航班计划的各次航班都应该采用同种机型的飞机来执行。不同的飞机型号有不同的航程及各舱座位数。详情请参见附录II民航飞机型号一览表。
**实际情况中,各种机型的座位数是不一样的,同一机型还分好几个系列,如B737(波音737)有B737-200、B737-300....B737-900等多个系列,每个系列座位数都不一样。即使是同一型号、同一系列的机型,所属的航空公司不同,座位数也会不同,因为航空公司在购买飞机时,会根据自己的需要要求厂家采用不同的布局,不同的布局会有不同的头等舱、公务舱、经济舱座位数。在本项目中为简化业务模型,我们认为同种型号的飞机各舱座位数是固定的。
基准票价:(Full Price):是指某个航班在没有季节折扣时的一张经济舱成人票的价格,该价格作为该航班计划的基准价格,最终机票价格应该在此基础上乘以季节折扣,舱位折扣和乘客类型折扣。
季节折扣:(Season Discount):航空公司根据不同季节的客流状况调整的航班的折扣,只有经济舱的成人票才享受季节折扣。
舱位折扣:(Class Discount):不同舱位在基准价格基础上的价格系数,头等舱为1.5,公务舱为1.3,经济舱为1.0
乘客类型折扣:(Passenger Discount):不同乘客类型在基准票价基础上的价格系数,成人为1.0,儿童为0.5,婴儿为0.1。
机票订单(Ticket Order):一张成功出票的机票记录,
机票价格:(Ticket Price):一张机票的价格,机票价格由以下公式计算:
经济舱成人票票价=基准价格*季节折扣
其他舱位乘客票价=基准价格*舱位折扣*乘客类型折扣
燃油税:国家统一征收的,由乘坐民航飞机的乘客负担的一种税收,计算办法:800KM以内(含)的航程,每人税费为60元,800KM以上的航程每人税费为100元,儿童票减半收取,婴儿票免收燃油税。燃油税的征收不区分乘客舱位。该项税费捆绑在机票上由航空公司代收代缴。
机场建设费:国家统一收取的,由乘坐民航飞机的乘客负担的一种收费项目,用于支援民航机场的建设。收取办法:乘坐70座以下(含)的小飞机,每人每次收取10元;乘坐70座以上的大飞机,每人每次收取50元。儿童和婴儿都不收取机场建设费。机场建设费的征收不区分乘客舱位。该项收费捆绑在机票上由航空公司代收代缴。
机票应收款:一张机票的应收款=机票价格+燃油税+机场建设费。
需求分析:
1,系统功能模块:
2,系统活动图:
3,用例图:
客户端用例:
服务器端用例:
概要设计:
1, 业务模型:
2, 数据库设计
设计出如下数据库表结构:
机场表(AIRPORT):
字段名
|
描述
|
类型
|
约束
|
备注
|
airport_code
|
机场代码
|
CHAR(3)
|
Primary Key
|
|
city
|
所在城市
|
VARCHAR(20)
|
NOT NULL
|
|
airport_name
|
机场名
|
VARCHAR(20)
|
|
若为空,则用城市名表示
|
飞机机型表(AIRPLANE_MODEL):
字段名
|
描述
|
类型
|
约束
|
备注
|
model
|
机型
|
VARCHAR (20)
|
PRIMARY KEY
|
|
max_sail_length
|
最大航程
|
NUMBER(6)
|
NOT NULL
|
|
first_class_seats
|
头等舱座位数
|
NUMBER(3)
|
NOT NULL
|
|
business_class_seats
|
公务舱座位数
|
NUMBER(3)
|
NOT NULL
|
|
economy_class_seats
|
经济舱座位数
|
NUMBER(3)
|
NOT NULL
|
|
航班计划表(FLIGHT_SCHEDULER):
字段名
|
描述
|
类型
|
约束
|
备注
|
flight_number
|
航班号
|
CHAR(6)
|
PRIMARY KEY
|
|
start_date
|
开始日期
|
DATE
|
NOT NULL
|
|
end_date
|
结束日期
|
DATE
|
NOT NULL
|
|
from_city
|
出发地机场
|
CHAR(3)
|
REFERENCES airport.airport_code
NOT NULL
|
|
to_city
|
目的地机场
|
CHAR(3)
|
REFERENCES airport.airport_code
NOT NULL
|
|
departure_time
|
离港时间
|
DATE
|
NOT NULL
|
|
arrival_time
|
到港时间
|
DATE
|
NOT NULL
|
|
airplane
|
执行机型
|
VARCHAR(20)
|
REFERENCES airplane_model.model
NOT NULL
|
|
scheduler
|
班期
|
CHAR(7)
|
NOT NULL
|
|
sail_length
|
航程
|
NUMBER(5)
|
NOT NULL
|
|
航班表(FLIGHT):
字段名
|
描述
|
类型
|
约束
|
备注
|
id
|
航班编号
|
NUMBER(8)
|
PRIMARY KEY
|
|
flight_number
|
航班号
|
CHAR (6)
|
REFERENCES flight_scheduler. flight_number
|
|
departure_date
|
出发日期
|
DATE
|
NOT NULL
|
|
first_class_remain_seats
|
头等舱剩余座位数
|
NUMBER(3)
|
NOT NULL
|
|
business_class_remain _seats
|
公务舱剩余座位数
|
NUMBER(3)
|
NOT NULL
|
|
economy_class_remain _seats
|
经济舱剩余座位数
|
NUMBER(3)
|
NOT NULL
|
|
season_ discount
|
季节折扣
|
NUMBER(4,2)
|
NOT NULL
DEFAULT 1.0
|
|
营业网点表(BRANCH):
字段名
|
描述
|
类型
|
约束
|
备注
|
id
|
网点编号
|
NUMBER (4)
|
PRIMARY KEY
|
|
name
|
网点名称
|
VARCHAR(40)
|
NOT NULL
|
|
address
|
地址
|
VARCHAR (50)
|
NOT NULL
|
|
telephone
|
电话
|
VARCHAR(15)
|
|
|
province
|
所在省份
|
VARCHAR(10)
|
NOT NULL
|
|
city
|
所在城市
|
VARCHAR(10)
|
NOT NULL
|
|
营业员表(SALES):
字段名
|
描述
|
类型
|
约束
|
备注
|
id
|
营业员编号
|
NUMBER (6)
|
PRIMARY KEY
|
|
branch_id
|
网点编号
|
NUMBER(4)
|
NOT NULL REFERENCES BRANCH.id
|
|
name
|
营业员名称
|
VARCHAR(10)
|
NOT NULL
|
|
password
|
登录密码
|
VARCHAR(10)
|
NOT NULL
|
|
出票记录表(TICKET_ORDER):
字段名
|
描述
|
类型
|
约束
|
备注
|
id
|
机票编号
|
NUMBER(10)
|
PRIMARY KEY
|
|
flight_id
|
航班编号
|
NUMBER(8)
|
NOT NULL
REFERENCES FLIGHT.id
|
|
passenger_name
|
乘客姓名
|
VARCHAR(40)
|
NOT NULL
|
|
certification_number
|
证件号码
|
VARCHAR(20)
|
NOT NULL
|
|
order_date
|
出票日期
|
DATE
|
NOT NULL
|
|
class
|
舱位等级
|
CHAR(1)
|
NOT NULL CHECK IN(F,C,Y)
|
|
passenger_type
|
乘客类型
|
CHAR(1)
|
NOT NULL CHECK IN(A,C,I)
|
|
branch_id
|
营业网点编号
|
NUMBER(4)
|
NOT NULL
REFERENCES BRANCH.id
|
|
sales_id
|
营业员编号
|
NUMBER(6)
|
NOT NULL
REFERENCES SALES.id
|
|
3, DAO接口设计
1) SalesDAO:
package com.tarena.abs.dao;
import com.tarena.abs.model.*;
/**
* 对营业员数据进行访问的接口。
* @author tangliang
*
*/
public interface SalesDAO{
/**
* 根据给定的姓名和密码在底层数据源中查找营业员的纪录,
* 若找到,则返回该营业员对象,若没找到或密码错误则返回null。
* @param name 营业员姓名
* @param passwd 营业员密码
* @return 找到的营业员对象或null
*/
public Sales getSales(String name,String passwd);
/**
* 向底层数据中添加一个营业员纪录。
* @param user 要添加的营业员对象
* @return 若添加成功返回true,否则返回false。
*/
public boolean addSales(Sales user);
/**
* 根据指定的营业员的姓名在底层数据源中删除该营业员。
* @param name 营业员姓名
* @return 若删除成功返回true,否则返回false。
*/
public boolean removeSales(String name);
/**
* 修改指定营业员的密码。
* @param name 营业员姓名
* @param oldPassword 旧密码
* @param newPassword 新密码
* @return 若修改成功返回true,否则返回false。
*/
public boolean modifyPassword(String name,String oldPassword,String newPassword);
}
|
2) FlightDAO:
package com.tarena.abs.dao;
import java.util.Set;
import java.util.Calendar;
import com.tarena.abs.model.*;
/**
* 对航班和航班计划数据访问的接口。
* @author tangliang
*
*/
public interface FlightDAO{
/**
* 根据指定出发地,目的地和出发日期在底层数据源中查找
* 得到所有的航班对象的集合。
* @param fromAddr 出发地
* @param toAddr 目的地
* @param date 出发日期
* @return 航班集合
*/
public Set getAllFlights(String fromAddr,String toAddr,Calendar date);
/**
* 添加指定的航班计划对象。
* @param fs 要添加的航班计划对象。
* @return 添加成功返回true,否则返回false。
*/
public boolean addFlightScheduler(FlightScheduler fs);
/**
* 根据给定的航班编号在底层数据源中删除该航班计划,以及该计划下的所有航班。
* @param flightNumber 要删除的航班计划的航班编号。
* @return 删除成功返回true,否则返回false。
*/
public boolean removeFlightScheduler(String flightNumber);
/**
* 该方法更新航班--删除过期航班,创建可以接受预订的航班。
* 航班的接受预订期是指从当前日期开始往后60天。
*
*/
public void updateFlights();
/**
* 得到所有航班计划对象
* @return
*/
public Set getAllFlightSchedulars();
}
3) BranchDAO:
package com.tarena.abs.dao;
import com.tarena.abs.model.*;
import java.util.Set;
/**
* 对营业网点数据访问的接口
* @author tangliang
*
*/
public interface BranchDAO {
/**
* 根据给定的编号在底层数据源中查找营业网点的纪录,
* 若找到,则返回该营业网点对象,若没找到则返回null。
* @param id 营业网点编号
*/
public Branch getBranch(int id);
/**
* 查找指定的省份和城市的所有营业网点
* @param province 省份
* @param city 城市
* @return 满足条件的营业网点的集合
*/
public Set<Branch> getAllBranch(String province,String city);
/**
* 向底层数据中添加一个营业网点。
* @param branch 要添加的营业网点对象
* @return 返回该营业网点的编号。
*/
public int addBranch(Branch branch);
/**
* 根据指定的营业网点的名称在底层数据源中删除该营业网点。
* @param name 营业网点名称
* @return 若删除成功返回true,否则返回false。
*/
public boolean removeBranch(String name);
/**
* 根据指定的营业网点的编号在底层数据源中删除该营业网点。
* @param id 营业网点编号
* @return 若删除成功返回true,否则返回false。
*/
public boolean removeBranch(int id);
}
4) TicketOrderDAO:
package com.tarena.abs.dao;
import java.util.Set;
import java.util.Calendar;
import com.tarena.abs.model.*;
/**
* 机票出票记录访问接口
* @author tangliang
*
*/
public interface TicketOrderDAO {
/**
* 执行出票的操作。
* @param ord 订单对象
* @return 若出票成功返回true,否则返回false。
*/
public boolean order(TicketOrder ord);
/**
* 执行退票操作。
* @param TicketNumber 机票编号
* @return 退票成功返回true,否则返回false。
*/
public boolean cancelOrder(int TicketNumber);
/**
* 查询指定营业网点在指定时间段内的出票记录
* @param branch 营业网点
* @param startDate 开始日期
* @param endDate 结束日期
* @return 满足条件的出票记录集合
*/
public Set<TicketOrder> getAllTicketOrder(Branch branch,Calendar startDate,Calendar endDate);
/**
* 查询指定营业员在指定时间段内的出票记录
* @param sales 营业员
* @param startDate 开始日期
* @param endDate 结束日期
* @return 满足条件的出票记录集合
*/
public Set<TicketOrder> getAllTicketOrder(Sales sales,Calendar startDate,Calendar endDate);
/**
* 得到指定营业网点指定日期内的营业额。
* @param branch 营业网点
* @param startDate 开始日期
* @param endDate 结束日期
* @return 营业额
*/
public double getAllTicketMoney(Branch branch,Calendar startDate,Calendar endDate);
/**
* 得到指定营业员指定日期内的营业额。
* @param sales 营业员
* @param startDate 开始日期
* @param endDate 结束日期
* @return 营业额
*/
public double getAllTicketMoney(Sales sales,Calendar startDate,Calendar endDate);
/**
* 得到所有营业网点指定日期内的营业额
* @param startDate 开始日期
* @param endDate 结束日期
* @return 营业额
*/
public double getAllTicketMoney(Calendar startDate,Calendar endDate);
}
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
|
三家子
|
加木斯
|
JMU
|
东郊
|
牡丹江
|
MDG
|
海浪
|
河南
|
郑州
|
CGO
|
新郑
|
洛阳
|
LYA
|
洛阳
|
南阳
|
NNY
|
姜营
|
浙江
|
杭州
|
HGH
|
萧山
|
宁波
|
NGB
|
栎社
|
温州
|
WNZ
|
永强
|
黄岩
|
HYN
|
路桥
|
义乌
|
YIW
|
义乌
|
衢州
|
JUZ
|
|
舟山
|
HSN
|
朱家尖
|
安徽
|
合肥
|
HFE
|
骆岗
|
黄山
|
TXN
|
屯溪
|
安庆
|
AQG
|
大龙山
|
福建
|
福州
|
FOC
|
长乐
|
厦门
|
XMN
|
高崎
|
晋江
|
JJN
|
泉州
|
武夷山
|
WUS
|
武夷山
|
江西
|
南昌
|
KHN
|
昌北
|
九江
|
JIU
|
九江
|
赣州
|
KOW
|
黄金
|
景德镇
|
JDZ
|
|
广东
|
广州
|
CAN
|
白云
|
深圳
|
SZX
|
宝安
|
湛江
|
ZHA
|
湛江
|
珠海
|
ZUH
|
三灶
|
汕头
|
SWA
|
外砂
|
梅县
|
MXZ
|
梅县
|
湖南
|
长沙
|
CSX
|
黄花
|
常德
|
CDG
|
桃花源
|
张家界
|
DYG
|
荷花
|
衡阳
|
HNY
|
|
宁夏
|
银川
|
INC
|
河东
|
山东
|
济南
|
TNA
|
遥墙
|
青岛
|
TAO
|
流亭
|
烟台
|
YNT
|
莱沂
|
潍坊
|
WEF
|
|
威海
|
WEH
|
|
临沂
|
LYI
|
临沂
|
济宁
|
JNG
|
|
云南
|
昆明
|
KMG
|
巫家坝
|
景洪
|
JHG
|
景洪版纳
|
丽江
|
LJG
|
三义
|
大理
|
DLU
|
大理
|
芒市
|
LUM
|
|
中甸
|
DIG
|
中甸
|
香格里拉/迪文
|
保山
|
BSD
|
|
西藏
|
拉萨
|
LXA
|
贡嘎
|
陕西
|
西安
|
SIA
|
咸阳
|
汉中
|
HZG
|
|
延安
|
ENY
|
|
新疆
|
乌鲁木齐
|
URC
|
地窝堡
|
伊宁
|
YIN
|
伊宁
|
喀什
|
KHG
|
喀什
|
库尔勒
|
KRL
|
|
阿克苏
|
AKU
|
阿克苏
|
阿勒泰
|
AAT
|
|
和田
|
HTN
|
和田
|
库车
|
KCA
|
|
且末
|
IQN
|
且末
|
塔城
|
TCG
|
|
阿尔玛塔
|
ALA
|
|
海南
|
海口
|
HAK
|
美兰
|
三亚
|
SYX
|
凤凰
|
湖北
|
武汉
|
WUH
|
天河
|
襄樊
|
XFN
|
刘集
|
沙市
|
SHS
|
|
宜昌
|
YIH
|
三峡
|
恩施
|
ENH
|
|
贵州
|
贵阳
|
KWE
|
龙洞堡
|
铜仁
|
TEN
|
|
四川
|
成都
|
CTU
|
双流
|
万县
|
WXN
|
梁平
|
泸州
|
LZO
|
蓝田
|
宜宾
|
YBP
|
莱坝
|
广元
|
GYS
|
|
绵阳
|
MIG
|
|
西昌
|
XIC
|
青山
|
九寨沟
|
JZH
|
黄龙
|
铜仁
|
TEN
|
|
甘肃
|
兰州
|
LHW
|
中川
|
敦煌
|
DNH
|
|
广西
|
南宁
|
NNG
|
吴墟
|
桂林
|
KWL
|
两江
|
柳州
|
LZH
|
白莲
|
北海
|
BHY
|
福成
|
江苏
|
南京
|
NKG
|
禄口
|
常州
|
CZX
|
牵牛
|
徐州
|
XUE
|
观音
|
连云港
|
LYG
|
白塔埠
|
南通
|
NTG
|
兴东
|
盐城
|
YNZ
|
南洋
|
无锡
|
WUX
|
硕放
|
附录II 民航飞机型号一览表
飞机型号
|
制造厂商
|
最大航程
|
头等舱座位数
|
公务舱座位数
|
经济舱座位数
|
A310-300
|
欧洲空中客车工业公司
|
6820
|
12
|
20
|
204
|
A310-200
|
6820
|
12
|
20
|
228
|
A340-200
|
12510
|
16
|
20
|
340
|
A300-600
|
12510
|
12
|
0
|
274
|
A320
|
5400
|
12
|
0
|
165
|
B747-400COM
|
美国波音飞机制造公司
|
12000
|
20
|
20
|
360
|
B747-400
|
12780
|
20
|
20
|
400
|
B747COM
|
8500
|
12
|
20
|
291
|
B747SP
|
8500
|
12
|
20
|
291
|
B747-300
|
12500
|
24
|
40
|
600
|
B707
|
6300
|
8
|
0
|
155
|
B767-200
|
5800
|
12
|
20
|
214
|
B767-300
|
5800
|
12
|
20
|
225
|
B757-200
|
美国波音飞机制造公司
|
5890
|
12
|
12
|
200
|
B737-200
|
4300
|
12
|
20
|
218
|
B737-300
|
2923
|
12
|
0
|
248
|
B737-500
|
2580
|
12
|
0
|
133
|
B777-200A
|
9000
|
12
|
0
|
380
|
B777-200B
|
5400
|
12
|
20
|
292
|
MD-82
|
美国麦克唐纳-道格拉斯公司
|
5000
|
12
|
0
|
145
|
MD-90
|
5400
|
12
|
0
|
153
|
MD-11
|
12500
|
20
|
20
|
340
|
BAE146-100
|
英国宇航公司
|
2100
|
8
|
0
|
88
|
BAE146-300
|
1800
|
8
|
0
|
122
|
YAK-42
|
俄罗斯柳辛设计集团
|
2300
|
12
|
0
|
120
|
TU-154M
|
5800
|
12
|
12
|
164
|
IL-86
|
12000
|
12
|
20
|
350
|
FOK-100
|
荷兰福克公司
|
6800
|
8
|
0
|
108
|
YN7
|
西安飞机制造厂
|
2700
|
4
|
|
48
|
S34
|
瑞典
|
2100
|
0
|
0
|
35
|
MD23
|
美国
|
1500
|
0
|
0
|
16
|
ATR
|
法国
|
1800
|
8
|
0
|
60
|
328
|
美国
|
2100
|
0
|
0
|
32
|
DH8
|
加拿大
|
2500
|
4
|
0
|
52
|