要设计一个编程巴士停车场系统,你需要考虑以下几个关键点:
数据结构设计
停车场类:需要记录停车场的总容量、当前已占用的车位数以及空闲车位数。
车辆类:需要记录车辆编号、当前位置以及进入停车场的时间等信息。
队列和栈:可以使用队列来管理进入停车场的车辆,使用栈来管理离开停车场的车辆。
功能实现
车辆进入:检查停车场是否已满,如果未满,则车辆可以进入停车场,并记录车辆位置。
车辆离开:检查车辆是否在停车场内,如果在,则记录离开时间并释放车位,同时更新相关数据结构。
费用计算:根据车辆在停车场内的停留时间计算费用。
用户界面
可以提供一个简单的命令行界面,让用户输入车辆信息并进行管理。
```java
import java.util.LinkedList;
import java.util.Queue;
class ParkingLot {
private int capacity;
private int occupied;
private Queue
public ParkingLot(int capacity) {
this.capacity = capacity;
this.occupied = 0;
this.queue = new LinkedList<>();
}
public void enter(Car car) {
if (occupied < capacity) {
queue.add(car);
occupied++;
System.out.println("车辆 " + car.getNumber() + " 进入停车场,当前停车场占用 " + occupied + " 个车位。");
} else {
System.out.println("停车场已满,车辆 " + car.getNumber() + " 需要等待。");
}
}
public void leave(Car car) {
if (!queue.isEmpty() && queue.peek().getNumber().equals(car.getNumber())) {
queue.poll();
occupied--;
System.out.println("车辆 " + car.getNumber() + " 离开停车场,当前停车场占用 " + occupied + " 个车位。");
} else {
System.out.println("车辆 " + car.getNumber() + " 不在停车场内,无法离开。");
}
}
public int getOccupied() {
return occupied;
}
public int getFree() {
return capacity - occupied;
}
}
class Car {
private String number;
private int position;
public Car(String number) {
this.number = number;
this.position = 0;
}
public String getNumber() {
return number;
}
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
}
public class Main {
public static void main(String[] args) {
ParkingLot parkingLot = new ParkingLot(50);
// 模拟车辆进入停车场
parkingLot.enter(new Car("A1"));
parkingLot.enter(new Car("A2"));
parkingLot.enter(new Car("A3"));
// 模拟车辆离开停车场
parkingLot.leave(new Car("A1"));
parkingLot.leave(new Car("A2"));
// 查看停车场状态
System.out.println("当前停车场占用 " + parkingLot.getOccupied() + " 个车位,空闲 " + parkingLot.getFree() + " 个车位。");
}
}
```
这个示例代码展示了如何使用Java实现一个简单的停车场系统,包括车辆进入、离开以及停车场状态的查看。你可以根据实际需求扩展这个系统,例如添加更多的功能,如费用计算、用户界面等。