Projet Maven simple, ouvrable directement dans NetBeans (File → Open Project).
Sujet 3 — Gestion des contrats d'assurance (EPL — Développement d'Applications Desktop, S6 2026).
- JDK 17 ou plus (JDK 21 recommandé)
- Maven 3.8+ (intégré à NetBeans)
- Connexion internet au premier build (téléchargement des dépendances Maven)
mvn clean javafx:runDans NetBeans, utiliser directement le bouton Run du projet (voir nbactions.xml, qui route
Run/Debug vers le goal javafx:run, plus fiable que l'action Maven par défaut pour une appli JavaFX).
- Utilisateur :
admin - Mot de passe :
admin123
(Compte créé automatiquement au premier lancement si la table users est vide. Un nouveau
compte peut aussi être créé via la page "Inscription".)
En conditions normales d'exécution, le fichier SQLite est créé automatiquement dans le dossier
utilisateur (~/.assurance-app/assurance.db sur Linux/Mac, C:\Users\<utilisateur>\.assurance-app\assurance.db
sur Windows) au premier lancement — aucune installation de serveur de base de données n'est nécessaire.
Pour les besoins du rendu, une copie figée de la base (avec le compte de test et quelques
contrats d'exemple) et le schéma SQL sont fournis dans database/ :
database/assurance.db— copie de la base de données SQLitedatabase/schema.sql— script SQL du schéma (tablesusersetcontrats)
Trois artefacts construits automatiquement pour Windows via GitHub Actions
(voir .github/workflows/build-windows.yml, déclenché à chaque push sur main) :
| Fichier | Contenu |
|---|---|
gestion-contrats-assurance-jar.zip |
Le jar exécutable (java -jar gestion-contrats-assurance.jar) |
gestion-contrats-assurance-installeur-exe.zip |
L'installeur Windows (.exe) — installe l'application sur la machine |
gestion-contrats-assurance-executable-app.zip |
L'exécutable de l'application prêt à l'emploi (dossier avec GestionContratsAssurance.exe), sans passer par une installation |
mvn clean package
mvn org.panteleyev:jpackage-maven-plugin:jpackage@installer # -> installer-dist/
mvn org.panteleyev:jpackage-maven-plugin:jpackage@app-image # -> app-image-dist/jpackage fabrique un livrable pour l'OS sur lequel la commande tourne (pas de
cross-compilation) : .exe sur Windows (nécessite WiX Toolset),
.deb sur Linux (nécessite fakeroot et binutils), .dmg sur Mac. Le pom.xml détecte l'OS
automatiquement (profils Maven) et choisit le bon type.
Voir le dossier screen/ : Login, Sign Up, Home (tableau des contrats), formulaire d'ajout/modification.
database/
├── assurance.db (copie de la base SQLite pour le rendu)
└── schema.sql (schéma SQL)
executables/ (jar, installeur .exe, exécutable app-image — livrables générés)
screen/ (captures des 4 écrans)
src/main/java/com/eplis/assurance/
├── MainApp.java (point d'entrée JavaFX)
├── Launcher.java (point d'entrée pour le jar/installeur packagés)
├── model/ (Contrat, User)
├── dao/ (accès JDBC : UserDAO, ContratDAO)
├── controller/ (LoginController, SignUpController, HomeController,
│ AjoutContratController, ModifierContratController)
├── util/ (DatabaseManager, SceneNavigator, UserSession)
└── exception/ (ValidationException, DatabaseException)
src/main/resources/
├── fxml/ (Login, SignUp, Home, AjoutContrat, ModifierContrat)
├── css/style.css
└── images/logo.png
.github/workflows/build-windows.yml (CI : build jar + installeur + app-image sur Windows)
pom.xml
nbactions.xml (config NetBeans : Run/Debug -> javafx:run)
- Login : authentification via JDBC, mot de passe vérifié avec BCrypt.
- Sign Up : création de compte, mot de passe haché en BCrypt, validations (identifiant déjà pris, mot de passe trop court).
- Home : TableView des contrats, informations générales (nombre de contrats, total des primes), déconnexion.
- Ajout d'un contrat : formulaire modal, visible immédiatement dans le tableau après validation (numéro unique, prime numérique positive, champs obligatoires).
- Modification d'un contrat : double-clic sur une ligne ou bouton "Modifier le statut" — permet de mettre à jour assuré, produit, prime, date d'effet et statut ; le numéro (clé métier) reste non modifiable.
- Gestion des erreurs et exceptions séparée en deux familles :
ValidationException(erreurs de saisie, affichées à l'écran) etDatabaseException(erreurs SQL, enveloppées pour ne jamais exposer de détails techniques bruts à l'utilisateur).



