Skip to content

SKJUV/tp1ct203

Repository files navigation

TP203 — Gestion des Emplois du Temps Universitaires

Application desktop multiplateforme de gestion des emplois du temps pour un établissement d'enseignement supérieur, développée avec Avalonia UI et .NET 9.

Table des matières

Présentation

TP203 est un client desktop qui permet la gestion complète des emplois du temps universitaires. L'application propose des tableaux de bord adaptés à chaque rôle (administrateur, enseignant, étudiant, délégué) et communique avec une API REST backend pour la persistance des données.

Fonctionnalités

Authentification

  • Connexion sécurisée via login et mot de passe
  • Inscription de nouveaux utilisateurs avec choix du rôle
  • Redirection automatique vers le tableau de bord correspondant au rôle

Tableau de bord Administrateur (Chef de département)

  • Vue d'ensemble : emploi du temps hebdomadaire filtrable par filière/niveau, ajout de séances et de niveaux
  • Gestion des salles : consultation, ajout de nouvelles salles (Amphi, Salle, Labo) avec capacité
  • Suivi pédagogique : suivi de la progression des unités d'enseignement (volume horaire effectué vs total)
  • Structure académique : gestion des départements, filières et niveaux (CRUD complet)

Tableau de bord Enseignant

  • Emploi du temps hebdomadaire personnel (séances assignées)
  • Consultation des étudiants de ses UE
  • Consultation des salles disponibles
  • Ajout de nouvelles séances de cours

Tableau de bord Étudiant

  • Emploi du temps hebdomadaire de sa classe/niveau
  • Affichage du nom et de la classe de l'étudiant

Tableau de bord Délégué

  • Liste des étudiants de son niveau
  • Gestion de la présence (marquage présent/absent)
  • Certification de la feuille de présence

Interface utilisateur

  • Thème sombre moderne avec palette « Glass Card »
  • Design responsive avec adaptation selon la largeur de la fenêtre
  • Animations et transitions fluides
  • Police Inter pour une typographie soignée

Architecture

L'application suit le patron MVVM (Model-View-ViewModel) :

┌─────────────┐     ┌──────────────────┐     ┌─────────────┐
│    Views     │◄────│   ViewModels     │────►│   Models    │
│   (AXAML)   │     │ (CommunityToolkit│     │             │
│              │     │      MVVM)       │     │             │
└─────────────┘     └────────┬─────────┘     └─────────────┘
                             │
                    ┌────────▼─────────┐
                    │    Services      │
                    │  (ApiService,    │
                    │   DataProvider)  │
                    └──────────────────┘
  • Views : interfaces utilisateur déclarées en AXAML (Avalonia XAML)
  • ViewModels : logique de présentation et gestion de l'état, avec CommunityToolkit.Mvvm
  • Models : classes de données mappées sur les entités du backend (JSON)
  • Services : couche d'accès aux données (API REST et données de démonstration)
  • ViewLocator : résolution automatique des vues à partir des ViewModels par convention de nommage

Technologies utilisées

Technologie Version Rôle
.NET 9.0 Framework d'exécution
Avalonia UI 11.3.11 Framework UI multiplateforme
Avalonia Fluent Theme 11.3.11 Thème visuel
Avalonia DataGrid 11.3.11 Composant de grilles de données
Avalonia Fonts Inter 11.3.11 Police typographique
CommunityToolkit.Mvvm 8.2.1 Implémentation MVVM (ObservableObject, RelayCommand)
Newtonsoft.Json 13.0.4 Sérialisation/désérialisation JSON

Prérequis

Installation et lancement

  1. Cloner le dépôt

    git clone https://github.com/SKJUV/tp1ct203.git
    cd tp1ct203
  2. Restaurer les dépendances

    dotnet restore
  3. Compiler le projet

    dotnet build
  4. Lancer l'application

    dotnet run

Note : Sans serveur API backend accessible, l'application utilise des données de démonstration (mock) pour l'affichage.

Structure du projet

