13 Avr2016
Gestion d'un stock
Objectif : Manipuler les collections de type Liste.
Soit à développer une application pour la gestion d’un stock.
Un article est caractérisé par son numéro de référence, son nom, son prix de vente et une quantité en stock.
Le stock est représenté par une collection d’articles.
Travail à faire:
Créer la classe article contenant les éléments suivants :
- Les attributs/propriétés.
- Un constructeur d’initialisation.
- La méthode ToString().
Dans la classe Program créer :
Le stock sous forme d'une collection d’articles de votre choix.
Un menu présentant les fonctionnalités suivantes :
- Rechercher un article par référence.
- Ajouter un article au stock en vérifiant l’unicité de la référence.
- Supprimer un article par référence.
- Modifier un article par référence.
- Rechercher un article par nom.
- Rechercher un article par intervalle de prix de vente.
- Afficher tous les articles.
- Quitter
La classe Article:
class Article { private int numero; private string nom; private double prix; private int quantite; public int Numero { get { return numero; } set { numero = value; } } public string Nom { get { return nom; } set { nom = value; } } public double Prix { get { return prix; } set { prix = value; } } public int Quantite { get { return quantite; } set { quantite = value; } } public Article() { } public Article(int n, string no, double p, int q) { numero = n; nom = no; prix = p; quantite = q; } public override string ToString() { return "\r\nNuméro: " + numero + "\r\nNom: " + nom + "\r\nPrix: " + prix + "\r\nQuantité: " + quantite; } }
La classe Program:
class Program { static int Rechercher(List<Article>L,int r) //fonction qui permet de vérifier l'existence d'un article { int p=-1; for(int i=0;i<L.Count;i++) { if(L[i].Numero==r) { p=i; break; } } return p; } static void Main(string[] args) { int choix,num,quantite,p; double prix; string nom; List<Article> Stock = new List<Article>(); do { Console.Out.WriteLine("*******************************Menu*****************************"); Console.Out.WriteLine("1-Rechercher un article par numéro"); Console.Out.WriteLine("2-Ajouter un article"); Console.Out.WriteLine("3-Supprimer un article par numéro"); Console.Out.WriteLine("4-Modifier un article par numéro"); Console.Out.WriteLine("5-Rechercher un article par nom"); Console.Out.WriteLine("6-Rechercher un article par intervalle de prix de vente"); Console.Out.WriteLine("7-Afficher tous les articles"); Console.Out.WriteLine("8-Quitter"); Console.Out.Write("Donner votre choix: "); choix = int.Parse(Console.In.ReadLine()); switch (choix) { case 1: Console.Out.Write("Donner le numéro de l'article à rechercher: "); num = int.Parse(Console.In.ReadLine()); p = Rechercher(Stock, num); if (p == -1) { Console.Out.WriteLine("article est introuvable"); } else { Console.Out.WriteLine(Stock[p]); } break; case 2: Console.Out.Write("Donner le numéro de l'article à ajouter: "); num = int.Parse(Console.In.ReadLine()); p = Rechercher(Stock, num); if (p != -1) { Console.Out.WriteLine("Article existe dèjà"); } else { Console.Out.Write("Donner le nom : "); nom = Console.In.ReadLine(); Console.Out.Write("Donner le prix: "); prix = double.Parse(Console.In.ReadLine()); Console.Out.Write("Donner la quantité: "); quantite = int.Parse(Console.In.ReadLine()); Stock.Add(new Article(num, nom, prix, quantite)); Console.Out.WriteLine("Article Ajouté avec succès"); } break; case 3: Console.Out.Write("Donner le numéro de l'article à supprimer:"); num = int.Parse(Console.In.ReadLine()); p = Rechercher(Stock, num); if (p == -1) { Console.Out.WriteLine("Article introuvable"); } else { //Stock.Remove(Stock[p]); Stock.RemoveAt(p); Console.Out.WriteLine("Article supprimé avec succès"); } break; case 4: Console.Out.Write("Entrer le numéro de l'article à modifier: "); num = int.Parse(Console.In.ReadLine()); p = Rechercher(Stock, num); if (p == -1) { Console.Out.WriteLine("Article introuvable"); } else { //Proposer un sous menu pour choisir l'attribut à modifier int c; do { Console.Out.WriteLine("*****Options*****"); Console.Out.WriteLine("1-Modifier le nom"); Console.Out.WriteLine("2-Modifier le prix"); Console.Out.WriteLine("3-Modifier la quantité"); Console.Out.WriteLine("4-Terminer"); Console.Out.Write("Donner votre choix: "); c = int.Parse(Console.In.ReadLine()); switch (c) { case 1: Console.Out.Write("Donner le nouveau nom: "); Stock[p].Nom = Console.In.ReadLine(); Console.Out.WriteLine("Nom modifié avec succès"); break; case 2: Console.Out.Write("Donner le prix: "); Stock[p].Prix = double.Parse(Console.In.ReadLine()); Console.Out.WriteLine("Prix modifié avec succès"); break; case 3: Console.Out.Write("Donner la quantité: "); Stock[p].Quantite = int.Parse(Console.In.ReadLine()); Console.Out.WriteLine("Quantité modifiée avec succès"); break; case 4: Console.Out.WriteLine("Modifications terminées"); break; default: Console.Out.WriteLine("Choix invalide"); break; } } while (c != 4); } break; case 5: Console.Out.Write("Donner le nom de l'article à rechercher: "); nom = Console.In.ReadLine(); int comp = 0; for (int i = 0; i < Stock.Count; i++) { if (Stock[i].Nom.ToLower() == nom.ToLower()) { Console.Out.Write(Stock[i].ToString()); comp++; } } if (comp == 0) { Console.Out.WriteLine("Aucun résultat"); } break; case 6: double min, max; int cpt = 0; Console.Out.Write("Donner le prix min :"); min = double.Parse(Console.In.ReadLine()); Console.Out.Write("Donner le prix max: "); max = double.Parse(Console.In.ReadLine()); if (min < 0 || max < 0 || min > max) { Console.Out.WriteLine("Intervalle invalide"); } else { for (int i = 0; i < Stock.Count; i++) { if (Stock[i].Prix >= min && Stock[i].Prix <= max) { cpt++; Console.Out.WriteLine(Stock[i]); } } if (cpt == 0) { Console.Out.WriteLine("Aucun résultat"); } } break; case 7: foreach (Article a in Stock) { Console.Out.WriteLine(a); } if (Stock.Count == 0) { Console.Out.WriteLine("Aucun résultat"); } break; case 8: Console.Out.WriteLine("Fin du programme"); break; default: Console.Out.WriteLine("Choix invalide"); break; } } while (choix != 8); Console.ReadKey(); } }