MaPrésence — Application Android de gestion des présences
Introduction
MaPrésence est une application Android éco-conçue qui centralise la gestion des présences pour trois profils : étudiants, enseignants et administrateurs. Elle permet la consultation des informations personnelles, l’enregistrement des présences, la création des cours/séances et la génération de statistiques d’assiduité pour offrir une vision globale et exploitable de la présence. Le développement a été orienté performance & sobriété : thème sombre, choix de types de données économes, réduction des transitions coûteuses et profilage mémoire.
I. Fonctionnalités par rôle
Barre de navigation commune
Une barre de navigation inférieure permet d’accéder à l’accueil, aux notifications, à la liste des absences (ou matières), et à la déconnexion (retour à la page de login).
Étudiant
- Consultation des données personnelles.
- Accès aux notifications (enseignants/administration).
- Liste complète des absences par matière, avec filtrage par état (présent/absent).
Enseignant
- Consultation des données personnelles et notifications.
- Gestion du planning : créer, modifier, supprimer des séances.
- Appel des étudiants par séance (présent/absent).
- Consultation des matières enseignées et statistiques d’assiduité.
Administrateur
- Accueil : informations personnelles, liste des matières, aperçu des absences.
- Menu flottant (+) : créer un utilisateur, créer un cours, créer une séance, consulter les statistiques.
- Écrans dédiés : création/modification/suppression des entités (utilisateur, cours, séance).
- Page Statistiques : graphiques (barres) des absences par matière.
II. Architecture des données (Modèle relationnel)
Le modèle de données est centré sur les entités Utilisateur, Cours, Seance et Presence, avec des relations adaptées à la réalité académique (enseignants ↔ cours, étudiants ↔ séances, etc.).
Entités & attributs
| Entité | Attributs | Remarques |
|---|---|---|
| Utilisateur | id:int, nom:String, prenom:String, email:String, motDePasse:String (hashé), role:short (1=prof, 2=étudiant, 3=admin) | Rôles numérisés (économie mémoire vs String). Hash via at.favre.lib:bcrypt:0.9.0. |
| Cours | id:int, nom:String, dateDebut:String, dateFin:String | Un cours regroupe plusieurs séances, enseigné par un ou plusieurs professeurs. |
| Seance | id:int, idCours:int (FK), dateDebut:String, dateFin:String | Chaque séance appartient à un unique cours. |
| Presence | utilisateurId:int (FK), seanceId:int (FK), etat:boolean | Présent (true) / Absent (false). |
Relations clés
- Enseigne : Utilisateur (prof) ↔ Cours (1 → 0..n)
- Participe : Utilisateur (étudiant) ↔ Seance (n ↔ n)
- EstPrésent : Utilisateur ↔ Seance
- Appartient : Seance → Cours (1 → 1)
III. Persistance & accès aux données (Room)
L’application utilise Room (ORM Android) pour mapper les tables SQLite à des entités Java, et des DAO (Data Access Objects) pour des accès typés et sûrs. Les requêtes SQLite sont exprimées via des annotations, réduisant le code répétitif et les erreurs.
- Entities : classes annotées pour Utilisateur, Cours, Seance, Presence.
- DAO : interfaces annotées (CRUD, requêtes filtrées, jointures pour les statistiques d’absences par matière).
- Database : singleton
@Databaseexposant les DAO. - Séparation des responsabilités : UI ↔ ViewModel/UseCases ↔ DAO ↔ SQLite.
IV. Sécurité
- Hash des mots de passe avec
BCryptvia la librairieat.favre.lib:bcrypt:0.9.0. - Rôles encodés sur type numérique (
short) pour limiter exposition et surcoût mémoire. - Validation côté UI et côté accès données (filtrage par rôle, restrictions d’actions).
V. Éco-conception & performance
Choix colorimétriques
Thème sombre (noir/vert) pour diminuer la consommation énergétique des écrans.
Types de données
Passage de String à byte/short pour le rôle afin d’optimiser l’empreinte mémoire
(vs. encodage UTF-8 des chaînes).
Minimisation des transitions
Architecture en hub centralisé (accès direct aux fonctionnalités depuis l’accueil adapté au rôle), réduisant le temps d’usage, les requêtes et les transitions coûteuses.
Profilage
Utilisation de Android Studio Profiler pour observer la RAM/CPU lors des scénarios usuels (login → liste d’appel → validation) et supprimer les pics superflus.
VI. Galerie (aperçu écrans)
Quelques écrans clés : accueil (par rôle), saisie de présence, statistiques.
VII. Conclusion
MaPrésence montre qu’une application mobile peut concilier fonctionnalité et responsabilité environnementale. Les besoins des trois profils utilisateurs sont couverts (consultation, enregistrement, pilotage), avec un soin particulier apporté à la sobriété de l’interface et à l’optimisation des accès aux données via Room/SQLite. Le résultat : une solution fiable, performante et durable pour la gestion des présences.