From 0f857bbef2c03a1d4fa907e65d405dc6c9f6ade4 Mon Sep 17 00:00:00 2001 From: pfvwqyiue <2494606795@qq.com> Date: Sat, 25 Oct 2025 13:16:08 +0800 Subject: [PATCH] ADD file via upload --- MaintenanceSystem.java | 244 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 MaintenanceSystem.java diff --git a/MaintenanceSystem.java b/MaintenanceSystem.java new file mode 100644 index 0000000..fc1f792 --- /dev/null +++ b/MaintenanceSystem.java @@ -0,0 +1,244 @@ +package com.automobile.service; + +import com.automobile.model.Car; +import com.automobile.parts.Engine; +import com.automobile.parts.Piston; +import com.automobile.parts.SteeringWheel; +import com.automobile.parts.Seat; +import com.automobile.parts.Transmission; +import com.automobile.parts.Wheel; +import com.automobile.system.ElectronicSystem; +import com.automobile.system.ElectronicControlUnit; + +import java.util.ArrayList; +import java.util.List; + +/** + * 汽车维修系统类 + * 展示组合关系中部件的更换和维修 + */ +public class MaintenanceSystem { + private String garageName; + private List serviceHistory; + + /** + * 构造方法 + * @param garageName 修理厂名称 + */ + public MaintenanceSystem(String garageName) { + this.garageName = garageName; + this.serviceHistory = new ArrayList<>(); + } + + /** + * 执行常规保养 + * @param car 要保养的汽车 + */ + public void performRegularMaintenance(Car car) { + System.out.println("\n===== 开始常规保养 ====="); + System.out.println("车辆: " + car.getBrand() + " " + car.getModel()); + + // 检查和更换机油 + System.out.println("更换引擎机油..."); + + // 检查轮胎 + System.out.println("检查轮胎..."); + for (int i = 0; i < car.getWheels().size(); i++) { + Wheel wheel = car.getWheels().get(i); + wheel.checkStatus(); + wheel.adjustPressure(2.5); // 调整到标准胎压 + } + + // 检查电子系统 + System.out.println("执行电子系统诊断..."); + car.getElectronicSystem().runDiagnostics(); + + // 记录保养 + ServiceRecord record = new ServiceRecord( + car.getVin(), + "常规保养", + "更换机油、检查轮胎、电子系统诊断" + ); + serviceHistory.add(record); + + System.out.println("===== 常规保养完成 =====\n"); + } + + /** + * 更换方向盘 + * @param car 汽车 + * @param newType 新方向盘类型 + */ + public void replaceSteeringWheel(Car car, String newType) { + System.out.println("\n===== 更换方向盘 ====="); + System.out.println("当前方向盘: " + car.getSteeringWheel().getType()); + + // 在实际应用中,这里应该创建一个新的方向盘对象并替换 + // 由于Java的封装性,我们通过setter方法来修改 + car.getSteeringWheel().setType(newType); + + System.out.println("新方向盘: " + car.getSteeringWheel().getType()); + + // 记录维修 + ServiceRecord record = new ServiceRecord( + car.getVin(), + "更换方向盘", + "更换为: " + newType + ); + serviceHistory.add(record); + + System.out.println("===== 方向盘更换完成 =====\n"); + } + + /** + * 更换座椅 + * @param car 汽车 + * @param seatIndex 要更换的座椅索引 + * @param newMaterial 新材料 + * @param heated 是否加热 + * @param ventilated 是否通风 + */ + public void replaceSeat(Car car, int seatIndex, String newMaterial, boolean heated, boolean ventilated) { + if (seatIndex >= 0 && seatIndex < car.getSeats().size()) { + System.out.println("\n===== 更换座椅 ====="); + Seat oldSeat = car.getSeats().get(seatIndex); + System.out.println("当前座椅: " + oldSeat.getType() + ", " + oldSeat.getMaterial()); + + // 创建新座椅并替换 + Seat newSeat = new Seat(oldSeat.getType()); + newSeat.setMaterial(newMaterial); + newSeat.setHeated(heated); + newSeat.setVentilated(ventilated); + + // 替换座椅 + car.getSeats().set(seatIndex, newSeat); + + System.out.println("新座椅: " + newSeat.getType() + ", " + newSeat.getMaterial() + + ", 加热: " + heated + ", 通风: " + ventilated); + + // 记录维修 + ServiceRecord record = new ServiceRecord( + car.getVin(), + "更换座椅", + "座椅类型: " + oldSeat.getType() + ", 新材料: " + newMaterial + ); + serviceHistory.add(record); + + System.out.println("===== 座椅更换完成 =====\n"); + } else { + System.out.println("无效的座椅索引"); + } + } + + /** + * 维修引擎 + * @param car 汽车 + * @param issue 问题描述 + */ + public void repairEngine(Car car, String issue) { + System.out.println("\n===== 维修引擎 ====="); + System.out.println("引擎类型: " + car.getEngine().getType()); + System.out.println("问题: " + issue); + + // 检查活塞状态 + System.out.println("检查活塞..."); + for (Piston piston : car.getEngine().getPistons()) { + System.out.println(piston.getStatus()); + } + + // 模拟修复过程 + System.out.println("执行引擎修复..."); + System.out.println("修复完成"); + + // 记录维修 + ServiceRecord record = new ServiceRecord( + car.getVin(), + "引擎维修", + issue + ); + serviceHistory.add(record); + + System.out.println("===== 引擎维修完成 =====\n"); + } + + /** + * 重置电子控制单元 + * @param car 汽车 + * @param ecuType ECU类型 + */ + public void resetECU(Car car, String ecuType) { + System.out.println("\n===== 重置ECU ====="); + + for (ElectronicControlUnit ecu : car.getElectronicSystem().getEcus()) { + if (ecu.getType().contains(ecuType)) { + System.out.println("重置 " + ecu.getAbbreviation() + "..."); + ecu.shutdown(); + ecu.initialize(); + ecu.clearFault(); + System.out.println("重置完成"); + + // 记录维修 + ServiceRecord record = new ServiceRecord( + car.getVin(), + "重置ECU", + "ECU类型: " + ecu.getType() + ); + serviceHistory.add(record); + + System.out.println("===== ECU重置完成 =====\n"); + return; + } + } + + System.out.println("未找到类型为 " + ecuType + " 的ECU"); + } + + /** + * 显示维修历史 + * @param vin 车辆识别号 + */ + public void showServiceHistory(String vin) { + System.out.println("\n===== 维修历史 (" + vin + ") ====="); + boolean found = false; + + for (ServiceRecord record : serviceHistory) { + if (record.getVin().equals(vin)) { + System.out.println(record.toString()); + found = true; + } + } + + if (!found) { + System.out.println("未找到该车辆的维修记录"); + } + + System.out.println("========================\n"); + } + + /** + * 内部类:维修记录 + */ + private static class ServiceRecord { + private String vin; + private String serviceType; + private String description; + private long timestamp; + + public ServiceRecord(String vin, String serviceType, String description) { + this.vin = vin; + this.serviceType = serviceType; + this.description = description; + this.timestamp = System.currentTimeMillis(); + } + + public String getVin() { + return vin; + } + + @Override + public String toString() { + return "时间: " + new java.util.Date(timestamp) + + ", 类型: " + serviceType + ", 描述: " + description; + } + } +} \ No newline at end of file