pmu/lib/main1.dart
2024-10-02 19:34:37 +04:00

126 lines
3.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'dart:async';
import 'dart:io';
void main() {
runApp();
}
Future<void> runApp() async {
final TaskManager taskManager = TaskManager();
while (true) {
print('\nВыберите действие:');
print('1. Добавить задачу');
print('2. Показать все задачи');
print('3. Удалить задачу');
print('4. Выполнить задачу');
print('5. Выйти');
String? choice = stdin.readLineSync();
switch (choice) {
case '1':
print('Введите описание задачи:');
String? description = stdin.readLineSync();
if (description != null && description.isNotEmpty) {
await Future.delayed(Duration(seconds: 1));
taskManager.addTask(Task(
description: description,
timestamp: DateTime.now(),
));
}
break;
case '2':
taskManager.showTasks();
break;
case '3':
print('Введите номер задачи для удаления: ');
String? indexInput = stdin.readLineSync();
if (indexInput != null) {
int index = int.tryParse(indexInput) ?? -1;
taskManager.removeTask(index);
}
break;
case '4':
print('Введите номер задачи для выполнения:');
String? completeIndexInput = stdin.readLineSync();
if (completeIndexInput != null) {
int index = int.tryParse(completeIndexInput) ?? -1;
taskManager.completeTask(index);
}
break;
case '5':
print('Выход из программы.');
return;
default:
print('Неверный выбор, попробуйте снова.');
}
}
}
enum TaskStatus { pending, completed }
class Task {
String description;
DateTime timestamp;
TaskStatus status;
Task({
required this.description,
required this.timestamp,
this.status = TaskStatus.pending,
});
String getStatusString() {
switch (status) {
case TaskStatus.pending:
return 'В ожидании';
case TaskStatus.completed:
return 'Завершена';
}
}
}
class TaskManager {
final List<Task> _tasks = [];
void addTask(Task task) {
_tasks.add(task);
print('Задача добавлена: "${task.description}"');
}
void showTasks() {
if (_tasks.isEmpty) {
print('Список задач пуст.');
return;
}
_tasks.asMap().forEach((i, task) {
print('${i + 1}. ${task.description} (${task.getStatusString()}) (${task.timestamp.format()})');
});
}
void removeTask(int index) {
if (index < 1 || index > _tasks.length) {
print('Неверный номер задачи.');
return;
}
String removedTask = _tasks[index - 1].description;
_tasks.removeAt(index - 1);
print('Задача удалена: "$removedTask"');
}
void completeTask(int index) {
if (index < 1 || index > _tasks.length) {
print('Неверный номер задачи.');
return;
}
_tasks[index - 1].status = TaskStatus.completed;
print('Задача "${_tasks[index - 1].description}" выполнена.');
}
}
extension DateTimeFormatter on DateTime {
String format() {
return '${this.day}-${this.month}-${this.year} ${this.hour}:${this.minute}';
}
}