-
Notifications
You must be signed in to change notification settings - Fork 0
/
TaskTaskk
161 lines (139 loc) · 5.45 KB
/
TaskTaskk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
class Task implements Serializable {
private static final long serialVersionUID = 1L;
private String description;
private Date dueDate;
private boolean completed;
public Task(String description, Date dueDate) {
this.description = description;
this.dueDate = dueDate;
this.completed = false;
}
public String getDescription() {
return description;
}
public Date getDueDate() {
return dueDate;
}
public boolean isCompleted() {
return completed;
}
public void markAsCompleted() {
completed = true;
}
@Override
public String toString() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dueDateString = (dueDate != null) ? dateFormat.format(dueDate) : "Not specified";
return (completed ? "[X] " : "[ ] ") + "Task: " + description + ", Due Date: " + dueDateString;
}
}
class TaskOrganizer implements Serializable {
private static final long serialVersionUID = 1L;
private List<Task> tasks;
public TaskOrganizer() {
tasks = new ArrayList<>();
}
public void addTask(String description, Date dueDate) {
Task newTask = new Task(description, dueDate);
tasks.add(newTask);
System.out.println("Task added:\n" + newTask);
}
public void markTaskAsCompleted(int index) {
if (index >= 0 && index < tasks.size()) {
Task task = tasks.get(index);
if (!task.isCompleted()) {
task.markAsCompleted();
System.out.println("Task completed: " + task.getDescription());
} else {
System.out.println("Task already completed.");
}
} else {
System.out.println("Invalid task index.");
}
}
public void displayTasks() {
if (tasks.isEmpty()) {
System.out.println("No tasks found.");
} else {
System.out.println("Task List:");
for (int i = 0; i < tasks.size(); i++) {
System.out.println((i + 1) + ". " + tasks.get(i));
}
}
}
public void saveTasksToFile(String filename) {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename))) {
oos.writeObject(this);
System.out.println("Task data saved to file: " + filename);
} catch (IOException e) {
System.out.println("Error saving task data to file: " + e.getMessage());
}
}
public static TaskOrganizer loadTasksFromFile(String filename) {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename))) {
return (TaskOrganizer) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
System.out.println("Error loading task data from file: " + e.getMessage());
return new TaskOrganizer(); // If an error occurs, return a new task organizer instance
}
}
}
public class TaskOrganizerApp {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
TaskOrganizer taskOrganizer = new TaskOrganizer();
// Load task data from file (if the file exists)
taskOrganizer = TaskOrganizer.loadTasksFromFile("tasks_organization.dat");
while (true) {
System.out.println("\nChoose an action:");
System.out.println("1. Add Task");
System.out.println("2. Mark Task as Completed");
System.out.println("3. View Tasks");
System.out.println("4. Save Task Data to File");
System.out.println("5. Exit");
int choice = scanner.nextInt();
scanner.nextLine(); // Clear buffer
switch (choice) {
case 1:
System.out.println("Enter task description:");
String description = scanner.nextLine();
System.out.println("Enter due date (yyyy-MM-dd), or press Enter for no due date:");
String dueDateString = scanner.nextLine();
Date dueDate = parseDate(dueDateString);
taskOrganizer.addTask(description, dueDate);
break;
case 2:
System.out.println("Enter task index to mark as completed:");
int taskIndex = scanner.nextInt();
scanner.nextLine(); // Clear buffer
taskOrganizer.markTaskAsCompleted(taskIndex - 1);
break;
case 3:
taskOrganizer.displayTasks();
break;
case 4:
taskOrganizer.saveTasksToFile("tasks_organization.dat");
break;
case 5:
System.out.println("Exiting the Task Organizer. Goodbye!");
System.exit(0);
default:
System.out.println("Invalid choice. Please choose again.");
}
}
}
private static Date parseDate(String dateString) {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.parse(dateString);
} catch (Exception e) {
return null; // Return null if parsing fails
}
}
}