HebSio
Documentation & Histoire du projet
Contexte : Dans le cadre de ma formation, j'ai conçu et développé en totale autonomie une application de bureau en Java destinée à la gestion administrative d'un établissement pénitentiaire. Ce projet avait pour but de mettre en pratique les concepts avancés de la programmation orientée objet et l'interaction avec une base de données relationnelle.
Architecture et Choix Techniques : J'ai structuré l'application selon le patron de conception MVC (Modèle-Vue-Contrôleur) pour assurer une séparation nette entre les données, l'interface graphique et la logique métier.
Interface Graphique (Vue) : Développement d'une interface Swing ergonomique basée sur une fenêtre unique (JFrame) avec un système de navigation par menus (JMenuBar) et panneaux dynamiques (JPanel), offrant une expérience utilisateur fluide sans multiplication de fenêtres.
Persistance des Données (Modèle) : Connexion à une base de données MySQL via JDBC. J'ai mis un point d'honneur à sécuriser l'application en utilisant exclusivement des requêtes préparées (PreparedStatement) pour prévenir les injections SQL et optimiser les performances .
Logique Métier (Contrôleur) : Implémentation de règles de gestion strictes, notamment l'identification relative (un détenu ne peut être créé sans être affecté à une cellule existante) et la gestion dynamique de la capacité des cellules.
Fonctionnalités Clés :
CRUD Complet : Gestion des Détenus, Cellules, et du Personnel (Surveillants, Directeur).
Gestion de l'Héritage : Utilisation du polymorphisme pour gérer les types de cellules (Standard vs Mitard) et de personnel.
Algorithmes : Génération intelligente et séquentielle des identifiants de cellules par bâtiment et système de recherche multicritères.
Exports : Fonctionnalité d'export des listes aux formats CSV, XML et JSON.
Qualité Logicielle : Réalisation de tests unitaires (JUnit) couvrant l'intégralité des méthodes du modèle, avec nettoyage automatique de la base de données après chaque test pour garantir l'intégrité des données.