-
Notifications
You must be signed in to change notification settings - Fork 0
/
TaskTask
142 lines (122 loc) · 4.94 KB
/
TaskTask
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
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Task implements Serializable {
private static final long serialVersionUID = 1L;
private String description;
private boolean isCompleted;
public Task(String description) {
this.description = description;
this.isCompleted = false;
}
public String getDescription() {
return description;
}
public boolean isCompleted() {
return isCompleted;
}
public void markAsCompleted() {
isCompleted = true;
}
@Override
public String toString() {
return (isCompleted ? "[x] " : "[ ] ") + description;
}
}
class TaskList implements Serializable {
private static final long serialVersionUID = 1L;
private List<Task> tasks;
public TaskList() {
tasks = new ArrayList<>();
}
public void addTask(Task task) {
tasks.add(task);
System.out.println("Задача добавлена: " + task.getDescription());
}
public void displayTasks() {
if (tasks.isEmpty()) {
System.out.println("Список задач пуст.");
} else {
System.out.println("Список задач:");
for (Task task : tasks) {
System.out.println("- " + task);
}
}
}
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.getDescription());
} else {
System.out.println("Задача уже выполнена.");
}
} else {
System.out.println("Неверный индекс задачи.");
}
}
public void saveTasksToFile(String filename) {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename))) {
oos.writeObject(this);
System.out.println("Список задач сохранен в файл: " + filename);
} catch (IOException e) {
e.printStackTrace();
}
}
public static TaskList loadTasksFromFile(String filename) {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename))) {
return (TaskList) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
return new TaskList(); // если произошла ошибка, вернем пустой список задач
}
}
}
public class TaskManager {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
TaskList taskList = new TaskList();
// Загрузка списка задач из файла (если файл существует)
taskList = TaskList.loadTasksFromFile("tasks.dat");
while (true) {
System.out.println("\nВыберите действие:");
System.out.println("1. Добавить задачу");
System.out.println("2. Показать задачи");
System.out.println("3. Отметить задачу как выполненную");
System.out.println("4. Сохранить список задач в файл");
System.out.println("5. Загрузить список задач из файла");
System.out.println("6. Выйти");
int choice = scanner.nextInt();
scanner.nextLine(); // очистим буфер после ввода числа
switch (choice) {
case 1:
System.out.println("Введите описание задачи:");
String description = scanner.nextLine();
Task newTask = new Task(description);
taskList.addTask(newTask);
break;
case 2:
taskList.displayTasks();
break;
case 3:
System.out.println("Введите индекс задачи для отметки выполненной:");
int index = scanner.nextInt();
taskList.markTaskAsCompleted(index);
break;
case 4:
taskList.saveTasksToFile("tasks.dat");
break;
case 5:
taskList = TaskList.loadTasksFromFile("tasks.dat");
break;
case 6:
System.out.println("Программа завершена.");
System.exit(0);
default:
System.out.println("Неверный выбор. Пожалуйста, выберите снова.");
}
}
}
}