TP 1 - Corrigé

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 7

Département GI

Module : UML et Dotnet

Elément : Dotnet

Travaux Pratiques 1
Nous avons besoin de réaliser une application bureau qui permet la gestion d’un stock avec le
langage C#.

Tout d’abord il y a la classe « article » 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:

La classe article contient les éléments suivants :

• Les attributs/propriétés.
• Un constructeur d’initialisation.
• La méthode ToString().

Puis 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 :

1. Rechercher un article par référence.


2. Ajouter un article au stock en vérifiant l’unicité de la référence.
3. Supprimer un article par référence.
4. Modifier un article par référence.
5. Rechercher un article par nom.
6. Rechercher un article par intervalle de prix de vente.
7. Afficher tous les articles.
8. Quitter

NB :

• Déclaration des listes en c# : List<Article> Stock = new List<Article>();


• Utiliser L.Count pour savoir le nombre des articles
• Pour lire le numéro du choix choix = int.Parse(Console.In.ReadLine());
• Utiliser switch (choix)pour traiter les cas du menu
• Stock.Add() pour ajouter un article

Page 1 sur 7
Dr. Yassine Rhazali
• Stock.RemoveAt()pour supprimer un article

Correction

La classe Article:

1. class Article
2. {
3. private int numero;
4. private string nom;
5. private double prix;
6. private int quantite;
7.
8. public int Numero
9. {
10. get { return numero; }
11. set { numero = value; }
12. }
13.
14. public string Nom
15. {
16. get { return nom; }
17. set { nom = value; }
18. }
19.
20. public double Prix
21. {
22. get { return prix; }
23. set { prix = value; }
24. }
25.
26. public int Quantite
27. {
28. get { return quantite; }
29. set { quantite = value; }
30. }
31.
32.
33. public Article() { }
34. public Article(int n, string no, double p, int q)
35. {
36. numero = n;
37. nom = no;
38. prix = p;
39. quantite = q;
40. }
41. public override string ToString()
42. {
43. return "\r\nNuméro: " + numero + "\r\nNom: " + nom +
"\r\nPrix: " + prix + "\r\nQuantité: " + quantite;
44. }
45. }

Page 2 sur 7
Dr. Yassine Rhazali
La classe Program:

