AKEI est une application Android dĂ©veloppĂ©e en Java Ă destination des entreprises de distribution, permettant de gĂ©rer efficacement leur inventaire de produits, leurs rayons, leurs vĂ©hicules logistiques, leurs employĂ©s, ainsi que les magasins associĂ©s. L'application repose sur une base de donnĂ©es SQLite embarquĂ©e, gĂ©rĂ©e via une classe DatabaseHelper. Elle propose plusieurs Ă©crans listant les entitĂ©s (produits, rayons, magasins, etc.) avec la possibilitĂ© de consulter des fiches dĂ©taillĂ©es. Chaque entitĂ© (comme les produits) est liĂ©e Ă d'autres, par exemple un produit appartient Ă un rayon, un employĂ© Ă un magasin, un vĂ©hicule peut ĂȘtre affectĂ© Ă des tournĂ©es.
Elle propose une interface simple avec des activitĂ©s Java spĂ©cifiques pour chaque type de ressource (Liste et DĂ©tail), rendant lâutilisation fluide pour les gestionnaires logistiques.
Base de données relationnelle (AKEI)
La base de donnĂ©es locale embarquĂ©e constitue lâossature du projet AKEI. Elle permet de stocker, structurer et relier toutes les donnĂ©es mĂ©tiers nĂ©cessaires Ă la gestion logistique dâun magasin : produits, rayons, vĂ©hicules, employĂ©s et magasins. Chaque entitĂ© dispose de sa propre table, avec des identifiants uniques et des relations claires : un produit appartient Ă un rayon, un employĂ© est affectĂ© Ă un magasin. Cette base est gĂ©rĂ©e Ă lâaide dâun helper Java (DatabaseHelper) qui crĂ©e automatiquement les tables Ă la premiĂšre utilisation. Le format relationnel garantit une bonne normalisation, une intĂ©gritĂ© rĂ©fĂ©rentielle, et permet des jointures optimisĂ©es lors de lâaffichage dans les activitĂ©s Android.
Création et structuration des entités en base
Le modĂšle repose sur 5 tables principales : Produit, Rayon, Magasin, Employe, et Vehicule. On y trouve des clĂ©s primaires auto-incrĂ©mentĂ©es (id) et des clĂ©s Ă©trangĂšres comme rayonId ou magasinId qui Ă©tablissent des relations 1-N. Les types sont typiques dâun modĂšle Android/SQLite : VARCHAR, TEXT, DECIMAL, FLOAT. Cette structure facilite la navigation et lâaffichage dâinformations associĂ©es dans les diffĂ©rentes vues (ex : liste des produits avec nom du rayon).
Le schéma montre la structure relationnelle de la base avec les clés primaires et étrangÚres, illustrant les liens entre produits, rayons, employés et magasins.
Consultation de la liste des produits
Cette fonctionnalitĂ© permet Ă lâutilisateur dâafficher tous les produits dâun rayon donnĂ© dans une activitĂ© Android. Lors de la navigation, l'identifiant du rayon est transmis par Intent Ă l'activitĂ© ListeProduitsActivity, qui interroge la base SQLite locale. Les produits correspondants sont rĂ©cupĂ©rĂ©s Ă lâaide dâun DAO (ProduitDAO) puis affichĂ©s dans une ListView. Une barre de recherche (SearchView) permet Ă l'utilisateur de filtrer dynamiquement les produits affichĂ©s. Chaque produit est reprĂ©sentĂ© par son nom, facilitant une navigation rapide dans lâinventaire. Cette fonctionnalitĂ© est essentielle pour le suivi logistique mobile.
Récupération du rayon cible
DĂšs le dĂ©marrage de lâactivitĂ©, le programme rĂ©cupĂšre lâidentifiant du rayon via getIntent().getIntExtra(). Si aucun identifiant valide nâest transmis (valeur -1), lâactivitĂ© est aussitĂ©â€t fermĂ©e via finish(). Cela Ă©vite tout affichage inutile ou vide, en assurant que seuls les produits associĂ©s Ă un rayon prĂ©cis seront traitĂ©s.
Le code montre la rĂ©cupĂ©ration de l'id du rayon depuis lâIntent et la vĂ©rification pour Ă©viter un chargement inutile.
AccÚs à la base de données avec ProduitDAO
LâaccĂšs aux donnĂ©es se fait via une instance de ProduitDAO, qui encapsule la logique de lecture SQLite. La mĂ©thode open() initialise la connexion, puis getAllByRayon(rayonId) renvoie tous les produits liĂ©s au rayon. Cette liste est stockĂ©e dans une ArrayList nommĂ©e produits, puis copiĂ©e dans produitsFiltres pour permettre les recherches ultĂ©rieures.
On voit ici lâouverture du DAO et la rĂ©cupĂ©ration des produits par rayon.
Préparation de la liste et des noms affichés
Une boucle for parcourt les produits filtrĂ©s et ajoute uniquement les noms (p.getNom()) Ă une nouvelle liste nomsProduits. Cette liste sert ensuite Ă alimenter un ArrayAdapter, connectĂ© Ă une ListView. Cela permet dâafficher une liste simplifiĂ©e et plus lĂ©gĂšre pour lâutilisateur.
Le code montre comment la liste des noms est extraite des objets Produit pour affichage dans la liste.
Mise en place de la recherche dynamique
Un SearchView.OnQueryTextListener est dĂ©fini pour Ă©couter les saisies de l'utilisateur dans la barre de recherche. Ăš chaque modification de texte (onQueryTextChange), la mĂ©thode filtrerProduits(newText) est appelĂ©e pour mettre Ă jour dynamiquement la ListView. Cela permet un filtrage en temps rĂ©el des rĂ©sultats sans recharger lâactivitĂ©.
Le code montre l'Ă©coute de texte saisi dans le SearchView et lâappel de la mĂ©thode de filtrage.
Fiche dĂ©taillĂ©e dâun employĂ©
Cette fonctionnalitĂ© permet Ă l'utilisateur de consulter les informations complĂštes dâun employĂ© sĂ©lectionnĂ©. Lorsquâun employĂ© est cliquĂ© dans la liste, son identifiant est transmis Ă DetailEmployeActivity via un Intent. Cette activitĂ© interagit avec la base SQLite Ă lâaide du EmployeDAO pour retrouver lâenregistrement associĂ©. Elle extrait les donnĂ©es du collaborateur (nom, prĂ©nom, ID du rayon et du magasin) et les affiche dans des TextView correspondants. Si aucun identifiant nâest reĂ©Âșu ou si aucun employĂ© ne correspond, lâactivitĂ© se ferme automatiquement. Cette fiche offre une vue rapide et structurĂ©e des ressources humaines internes Ă lâorganisation.
Chargement et affichage des donnĂ©es dâun employĂ©
La mĂ©thode onCreate() de lâactivitĂ© commence par extraire lâidentifiant de lâemployĂ© Ă partir de lâIntent. Si lâID est absent (-1), lâactivitĂ© est fermĂ©e pour Ă©viter un affichage vide. Ensuite, les TextView liĂ©s aux informations de lâemployĂ© sont initialisĂ©s, et les donnĂ©es sont rĂ©cupĂ©rĂ©es via un accĂšs DAO (getById). Finalement, si lâemployĂ© est trouvĂ©, ses informations sont injectĂ©es dans les composants dâinterface Ă lâaide de setText().
Lâimage montre la rĂ©cupĂ©ration de lâID, lâaccĂšs DAO Ă la base SQLite, puis lâaffichage des donnĂ©es de lâemployĂ© dans les vues Android.