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