ENSA de Fès Programmation Java Younes Lakhrissi
Projet 1 : Gestion des Étudiants
Objectif du projet : Développer une application pour gérer les étudiants d’une école. Cette
application permettra d’ajouter, de modifier, d’afficher et de supprimer des étudiants, avec une
interface graphique pour interagir avec la base de données.
Base de données : La base de données doit permettre de stocker des informations relatives aux
étudiants. Vous devrez décider des tables nécessaires et de la structure des colonnes pour
enregistrer les données des étudiants.
Exemples de données à inclure :
Nom, prénom, date de naissance, email, etc.
Fonctionnalités à implémenter :
Ajouter un étudiant : L'utilisateur peut entrer les informations d’un étudiant et les
sauvegarder dans la base de données.
Modifier un étudiant : Permet à l'utilisateur de modifier les informations d'un étudiant
existant.
Supprimer un étudiant : Permet à l'utilisateur de supprimer un étudiant de la base de
données.
Afficher tous les étudiants : Afficher la liste de tous les étudiants dans un tableau.
Rechercher un étudiant : Permet la recherche d'un étudiant par nom, prénom, ou email.
Interface graphique : Vous devrez créer des formulaires d'entrée (par exemple avec des
champs de texte pour le nom, le prénom, l'email) et afficher la liste des étudiants dans une table.
ENSA de Fès Programmation Java Younes Lakhrissi
Projet 2 : Gestion des Livres et Auteurs
Objectif : Créer une application pour gérer une bibliothèque avec des livres et des auteurs.
Cette application permettra d'ajouter des livres, de modifier leurs informations, de les afficher,
de les supprimer et d'ajouter des auteurs.
Base de données : La base de données devra contenir des informations sur les livres et leurs
auteurs. Vous devrez définir les tables nécessaires pour gérer ces informations.
Exemples de données à inclure :
Titre du livre, année de publication, nom de l'auteur, etc.
Fonctionnalités à implémenter :
Ajouter un livre : Permet d'ajouter un livre avec un titre, une année de publication et
l'auteur.
Modifier un livre : Permet de modifier les informations d'un livre existant.
Supprimer un livre : Permet de supprimer un livre de la base de données.
Afficher tous les livres : Afficher tous les livres avec le nom de l'auteur.
Rechercher un livre : Permet la recherche d’un livre par titre ou auteur.
Interface graphique : Vous devrez créer des formulaires pour saisir les informations des livres
et des auteurs, et afficher les livres dans une table (JTable).
ENSA de Fès Programmation Java Younes Lakhrissi
Projet 3 : Gestion des Employés
Objectif : Créer une application pour gérer les employés d'une entreprise. Cette application
permettra de suivre les informations des employés, de les affecter à un département et de leur
attribuer un rôle.
Base de données : La base de données doit inclure des informations sur les employés et leurs
départements. Vous devrez créer des tables adaptées pour cela.
Exemples de données à inclure :
Nom, prénom, date d’embauche, département, rôle, etc.
Fonctionnalités à implémenter :
Ajouter un employé : Permet à l'utilisateur d'ajouter un employé avec les informations
nécessaires.
Modifier un employé : Permet de modifier un employé (par exemple, son département
ou son rôle).
Supprimer un employé : Permet de supprimer un employé de la base de données.
Afficher les employés : Afficher tous les employés avec leurs informations (nom,
département, rôle).
Rechercher un employé : Permet de rechercher un employé par nom, rôle, ou
département.
Interface graphique : Vous devrez créer des formulaires pour saisir les informations des
ENSA de Fès Programmation Java Younes Lakhrissi
Projet 4 : Gestion des Produits et Commandes
Objectif : Créer une application pour gérer les produits dans un magasin et les commandes des
clients. Cette application permettra de suivre les informations des produits, de gérer les
commandes et de visualiser l’historique des ventes.
Base de données : La base de données devra contenir des informations sur les produits, les
clients et les commandes. Il faudra aussi gérer les relations entre ces éléments, notamment les
produits associés à une commande.
Exemples de données à inclure :
Nom du produit, prix, quantité en stock, nom du client, date de la commande, etc.
Fonctionnalités à implémenter :
Ajouter un produit : Permet à l'utilisateur d’ajouter un produit avec son nom, son prix
et sa quantité en stock.
Ajouter un client : Permet d’ajouter un client avec son nom et ses coordonnées.
Passer une commande : Permet à l'utilisateur de passer une commande, en
sélectionnant les produits et les quantités.
Afficher les produits : Afficher tous les produits avec leurs détails.
Afficher les commandes : Afficher les commandes passées par les clients, incluant les
produits commandés.
Interface graphique : Vous devrez créer des formulaires pour ajouter des produits, des clients,
et passer des commandes. Vous devrez aussi afficher les informations des produits et des
commandes dans des tableaux.
ENSA de Fès Programmation Java Younes Lakhrissi
Projet 5 : Gestion des Cours et Inscriptions
Objectif : Créer une application pour gérer les inscriptions des étudiants à des cours. Cette
application permettra de gérer les étudiants, les cours et les inscriptions des étudiants à ces
cours.
Base de données : La base de données devra comporter des informations sur les étudiants, les
cours, et les inscriptions. Vous devrez créer des tables pour chaque entité.
Exemples de données à inclure :
Nom et prénom des étudiants, titre des cours, date de l'inscription, etc.
Fonctionnalités à implémenter :
Ajouter un étudiant : Permet d’ajouter un étudiant avec ses informations personnelles.
Ajouter un cours : Permet d’ajouter un cours avec le titre, l'année, et le professeur.
Inscrire un étudiant à un cours : Permet d’inscrire un étudiant à un cours particulier.
Afficher les étudiants inscrits à un cours : Permet d’afficher la liste des étudiants
inscrits à chaque cours.
Rechercher un étudiant ou un cours : Permet de rechercher un étudiant ou un cours.
Interface graphique : Vous devrez créer des formulaires d'inscription pour les étudiants et les
cours, ainsi qu'un affichage sous forme de tableau des étudiants inscrits à chaque cours.
ENSA de Fès Programmation Java Younes Lakhrissi
Projet 6 : Réalisation du jeu Démineur
Le démineur est un jeu de réflexion dont le but est de localiser des mines cachées dans un champ
virtuel avec pour seule indication le nombre de mines dans les zones adjacentes.
Le champ de mines est représenté par une grille à forme rectangulaire. Chaque case de la grille peut
soit cacher une mine, soit être vide. Le but du jeu est de découvrir toutes les cases libres sans faire
exploser les mines, c'est-à-dire sans cliquer sur les cases qui les dissimulent.
Par défaut le jeu se joue avec la souris
Lorsque le joueur clique, avec le bouton gauche de la souris, sur une case libre comportant au moins
une mine dans l'une de ses cases avoisinantes, un chiffre apparaît, indiquant ce nombre de mines. Si
en revanche toutes les cases adjacentes sont vides, une case vide (ou portant le chiffre 0) est affichée
et une opération récursive est automatiquement déclenchée pour découvrir les cases vides adjacentes
et ce jusqu'à ce que la zone vide soit entièrement délimitée par des chiffres (différents de 0). Le joueur
peut ainsi progresser dans le déminage du terrain. S'il se trompe et clique sur une mine, il a perdu.
Quand le joueur déduit l’emplacement d’une mine, il peut la neutraliser en cliquant sur la case avec le
bouton droit de la souris. Un drapeau (ou une bombe verte) est affiché pour marquer cette action. Si
sa déduction est fausse, il a perdu.
Le jeu est chronométré, ce qui permet de conserver les meilleurs scores.
La difficulté d'une grille de démineur peut être mesurée par le taux de présence de mine par rapport
à la surface totale de la grille.
L’allure générale du jeu doit ressembler au graphisme suivant :
ENSA de Fès Programmation Java Younes Lakhrissi
Projet 7 : Création d’un serveur d’examens QCM
Ce cahier des charges donne une description minimale du projet. Les descriptions marquées par *
constituent des points d’extension optionnels.
Un examen QCM est défini par les informations suivantes :
Un titre
Le professeur créateur
20 questions (* : Nombre de questions est propre à chaque QCM)
3 choix par question (* : le nombre de choix par question est variable)
Les questions sont à réponse unique (* : multiple)
La cible du QCM : les étudiants concernés par le QCM définis par leur niveau et filière.
La note pour chaque question sera 1 si la réponse est juste sinon 0 (* : notation -1, 0, 1)
Une question est définie par :
La description textuelle (* : peut-être illustrée par une image, par un audio ou par une vidéo)
Les choix à présenter à l’utilisateur
La bonne réponse
Un professeur est défini par :
Le nom
La spécialité
Un étudiant est défini par :
Le nom
La filière
Le niveau
En plus des 4 entités décrites ci-dessus, vous pouvez intégrer d’autres informations.
Votre application doit proposer à l’étudiant la liste des QCMs disponibles en cohérence avec son niveau
et filière. L’étudiant choisit un QCM et commence l’examen.
L’étudiant peut afficher ses résultats concernant les QCM qu’il a déjà passés
(*) Votre base de données doit être capable de stocker la liste des étudiants ayant passé un examen
donné et le score obtenu par chacun.
(*) Le professeur propriétaire d’un QCM doit être capable d’afficher, la liste des étudiants et leurs
notes.
ENSA de Fès Programmation Java Younes Lakhrissi
Projet 8 : Développement du Jeu Snake
Le jeu Snake se joue sur une grille où le joueur contrôle un serpent qui se déplace dans quatre
directions (haut, bas, gauche, droite). L'objectif principal est de collecter des repas pour faire
grandir le serpent tout en évitant les collisions avec le corps du serpent ou des obstacles
prédéfinis. Le projet inclut également des fonctionnalités pour gérer la vitesse de déplacement
du serpent et les conditions de fin de jeu.
Fonctionnalités Principales
Grille de Jeu :
o La grille est composée de 50 colonnes et 30 lignes, avec des marges pour une
présentation claire.
o Les cellules de la grille sont dessinées à l'aide de méthodes graphiques de
Swing.
Contrôle du Serpent :
o Utilisation des touches fléchées du clavier pour contrôler la direction du
serpent.
o Le serpent se déplace automatiquement à une vitesse réglable.
Repas :
o Un repas est généré aléatoirement sur la grille, excluant les positions occupées
par le serpent ou des obstacles.
o Chaque fois que le serpent mange un repas, il grandit d'une cellule, augmentant
ainsi la difficulté du jeu.
Obstacles :
o Des obstacles fixes sont placés sur la grille pour rendre le jeu plus difficile.
o Si la tête du serpent touche un obstacle ou son propre corps, le jeu s'arrête.
Conditions de Fin de Jeu :
o Affichage d'un message de fin de jeu lorsque le serpent se heurte à un obstacle
ou à lui-même.
o Option pour redémarrer le jeu.
Indications pour la Résolution
1. Paramètres de Configuration :
o Taille de la Grille : 50 colonnes et 30 lignes.
o Couleurs :
Zone de jeu : noir
Tête du serpent : rouge
Corps du serpent : vert
Repas : cyan
ENSA de Fès Programmation Java Younes Lakhrissi
Obstacles : bleu
2. Structure du Projet :
o Créer un package snakeGame pour organiser les classes.
o Définir une classe Snake pour gérer le jeu, l'affichage et la logique.
o Créer une classe Cellule pour représenter les éléments sur la grille (serpent,
repas, obstacles).
3. Mise en Place de la Grille :
o Utiliser des méthodes graphiques pour dessiner la grille et les éléments
(serpent, repas, obstacles).
o Implémenter la méthode paint dans le JPanel pour redessiner la grille à
chaque mise à jour.
4. Gestion des Mouvements :
o Utiliser un Timer pour déplacer le serpent à intervalles réguliers.
o Implémenter des contrôles de direction en utilisant un KeyListener.
5. Génération de Repas et d’Obstacles :
o Créer des méthodes pour générer des repas et des obstacles tout en s'assurant
qu'ils ne se superposent pas avec le serpent.
o Mettre à jour la position du serpent et des repas à chaque mouvement.
6. Conditions de Fin de Jeu :
o Vérifier les collisions entre la tête du serpent et le corps ou les obstacles.
o Afficher un message à l'utilisateur et arrêter le jeu en cas de collision.