BTS INFORMATIQUE DE GESTION

SESSION 2013-14
BTS SIO
PPE 3
Coefficient : 5
Forex
Description du projet
BTS SIO
PPE
Page 1 / 6
Barème
Phase 1 : Etude et analyse
30 points
Phase 2 : Développement, tests et correctifs.
50 points
Phase 3 : Rédaction du manuel utilisateur.
20 points
Total
100 points
Introduction
Le FOREX est un organisme qui gère les taux d'échanges boursier et de devise. Il offre des outils pour
suivre les indices de cotation et pour réaliser des transactions. Le Forex propose ses services au travers de son
site Internet http://www.forexpros.fr. Parmis ceux-ci il est possible de suivre en temps réel les cotations des
devises.
Le sujet de ce PPE est de réaliser une application logicielle qui charge en continue les cotations d'échange
entre devise, notamment Euro – Dollard, les stocke dans une base de données SQL de type MySql ou autre,
offre un outil de consultation sous la forme de tableau et de graphique et puisse permettre de faire des
simulations de transaction.
Cette application sera développée en C++ avec l'outil QtCreator, elle sera de type “Application graphique
Qt” et portera le nom de “ppe3_trading”
Cahier des charges
Vous développez une première version de l’application, celle-ci charge, sous l’impulsion d’un timer, toutes
les 10 secondes les dernières cotations en devises du Forex, les stocke dans une base de données relationnelle
et propose un affichage. Une deuxième version possèdera des fonctionnalités d’analyse financière et de
simulation d’achat et vente de devise. Enfin une troisième version comportera un module de transactions
réelles en automatique d’achat et de vente de devises en exploitant les services proposés par le Forex.
Données à télécharger du Forex et à stocker.
Le Forex propose une interface WEB pour afficher les cotations en devise à tout instant. Vous
téléchargerez les valeurs d’achat et de vente de certains couples de devise, par exemple Euro – Dollard. Les
couples de devise pris en compte par le logiciel seront paramétrables dans un fichier de configuration luimême modifiable par une boite de dialogue proposant une liste de choix des couples de devises visualisables
par le Forex.
BTS SIO
PPE
Page 2 / 6
Les cotations téléchargées sont stockées dans une table d’une base de données relationnelle MySql,
Oracle ou Postgres. Pour chaque cotation on doit retrouver le nom du couple de devise, la valeur d’achat, de
vente et la date et l’heure de celle-ci. Les paramètres de connexion à la base de données, adresse du serveur,
nom de la base de donnée et compte seront contenus dans le fichier de configuration et modifiables à partir
d’une boite de dialogue du logiciel.
Affichage des données de cotations
De manière générale le logiciel affiche en temps réel les valeurs de cotations instantanées des couples de
devises sélectionnées sous la forme d’un tableau. Vous utiliserez une vue tabulaire ou grille pour afficher les
données. Pour chaque couple de devise, la vue doit afficher le nom du couple, la valeur d’achat, la valeur de
vente, la date et l’heure de la dernière transaction et le taux de variation en %. La sélection des devises sera
faite dans une boite de dialogue proposant une case à cocher par couple de devise. L’utilisateur coche alors les
couples de devise qu’il veut voir. La sélection de l’utilisateur doit être enregistrée dans le fichier de
configuration.
Le logiciel doit permettre d’afficher sous la forme d’une grille les cotations d’un couple de devise
comprises entre deux dates limites. Cet affichage se fera dans une nouvelle fenêtre qui proposera une liste de
choix des couples de devises permettant le choix de la devise à afficher dans la fenêtre. La fenêtre permet la
saisie de deux dates définissant l’intervalle de temps utilisé pour l’affichage. La vue affiche les cotations triée
par ordre inverse du temps et fait apparaitre en plus des valeurs d’achat et de vente, la date et heure de
transaction et le taux de variation par rapport à l’ancienne cotations.
Paramètres du logiciel
En plus de paramètres cités ci-dessus, le logiciel dispose d’une boite de dialogue permettant de modifier
l’URL du Forex et la liste des couples de devise à télécharger. Ces valeurs sont enregistrées dans le fichier de
configuration. Le logiciel dispose d’un fichier de configuration au format XML pour stocker et lire ses
paramètres de fonctionnement.
Phase 1 : Etude préalable
Le développement de ce projet commencera dans un premier temps par une étude technique préalable
visant à valider la faisabilité du cahier des charges et à définir des solutions techniques adéquates en
conformités avec le cahier des charges.
Ou trouver l'information: site Internet du Forex: http://www.forexpros.fr
Le site du Forex offre des outils d'affichage WEB 2 pour suivre en temps réel les cotations (menu: Plus – Outils
du webmaster). Ces outils peuvent être intégrés directement dans un site Internet tiers et affichent en temps
réel les cotations.
BTS SIO
PPE
Page 3 / 6
1.1)
Il vous est demandé dans un premier temps de tester l'outil des “Cotations des devises en temps réel”
pour les devises Euro-Dollar et Euro Franc suisse. Pour ces deux cotations, vous ferez apparaitre les
valeurs d'achat, de vente, d'ouverture de bourse, de fermeture de bourse, le taux le plus haut, le taux
le plus bas et l'heure de cotation.
1.2)
A partir de cet exemple, il vous est demandé d'étudier et d'expliquer comment il fonctionne, c'est à
dire de proposer une explication sur le chargement des données, leur affichage et leur actualisation. Il
n'est pas nécessaire d'expliquer le code JS utilisé par Forex. Le but de cette question est d'obtenir une
URL à interroger qui nous renvoie un code HTML contenant les valeurs de cotation. En interrogeant
cette URL toutes les 10 secondes et en identifiant dans le contenu HTML retourné les champs
contenant les valeurs cherchées on peut de cette sorte récupérer les valeurs de cotations en temps
réel. Vous donnerez une URL qui fonctionne et expliquerez comment trouver dans le code HTML
retourné les valeurs de cotation.
Envoyer des requêtes HTTP et récupérer leur résultat en C++ avec Qt
L'exemple donné pour Qt dénommé HTTP (/usr/lib/qt4//examples/network/http) qui se trouve dans les
exemples de Qt du module Network fourni un code assez simple d'une petite application capable d'envoyer
une requête HTTP sur Internet puis de charger et d'enregistrer dans un fichier le résultat HTML renvoyé par le
serveur.
1.3)
Etudiez l'exemple mentionné ci-dessus et expliquez alors comment avec Qt on peut envoyer une
requête HTTP et récupérer le résultat. Vous expliquerez ce que font les classes
QnetworkAccessManager, QnetworkReply, QnetworkRequest, Qurl
BTS SIO
PPE
Page 4 / 6
Exploitation des données reçues.
La requête HTTP renvoie des données formatées en langage HTML et celles-ci contiennent les
informations de cotations qui nous intéressent. Il suffit de les afficher avec un browser Internet pour voir
apparaitre le tableau des cotations.
1.4)
A partir des données réceptionnées, identifiez les balises HTML qui contiennent les informations utiles
ainsi que l'enchaînement des balises à explorer pour arriver aux valeurs intéressantes.
Dans le cas présent, nous ne disposons pas de browser Internet et devons parcourir les données nousmême. Pour ceci nous allons utiliser la technologie SAX implémentée par Qt avec la classe QXmlReader qui
n'est en fait qu'une classe d'interface. Qt offre la classe QXmlSimpleReader qui implémente les méthodes de
l'interface QXmlReader et permet de lire du code XML pleinement qualifié. Cependant le code HTML généré
par le site du Forex n'étant pas pleinement qualifié selon la norme XML, la classe QXmlSimpleReader génère
des erreurs bloquantes de parsing. Vous allez donc devoir utiliser la classe “maison” XmlMalFormedReader
dont vous trouverez le code source dans les pièces jointes. Cette classe qui implémente les méthodes de
l'interface QXmlReader permet d'utiliser la technologie SAX de parsing XML sur des fichiers mal formés.
1.5)
Analysez l'exemple SAX Bookmarks proposé par Qt et expliquez brièvement le principe de lecture d'un
fichier XML. Adaptez l'exemple en utilisant la classe XmlMalFormedReader et comparez le résultat.
Enregistrement des données lues dans une base de données.
Les données venant du Forex seront lues régulièrement toute les 1 à 10 secondes grâce à l'utilisation d'un
timer. Celles-ci sont alors insérées dans une table d'une base de données de type MySql. Qt propose le module
QtSql pour interroger des bases de données et y faire des transactions. Elle propose aussi un ensemble de
driver pour chaque type de SGBD utilisables sous la forme de “plugging”.
Pour afficher des données d'une table ou extraite par une requête SQL SELECT dans une fenêtre ou une
boite de dialogue, Qt propose une architecture de classes basée sur l'architecture modèle-vue-contrôleur.
L'exemple fourni par Qt : « tablemodel » dans le module SQL met en œuvre tous ces aspects de manière
simple et explicite.
1.6)
A partir de l'exemple cité ci-dessus étudiez comment avec Qt se connecter à une base de donnée
relationnelle, comment créer une table, y faire des transactions et des requête SELECT. Expliquez les classes et
méthodes utilisées.
BTS SIO
PPE
Page 5 / 6
1.7)
Dans le même exemple, les données sont affichées dans deux fenêtres différentes en utilisant le même
modèle. Ces vues permettent aussi de modifier les données au travers de transactions SQL. Expliquez les
classes et méthodes utilisées et la manière de les utiliser.
1.8)
Adaptez l'exemple ci-dessus à une base de données MySql. Expliquez comment vous avez procédé
pour pouvoir accéder à une BD MySql avec Qt.
Phase 2 : Analyse
Vous fournirez un diagramme UML de classe détaillé et expliqué du logiciel. Les noms de classe
respecteront la notation Pascale et les attributs et méthode la notation Camel.
Phase 3 : Réalisation et débogage
Vous coderez complètement le logiciel, le testerez et corrigerez les éventuelles erreurs. Celui-ci doit être
livré fonctionnel et utilisable. Votre code doit être suffisamment commenté afin d’en assurer une maintenance
aisée. Chaque prototype de méthode devra comporter un commentaire expliquant le rôle, le traitement
réalisé et la fonction des arguments.
Phase 4 : Documentation utilisateur
Vous fournirez une documentation utilisateur simple et efficace ainsi qu’une notice d’installation du
logiciel.
BTS SIO
PPE
Page 6 / 6