java实现停车场计费
时间: 2023-08-16 12:05:52 浏览: 198
实现停车场计费的大致流程如下:
1. 记录车辆进入停车场的时间和车牌号等信息,生成一个停车记录。
2. 当车辆准备离开停车场时,查询该车辆的停车记录,记录离开时间。
3. 根据停车时间计算停车费用。计费方式可以按照时间段、车型等进行不同的设置。
4. 收取停车费用并更新停车记录的状态为已结算。
以下是使用 Java 实现停车场计费的代码示例:
```java
import java.util.Date;
public class ParkingRecord {
private String licensePlateNumber; // 车牌号
private Date entryTime; // 进入时间
private Date exitTime; // 离开时间
private boolean hasPaid; // 是否已付款
public ParkingRecord(String licensePlateNumber, Date entryTime) {
this.licensePlateNumber = licensePlateNumber;
this.entryTime = entryTime;
this.exitTime = null;
this.hasPaid = false;
}
public String getLicensePlateNumber() {
return licensePlateNumber;
}
public Date getEntryTime() {
return entryTime;
}
public Date getExitTime() {
return exitTime;
}
public void setExitTime(Date exitTime) {
this.exitTime = exitTime;
}
public boolean isHasPaid() {
return hasPaid;
}
public void setHasPaid(boolean hasPaid) {
this.hasPaid = hasPaid;
}
// 计算停车时间,单位为分钟
public int getParkingTime() {
long diff = exitTime.getTime() - entryTime.getTime();
return (int) (diff / (1000 * 60));
}
// 计算停车费用
public double calculateFee() {
int parkingTime = getParkingTime();
double fee = 0.0;
if (parkingTime <= 30) {
fee = 0.0;
} else if (parkingTime <= 120) {
fee = (parkingTime - 30) * 0.05;
} else if (parkingTime <= 240) {
fee = 4.5 + (parkingTime - 120) * 0.1;
} else {
fee = 12.5 + (parkingTime - 240) * 0.2;
}
return fee;
}
}
```
在主程序中,可以使用一个 List 来存储所有的停车记录,实现车辆进入和离开停车场的操作以及计算停车费用的过程:
```java
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
public class ParkingLot {
private List<ParkingRecord> records;
public ParkingLot() {
this.records = new ArrayList<>();
}
// 车辆进入停车场
public void enter(String licensePlateNumber, Date entryTime) {
ParkingRecord record = new ParkingRecord(licensePlateNumber, entryTime);
records.add(record);
System.out.println("车辆 " + licensePlateNumber + " 已进入停车场,入场时间为 " + entryTime);
}
// 车辆离开停车场
public void exit(String licensePlateNumber, Date exitTime) {
ParkingRecord record = findRecordByLicensePlateNumber(licensePlateNumber);
if (record == null) {
System.out.println("找不到车辆 " + licensePlateNumber + " 的停车记录");
return;
}
record.setExitTime(exitTime);
double fee = record.calculateFee();
record.setHasPaid(true);
System.out.println("车辆 " + licensePlateNumber + " 已离开停车场,停车费用为 " + fee + " 元");
}
// 查找车辆的停车记录
private ParkingRecord findRecordByLicensePlateNumber(String licensePlateNumber) {
for (ParkingRecord record : records) {
if (record.getLicensePlateNumber().equals(licensePlateNumber)) {
return record;
}
}
return null;
}
public static void main(String[] args) {
ParkingLot parkingLot = new ParkingLot();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入操作代码:1-进入停车场,2-离开停车场,3-退出程序");
int code = scanner.nextInt();
if (code == 1) {
System.out.println("请输入车牌号:");
String licensePlateNumber = scanner.next();
Date entryTime = new Date();
parkingLot.enter(licensePlateNumber, entryTime);
} else if (code == 2) {
System.out.println("请输入车牌号:");
String licensePlateNumber = scanner.next();
Date exitTime = new Date();
parkingLot.exit(licensePlateNumber, exitTime);
} else if (code == 3) {
break;
} else {
System.out.println("无效的操作代码!");
}
}
scanner.close();
}
}
```