java语言实现工厂工人四班三倒工作
时间: 2024-06-06 13:08:17 浏览: 144
以下是一个简单的 Java 代码实现工厂工人四班三倒工作的例子:
1. 定义一个工人类,包括工人的姓名和工号等信息:
public class Worker {
private String name;
private String id;
public Worker(String name, String id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public String getId() {
return id;
}
}
2. 定义一个班次枚举类型,包括早班、中班和晚班:
public enum Shift {
MORNING, AFTERNOON, NIGHT;
}
3. 定义一个工作安排类,包括日期、班次和工人信息:
public class WorkSchedule {
private Date date;
private Shift shift;
private Worker worker;
public WorkSchedule(Date date, Shift shift, Worker worker) {
this.date = date;
this.shift = shift;
this.worker = worker;
}
public Date getDate() {
return date;
}
public Shift getShift() {
return shift;
}
public Worker getWorker() {
return worker;
}
}
4. 定义一个工作安排管理类,管理工作安排的生成和查询:
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
public class WorkScheduleManager {
private List<WorkSchedule> schedules;
public WorkScheduleManager() {
schedules = new ArrayList<>();
}
public void generateSchedule(Date startDate, Date endDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(startDate);
while (cal.getTime().before(endDate)) {
for (Shift shift : Shift.values()) {
List<Worker> availableWorkers = getAvailableWorkers(shift);
if (availableWorkers.isEmpty()) {
continue;
}
Worker worker = availableWorkers.get(new Random().nextInt(availableWorkers.size()));
schedules.add(new WorkSchedule(cal.getTime(), shift, worker));
}
cal.add(Calendar.DATE, 1);
}
}
public List<WorkSchedule> getSchedule(Date date) {
List<WorkSchedule> result = new ArrayList<>();
for (WorkSchedule schedule : schedules) {
if (schedule.getDate().equals(date)) {
result.add(schedule);
}
}
return result;
}
private List<Worker> getAvailableWorkers(Shift shift) {
List<Worker> result = new ArrayList<>();
for (/* iterate over all workers */) {
// check if the worker is available for the given shift
if (/* worker is available for the shift */) {
result.add(worker);
}
}
return result;
}
}
5. 在 main 方法中使用 WorkScheduleManager 类生成和查询工作安排:
public static void main(String[] args) {
WorkScheduleManager manager = new WorkScheduleManager();
// generate schedule for the next 30 days
Calendar cal = Calendar.getInstance();
manager.generateSchedule(cal.getTime(), cal.getTime() + 30);
// print schedule for the current date
List<WorkSchedule> todaySchedule = manager.getSchedule(new Date());
for (WorkSchedule schedule : todaySchedule) {
System.out.println(schedule.getWorker().getName() + " works in " + schedule.getShift() + " shift.");
}
}