Vous êtes sur la page 1sur 7

1 #include<stdio.

h>
2 #include<stdlib.h>
3 #include<string.h>
4 #define MAX 100
5 //01-Def d'un nouveau type ( Structure )
6 typedef struct Ordinateur
7 {
8 int ref;
9 char marque[15];
10 int cm;
11 int cd;
12 char se[15];
13 }Ordinateur;
14 //02-Les prototypes
15 void Ajouter(Ordinateur t[MAX],int *p);
16 void Afficher(Ordinateur t[MAX],int N);
17 void Modifier(Ordinateur t[MAX],int N, int Ref);
18 void Supprimer(Ordinateur t[MAX] , int *p, int Ref) ;
19 void Trier(Ordinateur t[MAX],int N);
20 void Sauvegarder(Ordinateur T[MAX],int N);
21 void Lire(Ordinateur T[MAX],int N);
22 void Quitter();
23 void main()
24 {
25 //03 Dec des variables
26 Ordinateur TO[MAX];
27 int choix,i,nbEnreg,Ref;
28 //04-Controle de saisie de la dimension
29 do
30
{
31

printf("Quel est le nombre


d'enregistrements :");
32

scanf("%d",&nbEnreg);
33

if(nbEnreg>MAX || nbEnreg<1)
34

printf("taper le Nombre
d\'enregistrements compris entre 1 et 100 : \n");
35
}
while(nbEnreg<1 || nbEnreg >MAX);
36 //05-Remplissage de la liste des ordinateurs
37
38 for(i=0;i<nbEnreg;i++)
39 {
40 printf("Donnez les
informations de l'ordinateur numero '%d'.\n",i+1);
41 printf("Donnez la Reference :
");
42 scanf("%d",&TO[i].ref);
43 printf("Donnez la Marque :
");
44 scanf("%s",TO[i].marque);
45 printf("Donnez la Capacite
Memoire (en Go): ");
46 scanf("%d",&TO[i].cm);
47 printf("Donnez la capacite
disque (en To): ");
48 scanf("%d",&TO[i].cd);
49 printf("Donnez le type du
systeme d'exploitation: ");
50 scanf("%s",TO[i].se);
51 puts(
"***************************************");
52 }
53 //06-Effacer Ecran
54 system("cls");
55 //07-Menu principale
56 do
57 {
58 puts("\t\t\t ***** MENU
PRINCIPALE *****");
59 puts("1: Tapez 1 pour ajouter
un ordinateur !");
60 puts("2: Tapez 2 pour afficher
les ordinateurs !");
61 puts("3: Tapez 3 pour modifier
un ordinateur !");
62 puts("4: Tapez 4 pour
supprimer un ordinateur !");
63 puts("5: Tapez 5 pour Trier
les ordinateurs !");
64 puts("6: Tapez 6 pour
Sauvegarder les ordinateurs !");
65 puts("7: Tapez 7 pour charger
les ordinateurs !");
66 puts("8: Tapez 8 pour quitter
le programme !");
67
68
do
69
{
70

printf("Quel est votre choix :");


71

scanf("%d",&choix);
72

if(nbEnreg>MAX || nbEnreg<1)
73

printf("taper le Nombre d\'enregistrements compris entre 1 et 100 :


\n");
74
}
while(choix<1 || choix >MAX);
75
76 switch(choix)
77 {
78

case 1:{
79

//Appel de la Procédure Ajouter()


80

Ajouter(TO,&nbEnreg);
81
}break;
82

case 2:{
83

//Appel de la Procédure Afficher()


84

system
("cls");
85

Afficher(TO,nbEnreg);
86

}break;
87
88

case 3:{
89

printf
("Donnez la Reference de l'ordinateur a Modifier : ");
90

scanf(
"%d",&Ref);
91

//Appel de la Procédure Modifier()


92

Modifier(TO,nbEnreg,Ref);
93

}break;
94

case 4:{
95

printf
("Donnez la Reference de l'ordinateur a Supprimer : ");
96

scanf(
"%d",&Ref);
97

//Appel de la Procédure Supprimer()


98

Supprimer(TO,&nbEnreg,Ref);
99 }break;
100

case 5:{
101
//Appel de la Procédure Trier()
102

system
("cls");
103

Trier(
TO,nbEnreg);
104
}break;
105

case 6:{
106

//Appel de la Procédure Sauvegarder()


107

Sauvegarder(TO,nbEnreg);
108
}break;
109
110 case 7:{
111

//Appel de la Procédure Lire()


112

Lire(
TO,nbEnreg);
113 }break;
114
115
116

case 8:{
117

//Appel de la Procédure Quitter()


118
Quitter();
119
120

}break;
121 }
122 }while(choix !=8);
123
124
125 }//Fin de main()
126 //Def de la procedure Ajouter()
127 void Ajouter(Ordinateur t[MAX],int *p)
128 {
129 printf("taper le Reference a Ajouter : ");
130 scanf("%d",&t[*p].ref);
131 printf("taper la Marque a ajouter : ");
132 scanf("%s",t[*p].marque);
133 printf("taper la Capacite Memoire a ajouter (en Go): ");
134 scanf("%d",&t[*p].cm);
135 printf("taper la capacite disque a ajouter (en To): ");
136 scanf("%d",&t[*p].cd);
137 printf("taper le type du systeme d'exploitation a ajouter: ");
138 scanf("%s",t[*p].se);
139 (*p)++;
140
141 }
142 //Def de la procedure Afficher()
143 void Afficher(Ordinateur t[MAX],int N)
144 {
145 int i;
146 for( i = 0; i < N; i++)
147 {
148 printf("Les informations de
l'ordinateur numero '%d'.\n",i+1);
149 printf(" Reference :%d\n",t[i
].ref);
150 printf(" Marque : %s\n",t[i].
marque);
151 printf(" Capacite Memoire : %d
Go\n",t[i].cm);
152 printf(" Capacite disque : %d
To\n",t[i].cd);
153 printf(" Type du systeme
d'exploitation : %s\n",t[i].se);
154 puts(
"************************************************");
155 }
156 }
157 //Déf de la Procédure Modifier()
158 void Modifier(Ordinateur t[MAX] ,int N, int Ref)
159 { int i;
160 for(i=0;i<N;i++)
161 {
162 if(t[i].ref == Ref)
163 {
164

puts("*******la Modification*********");
165

printf("taper la Nouvelle Marque : ");


166

scanf("%s",t[i].marque);
167

printf("taper la Nouvelle Capacite Memoire (en Go): ");


168

scanf("%d",&t[i].cm);
169

printf("taper la Nouvelle capacite disque (en To): ");


170

scanf("%d",&t[i].cd);
171

printf("taper le Nouveau systeme d\'exploitation: ");


172

scanf("%s",t[i].se);
173 }
174 }
175
176 }
177 //Déf de la Procédure Supprimer()
178 void Supprimer(Ordinateur t[MAX] , int *p, int Ref)
179 {
180 int i, j=0;
181
182 for(i=0;i<*p;i++)
183 {
184 if(t[i].ref != Ref)
185 {
186
t[j
] = t[i];
187
j
++;
188 }
189 }
190 *p = j;
191 }
192 //Déf de la Procédure Trier()
193 void Trier(Ordinateur t[MAX],int N)
194 {
195 int nbEch,i;
196 Ordinateur tmp;
197 do{
198 nbEch=0;
199 for(i=0;i<N-1;i++)
200 {
201
202 if(strcmp(t[i].marque,t[i+
1].marque) > 0)
203 {
204 tmp = t[i];
205 t[i] = t[i+1];
206 t[i+1]= tmp;
207 nbEch++;
208 }
209 }
210 }while(nbEch>0);
211 }
212 //def de la procedure Sauvegarder
213 void Sauvegarder(Ordinateur T[MAX],int N)
214 { int i;
215 FILE *pf;
216 pf=fopen("devoir.txt","w");
217 if(pf== NULL)
218 {
219

printf("\a Erreur:Impossible d'ouvrir le fichier en ecriture:\n");


220

exit(1);
221 }
222
223 printf("Le fichier a ete creer avec succe:\n");
224 /*
225 for(i=0;i<N;i++)
226 { //RAM vers DD
227 fprintf(pf,"%d %s %d %d %s\n",T[i].ref,T[i].marque,T[i].cm,T[i].cd,T[i].se);
228 }
229 */
230 //RAM vers DD
231 fwrite(T,sizeof(Ordinateur),N,pf);
232 fclose(pf);
233 }
234 //Def de la Procédure Lire()
235 void Lire(Ordinateur T[MAX],int N)
236 {
237 int i=0;
238 FILE *pf;
239 pf = fopen("devoir.txt","r");
240
241 //Gestion d'erreurs
242 if(pf == NULL)
243 {
244 printf("\aErreur:Impossible
d'ouvrir le fichier en lecture .\n");
245 exit(1);
246 }
247
248 system("cls");
249 /*
250 while(!feof(pf))
251 {
252 fscanf(pf,"%d %s %d %d
%s\n",&T[i].ref,T[i].marque,&T[i].cm,&T[i].cd,T[i].se);
253 printf("les informations de l\'ordinateur numero %d :
\n",i+1);
254 printf("Reference : %d ,Marque :%s,Capacite Memoire :%d ,Capacite Disque :
%d,SE:%s\n",T[i].ref,T[i].marque,T[i].cm,T[i].cd,T[i].se);
255 i++;
256 }
257 */
258 fread(T,sizeof(Ordinateur),N,pf);
259
260 for( i = 0; i < N; i++)
261
262 { printf("les informations de l\'ordinateur numero %d : \n"
,i+1);
263 printf("Reference : %d ,Marque
:%s,Capacite Memoire :%d ,Capacite Disque : %d,SE:%s\n",T[i].ref,T[i].marque,T[i].cm,T[i].cd,T[i].
se);
264 }
265
266 fclose(pf);
267 }
268 //Def de la procedure Quitter()
269 void Quitter()
270 {
271 system("cls");
272 printf("\n\n\t****** FIN DU PROGRAMME!*******\n\n");
273 printf("\t\t\t****** FIN DU REVISION!*******\n\n");
274 printf("\t\t\t\t\t****** BON COURAGE TDI102 & 103 *******\n\n"
);
275 printf("\t\t\t\t\t\t\t****** FIN DU LANGAGE C !*******\n\n");
276 printf("\t\t\t\t\t\t\t\t\t****** BIENTOT lE LANGAGE C#
!*******\n\n");
277 exit(1);
278
279 }