You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Car/ConfigurationSystem.java

190 lines
7.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.automobile.configuration;
import com.automobile.model.Car;
import com.automobile.parts.Engine;
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;
/**
* 汽车配置系统类
* 允许用户自定义汽车的各种组合部件
*/
public class ConfigurationSystem {
private String customerName;
private CarConfig currentConfig;
/**
* 构造方法
* @param customerName 客户名称
*/
public ConfigurationSystem(String customerName) {
this.customerName = customerName;
this.currentConfig = new CarConfig();
}
/**
* 开始新的配置
*/
public void startNewConfiguration() {
this.currentConfig = new CarConfig();
System.out.println("开始新的汽车配置");
}
/**
* 设置汽车品牌和型号
* @param brand 品牌
* @param model 型号
*/
public void setCarDetails(String brand, String model) {
currentConfig.setBrand(brand);
currentConfig.setModel(model);
System.out.println("设置汽车: " + brand + " " + model);
}
/**
* 配置方向盘
* @param type 方向盘类型
* @param powerAssisted 是否助力
*/
public void configureSteeringWheel(String type, boolean powerAssisted) {
currentConfig.setSteeringWheelType(type);
currentConfig.setPowerAssisted(powerAssisted);
System.out.println("配置方向盘: " + type + (powerAssisted ? " (助力)" : " (非助力)"));
}
/**
* 配置座椅
* @param seatCount 座椅数量
* @param heated 是否加热
* @param ventilated 是否通风
*/
public void configureSeats(int seatCount, boolean heated, boolean ventilated) {
currentConfig.setSeatCount(seatCount);
currentConfig.setHeatedSeats(heated);
currentConfig.setVentilatedSeats(ventilated);
System.out.println("配置座椅: " + seatCount + "个座位, " +
(heated ? "加热 " : "") + (ventilated ? "通风" : ""));
}
/**
* 配置引擎
* @param cylinders 气缸数
* @param horsepower 马力
*/
public void configureEngine(int cylinders, int horsepower) {
currentConfig.setCylinderCount(cylinders);
currentConfig.setHorsepower(horsepower);
System.out.println("配置引擎: " + cylinders + "缸, " + horsepower + "马力");
}
/**
* 配置变速箱
* @param automatic 是否自动
* @param gearCount 档位数量
*/
public void configureTransmission(boolean automatic, int gearCount) {
currentConfig.setAutomaticTransmission(automatic);
currentConfig.setGearCount(gearCount);
System.out.println("配置变速箱: " + (automatic ? "自动" : "手动") + ", " + gearCount + "档");
}
/**
* 配置车轮
* @param diameter 直径
* @param brand 品牌
*/
public void configureWheels(double diameter, String brand) {
currentConfig.setWheelDiameter(diameter);
currentConfig.setWheelBrand(brand);
System.out.println("配置车轮: " + diameter + "英寸, " + brand);
}
/**
* 确认配置并生成汽车
* @return 按照配置生成的汽车实例
*/
public Car confirmConfiguration() {
System.out.println("\n===== 配置确认 =====");
System.out.println("客户: " + customerName);
System.out.println("汽车: " + currentConfig.getBrand() + " " + currentConfig.getModel());
System.out.println("方向盘: " + currentConfig.getSteeringWheelType());
System.out.println("座椅: " + currentConfig.getSeatCount() + "个");
System.out.println("引擎: " + currentConfig.getCylinderCount() + "缸, " + currentConfig.getHorsepower() + "马力");
System.out.println("变速箱: " + (currentConfig.isAutomaticTransmission() ? "自动" : "手动"));
System.out.println("车轮: " + currentConfig.getWheelDiameter() + "英寸");
System.out.println("==================\n");
// 这里简化处理,实际应该根据配置创建定制化的汽车
return new Car(currentConfig.getBrand(), currentConfig.getModel(), generateVIN());
}
/**
* 生成VIN码简化版
* @return VIN码
*/
private String generateVIN() {
return "VIN" + System.currentTimeMillis();
}
/**
* 内部类:汽车配置
*/
private static class CarConfig {
private String brand = "未知";
private String model = "未知";
private String steeringWheelType = "皮质方向盘";
private boolean powerAssisted = true;
private int seatCount = 5;
private boolean heatedSeats = false;
private boolean ventilatedSeats = false;
private int cylinderCount = 4;
private int horsepower = 150;
private boolean automaticTransmission = true;
private int gearCount = 6;
private double wheelDiameter = 17.0;
private String wheelBrand = "标准";
// Getter 和 Setter 方法
public String getBrand() { return brand; }
public void setBrand(String brand) { this.brand = brand; }
public String getModel() { return model; }
public void setModel(String model) { this.model = model; }
public String getSteeringWheelType() { return steeringWheelType; }
public void setSteeringWheelType(String steeringWheelType) { this.steeringWheelType = steeringWheelType; }
public boolean isPowerAssisted() { return powerAssisted; }
public void setPowerAssisted(boolean powerAssisted) { this.powerAssisted = powerAssisted; }
public int getSeatCount() { return seatCount; }
public void setSeatCount(int seatCount) { this.seatCount = seatCount; }
public boolean isHeatedSeats() { return heatedSeats; }
public void setHeatedSeats(boolean heatedSeats) { this.heatedSeats = heatedSeats; }
public boolean isVentilatedSeats() { return ventilatedSeats; }
public void setVentilatedSeats(boolean ventilatedSeats) { this.ventilatedSeats = ventilatedSeats; }
public int getCylinderCount() { return cylinderCount; }
public void setCylinderCount(int cylinderCount) { this.cylinderCount = cylinderCount; }
public int getHorsepower() { return horsepower; }
public void setHorsepower(int horsepower) { this.horsepower = horsepower; }
public boolean isAutomaticTransmission() { return automaticTransmission; }
public void setAutomaticTransmission(boolean automaticTransmission) { this.automaticTransmission = automaticTransmission; }
public int getGearCount() { return gearCount; }
public void setGearCount(int gearCount) { this.gearCount = gearCount; }
public double getWheelDiameter() { return wheelDiameter; }
public void setWheelDiameter(double wheelDiameter) { this.wheelDiameter = wheelDiameter; }
public String getWheelBrand() { return wheelBrand; }
public void setWheelBrand(String wheelBrand) { this.wheelBrand = wheelBrand; }
}
}