案例JAVA Gui+API Eclipse Project:JAVA 航空管理系统
当前位置:以往案例 > >案例JAVA Gui+API Eclipse Project:JAVA 航空管理系统
2017-12-25

JAVA

航空管理系统

包含欧洲的机场和机场之间航行的飞机。 后者为随机情况,以图像形式展示。

人(GUI), 程序(API

1、 系统, 实现API

2、 Test harness, 使用API测试系统

3、 基本的GUI, 可以控制和观察到系统运行。必须使用API

Java Eclipse Project

Oxygen version with JDK 1.8

需求:

系统包含机场和飞机,都呈现在欧洲地图上。系统以ticks”进行,飞机都从出发点到达目的地。

已给:描述API的接口,欧洲地图,input例子。

API

ISimulation, IPlane, IAirport, ISimulationPublisher, SimulationListener, ISimulationIO, ISimulationLoader, ISimulationLogger

具体的class: GridLocation, SimulationEvent, Traffic, SimulationException

一、

1.1 Class Airport

Airport 实行接口IAirport

至少包含public Airport ( String code,

String name,

GridLocation location)

1.2  Class Plane

Plane 实行接口IPlane

至少包含 public Plane ( String callsign)

1.3  Class ATMSimulation

ATMSimulation 实行接口ISimulation

至少包含默认结构 public STMSimulation ()

实现getPlane(), getPlanes(), getAirport(), getAirports(), getMapDimensions(), setMapDimensions(), movePlaneTo().

实现tick()方法

实现getSimTime()方法

如果客户尝试以同一个呼号增加两架飞机,addPlane() 方法扔出SimulationException

如果给一架新飞机无效的机场作为起始或到达站, addPlane()方法扔出SimulationException()

当飞机到达目的地,让飞机在系统和GUI上消失(飞机应该在到达后落在不同的tick上)

飞机从机场随机起飞,IAirport.setTakeOffProb()设置每个tick可能性

可能性设置为0,1两位数,1为飞机起飞

当新飞机起飞后,它应该出现在出发机场的相同位置

第一架飞机起飞应该称为_001, 例如LHR_001, LHR_002

新飞机不能在起飞的tick上移动

目的地为随机的,但不能是起飞的机场

如果没有其他机场,没有飞机可以起飞

默认下,新机场的飞机不能起飞

要为所有的classes建立JUnit test,使用version 4 来进行测试。 Unit test必须在另一个package, 命名为japrc.test

二、I/O 需要重构类ATMSimulation

2.1 检测并记录airprox incidents

意为当两架飞机过于靠近。当两架飞机在tick出现在相同的格子时,发生airprox

每一个airprox应该记录一次。如果p1p2一起出现airprox,只记录一个。

名字应为callsign1, callsign2, x, y, time   2callsigns代表两架飞机相撞时,xy为碰撞坐标,time为碰撞发生时间,例如p1, p2, 10, 12, 15; p2, p3, 15, 17, 20。 时间应为相同或增量。文件名为airprox_log_txt

2.2 实现类 SimulationTextLoader, 这个类实现ISimulationLoader.SimulatioinTextLoader至少包含 public SimulationTextLoader ( InputStream airports, InputStream traffic)…

airports 包含机场的信息, traffic包含交通的信息。SimulationTextLoader可以启用应用从文件中读取。文件名字包含line,每一个line被新的line分隔开,如

callsign, source, destination, x, y

x, y为此时飞机坐标, 例如p1, LHR, TXL, 10, 12; P2, LHR, MAN, 15, 27

应要通过ISimulationLoader, 使用ISimulation.loadTraffic()方法,来将内容提供给文件。不能使用其他方法。

traffic从文件中装载,它应替换已存在的traffic

三、GUI 需要重构ATMSimulation

3.1 GUI要实现SimulationListener界面,和 通过来自ATMSimulation实现的ISimulationPublisheraddSimulationListener()方法的,用ATMSimulation的注册。 每个对ATMSimulation的更改都要通过notifySimHasChange()方法展示在GUI上。

3.2 增加一个有所有机场的表单,允许使用者选择其中一个。一旦被选择,出现另两个表单出发和到达表。

每一个机场都要有名字,代码和地点

到达表应有所有正在飞往这里的飞机

出发表应有所有从此处出发,但还没有到达的飞机

图片12.png

3.3 当飞机到达后,在GUI的出发表上将该飞机去掉。

3.4 默认下,新机场的起飞概率为0,在GUI上所有机场应设为0.01

3.5 GUI上设置欧洲地图,大小适当。

3,6 在每一个tick上,地图上用交叉表示机场,点表示飞机,适当大小和颜色。系统的格和地图的像素比例为1:5, 例如格的坐标为(1012),地图上应为(50,60);如果飞机和机场重叠,飞机的点应在上;方向箭头要在地图左上角。

3.7 当飞机或机场在GUI上被选中时,图标颜色相应变化。

3.8 GUI,用户应可以选择机场或飞机。当被选中时,在表单里的相应机场或飞机也应被选中,也要更改颜色。对机场来说,若机场被选中,到达和出发表也要改变。

3.9 GUI里,航班号和机场代号在飞机和机场下面,添加一个按钮来切换。

3.10 GUI添加一个按钮,切换playpause, 使用start()pause()方法。刚开始,GUI应该在pause状态;在play模式下,应禁用tick按钮;GUI随时更新

3.11 增加一个现实airprox incidents的功能

3.12 增加一个按钮,从文本文件中装载traffic airport

四、文件格式:

所有文件都应在默认下。Eclipse project directory。对于所有的文件,至少要创建一个自己的文件,为了testing

4.1 Airporx Log File

callsign1, callsign2, x, y, time

p1, p2, 10, 12, 15

p2, p3, 15, 17,20

4.2 Traffic File

callsign, source, destination, x, y

p1, LHR, TXL,10, 12

p2, LHR, MAN, 15, 27

Traffic file可以为空。 加载一个文件之后,系统中应没有飞机。文件名为traffic.txt



在线提交订单