Sujet de mini-projet en licence d'informatique pour 2009 (pré-version pouvant être modifiée dans les détails)

Ce projet doit être fait par des groupes de 6 étudiants.

Vous allez écrire des outils pour aider un enseignant à calculer et à diffuser les notes de ses étudiants. Les différents outils devront être intégrés dans une application.

Les outils à écrire :

Tout autre outil qui pourrait rendre service à l'enseignant sera le bienvenu mais le point important est tout d'abord de fournir les 2 outils ci-dessus, avec une application robuste, fiable, bien documentée, extensible et bien écrite (code qui applique les bons principes étudiés pendant le cours). Pensez à écrire une application agréable à utiliser, avec une bonne ergonomie. Si besoin est, fournissez de l'aide en ligne pour faciliter son utilisation. Un bon conseil : faites tester votre application par une personne qui n'a pas participé au développement, et sans lui apporter d'aide pendant le test.

Pour fixer les idées et faciliter la correction, l'application devra fonctionner avec des fichiers de tableur d'extension ".xsl", compatibles avec excel dans sa version 97. Open Office et d'autres outils gratuits peuvent lire et enregistrer sous ce format.

Voici différentes étapes d'un scénario typique d'utilisation de l'application (les parties "Option" ne sont pas obligatoires mais seront un petit plus pour l'évaluation du travail) :

  1. L'enseignant récupère dans une table Java (JTable) la liste des étudiants depuis une page HTML locale (sur votre machine) ou distante (sur un serveur Web distant), par exemple, la page des étudiants de licence 3 informatique ; le format de la page HTML n'est pas imposée mais votre application devra au moins fonctionner avec cette page test.
    Option : l'application permet de récupérer les noms et les prénoms dans des colonnes séparées s'ils ne sont pas séparés comme dans le fichier exemple fourni. Par exemple, si un cellule du tableur contient "Pierre Dupond", votre logiciel mettra "Pierre" dans une cellule de la table Java et "Dupond" dans la cellule contiguë (à droite ou à gauche, comme vous voulez). Au besoin l'enseignant corrigera ensuite "à la main" lors de l'étape 3 cette séparation pour le cas où la colonne "Nom et prénoms" comporte un nom ou un prénom en plusieurs parties et n'a pas fait une séparation correcte.
    La page HTML contiendra ces informations sous la forme d'un tableau HTML (<table>); on ne demande pas de récupérer des informations qui sont contenues sous une autre forme. Le tableau contiendra nécessairement les noms et prénoms des étudiants. Il pourra ne pas contenir toutes les informations voulues (par exemple, ne pas contenir l'identifiant ou l'email des étudiants) ; en ce cas, l'enseignant les ajoutera "à la main" dans l'étape 3 suivante. Si la page contient plusieurs tableaux HTML l'enseignant pourra indiquer quel tableau il veut récupérer ; testez avec une page HTML qui contient plusieurs tableaux et dont le tableau qui contient la liste des étudiants n'est pas le premier tableau de la page.
    Option : l'utilisateur de l'application pourra aussi indiquer les numéros des colonnes du tableau qui contiennent les informations qu'il veut récupérer.
    Votre programme devra obligatoirement utiliser les expressions régulières (dans le support de cours sur les entrées-sorties, mais étudiées bientôt dans le cours du lundi pour vous permettre de travailler plus tôt sur le projet) pour extraire de la page HTML les tableaux HTML et leurs différentes parties. Vous ne devez pas utiliser de parser HTML.
  2. Lorsque l'enseignant est satisfait de ce qu'il voit dans la table Java, il lance l'enregistrement dans un fichier au format ".xls".
  3. (Cette étape ne doit pas être automatisée par votre projet) L'enseignant modifie éventuellement "à la main" dans un tableur les données récupérées à l'étape précédente. Par exemple, il peut ajouter des colonnes pour faire ses calculs ou en ajouter des noms qui n'étaient pas dans la liste des étudiants. A la fin de cette étape, la feuille du tableur contiendra au moins des colonnes pour
  4. L'enseignant peut alors importer les données et les visualiser dans une JTable de l'application (pas nécessairement la même qu'à l'étape 1). Les lignes et colonnes de la feuille du tableur qui contiennent les informations utilisées seront déterminées par l'enseignant ou par un moyen quelconque (à déterminer) par l'application (un plus serait d'avoir un moyen par défaut mais de permettre aussi à l'enseignant de désigner les colonnes et les lignes au moment de l'exécution, si la feuille du tableur n'a pas le format "standard" pour votre application). L'enseignant peut éventuellement faire des modifications simples des informations contenues dans la JTable. Vous choisirez quelles modifications seront offertes par votre projet ; il devra être possible, par exemple, de modifier une note ou de corriger une faute de frappe dans le nom d'un étudiant, vue au dernier moment. Les autres types de modifications sont en option.
  5. Lorsqu'il est satisfait des informations contenues dans la JTable, l'enseignant envoie les notes individuellement à chacun des étudiants. Le contenu de l'email pourra avoir un format prédéfini (pour les envois rapides) mais aussi un format quelconque écrit par l'enseignant. Ce format indiquera l'emplacement dans le texte de l'email des différentes informations (nom de l'étudiant par exemple) sous une forme définie par l'application, par exemple "#prenom# #nom#, votre note en POO est #note#", Ce qui enverra par exemple le message suivant à l'étudiant "Pierre Dupond" (et à tous les autres étudiants, en changeant les données) : "Pierre Dupond, votre note est 12,5". Pour éviter les envois erronés, l'application pourra effectuer un "pseudo-envoi" en affichant, d'une manière ou d'une autre, tous les emails qui seront envoyés lors de l'envoi réel ; si ces pseudo-emails conviennent à l'enseignant il lance alors l'envoi réel. Option : Il sera possible de choisir de n'envoyer les notes qu'à certains des étudiants de la JTable.

Ce projet comporte une partie de recherches personnelles sur des points qui n'ont pas été vus en cours, par exemple pour envoyer un email ou pour travailler avec une feuille de tableur. Vous pourrez évidemment utiliser des API déjà écrites et libre d'utilisation pour écrire et lire une feuille d'un tableur. N'utilisez pas d'API externe si la fonctionnalité est déjà incluse dans le JDK ou fournie dans une extension du JDK ; l'envoi d'emails est fournie par l'API "javamail".

Les informations nécessaires à la configuration pour l'envoi d'emails, comme le serveur sortant, ne devront pas être écrites en dur dans le code Java. Elles devront être enregistrées sous la forme d'un fichier de ressources. Option : elles pourront être modifiables facilement par l'enseignant lors de l'exécution.

Toutes les API utilisées devront être incluses dans le fichier envoyé au correcteur (voir le format de l'application à rendre).

Un bon conseil : n'attendez pas le dernier moment pour commencer à réfléchir sur ce projet ou à faire des recherches personnelles sur les différents points demandés.