Projet 1

ITManageHub — Gestion du parc informatique

Java Java Swing MySQL JDBC Eclipse Git GitHub Mermaid

Contexte

TechNova Solutions, une PME spécialisée en prestation informatique, gère un parc de plusieurs centaines d'équipements répartis sur différents sites. Le service IT s'appuyait jusqu'alors sur des fichiers Excel partagés, devenus ingérables face à la croissance du parc : doublons, données obsolètes, aucune traçabilité des modifications.

La direction a confié le développement d'un outil desktop centralisé pour recenser, catégoriser et gérer l'ensemble des équipements, avec un contrôle des accès par rôle (Administrateur / Utilisateur). J'ai eu la charge de l'intégralité du projet : conception, développement, tests et documentation.

Ma contribution personnelle

  • Authentification — connexion email/mot de passe avec validation, gestion des erreurs et transmission de l'objet User en session
  • Tableau de bord — affichage dynamique du nombre d'équipements et de catégories, rôle et nom de l'utilisateur connecté
  • Gestion des équipements (CRUD complet) — tableau interactif avec boutons icônes Modifier/Supprimer par ligne, formulaire d'ajout/modification, confirmation avant suppression
  • Profil utilisateur — modification des informations personnelles avec mise à jour synchronisée en base et en mémoire
  • Architecture MVC — découpage en packages controleur, modele, vue avec DAO centralisé (PreparedStatement)
  • Modélisation & conception — MCD, schéma relationnel et diagramme de classes réalisés avant le développement, complétés d'un script SQL de déploiement

Réalisations & Liens

Screenshots à venir
Connexion
Screenshots à venir
Tableau de bord
Screenshots à venir
Équipements
Screenshots à venir
Profil
GitHub
Détails techniques

Organisation & méthode

Développement structuré couche par couche :

  • Conception — analyse du besoin, MCD, diagramme de classes Mermaid
  • Modèle — classe Connexion (pilote JDBC) + classe Modele (DAO, toutes les requêtes SQL)
  • VueVueConnexion, VuePrincipal, PanelPrincipal, PanelEquipements, PanelProfil
  • ContrôleurItEvent (point d'entrée, main)
  • Tests & recette — tests fonctionnels par scénario (cas nominal + cas limite)

Versioning via Git + GitHub avec historique de commits tout au long du développement.

Difficultés rencontrées & solutions

1. Boutons cliquables dans un JTable — Swing n'autorise pas nativement des boutons actifs dans les cellules. Résolu par deux classes internes : IconButtonRenderer (affichage) et IconButtonEditor (gestion du clic), chaque bouton recevant l'id de la ligne pour déclencher l'action CRUD correcte.

2. Navigation entre panneaux sans recréer la fenêtre — Résolu par la méthode showPanel(JPanel) dans VuePrincipal utilisant removeAll() + revalidate() + repaint() sur le panneau central.

3. Chargement des icônes selon l'environnement — Le chemin des ressources différait entre Eclipse et l'exécution en JAR. Résolu avec getClass().getResource() et redimensionnement via getScaledInstance() avec gestion du cas null.

4. Validation de la saisie numérique — Le champ quantité doit n'accepter que des entiers. Résolu par Integer.parseInt() dans un bloc try/catch NumberFormatException avec message d'erreur JOptionPane et blocage de la soumission.

Tests réalisés

  • Connexion — credentials corrects → accès tableau de bord / mauvais mot de passe → message d'erreur, accès bloqué
  • Ajout équipement — formulaire complet → ajout en BDD et rechargement du tableau / champ quantité non numérique → erreur affichée, soumission bloquée
  • Modification équipement — données pré-remplies, modification → BDD mise à jour / annulation → aucune modification
  • Suppression équipement — confirmation → suppression en BDD / annulation → ligne conservée
  • Profil — mise à jour → BDD et objet User en mémoire synchronisés
  • Navigation — changement de panneau → contenu mis à jour sans rechargement de fenêtre