用java中的面向对象设计汽车租赁系统
时间: 2024-05-04 20:20:52 浏览: 24
好的,我可以为你设计一个简单的汽车租赁系统,以下是我的设计方案:
1. 定义Car类,包含属性:车牌号、品牌、型号、日租金、是否可租、借出日期、归还日期等。
```java
public class Car {
private String plateNumber;
private String brand;
private String model;
private double dailyRental;
private boolean isAvailable;
private Date borrowedDate;
private Date returnDate;
// 构造函数
public Car(String plateNumber, String brand, String model, double dailyRental) {
this.plateNumber = plateNumber;
this.brand = brand;
this.model = model;
this.dailyRental = dailyRental;
this.isAvailable = true;
}
// getter和setter方法
// ...
}
```
2. 定义RentSystem类,包含属性:车辆列表、租赁记录列表等。
```java
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class RentSystem {
private List<Car> carList;
private List<RentalRecord> recordList;
public RentSystem() {
this.carList = new ArrayList<>();
this.recordList = new ArrayList<>();
}
// 添加车辆到列表中
public void addCar(Car car) {
carList.add(car);
}
// 租车
public void rentCar(Car car, Date date) {
if (car.isAvailable()) {
car.setAvailable(false);
car.setBorrowedDate(date);
RentalRecord record = new RentalRecord(car, date);
recordList.add(record);
} else {
System.out.println("该车已被租出!");
}
}
// 还车
public void returnCar(Car car, Date date) {
if (!car.isAvailable()) {
car.setAvailable(true);
car.setReturnDate(date);
RentalRecord record = findRecord(car);
record.setReturnDate(date);
double rentalFee = calculateFee(record);
record.setRentalFee(rentalFee);
} else {
System.out.println("该车未被租出!");
}
}
// 根据车牌号查找车辆
public Car findCar(String plateNumber) {
for (Car car : carList) {
if (car.getPlateNumber().equals(plateNumber)) {
return car;
}
}
return null;
}
// 查找租赁记录
public RentalRecord findRecord(Car car) {
for (RentalRecord record : recordList) {
if (record.getCar() == car && record.getReturnDate() == null) {
return record;
}
}
return null;
}
// 计算租金
public double calculateFee(RentalRecord record) {
Date borrowDate = record.getBorrowDate();
Date returnDate = record.getReturnDate();
long days = (returnDate.getTime() - borrowDate.getTime()) / (24 * 60 * 60 * 1000);
return days * record.getCar().getDailyRental();
}
}
```
3. 定义RentalRecord类,包含属性:租赁车辆、借出日期、归还日期、租金等。
```java
import java.util.Date;
public class RentalRecord {
private Car car;
private Date borrowDate;
private Date returnDate;
private double rentalFee;
// 构造函数
public RentalRecord(Car car, Date borrowDate) {
this.car = car;
this.borrowDate = borrowDate;
}
// getter和setter方法
// ...
}
```
以上是我的简单设计方案,你可以根据实际需求进行修改和完善。