展开全部
今天比较闲, 编了一套,一共4个 class。不懂62616964757a686964616fe59b9ee7ad9431333335303462再问。
这格式真要命,凑活看吧。public enum AirClass{
FIRST,
SECOND,
THIRD
}
--------------------------------------------
public class Customer{
private String name;
private int ticketNumber;
private AirClass airClass;
public Customer(String name, int ticketNumber, AirClass airClass){
this.name = name;
this.ticketNumber = ticketNumber;
this.airClass = airClass;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getTicketNumber() { return ticketNumber; }
public AirClass getAirClass() { return airClass; }
}
------------------------------------------------
import java.util.LinkedList;
import java.util.List;
public class AirLine {
private String destination;
private String flightName;
private String flightNumber;
private int dayOfWeek;
private int capacity;
private int remainder;
private List booking = new LinkedList();
private List preBooking = new LinkedList();
public AirLine(String destination, String flightName, String flightNumber, int dayOfWeek, int capacity) {
this.destination = destination;
this.flightName = flightName;
this.flightNumber = flightNumber;
this.dayOfWeek = dayOfWeek;
this.capacity = capacity;
this.remainder = capacity; }
public String getDestination() { return destination; }
public String getFlightName() { return flightName; }
public String getFlightNumber() { return flightNumber; }
public int getDayOfWeek() { return dayOfWeek; }
public int getCapacity() { return capacity; }
public int getRemainder() { return remainder; }
public List getBooking() { return booking; }
public List getPreBooking() { return preBooking; }
public boolean addBooking(Customer c) {
if (this.remainder >= c.getTicketNumber()) {
this.remainder = this.remainder - c.getTicketNumber();
this.booking.add(c);
return true;
} else {
this.preBooking.add(c);
return false;
}
}
public void removeBooking(Customer c) {
if (this.booking.contains(c)) {
this.booking.remove(c);
this.remainder = this.remainder + c.getTicketNumber();
} else {
throw new IllegalArgumentException("Customer not found.");
}
}
public void removePreBooking(Customer c) {
if (this.preBooking.contains(c)) {
this.preBooking.remove(c);
} else {
throw new IllegalArgumentException("Customer not found.");
}
}
public String toString() {
return this.flightName + ": " + this.flightNumber + ": "
+ this.dayOfWeek + ": " + this.remainder;
}
}
---------------------------------
import java.util.Calendar;import java.util.Date;
import java.util.LinkedList;import java.util.List;
import java.util.concurrent.TimeUnit;
public class Main {
private List airLines = new LinkedList();
private void init() {
final AirLine airLine1 = new AirLine("beijing", "flightName", "flightNumber", Calendar.MONDAY, 300);
this.airLines.add(airLine1);
// 自己加新的 airLine2, airLine3 ...
final Customer customer1 = new Customer("Tom", 2, AirClass.FIRST);
airLine1.addBooking(customer1);
// 自己加新的 customer2, customer3 ...
}
public AirLine search(String destination) {
if (destination == null) return null;
final int currenDayOfWeek = Calendar.getInstance().get( Calendar.DAY_OF_WEEK);
AirLine res = null;
int diffToCurrenDate = 7;
for (AirLine a : airLines) {
if (destination.equals(destination)) {
if (res == null) {
res = a;
continue;
}
int diff = a.getDayOfWeek() - currenDayOfWeek;
if (diff
if (diff
diffToCurrenDate = diff;
res = a;
}
}
}
if (res == null) {
System.out.println("Not found");
} else {
System.out.println("日期 " + new Date(System.currentTimeMillis() + TimeUnit.DAYS.toMillis(diffToCurrenDate)) + " : " + res.toString());
}
return res;
}
public void booking(AirLine a, Customer c) {
if (a.addBooking(c)) {
System.out.println("订到了");
} else {
System.out.println("排队中");
}
}
public void cancel(AirLine a, Customer c) {
a.removeBooking(c);
for (Customer pre : a.getPreBooking()) {
if (a.addBooking(pre)) {
a.removePreBooking(pre);
System.out.println("排队的订到了");
break;
} else {
System.out.println("票余量不够当前面排队的人, 下一个");
}
}
}
}