Ce projet a été réalisé dans le cadre du cours de développement C#.NET de ZZ2 à l'ISIMA, au sein de la filière F2. Il s'agissait d'un projet individuel réalisé par moi, Said Mounji, visant à développer une application de gestion de contacts et de dossiers structurée sous forme d'arborescence. Cette approche permettait une organisation intuitive et efficace des informations, offrant ainsi une expérience utilisateur optimale.
L'implémentation de ce projet se décompose en 3 sous-projets suivants :
Ce projet propose une implémentation robuste et sécurisée d'une interface de sérialisation de données, qui est basée sur le design pattern Factory. Cette interface offre une flexibilité accrue en permettant aux utilisateurs de choisir entre deux méthodes de sérialisation : binaire (utilisant BinaryFormatter) ou XML (utilisant XMLSerializer). En adoptant ce design pattern, le projet garantit une modularité et une extensibilité optimales, tout en simplifiant la gestion et la maintenance du code.
Ce projet se concentre sur l'implémentation et l'exposition des structures de données métier essentielles requises pour son fonctionnement. En plus de ces structures, il intègre un gestionnaire d'arborescence, qui inclut la sérialisation des données chiffrées. La sérialisation des données est réalisée sur des objets spécifiques, ce qui permet de sauvegarder uniquement les données nécessaires à la régénération de l'arborescence et de ses informations associées. Cette approche optimise l'utilisation des ressources et réduit la taille des fichiers de sauvegarde, tout en préservant l'intégrité des données.
Description : Capture d'écran montrant la liste des commandes disponibles dans l'application console.
Description : Capture d'écran montrant l'ajout d'un dossier dans l'application console.
Ajouter Contact : ajoutercontact <nom> <prenom> <adresse> <telephone> <email> <entreprise> <sexe:Homme|Femme> <relation:Ami|Famille|Collegue|Connaissance|Autre>
Description : Capture d'écran montrant l'ajout d'un contact dans l'application console.
Description : Capture d'écran montrant le changement de répertoire dans l'application console.
Description : Capture d'écran montrant l'affichage des dossiers et contacts dans l'application console.
Description : Capture d'écran montrant l'affichage du chemin courant dans l'application console.
Description : Capture d'écran montrant la suppression d'un dossier dans l'application console.
Description : Capture d'écran montrant la suppression d'un contact dans l'application console.
Description : Capture d'écran montrant la modification d'un dossier dans l'application console.
Modification du Contact : modifiercontact <nom> nom=<nouveau-nom> [prenom=<nouveau-prénom>] [adresse=<nouvelle-adresse>] [telephone=<nouveau-numéro-de-téléphone>] [email=<nouvelle-adresse-e-mail>] [entreprise=<nouvelle-entreprise>] [sexe=<nouveau-sexe: homme|femme>] [relation=<nouvelle-relation: ami|famille|collegue|connaissance|autre>]
Description : Capture d'écran montrant la modification d'un contact dans l'application console.
Description : Capture d'écran montrant l'enregistrement et le chargement des données sans clé dans l'application console.
-
Description : Capture d'écran montrant 3 tentatives échouées d'enregistrement et de chargement des données avec clé dans l'application console.
Description : Capture d'écran montrant le succès de l'enregistrement et du chargement des données avec clé dans l'application console.
- Gestion des dossiers :
- Classe Dossier:
- Attributs :
Nom
: Nom du dossierFichiers
: liste des fichiers
- Méthodes :
GetFichiers
: retourne la liste des fichiers, sans argumentsAjouterFichier
: ajoute un fichier, arguments (Fichier fichier)SupprimerFichier
: supprime un fichier, arguments (Fichier fichier)GetDossiers
: retourne la liste des dossiers, sans argumentsGetDossier
: retourne un dossier, arguments (string path)SupprimerDossier
: supprime un dossier, arguments (string nom)GetContact
: retourne un contact, arguments (string nom)GetContacts
: retourne la liste des contacts, sans argumentsSupprimerContact
: supprime un contact, arguments (string nom)Clear
: supprime tous les fichiers, sans argumentsGetPath
: retourne le chemin du dossier, sans argumentsGetRoot()
: retourne le dossier racine, sans argumentsToString(string prefix = "")
: affiche les informations du dossierToStorage
: convertit les informations du dossier en fichier de stockage, sans arguments
- Attributs :
- Opérations pour l'application Console :
ajouterdossier <nomDossier>
modifierdossier <nom> nom=<nouveau-nom>
supprimerdossier <nomDossier>
- Classe Dossier:
- Gestion des contacts :
- Classe Contact :
- Attributs :
Nom
: nom du contactPrenom
: prénom du contactAdresse
: adresse du contactTelephone
: numéro de téléphone du contactEmail
: email du contactEntreprise
: le nom de l'entreprise du contactSexe
: sexe du contact (Homme | Femme)Relation
: relation de l'utilisateur avec le contact (Ami | Famille | Collegue | Connaissance | Autre)
- Méthodes :
ToString(string prefix = "")
: pour afficher les informations du contactToStorage()
: pour convertir les informations du contact en fichier de stockage
- Attributs :
- Opérations pour l'application Console :
ajoutercontact <nom> <prenom> <adresse> <telephone> <email> <entreprise> <sexe:Homme|Femme> <relation:Ami|Famille|Collegue|Connaissance|Autre>
modifiercontact <nom> nom=<nouveau-nom> [prenom=<nouveau-prénom>] [adresse=<nouvelle-adresse>] [telephone=<nouveau-numéro-de-téléphone>] [email=<nouvelle-adresse-e-mail>] [entreprise=<nouvelle-entreprise>] [sexe=<nouveau-sexe: homme|femme>] [relation=<nouvelle-relation: ami|famille|collegue|connaissance|autre>]
supprimercontact <nomContact>
- Classe Contact :
- Gestion des erreurs et messages d'erreurs utilisateur
- Navigation entre les dossiers et la possibilité d'afficher le répertoire courant ou toute l'arborescence :
- Navigation :
changerdossier <chemin relatif>
- Affichage du répertoire courant :
afficherchemin
- Affichage de toute l'arborescence :
afficher
- Navigation :
- Documentation et Qualité du Code
- Sérialisation par deux options (Binary = BinaryFormatter, XML = XmlSerializer) et par un mot de passe, ou identifiant Windows de sécurité (user-SID) si non spécifié :
- Possibilité d'enregistrer et de charger les données et si une clé de chiffrement a été spécifiée lors de 3 tentatives échouées la suppression de l'enregistrement