Added save and load option

This commit is contained in:
Dek
2026-04-15 00:26:21 +02:00
parent 3251fc436b
commit 8571ce326b
2 changed files with 111 additions and 67 deletions

View File

@@ -1,4 +1,4 @@
use std::vec;
use std::fs;
use std::io;
struct Task {
name: String,
@@ -8,40 +8,43 @@ struct Task{
}
impl Task {
fn new(name: String, priority: usize, description: String) -> Task {
Task{name,priority,description, done: false}
Task {
name,
priority,
description,
done: false,
}
}
fn display(&self) {
println!("Tâche: {}.
println!(
"Tâche: {}.
Priorité: {}
Description: {}", self.name, self.priority,self.description)
Description: {}",
self.name, self.priority, self.description
)
}
fn task_done(&mut self) {
if !self.done {
println!("La tâche {} à été effectué, bravo !", self.name);
self.done = true;
}
else{
} else {
println!("La tâche {} à déjà été effectué.", self.name);
}
}
}
struct TodoList {
list_tasks: Vec<Task>,
}
impl TodoList {
fn new() -> TodoList {
TodoList { list_tasks: Vec::new() }
TodoList {
list_tasks: Vec::new(),
}
}
fn create_task(&mut self, name: String, priority: usize, description: String) {
let task = Task::new(name, priority, description);
self.list_tasks.push(task);
}
fn add(&mut self, task: Task){
self.list_tasks.push(task);
}
fn delete(&mut self, number: usize) {
self.list_tasks.remove(number);
}
@@ -50,29 +53,62 @@ impl TodoList{
println!("{}: {} - Priorité: {}", i, task.name, task.priority);
}
}
fn save(&self) {
let mut output = String::new();
for (i, task) in self.list_tasks.iter().enumerate() {
output.push_str(&format!(
"{},{},{},{}\n",
task.name, task.priority, task.description, task.done
));
}
fs::write("tasks.txt", output).expect("Could not save");
}
fn load() -> TodoList {
match fs::read_to_string("tasks.txt") {
Ok(content) => {
let mut list = TodoList::new();
for line in content.lines() {
let parts: Vec<&str> = line.split(',').collect();
if parts.len() == 4 {
let name = parts[0].to_string();
let priority: usize = parts[1].parse().expect("Bad priority");
let description = parts[2].to_string();
let done: bool = parts[3].parse().expect("Bad done value");
let mut task = Task::new(name, priority, description);
task.done = done;
list.list_tasks.push(task);
}
}
list
}
Err(_) => TodoList::new(),
}
}
}
fn main() {
println!("Bienvenue dans le menu de la ToDoList APP !");
let mut s1 = TodoList::new();
let mut s1 = TodoList::load();
loop {
println!("\n--- ToDoList APP ---");
println!("Voici la liste des tâches");
s1.list();
println!("Vous pouvez; \n Pressez 1 pour créer une tâche.\n Pressez 2 pour supprimer une tâche \n Pressez 3 pour revoir la liste de tâche.\n Et écrire quit pour quitter l'application");
println!(
"Vous pouvez; \n Pressez 1 pour créer une tâche.\n Pressez 2 pour supprimer une tâche \n Pressez 3 pour revoir la liste de tâche.\n Et écrire quit pour quitter l'application"
);
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read");
let input = input.trim();
if(input=="1") {
if input == "1" {
let mut input2 = String::new();
println!("Créons une tâche, veuillez entrer: Le nom de la tâche");
io::stdin().read_line(&mut input2).expect("Failed to read");
let input2 = input2.trim();
let TacheName = input2;
println!("Créons une tâche, veuillez entrer: la priorité de cette dernière (chiffre de 1 à 5)");
println!(
"Créons une tâche, veuillez entrer: la priorité de cette dernière (chiffre de 1 à 5)"
);
let mut input3 = String::new();
io::stdin().read_line(&mut input3).expect("Failed to read");
let input3 = input3.trim();
@@ -82,11 +118,15 @@ fn main() {
io::stdin().read_line(&mut input4).expect("Failed to read");
let input4 = input4.trim();
let description = input4;
s1.create_task(TacheName.to_string(), priority.trim().parse().expect("Not a number!"), description.to_string());
s1.create_task(
TacheName.to_string(),
priority.trim().parse().expect("Not a number!"),
description.to_string(),
);
println!("La tâche à bien été crée !");
s1.list();
}
if(input=="2"){
if input == "2" {
s1.list();
println!("Veuillez choisir une tâche à supprimer");
let mut input = String::new();
@@ -94,9 +134,12 @@ fn main() {
let input = input.trim();
s1.delete(input.trim().parse().expect("Not a number !"));
}
if(input =="3"){
if input == "3" {
s1.list();
}
if input == "quit" {
s1.save();
break;
}
}
}

1
tasks.txt Normal file
View File

@@ -0,0 +1 @@
EHEHEH,1,EHHEHEHEH,false