【发布时间】:2021-04-03 11:18:38
【问题描述】:
我正在尝试做一个订票系统。 客户可以选择的方法之一是 makeOrder()。在这种方法中,他选择票数,然后我想给他 10 分钟的时间来选择座位。如果他选择了它们并确认了订单,那么该方法应该结束并且他可以再次从 MainMenu 中选择选项。如果他在 10 分钟内没有选择座位,我想删除订单,通知他并显示 MainMenu。我不知道该怎么做。谁能帮帮我。
pseudocode
public class MainMenu{
public void handle(String option) {
switch (option) {
case "1": showScreenings(); break;
case "2": makeOrder(); break;
default: System.out.println("Unknown option"); break;
}
}
private void makeOrder(){
// customer selects number of tickets and then order is created
Order order = new Order()
// here I want to give a customer 10 minutes to select seats so I tried it with Timer
// but it deletes the order but still waiting for the input of the customer
Timer t = new java.util.Timer();
t.schedule( new java.util.TimerTask() {
@Override
public void run() {
if (order.getOrderedDateTime() == null){
try {
order.delete();
System.out.println("Time out");
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
t.cancel();
}
}, TimeUnit.MINUTES.toMillis(10));
//code to select seats
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String seats = br.readline() // if he doesnt select seats in 10 minutes I want to delete order
//reserve seats and confirm order
order.confirm();
}
}
【问题讨论】: