From 19abaeff8566b45a87a1b27fa21658af78119f3b Mon Sep 17 00:00:00 2001 From: bouchane Date: Sat, 24 May 2025 12:06:20 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20Gestionnaire=20de=20T=C3=A2ches=20?= =?UTF-8?q?en=20Java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TaskManagerCLI/Task.class | Bin 0 -> 1219 bytes TaskManagerCLI/TaskManager.class | Bin 0 -> 4148 bytes TaskManagerCLI/TaskManager.java | 133 +++++++++++++++++++++++++++++++ TaskManagerCLI/tasks.dat | Bin 0 -> 156 bytes 4 files changed, 133 insertions(+) create mode 100644 TaskManagerCLI/Task.class create mode 100644 TaskManagerCLI/TaskManager.class create mode 100644 TaskManagerCLI/TaskManager.java create mode 100644 TaskManagerCLI/tasks.dat diff --git a/TaskManagerCLI/Task.class b/TaskManagerCLI/Task.class new file mode 100644 index 0000000000000000000000000000000000000000..b6646873fe2294ddc41e3be8feba23b3433ae430 GIT binary patch literal 1219 zcmX^0Z`VEs1_mbvTP_AB24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3V1ki_C_Mh5Pb)Z*l#%z~24{5(bmAs>Vx!6ikR zdFj?5ZG1co{0st&3@j=6d8v#Hj8Pm6LW~S7(Gjr<91J2LmO`w85Ca2)7!QLug9Iak zcy3~Ls&jr`a$-q%W=V!~eqM1&VqQrxBZGworWKeXnwUcD3{s2?B4Fob=IaNi7G);p zWL706<)kt)2o!_4VW~yMnfZC4o-T|Gj9!ckyfAyi5_3vZSs5UJk&!_Ziz76{7#Ucc z^HWk88TfrN^HTjvbCXhwLLe4!W z2sq{EmlT&2B^LOmmSp6o6mu{bFfuSPGV-%A7;!NeGnlY5n1Z6ijFCYFqy>^RGV{vv zvs3jUwm@RYEit(yzo?RtVFq%rKovp^_eji3$w@6%@yXB6E-kRej2$Eq6pbO31*uq+ zM^Q)feqp>1_cHV1||kZ21y2H1}O$<1{nrM23ZCM1||kM1}0Fp0kioT1Q-|?SQ!`@ zSQ!);7#S297#NHhm>8HC7#R4qwlgqlX>Vm<*J9qvz`K!wfq{`hiGhJZh=GNHfq{#G zg@K!alYxhUkAatgkwKY(4QhZA*kT3-HZ2wueV|Ovz#zcD${@(V$e_ZY3RN%5z{tP| za)#Cx2HrJrYe2>^Fo-ZPGN>`AV^PY!0Zpj{10#b5T&XS86%rs*XEJaI2`*<~6%y9k z!oa?ZL6m_3q?-xsABaV=44MoK4D1X{JdW%PS`5q#I^Yn}Wzb__VBlb2WH4l4WYA|Y Q2Ya27!Gghx!G=K+0D9FD6aWAK literal 0 HcmV?d00001 diff --git a/TaskManagerCLI/TaskManager.class b/TaskManagerCLI/TaskManager.class new file mode 100644 index 0000000000000000000000000000000000000000..2f4fa654ed0ad176ea49f83c9b30d14dbd1f686d GIT binary patch literal 4148 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 Hdkm5Qlnw!2 literal 0 HcmV?d00001 diff --git a/TaskManagerCLI/TaskManager.java b/TaskManagerCLI/TaskManager.java new file mode 100644 index 0000000..fad89c8 --- /dev/null +++ b/TaskManagerCLI/TaskManager.java @@ -0,0 +1,133 @@ +import java.io.*; +import java.util.*; + +// Classe interne, non publique +class Task implements Serializable { + private static final long serialVersionUID = 1L; + private String description; + private boolean done; + + public Task(String description) { + this.description = description; + this.done = false; + } + + public void markDone() { + this.done = true; + } + + public boolean isDone() { + return done; + } + + public String getDescription() { + return description; + } + + @Override + public String toString() { + return (done ? "[X] " : "[ ] ") + description; + } +} + +// Classe principale, publique +public class TaskManager { + private static final String FILE_NAME = "tasks.dat"; + private List tasks; + + public TaskManager() { + tasks = loadTasks(); + } + + public void addTask(String description) { + tasks.add(new Task(description)); + saveTasks(); + } + + public void listTasks() { + if (tasks.isEmpty()) { + System.out.println("Aucune tâche."); + return; + } + for (int i = 0; i < tasks.size(); i++) { + System.out.println((i + 1) + ". " + tasks.get(i)); + } + } + + public void markTaskDone(int index) { + if (index >= 1 && index <= tasks.size()) { + tasks.get(index - 1).markDone(); + saveTasks(); + } else { + System.out.println("Index invalide."); + } + } + + public void deleteTask(int index) { + if (index >= 1 && index <= tasks.size()) { + tasks.remove(index - 1); + saveTasks(); + } else { + System.out.println("Index invalide."); + } + } + + private void saveTasks() { + try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(FILE_NAME))) { + out.writeObject(tasks); + } catch (IOException e) { + System.out.println("Erreur lors de la sauvegarde des tâches."); + } + } + @SuppressWarnings("unchecked") + private List loadTasks() { + try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(FILE_NAME))) { + return (List) in.readObject(); + } catch (IOException | ClassNotFoundException e) { + return new ArrayList<>(); + } + } + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + TaskManager manager = new TaskManager(); + + System.out.println("=== Gestionnaire de Tâches ==="); + + while (true) { + System.out.println("\n1. Ajouter une tâche"); + System.out.println("2. Marquer une tâche comme terminée"); + System.out.println("3. Supprimer une tâche"); + System.out.println("4. Lister les tâches"); + System.out.println("5. Quitter"); + System.out.print("Choix: "); + String choice = scanner.nextLine(); + + switch (choice) { + case "1": + System.out.print("Description de la tâche: "); + String desc = scanner.nextLine(); + manager.addTask(desc); + break; + case "2": + manager.listTasks(); + System.out.print("Numéro de la tâche à marquer comme terminée: "); + manager.markTaskDone(Integer.parseInt(scanner.nextLine())); + break; + case "3": + manager.listTasks(); + System.out.print("Numéro de la tâche à supprimer: "); + manager.deleteTask(Integer.parseInt(scanner.nextLine())); + break; + case "4": + manager.listTasks(); + break; + case "5": + System.out.println("Au revoir !"); + return; + default: + System.out.println("Choix invalide."); + } + } + } +} diff --git a/TaskManagerCLI/tasks.dat b/TaskManagerCLI/tasks.dat new file mode 100644 index 0000000000000000000000000000000000000000..29e16a81299b0c06534d19112c241728ef1cffc2 GIT binary patch literal 156 zcmZ4UmVvdnh(S0ju`E%qv?Mb}&#|Z|vC=2AxTK=-lI+amiF2757(E$SiZiQHD+(AG z7#Pc0KxA=an!B`G5@9&q>Tn x*AFf!%FIi*t|(wAVUTytE6cA;EmFuyRLDs!DJe=-NJ&-5%`eF;O9bhx002iMFcts+ literal 0 HcmV?d00001