Application de gestion de stocks pour magasin, développée en équipe de trois dans le cadre d'un projet universitaire, mettant en œuvre l'architecture MVC et l'algorithme de Dijkstra.
Ce projet consistait à créer une interface pour un magasin afin de faciliter la gestion des stocks. Son objectif était de nous faire travailler sur un modèle Modèle-Vue-Contrôleur ainsi que sur l'utilisation des principes de graphes vus en cours, notamment l'algorithme de Dijkstra. Nous devions créer deux applications distinctes : l'une destinée aux clients du magasin et l'autre pour la gestion interne.
J'ai été chargé de développer la partie modèle du projet, c'est-à-dire la structure permettant de stocker et de manipuler les données utilisées dans le reste du programme. J'ai donc créé de nombreuses classes en Python, dont notamment :
Calcule le chemin le plus court dans la grille du magasin à partir d'un sommet de départ, permettant de guider les clients vers les produits de manière optimale.
from Classes.filepile import *
def dijkstra(graphe: dict, depart: tuple) -> dict:
'''Renvoie un dictionnaire dont les clés sont les sommets
atteignables depuis le sommet de départ, avec leur distance.
:param: graphe, objet Plan
:param: depart, type tuple, sommet de départ
:return: la liste du chemin à suivre
'''
...Classe de base représentant le plan du magasin sous forme de grille de points. Chaque point connaît ses voisins, ce qui permet à Dijkstra de parcourir le graphe.
class Plan:
def __init__(self, h: int = 9, l: int = 9,
nom: str = "MonMagasin", auteur: str = "",
date: str = "17/11/2005",
adresse: str = "None of your business",
image: str = None) -> None:
self._plan: list[Point] = []
self._h: int = h
self._l: int = l
# Création de la grille de points
for x in range(h):
for y in range(l):
self._plan.append(Point(x, y))
# Liaison des voisins
for i in range(len(self._plan)):
self._plan[i].set_voisins(self._plan)
...Représente un produit du magasin avec ses propriétés (nom, prix, description, icône, type), utilisé dans les deux applications client et gestion.
class Produit:
def __init__(self, nom: str, prix: float,
description: str, icone: str,
nomType: str) -> None:
self._nom = nom
self._prix = prix
self._description = description
self._icone = icone
self._type = nomType
...