import java.time.LocalDate; import java.time.Duration; /** * 培训课程类 - 负责课程信息管理 * 遵循单一职责原则:只负责课程数据的存储和基本验证 */ public class TrainingCourse { private String courseId; // 课程ID private String courseName; // 课程名称 private String description; // 课程描述 private int durationHours; // 课程时长(小时) private String trainer; // 培训师 private String department; // 所属部门 private String category; // 课程类别 private int credits; // 学分 private boolean active; // 是否启用 private LocalDate createdAt; // 创建时间 private String requirements; // 课程要求 private String objectives; // 课程目标 private String materials; // 课程资料 /** * 构造函数 - 创建培训课程 */ public TrainingCourse(String courseId, String courseName, String description, int durationHours, String trainer, String department, String category, int credits) { this.courseId = courseId; this.courseName = courseName; this.description = description; this.durationHours = durationHours; this.trainer = trainer; this.department = department; this.category = category; this.credits = credits; this.active = true; this.createdAt = LocalDate.now(); this.requirements = ""; this.objectives = ""; this.materials = ""; } /** * 检查课程是否可报名 * @return true如果课程可报名 */ public boolean isEnrollable() { return active && durationHours > 0 && credits >= 0; } /** * 获取课程时长描述 * @return 课程时长描述 */ public String getDurationDescription() { if (durationHours < 1) { return "少于1小时"; } else if (durationHours == 1) { return "1小时"; } else { return durationHours + "小时"; } } /** * 获取课程等级(基于学分) * @return 课程等级 */ public String getLevel() { if (credits <= 1) return "初级"; else if (credits <= 3) return "中级"; else return "高级"; } // Getter和Setter方法 public String getCourseId() { return courseId; } public String getCourseName() { return courseName; } public void setCourseName(String courseName) { if (courseName == null || courseName.trim().isEmpty()) { throw new IllegalArgumentException("课程名称不能为空"); } this.courseName = courseName; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public int getDurationHours() { return durationHours; } public void setDurationHours(int durationHours) { if (durationHours < 0) { throw new IllegalArgumentException("课程时长不能为负数"); } this.durationHours = durationHours; } public String getTrainer() { return trainer; } public void setTrainer(String trainer) { this.trainer = trainer; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public int getCredits() { return credits; } public void setCredits(int credits) { if (credits < 0) { throw new IllegalArgumentException("学分不能为负数"); } this.credits = credits; } public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } public LocalDate getCreatedAt() { return createdAt; } public String getRequirements() { return requirements; } public void setRequirements(String requirements) { this.requirements = requirements; } public String getObjectives() { return objectives; } public void setObjectives(String objectives) { this.objectives = objectives; } public String getMaterials() { return materials; } public void setMaterials(String materials) { this.materials = materials; } @Override public String toString() { return "TrainingCourse{" + "courseId='" + courseId + "'" + ", courseName='" + courseName + "'" + ", category='" + category + "'" + ", level='" + getLevel() + "'" + ", duration=" + getDurationDescription() + ", trainer='" + trainer + "'" + ", credits=" + credits + ", department='" + department + "'" + ", active=" + (active ? "启用" : "禁用") + "}"; } }