1. class Program
2. {
3. static int Rechercher(List<Article>L,int r)
//fonction qui permet de vérifier l'existence d'un article
4. {
5. int p=-1;
6. for(int i=0;i<L.Count;i++)
7. {
8. if(L[i].Numero==r)
9. {
10. p=i;
11. break;
12. }
13. }
14. return p;
15. }
16. static void Main(string[] args)
17. {
18. int choix,num,quantite,p;
19. double prix;
20. string nom;
21. List<Article> Stock = new List<Article>();
22. do
23. {
24.
Console.Out.WriteLine("*******************************Menu***********
******************");
25. Console.Out.WriteLine("1-Rechercher un article par
numéro");
26. Console.Out.WriteLine("2-Ajouter un article");
27. Console.Out.WriteLine("3-Supprimer un article par
numéro");
28. Console.Out.WriteLine("4-Modifier un article par
numéro");
29. Console.Out.WriteLine("5-Rechercher un article par
nom");
30. Console.Out.WriteLine("6-Rechercher un article par
intervalle de prix de vente");
31. Console.Out.WriteLine("7-Afficher tous les
articles");
32. Console.Out.WriteLine("8-Quitter");
33. Console.Out.Write("Donner votre choix: ");
34. choix = int.Parse(Console.In.ReadLine());
35. switch (choix)
36. {
37. case 1:
38. Console.Out.Write("Donner le numéro de
l'article à rechercher: ");
39. num = int.Parse(Console.In.ReadLine());
40. p = Rechercher(Stock, num);
41. if (p == -1)
42. {
43. Console.Out.WriteLine("article est
introuvable");
44. }
45. else
46. {

Page 3 sur 7
Dr. Yassine Rhazali
47. Console.Out.WriteLine(Stock[p]);
48. }
49. break;
50.
51. case 2:
52. Console.Out.Write("Donner le numéro de
l'article à ajouter: ");
53. num = int.Parse(Console.In.ReadLine());
54. p = Rechercher(Stock, num);
55. if (p != -1)
56. {
57. Console.Out.WriteLine("Article existe
dèjà");
58. }
59. else
60. {
61. Console.Out.Write("Donner le nom : ");
62. nom = Console.In.ReadLine();
63. Console.Out.Write("Donner le prix: ");
64. prix =
double.Parse(Console.In.ReadLine());
65. Console.Out.Write("Donner la quantité:
");
66. quantite =
int.Parse(Console.In.ReadLine());
67. Stock.Add(new Article(num, nom, prix,
quantite));
68. Console.Out.WriteLine("Article Ajouté
avec succès");
69. }
70. break;
71.
72. case 3:
73. Console.Out.Write("Donner le numéro de
l'article à supprimer:");
74. num = int.Parse(Console.In.ReadLine());
75. p = Rechercher(Stock, num);
76. if (p == -1)
77. {
78. Console.Out.WriteLine("Article
introuvable");
79. }
80. else
81. {
82. //Stock.Remove(Stock[p]);
83. Stock.RemoveAt(p);
84. Console.Out.WriteLine("Article supprimé
avec succès");
85. }
86. break;
87.
88. case 4:
89. Console.Out.Write("Entrer le numéro de
l'article à modifier: ");
90. num = int.Parse(Console.In.ReadLine());
91. p = Rechercher(Stock, num);
92. if (p == -1)
93. {

Page 4 sur 7
Dr. Yassine Rhazali
94. Console.Out.WriteLine("Article
introuvable");
95. }
96. else
97. { //Proposer un sous menu pour choisir
l'attribut à modifier
98. int c;
99. do
100. {
101.
Console.Out.WriteLine("*****Options*****");
102. Console.Out.WriteLine("1-Modifier
le nom");
103. Console.Out.WriteLine("2-Modifier
le prix");
104. Console.Out.WriteLine("3-Modifier
la quantité");
105. Console.Out.WriteLine("4-
Terminer");
106. Console.Out.Write("Donner votre
choix: ");
107. c =
int.Parse(Console.In.ReadLine());
108. switch (c)
109. {
110. case 1:
111. Console.Out.Write("Donner
le nouveau nom: ");
112. Stock[p].Nom =
Console.In.ReadLine();
113. Console.Out.WriteLine("Nom
modifié avec succès");
114. break;
115. case 2:
116. Console.Out.Write("Donner
le prix: ");
117. Stock[p].Prix =
double.Parse(Console.In.ReadLine());
118. Console.Out.WriteLine("Prix
modifié avec succès");
119. break;
120. case 3:
121. Console.Out.Write("Donner
la quantité: ");
122. Stock[p].Quantite =
int.Parse(Console.In.ReadLine());
123.
Console.Out.WriteLine("Quantité modifiée avec succès");
124. break;
125. case 4:
126.
Console.Out.WriteLine("Modifications terminées");
127. break;
128. default:
129.
Console.Out.WriteLine("Choix invalide");
130. break;
131. }
132.

Page 5 sur 7
Dr. Yassine Rhazali
133. }
134. while (c != 4);
135. }
136. break;
137.
138. case 5:
139. Console.Out.Write("Donner le nom de
l'article à rechercher: ");
140. nom = Console.In.ReadLine();
141. int comp = 0;
142. for (int i = 0; i < Stock.Count; i++)
143. {
144. if (Stock[i].Nom.ToLower() ==
nom.ToLower())
145. {
146.
Console.Out.Write(Stock[i].ToString());
147. comp++;
148. }
149. }
150. if (comp == 0)
151. {
152. Console.Out.WriteLine("Aucun
résultat");
153. }
154. break;
155. case 6:
156. double min, max; int cpt = 0;
157. Console.Out.Write("Donner le prix min :");
158. min = double.Parse(Console.In.ReadLine());
159. Console.Out.Write("Donner le prix max: ");
160. max = double.Parse(Console.In.ReadLine());
161. if (min < 0 || max < 0 || min > max)
162. {
163. Console.Out.WriteLine("Intervalle
invalide");
164. }
165. else
166. {
167. for (int i = 0; i < Stock.Count; i++)
168. {
169. if (Stock[i].Prix >= min &&
Stock[i].Prix <= max)
170. {
171. cpt++;
172.
Console.Out.WriteLine(Stock[i]);
173. }
174. }
175. if (cpt == 0)
176. {
177. Console.Out.WriteLine("Aucun
résultat");
178. }
179. }
180. break;
181. case 7:
182. foreach (Article a in Stock)
183. {

Page 6 sur 7
Dr. Yassine Rhazali
184. Console.Out.WriteLine(a);
185. }
186. if (Stock.Count == 0)
187. {
188. Console.Out.WriteLine("Aucun
résultat");
189. }
190. break;
191. case 8:
192. Console.Out.WriteLine("Fin du programme");
193. break;
194. default:
195. Console.Out.WriteLine("Choix invalide");
196. break;
197.
198. }
199. } while (choix != 8);
200. Console.ReadKey();
201.
202. }

Page 7 sur 7
Dr. Yassine Rhazali

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy