Java设计一个调度表 背景介绍 在日常生活中,我们经常需要安排和管理各种任务和活动。无论是安排会议、制定计划,还是管理日程安排,都需要一个有效的调度表来帮助我们高效地处
Java设计一个调度表
背景介绍
在日常生活中,我们经常需要安排和管理各种任务和活动。无论是安排会议、制定计划,还是管理日程安排,都需要一个有效的调度表来帮助我们高效地处理和安排任务。
在本文中,我们将使用Java编程语言设计一个简单的调度表应用程序,以展示如何使用面向对象的设计和编程思想来实现这个功能。
功能需求
我们的调度表应用程序需要具备以下功能:
- 添加任务:用户可以输入任务的标题、开始时间和结束时间,并将其添加到调度表中。
- 删除任务:用户可以选择指定任务并将其从调度表中删除。
- 查看任务列表:用户可以获取当前调度表中所有任务的列表,并查看任务的详细信息。
- 根据时间范围查看任务:用户可以输入一个时间范围,获取在该范围内的所有任务列表。
设计思路
为了实现上述功能需求,我们可以使用Java的面向对象编程思想,设计以下几个类:
1. 任务(Task)类
任务类用于表示一个具体的任务,包含任务的标题、开始时间和结束时间等属性,以及对应的get和set方法。
public class Task {
private String title;
private LocalDateTime startTime;
private LocalDateTime endTime;
public Task(String title, LocalDateTime startTime, LocalDateTime endTime) {
this.title = title;
this.startTime = startTime;
this.endTime = endTime;
}
// Getters and setters
// ...
}
2. 调度表(Schedule)类
调度表类用于管理所有的任务,包含添加任务、删除任务、获取任务列表等方法。
public class Schedule {
private List<Task> tasks;
public Schedule() {
this.tasks = new ArrayList<>();
}
public void addTask(Task task) {
tasks.add(task);
}
public void removeTask(Task task) {
tasks.remove(task);
}
public List<Task> getTasks() {
return tasks;
}
public List<Task> getTasksByTimeRange(LocalDateTime startTime, LocalDateTime endTime) {
List<Task> result = new ArrayList<>();
for (Task task : tasks) {
if (task.getStartTime().isAfter(startTime) && task.getEndTime().isBefore(endTime)) {
result.add(task);
}
}
return result;
}
}
3. 调度表应用程序(ScheduleApp)类
调度表应用程序类是整个程序的入口点,负责与用户进行交互,提供添加、删除和查看任务的功能。
import java.time.LocalDateTime;
import java.util.List;
import java.util.Scanner;
public class ScheduleApp {
private Schedule schedule;
private Scanner scanner;
public ScheduleApp() {
this.schedule = new Schedule();
this.scanner = new Scanner(System.in);
}
public void run() {
boolean isRunning = true;
while (isRunning) {
System.out.println("请选择操作:");
System.out.println("1. 添加任务");
System.out.println("2. 删除任务");
System.out.println("3. 查看任务列表");
System.out.println("4. 根据时间范围查看任务");
System.out.println("5. 退出");
int option = scanner.nextInt();
scanner.nextLine(); // 读取换行符
switch (option) {
case 1:
addTask();
break;
case 2:
removeTask();
break;
case 3:
viewTaskList();
break;
case 4:
viewTaskByTimeRange();
break;
case 5:
isRunning = false;
break;
default:
System.out.println("无效的选项,请重新选择!");
}
}
}
private void addTask() {
System.out.println("请输入任务标题:");
String title = scanner.nextLine();
System.out.println("请输入任务的开始时间(yyyy-MM-dd HH:mm):");
LocalDateTime startTime = LocalDateTime.parse(scanner.nextLine());
System.out.println("请输入任务的结束时间(yyyy-MM-dd HH:mm):");
LocalDateTime endTime = LocalDateTime.parse(scanner.nextLine());
Task task = new Task(title, startTime, endTime);
schedule.addTask(task);
System.out.println("任务添加成功!");
}
private void removeTask() {
System.out.println("请输入要删除的任务标题:");
String title = scanner.nextLine();
List<Task> tasks = schedule.getTasks();
for (Task task : tasks) {
if (task.getTitle().equals(title)) {
schedule.removeTask(task);
System