Sunteți pe pagina 1din 9

ACADEMIA DE STUDII ECONOMICE

FACULTATEA DE CIBERNETICA, STATISTICA SI INFORMATICA ECONOMICA

Algoritmi in programare
PROGRAM GESTIUNE INVENTAR MAGAZIN

Infocyb Admin

Bucuresti, 2009
Prezentare proiect

Programul realizeaza gestiunea produselor unei firme.


Operatiunile ce pot fi facute in aplicatie sunt:

1. Creare inventar
2. Adaugare produs in inventar
3. Stergere produs din inventar
4. Afisare lista inventar
5. Actualizare pret lista
6. Afisare selectiva a produselor
0. Iesire program.

1. Crearea inventarului:

 Se creeaza fisierul de date


 Daca acesta exista, el se poate sterge sau modifica, prin reintoarcere la Cuprins.
 Se genereaza automat un cod de magazie pentru fiecare produs adaugat.
 Fiecare inregistrare are : ID, Nume, Pret, Cantitate si un indicator de stare.

2. Adaugarea unui nou produs in inventar

 Se deschide fisierul deja creat cu posibilitatea de citire-scriere.


 Daca acesta nu exista se va afisa o eroare.
 Codul produselor introduse este dat in continuarea celor deja existente.

3. Stergerea produselor

 Se deschide fisierul, cu validare si permisiuni de modificare.


 Se cere introducerea codului produsului ce se doreste a fi scos din inventar.
 Tastarea unui cod inexistent va genera eroare
 Se face pozitionarea in fisier pe articolul respectiv.
 Se solicita confirmarea stergerii si se modifica indicatorul de stare.

4. Afisarea inventarului pe monitor

 Se deschide fisierul doar pentru citire.


 Se parcurge de la inceput spre sfarsit, cu afisarea fiecarei inregistrari pe ecran.
 Dupa listare, programul revine in meniu.
5. Actualizare pret lista

 Se deschide fisierul pentru modificarea ceruta.


 Se solicita codul produsului.
 Tastarea unui cod inexistent va genera eroare.
 Se cere confirmarea modificarii cu noul pret.
 Se realizeaza suprascrierea pretului in fisier.

6. Afisare selectiva a produselor

 Se deschide fisierul pentru citire.


 Se introduce codul produsului ce se doreste a fi afisat.
 Un cod care nu este valid va genera eroare pe monitor.
 Se listeaza datele corespunzatoare codului tastat.

Precizari:

Programul este compus dintr-o serie de functii ce sunt apelate intr-un ciclu repetiv while
Selectarea variantelor se realizeaza prin citirea de la tastatura si compararea cu optiunile meniului
Cuprinsul este organizat sub forma unei structuri Switch
Dupa fiecare executie a unei operatii, aceasta se va relua pana
Incheierea executiei repetate a unei functii se face prin tastarea comenzii de sfarsit a fisierului standard
de in intrare (Ctrl+Z).
Aplicatia se bazeaza pe functii de accesare a fisierelor organizate relativ si binar (fopen, fread, fwrite,
fseek, fclose, remove etc )
Fiecare optiune introdusa de la tastatura este validata, cu afisarea unui mesaj corespunzator.
Citirea mesajelor este permisa prin intermediul functiei delay.
D:\CSIE\Anul_II_-_Semestrul_I\Algoritmi in programare\proj .cpp 19 februarie 2009 00:24

