Java实现停车场系统攻略
系统设计
- 初步确定系统需求
停车场系统需要实现两个功能,分别是车辆进入停车场和车辆离开停车场,并实现计费功能。
- 分析系统设计需求
系统设计需要涉及的类有停车场类 ParkingLot、车类 Car、计时器类 Timer、收费类 Fees,以及一个 main 函数。
其中停车场类需要实现车辆进入停车场、车辆离开停车场、查询剩余车位数和停车费用等方法。
车类需要拥有车牌号码和停车时间等信息。
计时器类需要记录停车时间。
收费类需要计算停车费用。
- 设计类之间的关系
停车场类需要使用 Car 和 Timer 类来记录车辆进出停车场的时间,以便计算停车时间和停车费用。收费类需要使用计时器类和车类计算停车费用。
代码实现
ParkingLot 类
import java.util.ArrayList;
public class ParkingLot {
private int maxSize;
private ArrayList<Car> parkedCars;
private int fees = 5;
public ParkingLot(int maxSize) {
this.maxSize = maxSize;
parkedCars = new ArrayList<>();
}
public boolean park(Car car) {
if (parkedCars.size() >= maxSize) {
return false;
} else {
parkedCars.add(car);
return true;
}
}
public int leave(String license) {
for (int i = 0; i < parkedCars.size(); ++i) {
Car car = parkedCars.get(i);
if (car.getLicense().equals(license)) {
parkedCars.remove(i);
Fees fees = new Fees(car.getEnterTime());
return fees.getFees();
}
}
return -1;
}
public int getAvailableNumber() {
return maxSize - parkedCars.size();
}
public int getFees() {
return fees;
}
}
Car 类
import java.util.Date;
public class Car {
private String license;
private Date enterTime;
public Car(String license, Date enterTime) {
this.license = license;
this.enterTime = enterTime;
}
public String getLicense() {
return license;
}
public Date getEnterTime() {
return enterTime;
}
}
Fees 类
public class Fees {
private final int unitPrice = 2;
private final int initHour = 3;
private final int initCost = 5;
private long startTime;
public Fees(long startTime) {
this.startTime = startTime;
}
public int getFees() {
long duration = (System.currentTimeMillis() - startTime) / 3600000;
if (duration < initHour) {
return initCost;
} else {
return (int) (duration - initHour) * unitPrice + initCost;
}
}
}
示例
下面是一个基于 ParkingLot 类的使用示例:
import java.util.Date;
public class Test {
public static void main(String[] args) {
ParkingLot parkingLot = new ParkingLot(10);
Car car1 = new Car("苏E88888", new Date());
Car car2 = new Car("苏E77777", new Date());
boolean ok = parkingLot.park(car1);
if (!ok) {
System.out.println("停车失败,车位已满");
} else {
System.out.println("停车成功");
}
ok = parkingLot.park(car2);
if (!ok) {
System.out.println("停车失败,车位已满");
} else {
System.out.println("停车成功");
}
int fees = parkingLot.leave("苏E88888");
if (fees == -1) {
System.out.println("车牌号不存在或车位已空");
} else {
System.out.println("离开费用:" + fees);
}
}
}
输出:
停车成功
停车成功
离开费用:5
总结
实现一个停车场系统,主要需要设计停车场类、车类和收费计算类,其中停车场类实现了车辆入场、出场和查询剩余车位等功能,车类记录车牌号和停车时间,收费计算类负责计算停车费用。达到以上效果即可实现一个简单的停车场系统。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现停车场系统 - Python技术站