假设自习室有30个座位,50个学生需先预定才能在自习室上自习。当自习室座位全部被预定后,其余学生需要等待。当学生完成自习任务后,需取消预定的座位,以便其他等待的学生能够预定。设计一个尽量完整的java程序实现上述功能。
时间: 2024-03-10 13:48:58 浏览: 152
好的,根据您的需求,我可以提供以下Java程序来实现自习室座位预定和取消预定的功能:
```java
import java.util.Scanner;
public class StudyRoomBooking {
// 定义一个布尔类型的数组,表示自习室座位是否被预定
private static boolean[] seats = new boolean[30];
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (true) {
// 显示自习室座位情况
System.out.println("当前自习室座位情况:");
for (int i = 0; i < seats.length; i++) {
if (seats[i]) {
System.out.print("[ " + (i + 1) + "号座位:已预订 ] ");
} else {
System.out.print("[ " + (i + 1) + "号座位:可预订 ] ");
}
}
System.out.println();
// 判断是否有座位可以预定
boolean isAvailable = false;
for (int i = 0; i < seats.length; i++) {
if (!seats[i]) {
isAvailable = true;
break;
}
}
// 如果没有座位可以预定,则提示等待
if (!isAvailable) {
System.out.println("自习室座位已全部被预定,请等待...");
continue;
}
// 提示学生输入座位号
System.out.print("请输入您要预定的座位号:");
int seatNo = input.nextInt();
// 判断座位号是否合法
if (seatNo < 1 || seatNo > 30) {
System.out.println("座位号不合法,请重新输入!");
continue;
}
// 判断座位是否已被预定
if (seats[seatNo - 1]) {
System.out.println("该座位已被预定,请重新选择!");
continue;
}
// 预定座位并提示预定成功
seats[seatNo - 1] = true;
System.out.println("恭喜您,预定成功!");
// 提示学生是否取消预定
System.out.print("是否取消预定?(Y/N)");
String choice = input.next();
// 如果选择取消预定,则取消预定座位
if (choice.equalsIgnoreCase("Y")) {
seats[seatNo - 1] = false;
System.out.println("您已成功取消预定!");
}
}
}
}
```
这个程序中,我们定义了一个长度为30的布尔类型数组seats,表示自习室座位是否被预定。当一个学生选择预定座位时,程序会检查该座位是否已被预定,如果没有则将该座位标记为已预定,并提示预定成功;如果该座位已被预定,则提示学生重新选择座位。当一个学生完成自习任务后,可以选择取消预定座位,以便其他等待的学生能够预定。程序会不断循环,直到所有座位都被预定。
阅读全文