我正在航空公司预订系统上创建一个OOP。飞机将有头等舱(2排,每排4席(座位为A、B、C、D))和经济舱(20排,每排6席(座位为A、B、D、E、F)。这一排由一条过道隔开。
用户将输入他的名字,类别规格,和座位偏好(窗口,过道,中心),它将找到第一个可用的座位,让用户进入。
例如。
名称:约翰·史密斯级:经济舱座位选择:中心
结果:
第三排B座名叫约翰·史密斯
我的问题是,怎样才能在适当的座位安排下,产生第一位和经济型的建筑工人?我能用一张排列表吗?或者是一个二维排列,每排都有座位和座位?或者完全是别的什么?
谢谢!
发布于 2015-02-08 08:38:43
从班级座位开始,属性位置:窗口,中间,过道和位置'A','B',.
public enum Location { WINDOW, CENTER, AISLE }
public class Seat {
private Location loc;
private char pos; // A, B, C...
public Seat( Location loc, char pos ){...}
//...
}创建类行,在商业和经济中创建子类:构造函数负责创建适当的席位。座位可以列在列表中,并添加编号作为行的属性。
public abstract class Row {
private int number;
private List<Seat> seats = new ArrayList<>();
protected Row( int number ){ ... }
public void addSeat( Seat seat ){...}
public Seat findSeat( Location loc ){...}
}
public class Business extends Row {
public Business( int number ){
super( number );
addSeat( Location.WINDOW, 'A' ); // continue as required
}
}
public class Economy extends Row {
public Economy( int number ){
super( number );
addSeat( Location.WINDOW, 'A' );
addSeat( Location.CENTER, 'B' ); // continue as required
}
}创建使用Business填充其List<Row>的类平面,设置行号(确保省略第13行)。
public class Plane {
private static final NUM_BUSINESS = 2;
private static final NUM_ECONOMY = 20;
private List<Row> rows = new ArrayList<>();
public Plane(){
int iRow = 1;
for( int i = 0; i < NUM_BUSINESS; ++i ){
rows.add( new Business( iRow++ ) );
}
// similar for Economy
}
public Seat findSeat( boolean business, Location loc ){
// ...
}
}https://stackoverflow.com/questions/28391748
复制相似问题