tp1ct203/
├── App.axaml                  # Configuration globale (thème, styles, ressources)
├── App.axaml.cs               # Point d'entrée Avalonia et initialisation
├── Program.cs                 # Point d'entrée principal (.NET)
├── ViewLocator.cs             # Résolution automatique View ↔ ViewModel
├── TP203.csproj               # Fichier projet .NET
├── app.manifest               # Manifeste Windows
├── Converters/
│   └── WidthToVisibilityConverter.cs  # Convertisseur pour le responsive design
├── Models/
│   └── AppModels.cs           # Modèles de données (Departement, Filiere, Niveau,
│                              #   Utilisateur, Etudiant, Salle, UniteEnseignement,
│                              #   SeanceCours)
├── Services/
│   ├── ApiService.cs          # Client HTTP pour l'API REST backend
│   └── DataProvider.cs        # Fournisseur de données de démonstration (mock)
├── ViewModels/
│   ├── ViewModelBase.cs                # Classe de base (ObservableObject)
│   ├── MainWindowViewModel.cs          # Navigation principale et routage par rôle
│   ├── LoginViewModel.cs               # Authentification
│   ├── RegisterViewModel.cs            # Inscription
│   ├── AdminDashboardViewModel.cs      # Tableau de bord administrateur
│   ├── AdminOverviewViewModel.cs       # Vue d'ensemble admin (emploi du temps)
│   ├── AdminSubViewModels.cs           # Gestion des salles (admin)
│   ├── AdminStructureViewModel.cs      # Structure académique (départements, filières, niveaux)
│   ├── AdminSuiviViewModel.cs          # Suivi pédagogique des UE
│   ├── TeacherDashboardViewModel.cs    # Tableau de bord enseignant
│   ├── TeacherSubViewModels.cs         # Sous-vues enseignant (étudiants, salles, emploi du temps)
│   ├── StudentDashboardViewModel.cs    # Tableau de bord étudiant
│   ├── MobileDashboardViewModel.cs     # Tableau de bord délégué (présences)
│   ├── WeeklyScheduleViewModel.cs      # Emploi du temps hebdomadaire
│   ├── AddSeanceViewModel.cs           # Formulaire d'ajout de séance
│   ├── AddSalleViewModel.cs            # Formulaire d'ajout de salle
│   ├── AddUEViewModel.cs               # Formulaire d'ajout d'UE
│   ├── AddNiveauViewModel.cs           # Formulaire d'ajout de niveau
│   ├── AddDepartmentViewModel.cs       # Formulaire d'ajout de département
│   └── AddFiliereViewModel.cs          # Formulaire d'ajout de filière
└── Views/
    ├── MainWindow.axaml                # Fenêtre principale
    ├── LoginView.axaml                 # Page de connexion
    ├── RegisterView.axaml              # Page d'inscription
    ├── AdminDashboardView.axaml        # Tableau de bord administrateur
    ├── AdminOverviewView.axaml         # Vue d'ensemble admin
    ├── AdminSallesView.axaml           # Gestion des salles
    ├── AdminStructureView.axaml        # Structure académique
    ├── AdminSuiviView.axaml            # Suivi pédagogique
    ├── TeacherDashboardView.axaml      # Tableau de bord enseignant
    ├── TeacherStudentsView.axaml       # Liste des étudiants (enseignant)
    ├── TeacherSallesView.axaml         # Liste des salles (enseignant)
    ├── StudentDashboardView.axaml      # Tableau de bord étudiant
    ├── MobileDashboardView.axaml       # Tableau de bord délégué
    ├── WeeklyScheduleView.axaml        # Composant emploi du temps hebdomadaire
    ├── ScheduleTileView.axaml          # Tuile de séance individuelle
    ├── AddSeanceWindow.axaml           # Fenêtre d'ajout de séance
    ├── AddSalleWindow.axaml            # Fenêtre d'ajout de salle
    ├── AddUEWindow.axaml               # Fenêtre d'ajout d'UE
    ├── AddNiveauWindow.axaml           # Fenêtre d'ajout de niveau
    ├── AddDepartmentWindow.axaml       # Fenêtre d'ajout de département
    └── AddFiliereWindow.axaml          # Fenêtre d'ajout de filière

Modèle de données

Les principales entités du domaine sont :

Entité Description
Departement Département académique (nom, code)
Filiere Filière rattachée à un département
Niveau Niveau d'études (ex : ICT-L2), avec année académique, semestre et effectif
Utilisateur Compte utilisateur avec rôle (Enseignant, Étudiant, Délégué, Admin)
Etudiant Étudiant avec matricule, nom, prénom et niveau
Salle Salle de cours (nom, type : Amphi/Salle/Labo, capacité)
UniteEnseignement UE avec code, intitulé, volume horaire et enseignant responsable
SeanceCours Séance planifiée (date, heures, UE, enseignant, salle, niveau, statut)

Types de séances

  • CM : Cours Magistral
  • TP : Travaux Pratiques
  • TD : Travaux Dirigés
  • CC : Contrôle Continu
  • EXAM : Examen

Statuts de séances

  • PLANIFIEE : séance programmée
  • VALIDEE : séance confirmée
  • ANNULEE : séance annulée

Rôles utilisateurs

Rôle Code Accès
Enseignant 1 Emploi du temps personnel, liste étudiants, salles, ajout de séances
Étudiant 2 Emploi du temps de sa classe
Délégué 3 Gestion des présences, certification
Admin 4 Gestion complète (séances, salles, UE, structure académique)

API Backend

L'application communique avec une API REST. Les endpoints principaux sont :

Méthode Endpoint Description
POST /api/Utilisateur/login Authentification
POST /api/Utilisateur/register Inscription
GET /api/Utilisateur Liste des utilisateurs
GET /api/séances Liste des séances
POST /api/séances Créer une séance
PUT /api/séances/{id} Modifier une séance
DELETE /api/séances/{id} Supprimer une séance
GET /api/Salle Liste des salles
POST /api/Salle Créer une salle
PUT /api/Salle/{id} Modifier une salle
DELETE /api/Salle/{id} Supprimer une salle
GET /api/UniteEnseignement Liste des UE
POST /api/UniteEnseignement Créer une UE
DELETE /api/UniteEnseignement/{id} Supprimer une UE
GET /api/Niveau Liste des niveaux
POST /api/Niveau Créer un niveau
DELETE /api/Niveau/{id} Supprimer un niveau
GET /api/Departement Liste des départements
POST /api/Departement Créer un département
DELETE /api/Departement/{id} Supprimer un département
GET /api/Filiere Liste des filières
POST /api/Filiere Créer une filière
DELETE /api/Filiere/{id} Supprimer une filière
GET /api/Étudiant Liste des étudiants

L'URL de base de l'API est configurable dans Services/ApiService.cs.

Contribution

  1. Forker le dépôt
  2. Créer une branche pour votre fonctionnalité (git checkout -b feature/ma-fonctionnalite)
  3. Commiter vos modifications (git commit -m "feat: description de la fonctionnalité")
  4. Pousser la branche (git push origin feature/ma-fonctionnalite)
  5. Ouvrir une Pull Request

Licence

Ce projet est réalisé dans le cadre d'un travail pratique universitaire (TP CT203).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages