Borne de Commande Restaurant

C# / WPF MySQL MVVM

Informations du Projet

Période

Janvier — Mars 2026

Contexte

CFA Ingetis

Modalité

Projet scolaire

Type

Application Desktop

Présentation du Projet

Contexte et Objectifs

Ce projet consiste en la conception et le développement d'une application bureau de type borne de commande pour un restaurant. L'application permet à un client d'effectuer une commande de manière autonome via une interface interactive, sans intervention du personnel.


Elle intègre également un espace d'administration permettant de gérer les produits et les catégories du menu. L'application a été développée en C# avec le framework WPF, en suivant l'architecture MVVM. Elle se connecte à une base de données MySQL via le connecteur MySql.Data.


Objectifs clés : réduire les files d'attente, minimiser les erreurs de commande, offrir une expérience utilisateur moderne, et permettre à l'administrateur de gérer le catalogue en autonomie.

Parcours Utilisateur

1

Écran de Veille

Écran d'accueil affiché au démarrage. Un clic démarre la commande.

VeilleWindow

2

Choix du type

Le client sélectionne « Sur place » ou « À emporter ».

ChoixWindow

3

Menu

Navigation par catégories, ajout des produits au panier. Produits indisponibles bloqués.

MenuWindow

4

Panier

Consultation, modification des quantités, suppression d'articles, validation.

PanierWindow

5

Paiement

Choix CB ou espèces, traitement simulé, génération du n° de commande.

PaymentWindow

6

Administration

Accès sécurisé BCrypt pour gérer catégories et produits.

LoginWindow + AdminWindow

Captures d'écran

Écran de Veille

Écran d'accueil affiché en attente de client. Un clic sur l'écran démarre le parcours de commande. Interface conçue pour être attrayante et visible à distance sur un écran tactile.

Écran de veille

Menu & Catalogue Produits

Navigation par catégories (avec tag et couleur personnalisée), affichage des produits avec nom, prix et image. Les produits avec le statut « Indispo » ou une quantité à 0 ne peuvent pas être ajoutés au panier.

Page de menu

Gestion du Panier

Affichage en temps réel de tous les articles ajoutés avec sous-totaux et total général. Le client peut augmenter/diminuer les quantités ou supprimer un article.

Page du Panier

Écran de Paiement

Choix du mode de paiement (carte bancaire ou espèces). Traitement simulé avec indicateur de progression (3 secondes), génération d'un numéro de commande unique, puis retour automatique à l'écran de veille.

Page de Paiement

Interface d'Administration

Accès sécurisé par authentification (nom d'utilisateur + mot de passe haché BCrypt). L'administrateur peut ajouter, modifier, supprimer des catégories et des produits, et gérer les stocks et statuts de disponibilité.

Page Admin

Architecture MVVM

Organisation du projet en couches

L'application respecte strictement le patron de conception MVVM (Model-View-ViewModel) et s'appuie sur deux interfaces clés de .NET : INotifyPropertyChanged pour notifier automatiquement l'interface des changements de propriétés, et ICommand pour lier les actions utilisateur directement aux ViewModels sans code métier dans les vues.

📦 Models

  • Produit
  • Categorie
  • Panier
  • LigneCommande
  • Utilisateur

Classes de données pures, sans logique métier, utilisées par toutes les couches.

🎨 Views (XAML)

  • VeilleWindow
  • ChoixWindow
  • MenuWindow
  • PanierWindow
  • PaymentWindow
  • LoginWindow + AdminWindow

Code-behind minimal. Binding XAML pur vers les ViewModels.

🔄 ViewModels

  • VeilleViewModel
  • ChoixViewModel
  • MenuViewModel
  • PanierViewModel
  • PaymentViewModel
  • LoginViewModel

Héritent de ViewModelBase. Exposent des propriétés et des ICommand.

⚙️ Services

  • DataService

Centralise toutes les requêtes SQL (CRUD). Les ViewModels n'accèdent jamais directement à la BDD.

🛠️ Helpers

  • RelayCommand
  • ViewModelBase

RelayCommand implémente ICommand en une ligne. ViewModelBase gère INotifyPropertyChanged et SetProperty.

Technologies Utilisées

C#

Langage principal pour toute la logique applicative

WPF / XAML

Framework UI Windows, interfaces tactiles .NET 6+

Pattern MVVM

Architecture stricte avec DataBinding et ICommand

MySQL 8.1

Base de données + MySql.Data (ADO.NET)

XAMPP

Serveur local MySQL + phpMyAdmin

Git / GitHub

Versionnement et sauvegarde du code source

Environnement de Développement

Visual Studio

IDE principal C# / WPF

XAMPP

Serveur local Apache + MySQL

phpMyAdmin

Administration base de données

GitHub

Versionnement et hébergement du code

Docs Microsoft

Documentation officielle C# / WPF / .NET

Retour à la liste des projets