VisiteurDAO – Gestion des visiteurs
Application Java de gestion des visiteurs médicaux avec architecture MVC, pattern DAO, base SQLite et interface Swing.
Java SE
Swing
SQLite
DAO Pattern
MVC
Fonctionnalités
Authentification
Gestion des sessions avec rôles Admin et Visiteur (admin/admin).
CRUD complet
Ajout, modification, suppression et consultation des visiteurs.
Base SQLite
Stockage persistant avec données de test préchargées (8 visiteurs).
Interface Swing
IHM intuitive avec JTable, JSpinner et formulaires d'édition.
Gestion des rôles
Accès restreint selon le profil (seul l'admin peut modifier/supprimer).
Recherche dynamique
Filtrage des visiteurs par nom, prénom ou login.
Architecture MVC
Vue (Swing)
JFrame, JTable, JDialog, formulaires
Contrôleur
Gère l'authentification et les opérations CRUD
Modèle (DAO)
Visiteur, VisiteurDAO, BD_SQLiteOpenHelper
Code source Java
Visiteur.java - Classe modèle
▼
package com.example.visiteurdao.Modele; public class Visiteur { private String id; private String nom; private String prenom; private String login; private String mdp; private String adresse; private String codePostal; private String ville; private String dateEmbauche; // Constructeur public Visiteur(String id, String nom, String prenom, String login, String mdp, String adresse, String codePostal, String ville, String dateEmbauche) { this.id = id; this.nom = nom; this.prenom = prenom; this.login = login; this.mdp = mdp; this.adresse = adresse; this.codePostal = codePostal; this.ville = ville; this.dateEmbauche = dateEmbauche; } // Getters et Setters public String getId() { return id; } public void setId(String id) { this.id = id; } public String getNom() { return nom; } // ... autres getters/setters @Override public String toString() { return nom + " " + prenom; } }
VisiteurDAO.java - Accès aux données
▼
public class VisiteurDAO { private BD_SQLiteOpenHelper accesBD; public VisiteurDAO(Context ct) { accesBD = new BD_SQLiteOpenHelper(ct, "BDpharma", null, 1); } // Vérification des identifiants public boolean seConnecter(String unIdentifiant, String unMotDePasse) { SQLiteDatabase db = accesBD.getReadableDatabase(); Cursor curseur = db.rawQuery("SELECT mdp FROM visiteur WHERE login = ?", new String[]{unIdentifiant}); boolean succes = false; if (curseur != null && curseur.moveToFirst()) { if (curseur.getString(0).equals(unMotDePasse)) { succes = true; } curseur.close(); } return succes; } // Ajouter un visiteur public long addVisiteur(Visiteur unVisiteur) { SQLiteDatabase bd = accesBD.getWritableDatabase(); ContentValues value = new ContentValues(); value.put("id", unVisiteur.getId()); value.put("nom", unVisiteur.getNom()); // ... autres champs return bd.insert("Visiteur", null, value); } // Récupérer tous les visiteurs public ArrayList<Visiteur> getLesVisiteurs() { Cursor curseur = accesBD.getReadableDatabase() .rawQuery("SELECT * FROM Visiteur", null); return cursorToVisiteurArrayList(curseur); } // Supprimer un visiteur public long supprimerVisiteur(Visiteur unVisiteur) { SQLiteDatabase bd = accesBD.getWritableDatabase(); String condition = "nom ='" + unVisiteur.getNom() + "' AND prenom='" + unVisiteur.getPrenom() + "'"; return bd.delete("Visiteur", condition, null); } }
SessionManager.java - Gestion des sessions
▼
public class SessionManager { public static final String ROLE_ADMIN = "admin"; public static final String ROLE_VISITEUR = "visiteur"; private static final String ADMIN_LOGIN = "admin"; private static final String ADMIN_MDP = "admin"; private String loginCourant; private String roleCourant; private boolean estConnecte; public boolean isAdminCredentials(String login, String mdp) { return ADMIN_LOGIN.equals(login) && ADMIN_MDP.equals(mdp); } public void createSession(String login, String role) { this.loginCourant = login; this.roleCourant = role; this.estConnecte = true; } public boolean isAdmin() { return ROLE_ADMIN.equals(roleCourant); } public void logout() { this.loginCourant = null; this.roleCourant = null; this.estConnecte = false; } }
Base de données SQLite
Script de création de la table VISITEUR
▼
CREATE TABLE IF NOT EXISTS visiteur (
id TEXT PRIMARY KEY NOT NULL,
nom TEXT DEFAULT NULL,
prenom TEXT DEFAULT NULL,
login TEXT DEFAULT NULL,
mdp TEXT DEFAULT NULL,
adresse TEXT DEFAULT NULL,
cp TEXT DEFAULT NULL,
ville TEXT DEFAULT NULL,
dateEmbauche TEXT DEFAULT NULL
);
-- Données de test (8 visiteurs)
INSERT INTO visiteur VALUES
('a131', 'Villechalane', 'Louis', 'aribiA', 'aaaa', '8 rue des textmes', '46000', 'Cahors', '2005-12-21'),
('a17', 'Andre', 'David', 'dandre', 'oppg5', '1 rue Petit', '46200', 'Lalbenque', '1998-11-23'),
('a55', 'Bedos', 'Christian', 'cbedos', 'gmhxd', '1 rue Peranud', '46250', 'Montcuq', '1995-01-12'),
('a93', 'Tusseau', 'Louis', 'ltusseau', 'ktp3s', '22 rue des Ternes', '46123', 'Gramat', '2000-05-01'),
('b13', 'Bentot', 'Pascal', 'pbentot', 'doyw1', '11 allée des Cerises', '46512', 'Bessines', '1992-07-09'),
('b16', 'Bioret', 'Luc', 'lbioret', 'hrjfs', '1 Avenue gambetta', '46000', 'Cahors', '1998-05-11'),
('b19', 'Bunisset', 'Francis', 'fbunisset', '4vbnd', '10 rue des Perles', '93100', 'Montreuil', '1987-10-21'),
('b25', 'Bunisset', 'Denise', 'dbunisset', 's1y1r', '23 rue Manin', '75019', 'paris', '2010-12-05');
Compétences BTS SIO (SLAM)
- Concevoir et développer une application client-serveur (Java + SQLite)
- Implémenter le pattern DAO pour l'accès aux données
- Gérer les droits d'accès et les sessions utilisateurs
- Réaliser une interface graphique ergonomique avec Swing
- Assurer la persistance des données avec SQLite