Nostalgie - PARTIE I

Publié le par Jérémy JANISZEWSKI

Il y'a près de 4 ans maintenant, je vivais la dernière ligne droite me menant au BTS IRIS. Le projet d'époque, le bien nommé Netiquette, devait permettre le remplacement des affichettes en papier que l'on voit habituellement en magasin par des afficheurs digitaux. Le schéma de travail était le suivant :

p.png
Nous étions 5 personnes sur ce projet :
- Une personne s'occupait de tous les produits que pouvait vendre la maison mère.
- Une personne s'occupait de définir tous les produits que pouvait vendre son magasin en fonction de ce que vendait la maison mère.
- Une personne s'occupait de la mise en place des produits sur les rayons.
- Deux personnes s'occupait des afficheurs digitaux (un module TINY et un module BECK de mémoire)

Nous avions définit deux bases de données, une base de données pour la maison mère et une base de données pour la maison fille.

La base de données pour la maison mère avait été définie ainsi (je dois avoir oublié 2,3 infos mais ce n'est pas le plus important) :

- CodeBarre : contenait le code barre de l'article.
- Manufacturer : contenait le fournisseur de l'article.
- Nom : contenait le nom du produit à vendre.
- Prix : contenait le prix de l'article.
- Type : contenait le type de produit. (film, légume, BD, etc...)

La base de données pour le magasin avait été définie ainsi (c'était la même base de données que la mère avec des informations supplémentaires)

- CodeBarre : contenait le code barre de l'article.
- Manufacturer : contenait le fournisseur de l'article.
- Nom : contenait le nom du produit à vendre.
- Prix : contenait le prix de l'article.
- Type : contenait le type de produit. (film, légume, BD, etc...)
- Image : contenait le chemin relatif de l'image du produit.
- Rayon : contenait le numéro de rayon où le produit était placé.
- Etage : contenait l'étage où le produit était placé. (étage en rapport avec le rayon)
- Position : contenait la position où le produit était placé (position en rapport avec l'étage)

Ici, il faut que je m'explique sur l'utilité Rayon, Etage et Position.

La partie du chef de Rayons était celle qui m'était destinée. Lors de ma réflexion sur le logiciel à développer (et en allant surtout trainer dans les magasins pour ressentir comment est-ce qu'il nous serait plus facile de gérer le placement des produits sur les rayons ? Il ne faut pas oublier que 2 personnes devaient tenir compte de ce qui allait être décidé pour aller piocher les bonnes infos pour l'afficheur)

L'idée que j'ai eu alors en schématisant un rayon était de le considérer comme un objet en 3 dimensions; l'axe X aurait représenter la position du produit sur le rayon, l'axe Y aurait représenté le nombre d'étages sur le rayon et l'axe Z aurait représenté le nombre de rayons)

Ce qui suit montrera l'interface générale de l'UI.

Lors du premier démarrage du programme, les images qui étaient fournis dans le logiciel étaient copiées dans 2 répertoires différents :

- Un répertoire de sauvegarde (lorsque les images sont fixées, le programme les extrayaient d'ici)
- Un répertoire temporaire (lorsque le chef de rayons voulait changer une image, le programme les injectées ici, car l'image d'origine - se trouvant dans le répertoire de sauvegarde - était toujours en cours d'utilisation, ce qui provoquait des bugs...)

A l'époque, il s'agissait de mon premier logiciel développé en utilisant .NET. Il y'avait donc des routines qui m'étaient inconnues, c'est pour cela qu'il y'avait 2 répertoires de sauvegarde.

Nota : Le prochain billet montrera ce logiciel là, réécrit en WPF durant la fin du mois d'octobre 2010.

On avait donc ceci :

CopyImages1.png  CopyImages2.png


Après cela, il fallait configurer le magasin (en gros, on définissait le nombre de rayons, le nombre d'étagères par rayon et le nombre d'emplacements par rayon). Cette opération n'a lieu qu'une seule fois, puisque l'on pouvait raisonnablement penser que le magasin n'allait pas changer sa configuration de sitôt.

ConfigMagasin.png

Une fois le magasin configurer, on devait se connecter à la base de données du magasin. Une fois la connection établie, on rapatriait tous les produits dans une base de données interne au logiciel pour éviter de laisser la base de données du magasin ouverte, et ainsi augmenter la sécurité du système.

ReadDataBase.png

Une fois la base de données, l'interface graphique s'auto-génère en créant :
- un onglet par type de produit
- un bouton pour chaque produit

La portion de cette interface était celle-ci :

TabCtrl.png

Ensuite, il suffisait de cliquer sur un des boutons pour voir s'afficher la boite de dialogue de positionnement du produit.

PosProduct.png

Ici, on choisissait l'emplacement du produit, puis une fois que l'on validait en cliquant sur 'Valider', le fruit était positionné. Ainsi dès que la sauvegarde eût été effective, l'afficheur designé par le produit pouvait afficher les références au produit...

J'avais prévu à l'époque le cas où le produit n'avait pas d'image associé. Si c'était le cas, l'image du produit était remplacée par celle-ci :

NoImage.png

Je me souviens qu'à ce moment du projet, j'avais fait rigoler toute la promotion (aussi bien profs que camarades). Ce n'était pas l'effet recherché, mais il a tellement été spontané qu'après avoir compris pourquoi ils avaient rigolés, j'ai décidé de laisser l'icône telle quelle.

Pour subvenir à ce besoin, une extension au programme a été mise au point pour pouvoir ajouter une image au produit.

Le rendu était le suivant :

ChangeImage.png

L'image de gauche représentait l'image actuellement associée (donc le bon gros X explicite apparaissait aussi) au produit et l'image de droite représentant l'image qui sera associé au produit.

Une fois que l'on cliquait sur Fermer, le logiciel principal "rebootait" pour prendre en compte le changement d'image. Si bien qu'en fin de compte notre Schtoumpfissime l'avait son image.

WithImage.png

Bien sûr pour que tout cela soit pris en compte lors du prochain démarrage du logiciel, il fallait sauvegarder les données...

SaveInProgress.png

Le chef de rayons pouvait aussi imprimer les emplacements de ces produits sur le rayon. En faisant cela, cette boîte de dialogue s'affichait :

PrintListing

Je pense avoir fait à peu près le tour de ce logiciel. Lors d'un prochain billet, je parlerais de la version 2 de ce logiciel codé entre  le 23 octobre 2010 et le 3 novembre 2010. (Oui, oui la version a été faite en une semaine, en réutilisant certaines de mes briques quand même). En comparaison, la version 1 du logiciel a débuté de mémoire le 10 janvier 2007 pour se terminer le 3 juin 2007.

Il faut aussi savoir que la version présentée dans ce billet a été intégralement conçus en Winforms.

La version 2.0 a été conçue en utilisant Windows Presentation Foundation, une API de rendu graphique immensément plus riche que Winforms, plus aboutis, plus interessante à l'utilisation, plus mieux en somme...

Stay tuned,

@ bientôt sur ce blog

Publié dans Winforms

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article