Projet de Synthèse

Programmation Java & Bases de Données SQL

Projet : Mini Système de Gestion de Scolarité

Développer une application console Java connectée à une base de données SQL

Objectifs Pédagogiques

Ce projet vise à consolider vos compétences en Java et en SQL en vous faisant construire une application complète de bout en bout. À la fin de ce projet, vous saurez :

Le Scénario

Vous êtes chargé de développer une application en ligne de commande pour une petite école. Cette application doit permettre au personnel administratif de gérer les étudiants et leurs inscriptions aux cours.

1. Structure de la Base de Données

La première étape est de créer la base de données. Utilisez un SGBD comme MySQL, PostgreSQL ou même SQLite. Voici le script SQL pour créer les tables nécessaires :

-- Table pour stocker les informations des étudiants CREATE TABLE etudiants ( id INT PRIMARY KEY AUTO_INCREMENT, nom VARCHAR(100) NOT NULL, prenom VARCHAR(100) NOT NULL, date_naissance DATE ); -- Table pour stocker les cours disponibles CREATE TABLE cours ( id INT PRIMARY KEY AUTO_INCREMENT, nom_cours VARCHAR(150) NOT NULL, credits INT ); -- Table de jonction pour gérer la relation Plusieurs-à-Plusieurs -- Un étudiant peut s'inscrire à plusieurs cours -- Un cours peut avoir plusieurs étudiants CREATE TABLE inscriptions ( etudiant_id INT, cours_id INT, PRIMARY KEY (etudiant_id, cours_id), FOREIGN KEY (etudiant_id) REFERENCES etudiants(id), FOREIGN KEY (cours_id) REFERENCES cours(id) );

Architecture de l'Application Java

Pour garder le code organisé, nous vous suggérons de le structurer en trois parties :

Fonctionnalités à Implémenter

Votre application devra présenter un menu textuel à l'utilisateur et proposer les fonctionnalités suivantes :

1Connexion à la Base de Données

Objectif : Créer une classe utilitaire pour gérer la connexion JDBC.

Créez une méthode statique qui retourne un objet Connection. Cette méthode sera réutilisée par toutes vos classes DAO.

2Ajouter un Nouvel Étudiant (Create)

Objectif : Permettre à l'utilisateur de saisir les informations d'un nouvel étudiant et de l'enregistrer dans la base.

Le programme demandera le nom, le prénom et la date de naissance. Ces informations seront ensuite insérées dans la table etudiants via une requête INSERT.

3Afficher Tous les Étudiants (Read)

Objectif : Lister tous les étudiants présents dans la base de données.

Le programme exécutera une requête SELECT sur la table etudiants et affichera les résultats de manière lisible dans la console.

4Inscrire un Étudiant à un Cours

Objectif : Lier un étudiant existant à un cours existant.

Le programme demandera l'ID de l'étudiant et l'ID du cours, puis insérera une nouvelle ligne dans la table de jonction inscriptions.

5Afficher les Étudiants d'un Cours

Objectif : Consulter la liste des inscrits pour un cours donné.

Le programme demandera l'ID d'un cours, puis exécutera une requête SQL avec une jointure (JOIN) entre les tables etudiants et inscriptions pour retrouver et afficher tous les étudiants concernés.

Pour Aller Plus Loin (Bonus)

Objectif : Implémenter les opérations de mise à jour et de suppression.
  • Mettre à jour un étudiant (Update) : Demander l'ID d'un étudiant et permettre de modifier son nom ou son prénom.
  • Supprimer un étudiant (Delete) : Demander l'ID d'un étudiant et le supprimer de la base. Attention aux contraintes de clé étrangère !

📦 Livrables Attendus

📄 Code Source Complet

Un dossier compressé (.zip) contenant tous les fichiers .java de votre projet, organisés en packages si possible (ex: com.ecole.model, com.ecole.dao).

📝 Note Technique (1-2 pages)

Un court document PDF qui contient :

  • Une brève description de l'architecture de votre projet.
  • Un diagramme de classes UML simple montrant vos classes principales et leurs relations.
  • Une section sur les difficultés que vous avez rencontrées et comment vous les avez surmontées.