1 #include <stdio.h>
2 #include <conio.h>
3
4 //nu contine exemplu grade totale
5 // nu garantez sa ruleze fara probleme
6 // ar putea avea imbunatatite validarile si constrangerile
7 // acesta este doar un proiect ca model orientativ
8 // pentru a vedea cum se face un meniu cu apelare repetitiva
9 // si subprogramele de prelucrare fisiere
10 //
11 //
12 //infocyb admin
13
14
15 typedef struct {unsigned int id;
16 char nume[30];
17 unsigned int pret, cant;
18 int is; //indicator stare
19 } tabel;
20
21
22 void cuprins()
23 {
24 printf("\n \n \n \n \n");
25 printf("Program Gestiune Inventar Magazin\n");
26 printf("\n\n");
27 printf(" ========================================================= \n");
28 printf("|| || \n");
29 printf("|| 1. Creare inventar ||\n");
30 printf("|| 2. Adaugare produs in inventar ||\n");
31 printf("|| 3. Stergere produs din inventar ||\n");
32 printf("|| 4. Afisare lista inventar ||\n");
33 printf("|| 5. Actualizare pret lista ||\n");
34 printf("|| 6. Afisare selectiva a produselor ||\n");
35 printf("|| 0. Iesire. ||\n");
36 printf(" ========================================================= \n");
37 printf(\n\n\n\n);
38 printf((" Optiune: ");
39 }
40
41 /////////////////////////
42
43 void creare_bd()
44 {char fis[20]
45 file* f; char opt_1[1];
46 tabel x; unsigned int id=1;
47 printf("Nume fisier: ");
48 scanf("%s",&fis);
49 f=fopen(fis,"r+b");
50 if (f==1)
51 {
52 printf("Fisier deja existent");fclose(f);
53 printf("\n1. Stergere \n");
54 printf("0. Intoarcere meniu pentru modificare bd sau alte optiuni\n");
55 printf(" alegere : ");
56 scanf("%c",&opt_1)
57 if(opt_1=="1")

-1-
D:\CSIE\Anul_II_-_Semestrul_I\Algoritmi in programare\proj .cpp 19 februarie 2009 00:24

58 {
59 remove(fis);
60 printf("Baza de date corespunzatoare a fost stearsa!");
61 sleep(3);
62 }
63 };
64 else
65 {f=fopen(fis,"w+b");
66 fflush(stdin);
67
68 printf("\nNume produs cod %u sau Ctrl+Z pt salvare BD:",id);
69 scanf("%s",&x.nume);
70 while !(feof(stdin))
71 {
72 x.id=id;
73 printf("\nPret [RON]:");
74 scanf("%u",&x.pret);
75 printf("\nCantitate:");
76 scanf("%u",&x.cant);
77 x.is=1;
78 fseek(f,(id-1)*sizeof(tabel),0);
79 fwrite(&x,sizeof(tabel),1,f);
80 id++;
81 printf("\nNumele urmatorului produs (cod %u) sau Ctrl+Z pentru salvare BD:");
82 scanf("%s",&nume);
83 }
84 fclose(f);
85 }
86 }
87 ///////////////////////
88
89 int n_art(file *f, int fsize)
90 {
91 long poz=ftell(f);
92 fseek(f,0,2);
93 int c=ftell(f)/l;
94 fseek(f,poz,0);
95 return c;
96 }
97
98 //////////////////////
99
100 void adaugare()
101 {char fis[20]
102 file* f;tabel x; unsigned int id;
103 printf("Nume fisier: ");
104 scanf("%s",&fis);
105 f=fopen(fis,"r+b");
106 if (f==0) { printf ("Eroare! nu exista fisierul cerut"); sleep(3)};
107 else
108 {id=nr_art(f,sizeof(tabel));
109 id++;
110 fflush(stdin);
111 printf("\nNume produs cod %u sau Ctrl+Z pt salvare BD:",id);
112 scanf("%s",&x.nume);
113 while !(feof(stdin))
114 {

-2-
D:\CSIE\Anul_II_-_Semestrul_I\Algoritmi in programare\proj .cpp 19 februarie 2009 00:24

115 x.id=id;
116 printf("\nPret [RON]:");
117 scanf("%u",&x.pret);
118 printf("\nCantitate:");
119 scanf("%u",&x.cant);
120 x.is=1;
121 fseek(f,sizeof(tabel)*(id-1),0);
122 fwrite(&x,sizeof(tabel),1,f);
123 id++;
124 printf("\nNumele urmatorului produs (cod %u) sau Ctrl+Z pentru salvare BD:");
125 scanf("%s",&nume);
126 }
127 fclose(f);
128 }
129 }
130
131 /////////////////////////
132
133 void stergere()
134 {char fis[20], conf[2];
135 file* f;tabel x; unsigned int cod;
136 printf("Nume fisier: ");
137 scanf("%s",&fis);
138 f=fopen(fis,"r+b");
139 if (f==0) { printf ("Eroare! nu exista fisierul cerut"); sleep(3)};
140 else
141 {fflush(stdin);
142 printf("Dati codul produsului sau Ctrl+Z pentru iesire:");
143 scanf("%u",&cod);
144 while(!feof(stdin))
145 {
146 if(cod>nr_art(f,sizeof(tabel)))
147 printf("produsul cautat nu exista \n");
148 else
149 { fseek(f,(cod-1)*sizeof(tabel),0);
150 tabel y;
151 fread(&y, sizeof(tabel),1,f);
152 if (y.is==0)
153 printf("produsul cautat nu exista \n");
154 else
155 { printf("Confirmati stergere produs %s - cod %u [DA/NU] ? ",y.nume,y
.id);
156 scanf("%s",&conf);
157 if(((conf[0]=='D')&&(conf[1]=='A'))||((conf[0]=='d')&&(conf[1]=='a')))
158 {
159 y.is=0;
160 fseek(f,(cod-1)*sizeof(tabel),0);
161 fwrite(&y,sizeof(tabel),1,f);
162 printf("Stergere executata! \n");
163 }
164 else printf("Stergerea nu a fost finalizata! \n");
165 }
166 }
167 printf("Dati codul produsului sau Ctrl+Z pentru iesire:");
168 scanf("%u",&cod);
169 }
170 fclose(f);}

-3-
D:\CSIE\Anul_II_-_Semestrul_I\Algoritmi in programare\proj .cpp 19 februarie 2009 00:24

171 }
172
173 ///////////////////////
174
175 void afisare()
176 {
177 file *f;
178 tabel x;int i;
179 char fis[20];
180 printf("Dati numele fisierului sursa: ");
181 scanf("%s",&fis);
182 f=fopen(fis,"rb") ;
183 if(f==0)
184 {printf("Eroare la citire"); sleep(3)};
185 else
186 {
187 fseek(f,0,0);
188 fread(&x, sizeof(tabel),1,f);
189 for(int i=0;i<=nr_art(f,sizeof(tabel));i++)
190 if(x.is==1)
191 {
192 printf("codul produs: %u \n", x.id);
193 printf("numele produs: %s \n", x.nume);
194 printf("pretul: %u RON\n", x.pret);
195 printf("cantitatea: %u \n", x.cant);
196 fread(&x,sizeof(tabel),1,f);
197 }
198 else fread(&x,sizeof(tabel),1,f);
199 fclose(f); }
200
201
202 }
203
204 /////////////////////////
205
206 void pret_modif()
207 {
208 file *f;
209 tabel x;
210 char fis[20], conf[2];
211 unsigned int id, pret_nou;
212 printf("Dati numele fisierului sursa: ");
213 scanf("%s",&fis);
214 f=fopen(nume,"r+b") ;
215 if (f==0) {printf("Eroare! Nu exista fisierul cerut");sleep(3)};
216 else {
217 printf("Introduceti codul produsului sau Ctrl+Z pentru iesire:");
218 scanf("%u",&id);
219 while(!feof(stdin))
220 { if(id>nr_art(f,sizeof(tabel)))
221 printf("produsul cautat nu exista! \n");
222 else
223 { fseek(f,(id-1)*sizeof(tabel),0);
224 tabel y;
225 fread(&y, sizeof(tabel),1,f);
226 if (y.is==0)
227 printf("produsul cautat nu exista! \n");

-4-
D:\CSIE\Anul_II_-_Semestrul_I\Algoritmi in programare\proj .cpp 19 februarie 2009 00:24

228 else
229 {
230 printf("Pretul actual al produsului %s - cod %u este %u RON \n" ,y.nume,y.id,y.
pret);
231 printf("Dati noua valoare: \n");
232 scanf("%u",&pret_nou);
233 printf("Cpnfirmati modificarea pretului produsului [DA/NU] ? ");
234 scanf("%s",&conf);
235 if(((conf[0]=='D')&&(conf[1]=='A'))||((conf[0]=='d')&&(conf[1]=='a')))
236 {
237 y.pret=pret_nou;
238 fseek(f,(id-1)*sizeof(tabel),0);
239 fwrite(&y,sizeof(tabel),1,f);
240 printf("Pret modificat! \n");
241 }
242 else printf("Pretul nu a fost modificat! \n");
243 }
244 }
245 printf("Introduceti codul produsului sau Ctrl+Z pentru iesire:");
246 scanf("%u",&id);
247 }
248 fclose(f);}
249 }
250
251 /////////////////////////////
252
253
254 void selectare()
255 {
256 file *f;
257 tabel x;
258 char fis[20];
259 unsigned int id;
260 printf("Dati numele fisierului sursa: ");
261 scanf("%s",&nume);
262 f=fopen(nume,"rb") ;
263 if (f==0) {printf("Eroare la citire");sleep(3)};
264 else {
265 printf("Dati codul prodsului sau Ctrl+Z pentru iesire:");
266 scanf("%u",&id);
267 while(!feof(stdin))
268 { if(id>nr_articole(f,sizeof(tabel)))
269 printf("produsul cautat nu exista! \n");
270 else
271 { fseek(f,(id-1)*sizeof(tabel),0);
272 fread(&x, sizeof(tabel),1,f);
273 if (x.is==0)
274 printf("produsul cautat nu exista! \n");
275 else
276 {
277 printf("\n==================================================\n");
278 printf("\ncodul produsului: %d \n", x.id);
279 printf("numele produsului: %s \n", x.nume);
280 printf("pretul: %u RON\n", x.pret);
281 printf("cantitatea %u \n", x.cant);
282 printf("===================================================\n");
283 }

-5-
D:\CSIE\Anul_II_-_Semestrul_I\Algoritmi in programare\proj .cpp 19 februarie 2009 00:24

284 }
285 printf("\nDati codul produsului sau Ctrl+Z pentru iesire:");
286 scanf("%u",&id);
287 }
288 fclose(f);}
289 }
290
291 ////////////////////////////////
292
293 void main()
294 {
295 char optiune[1]="`";
296 while(optiune!="0")
297 {
298 cuprins();
299 scanf("%c",&optiune);
300 switch(optiune)
301 {
302 case "1" : creare_bd();break;
303 case "2" : adaugare();break;
304 case "3" : stergere();break;
305 case "4" : afisare();break;
306 case "5" : pret_modif();break;
307 case "6" : selectare();break;
308 else {printf("Optiune inexistenta! Reincearca!..."); sleep(3)};
309 }
310
311 }
312 clrscr();
313 }

-6-

S-ar putea să vă placă și