Browse Source

上传文件至 'w3'

main
JiangYouhan 4 weeks ago
parent
commit
ecd6c4e037
  1. 107
      w3/Car.java
  2. 61
      w3/TestCar.java
  3. 29
      w3/实验报告.md

107
w3/Car.java

@ -0,0 +1,107 @@
package com.rental;
public class Car {
// 私有属性
private final String licensePlate; // 车牌号(不可变)
private String brand; // 品牌
private String model; // 型号
private double dailyRent; // 日租金
private boolean isRented; // 租出状态
// 静态变量(选做)
private static int totalCars = 0;
// 全参构造方法
public Car(String licensePlate, String brand, String model, double dailyRent) {
this.licensePlate = licensePlate;
this.brand = brand;
this.model = model;
this.dailyRent = dailyRent;
this.isRented = false; // 初始化为未租出
totalCars++; // 创建车辆时总数加1
}
// 三参构造方法(日租金使用默认值300)
public Car(String licensePlate, String brand, String model) {
this(licensePlate, brand, model, 300.0); // 调用全参构造
}
// Getter方法
public String getLicensePlate() {
return licensePlate;
}
public String getBrand() {
return brand;
}
public String getModel() {
return model;
}
public double getDailyRent() {
return dailyRent;
}
public boolean isRented() {
return isRented;
}
// Setter方法
public void setBrand(String brand) {
this.brand = brand;
}
public void setModel(String model) {
this.model = model;
}
public void setDailyRent(double dailyRent) {
if (dailyRent > 0) {
this.dailyRent = dailyRent;
} else {
System.out.println("错误:日租金必须大于0,保持原值:" + this.dailyRent);
}
}
// 业务方法:租车
public void rentCar() {
if (isRented) {
System.out.println("车辆已租出,无法再次租用");
} else {
isRented = true;
System.out.println("车辆 " + licensePlate + " 租用成功");
}
}
// 业务方法:还车
public void returnCar() {
if (!isRented) {
System.out.println("车辆未被租用,无需归还");
} else {
isRented = false;
System.out.println("车辆 " + licensePlate + " 归还成功");
}
}
// 业务方法:计算租金
public double calculateRent(int days) {
return dailyRent * days;
}
// 显示车辆信息的方法
public void displayInfo() {
System.out.println("========== 车辆信息 ==========");
System.out.println("车牌号:" + licensePlate);
System.out.println("品牌:" + brand);
System.out.println("型号:" + model);
System.out.println("日租金:" + dailyRent + "元/天");
System.out.println("租出状态:" + (isRented ? "已租出" : "未租出"));
System.out.println("================================");
}
// 静态方法
public static int getTotalCars() {
return totalCars;
}
}

61
w3/TestCar.java

@ -0,0 +1,61 @@
package com.rental;
public class TestCar {
public static void main(String[] args) {
System.out.println("========== 车辆管理系统测试 ==========\n");
// 1. 创建3个Car对象(使用不同构造方法)
System.out.println("--- 创建车辆对象 ---");
Car car1 = new Car("京A12345", "宝马", "X5", 500.0);
Car car2 = new Car("沪B67890", "奔驰", "E300", 600.0);
Car car3 = new Car("粤C34567", "奥迪", "A6"); // 使用默认租金300
// 2. 输出所有车辆信息
System.out.println("\n--- 所有车辆信息 ---");
car1.displayInfo();
car2.displayInfo();
car3.displayInfo();
// 3. 测试租车功能
System.out.println("\n--- 测试租车功能 ---");
System.out.println("第一次租车:");
car1.rentCar(); // 第一次租车
System.out.println("\n第二次租车(同一辆车):");
car1.rentCar(); // 第二次租车,应该提示已租出
System.out.println("\n第三次租车(同一辆车):");
car1.rentCar(); // 第三次租车,应该提示已租出
// 4. 测试计算租金
System.out.println("\n--- 测试租金计算 ---");
int days = 5;
double rent = car1.calculateRent(days);
System.out.println("车辆 " + car1.getLicensePlate() + " 租用 " + days + " 天的租金为:" + rent + "元");
// 5. 测试还车功能
System.out.println("\n--- 测试还车功能 ---");
System.out.println("第一次还车:");
car1.returnCar(); // 还车
System.out.println("\n第二次还车(同一辆车):");
car1.returnCar(); // 再次还车,应该提示未租出
// 6. 测试setter方法
System.out.println("\n--- 测试setter方法 ---");
System.out.println("原日租金:" + car2.getDailyRent());
System.out.println("尝试设置日租金为-100:");
car2.setDailyRent(-100);
System.out.println("修改后日租金:" + car2.getDailyRent());
System.out.println("\n尝试设置日租金为800:");
car2.setDailyRent(800);
System.out.println("修改后日租金:" + car2.getDailyRent());
// 7. 测试静态变量
System.out.println("\n--- 统计信息 ---");
System.out.println("总共创建的车辆数:" + Car.getTotalCars());
System.out.println("\n========== 测试完成 ==========");
}
}

29
w3/实验报告.md

@ -0,0 +1,29 @@
# Java实验报告:车辆管理系统中的Car类
## 一、实验目的
1. 巩固封装的基本实现:私有属性 + 公有getter/setter
2. 练习构造方法的重载以及this关键字的作用
3. 掌握在业务方法中加入数据校验,保护对象状态的合法性
4. 能够编写测试类验证类的功能
## 二、类图
## 三、核心代码
### 1. 构造方法重载
```java
// 全参构造
public Car(String licensePlate, String brand, String model, double dailyRent) {
this.licensePlate = licensePlate;
this.brand = brand;
this.model = model;
this.dailyRent = dailyRent;
this.isRented = false;
totalCars++;
}
// 三参构造(使用this()调用全参构造)
public Car(String licensePlate, String brand, String model) {
this(licensePlate, brand, model, 300.0);
}
Loading…
Cancel
Save