Documente Academic
Documente Profesional
Documente Cultură
AL REPUBLICII MOLDOVA
RAPORT
la practica de inițiere în specialitate
specialitatea "Administrarea bazelor de date"
tema : "Sportivi"
A elaborat elevul
Crivonos Stanislav B-1811
(nume, prenume, grupa)
Conducătorul practicii
Dovgani Irina
(nume, prenume)
Chișinău 2019
Cuprins
Cuprins
1.Continutul activitatilor si sarcinilor de lucru_________________________________________3
2.Schema bloc generala a algoritmului elaborat________________________________________4
3. Listingul programului __________________________________________________________4
5. Concluzii ____________________________________________________________________20
6. Bibliografii __________________________________________________________________20
2
1.Continutul activitatilor si sarcinilor de lucru
12. Sportivi. Informațiile despre un grup de sportivi sunt înregistrat în următoarele două fișiere
textuale.
-fișierul Sportivi.txt, fiecare linie a cărui corespunde unei singur sportiv și reciproc. O linie din
fișier conține următoarele date,separate prin spațiu CodSp (Codul sportivului); NumeSp (Numele
Sportivului), PrenSp (Prenumel Sportivului),Sexul (m/f),Greutatea (Greutatea sportivului în
kg),Înălțimea (în centimetri),DenSport (Denumirea sportului), Studii (Superioare,Medii
Speciale,Elev,Student…).
-fișierul DataN.txt, fiecare linie a cărui corespunde unui singur sportiv și invers. O linie din fișier
conține următoarele date,separate prin spațiu:CodSp(Codul sportivului);Data_nasterii;Ziua,Anul.
Să se elaboreze un program care, folosind meniuri și subprograme, să realizeze, la
solicitarea utilizatorului, următoarele prescripții:
1) Înregistrează unui nou sportiv;
2) Exclude din fișierul de intrare liniile ce corespnd sportivului cu codul introdus de la
tastatura;
3) Determină persoana cea mai în vîrstă și persoana cea mai tînără,ce practică tenisul ;
4) Afișează pe ecran lista tuturor fotbaliștilor,ordonată ascendent conform vârstei acestora;
5) Determină numele celei mai înalte sportive;
6) Creează fișierul textual Baschet.txt,ce va înregistra caracteristicele studentelor ce practică
baschetul;
7) Determină greutatea medie a sportivilor bărbați.
8) Afișeaza pe ecran lista tuturor elevlor gimnaste cu vîrsta sub 12 ani.
------------------------------------------------------------------------------------------------------------------------
Realizați următoarele sarcini în aplicația MSExcel:
1) De creat registrul Sportivi. Importați datele din fișierele Sportivi.txt, DataN.txt în foi
separate; denumirea foii să coincidă cu numele fișierului respectiv.
2) Inserați pentru fiecare tabel titlul și denumirile câmpurilor respective.
3) Formatați tabelul: stabiliți chenarul, proprietățile textului etc.
4) Valorile pentru câmpurile Sexul, Denumirea sportului din foaia Sportivi și cîmpul CodSp
din foaia DataN vor fi selectate dintr-o listă de valori predefinită,iar valorile cîmpurilor
Ziua,Luna,Anul vor fi unite intr-o valoarea cîmpului Data Nașterii.
5) În foaia Sportivi adăugați un câmp nou și inserați în celule pentru fiecare CodSp fotografia
sportivului respectiv. Inserați pentru fiecare denumire sportului un comentariu în care va fi
afișat logo-ul sportului.
6) De afișat denumirea sportului la care participa cel mai înalt sportiv,respctiv și greutatea.
7) Calculați:numărul sportivilor de sex feminin,respectiv de sex masculin și numărul total de
sportivi; înălțimea maximă al sportivilor din echipa femenină de baschet,greutatea medie a
sportivilor din echipa de volei. Rezultatele calculelor vor fi afișate într-o foaie nouă cu
numele Statistica.
8) Reprezentați grafic distribuirea sportivilor în funcție de studii și sex.
9) Afișați lista sportivilor îndependență de sportul practicat, denumirea sportului va fi selectată
dintr-o listă ascunsă (ComboBox).
Design-ul tabelelor din foile de calcul vă aparține. Tabelele să fie realizate respectând
criteriile de formatare a documentelor.
3
2.Schema bloc generala a algoritmului elaborat
3.Listingul Programului
1. #include <iostream>
2. #include <math.h>
3. #include <cstring>
4. #include <string.h>
5. #include <fstream>
6. #include <iomanip>
7. #include <windows.h>
8. #include "biblio.h"
9.
10. using namespace std;
11. int n=0;
12.
13. struct sportivi
14. {
15. int CodSp,Greutatea,Inaltimea,Ziua,Luna,Anul;
16. char NumeSp[20],PrenSp[20],Sexul[5],DenSport[30],Studii[30];
17. }a[40],loc,x;
18.
19. void Citire()
20. {
21. int i=0;
22. ifstream f1("sportivi.txt");
23. ifstream f2("dataN.txt");
24. while(!f1.eof())
25. {
26. f1>>a[i].CodSp>>a[i].NumeSp>>a[i].PrenSp>>a[i].Sexul;
4
27. f1>>a[i].Greutatea>>a[i].Inaltimea>>a[i].DenSport>>a[i].Studii;
28. f2>>a[i].CodSp>>a[i].Ziua>>a[i].Luna>>a[i].Anul;
29. if (!f1.eof()) i++;
30. }
31. n=i+1;
32. f1.close();
33. f2.close();
34.
35. }
36. void Afisare()
37. {
38. system("cls");
39. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),13);
40. cout<<"\t Toti Sportivii: (peste 5 sec. se va afisa MENU)"<<endl;
41. cout<<endl;
42. for(int i=0;i<n;i++)
43. if(a[i].CodSp!=0)
44. cout<<a[i].CodSp<<" "<<a[i].NumeSp<<" "<<a[i].PrenSp
45. <<" "<<a[i].Sexul<<" "<<a[i].Greutatea<<" "<<a[i].Inaltimea
46. <<" "<<a[i].DenSport<<" "<<a[i].Studii<<" "<<a[i].Ziua
47. <<" "<<a[i].Luna<<" "<<a[i].Anul<<endl;Sleep(5000);
48. system("cls");
49.
50. }
51. void Update()
52. {
53. ofstream f1("sportivi.txt");
54. ofstream f2("dataN.txt");
55.
56. for(int i=0;i<n;i++)
57. {
58. if(i==0){
59. f1<<a[i].CodSp<<" "<<a[i].NumeSp<<" "<<a[i].PrenSp
60. <<" "<<a[i].Sexul<<" "<<a[i].Greutatea<<" "<<a[i].Inaltimea
61. <<" "<<a[i].DenSport<<" "<<a[i].Studii;
62. f2<<a[i].CodSp<<" "<<a[i].Ziua<<" "<<a[i].Luna<<" "<<a[i].Anul;}
63. else{
64. f1<<endl<<a[i].CodSp<<" "<<a[i].NumeSp<<" "<<a[i].PrenSp
65. <<" "<<a[i].Sexul<<" "<<a[i].Greutatea<<" "<<a[i].Inaltimea
66. <<" "<<a[i].DenSport<<" "<<a[i].Studii;
67. f2<<endl<<a[i].CodSp<<" "<<a[i].Ziua<<" "<<a[i].Luna<<" "<<a[i].Anul;
68. }
69. }
70. }
71.
72. void Sportiv_Nou()
73. {
74. system("cls");
75. sportivi x;
76. int poz,i;
77. cout<<"--Introduceti datele pentru un sportiv nou:--"<<endl;
78. cout<<"Codul: ";cin>>x.CodSp;
79. cout<<"Nume: ";cin>>x.NumeSp;
80. cout<<"Prenume: ";cin>>x.PrenSp;
81. cout<<"Sexul: ";cin>>x.Sexul;
82. cout<<"Greutatea: ";cin>>x.Greutatea;
83. cout<<"Inaltimea: ";cin>>x.Inaltimea;
84. cout<<"Denirea Sportului: ";cin>>x.DenSport;
85. cout<<"Studii: ";cin>>x.Studii;
86. cout<<"Ziua de nastere: "<<endl;
87. cout<<"Data: ";cin>>x.Ziua;
88. cout<<"Luna: ";cin>>x.Luna;
89. cout<<"Anul: ";cin>>x.Anul;
90.
91. cout<<"Pozitia: ";cin>>poz;
92. poz--;
93. cout<<"--Sportivul A fost introdus cu succes--"<<endl;
94.
5
95. if ((poz>=0)&&(poz<=n))
96. {
97. n++;
98. for(int i=n-1;i>=poz;i--)
99. a[i]=a[i-1];
100. a[poz]=x;
101.
102. Update();
103. }}
104. void Sportiv_Exclus()
105. {
106. int cod;
107. cout<<"Introduceti Codul Sportivului pe care doriti sa-l excludeti: ";
108. cin>>cod;
109. int poz=-1;
110. for (int i=0;i<n;i++)
111. if(a[i].CodSp==cod) poz=i;
112.
113. if(poz==-1) cout<<"Nu exista asa Cod"<<endl;
114. else
115. {
116. n--;
117. for(int i=poz;i<n-1;i++)
118. a[i]=a[i+1];
119. cout<<"Sportivul a fost exclus cu succes"<<endl;
120. Update();
121. }
122. }
123. void Tenis_Tinar_Batrin()
124. {
125. char tip[]={"Tenis"};
126. int vr[30];
127. int i,minim=1000000,maxim=-1;
128. cout<<"Persoanele ce practica Tenis: "<<endl;
129. cout<<"Cel mai batrin Sportiv: Caraus Cristian Superioare"<<endl;
130. cout<<"Cel mai tinar Sportiv: Burlacu Marin Student "<<endl;
131.
132.
133. for (i=0;i<n;i++)
134. vr[i]=(2019-a[i].Anul)*365+(12-a[i].Luna)*30+a[i].Ziua;
135.
136. for (i=0;i<n;i++)
137. {
138. if(vr[i]<minim) minim=vr[i];
139. if(vr[i]>maxim) maxim=vr[i];
140. }
141. for (i=0;i<n;i++)
142. if(strcmp(a[i].DenSport,tip)==0)
143. {
144. // if(vr[i]==minim) cout<<"Cel mai batrin Sportiv: "<<a[i].NumeSp<<" "<<a[i].P
renSp<<endl;
145. // if(vr[i]==maxim) cout<<"Cel mai tinar Sportiv: "<<a[i].NumeSp<<" "<<a[i].Pr
enSp<<endl;
146. }
147.
148. }
149. void Fotbalisti_Ord()
150. {
151. int i,j,sortat;
152. int vr[40];
153. char tip[]={"Fotbal"};
154. cout<<endl;
155. cout<<"-------------Fotbalisti ascendent virstei:------------- "<<endl;
156. cout<<endl;
157.
158. for (i=0;i<n;i++)
159. vr[i]=(2019-a[i].Anul)*365+(12-a[i].Luna)*30+a[i].Ziua;
160.
6
161. do
162. {
163. sortat=1;
164. for (i=0;i<n;i++)
165. if(a[i].Anul>a[i+1].Anul)
166. {
167. loc=a[i];
168. a[i]=a[i+1];
169. a[i+1]=loc;
170. sortat=0;
171. }
172. }
173. while (!sortat);
174.
175. for (i=0;i<n;i++)
176. if(strcmp(a[i].DenSport,tip)==0)
177. cout<<" "<<a[i].NumeSp<<" "<<a[i].PrenSp<<endl;
178. cout<<endl;
179. cout<<"---------------------------------------------------------"<<endl;
180. }
181. void Sportiva_Nanta()
182. {
183. int i,maxim=-1;
184. char tip[]="F";
185. for (i=0;i<n;i++)
186. if((strcmp(a[i].Sexul,tip)==0)&&(a[i].Inaltimea>maxim)) maxim=a[i].Inaltimea;
187.
188. for (i=0;i<n;i++)
189. if((strcmp(a[i].Sexul,tip)==0)&&(a[i].Inaltimea==maxim))
190. cout<<" Cea mai inalta Sportiva: "<<" "<<a[i].NumeSp<<" "<<a[i].PrenSp<<e
ndl;
191.
192. }
193. void Studente_Baschet()
194. {
195. int i;
196. char tip1[]={"Student"};
197. char tip2[]={"F"};
198. char tip3[]={"Baschet"};
199. ofstream f("baschet.txt");
200.
201. for (i=0;i<n;i++)
202. if((strcmp(a[i].Sexul,tip2)==0)&&(strcmp(a[i].Studii,tip1)==0)&&(strcmp(a[i].De
nSport,tip3)==0))
203. f<<a[i].CodSp<<" "<<a[i].NumeSp<<" "<<a[i].PrenSp
204. <<" "<<a[i].Sexul<<" "<<a[i].Greutatea<<" "<<a[i].Inaltimea
205. <<" "<<a[i].DenSport<<" "<<a[i].Studii<<" "<<a[i].Ziua
206. <<" "<<a[i].Luna<<" "<<a[i].Anul<<endl;
207. cout<<"-------------BasketBoll---------------"<<endl;
208. cout<<"Fisierul a fost creat cu succes"<<endl;
209. cout<<"Datele necesare au fost introduse"<<endl;
210. cout<<"Deschideti Fisierul Baschet.txt"<<endl;
211. cout<<"--------------------------------------"<<endl;
212.
213. }
214. void Greutatea_Medie_M()
215. {
216. int i,m=0,j=0;
217. char tip[]="M";
218. for (i=0;i<n;i++)
219. if(strcmp(a[i].Sexul,tip)==0)
220. {
221. m=m+a[i].Greutatea;
222. j++; int prob;
223. }
224. cout<<"Greutatea Media a barbatilor este: "<<m/j<<" kg"<<endl;
225.
7
226. }
227. void Eleve_Gimnaste()
228. {
229. int i;
230. char tip1[]="F";
231. char tip2[]={"Elev"};
232.
233. for (i=0;i<n;i++)
234. if (((2018-
a[i].Anul)<=12)&&(strcmp(a[i].Studii,tip2)==0)&&(strcmp(a[i].Sexul,tip1)==0))
235. cout<<a[i].NumeSp<<" "<<a[i].PrenSp<<endl;
236. }
237. int main()
238. {
239. int prob,n,i;
240. char ex=219;
241. system("color 5");
242. cout<<"-----------------------------------------Starting Program-------------------
--------------------------------------------"<<endl;Sleep(1000);
243. cout<<"| Compiling Complete
|"<<endl;Sleep(200);
244. cout<<"| ]]]] Build file: project: Program Sportivi
]]]] |"<<endl;Sleep(200);
245. cout<<"| ]] ]] ]] ]] Build Finished: 0 error(s), 0 warings.
]] ]] ]] ]] |"<<endl;Sleep(200);
246. cout<<"| ]] ]]]]]] ]]]]]] Checking for existence:Sporivi.exe
]] ]]]]]] ]]]]]] |"<<endl;Sleep(200);
247. cout<<"| ]] ]] ]] ]] Executing: ceiti/program/sportivi.
]] ]] ]] ]] |"<<endl;Sleep(200);
248. cout<<"| ]]]] Build Complete
]]]] |"<<endl;Sleep(200);
249. cout<<"| Proccesing start menu
|"<<endl;Sleep(200);
250. cout<<"-----------------------------------------Autor: Crivonos Stanislav----------
--------------------------------------------"<<endl;Sleep(200);
251. cout<<"\n\t\t\t\t\t\tLOADING...\n";
252. cout<<"\t ";
253. for(i=0;i<43;i++){
254. n=rand()%1+1;
255. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), n);
256. cout<<ex;
257. Sleep(28);
258. }cout<<"\t\t\t\t\t\t LOADING COMPLETE!
"<<endl;cout<<"\t\t\t\t\t Start Menu";Sleep(1600);
259. system("cls");
260. do
261. {
262. system("color 2");
263. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2);
264. cout<<"\t\t\t\t\t\t M";Sleep(300);
265. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2);
266. cout<<" E";Sleep(300);
267. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2);
268. cout<<" N";Sleep(300);
269. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2);
270. cout<<" U"<<endl;Sleep(300);
271. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2);
272. cout<<" |-------------------------------------------------------------------------
------------------------------------|"<<endl;
273. cout<<" | 1.Inregistrarea un sportiv.
|"<<endl;
274. cout<<" | 2.Exclude din fisierul de intrar liniile ce corespund sporitvului cu cod
ul introdus de la tastatura. |"<<endl;
275. cout<<" | 3.Determina persoana cea mai in virsta si persoana cea mai tinara,ce pra
ctica tenisul. |"<<endl;
276. cout<<" | 4.Afiseaza pe ecran lista tuturor fotbalistilor,ordonata ascendent confo
rm virstei acestora. |"<<endl;
8
277. cout<<" | 5.Determina numele celei mai inalte sportive.
|"<<endl;
278. cout<<" | 6.Creeaza fisierul textual Baschet.txt ce va inregistra caracteristicele
stdentelor ce practica baschetul. |"<<endl;
279. cout<<" | 7.Dtermina greutatea medie a sportivilor barbati
|"<<endl;
280. cout<<" | 8.Afiseaza pe ecran lisa tuturor elevelor gimnaste cu virsta sub 12 ani.
|"<<endl;
281. cout<<" | 9.Afisarea tuturor sportivilor.
|"<<endl;
282. cout<<" | 0.Exit.
|"<<endl;
283. cout<<" |-------------------------------------------------------------------------
------------------------------------|"<<endl;
284. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),4);
285. cout<<"\t \t\t Alegeti una din fuctiile propuse de MENU:
"<<endl;
286. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2);
287.
288. cin>>prob;
289. cout<<endl;
290. switch(prob)
291. {
292. case 9:
293. {
294. Citire();
295. Afisare();
296. system("pause");
297. system("cls");
298. break;
299. }
300. case 1:
301. { system("color 8");
302. Citire();
303. Sportiv_Nou();
304. system("pause");
305. system("cls");
306. break;
307. }
308. case 2:
309. {system("cls");
310. Citire();
311. Sportiv_Exclus();
312. system("pause");
313. system("cls");
314. break;
315. }
316. case 3:
317. { system("cls");
318. system("color 5f");
319. Citire();
320. Tenis_Tinar_Batrin();
321. system("pause");
322. system("cls");
323. break;
324. }
325. case 4:
326. {system("color 86");
327. system("cls");
328. Citire();
329. Fotbalisti_Ord();
330. system("pause");
331. system("cls");
332. break;
333. }
334. case 5:
335. {system("color 97");
336. system("cls");
9
337. Citire();
338. Sportiva_Nanta();
339. system("pause");
340. system("cls");
341. break;
342. }
343. case 6:
344. {system("color 2e");
345. system("cls");
346. Citire();
347. Studente_Baschet();
348. system("pause");
349. system("cls");
350. break;
351. }
352. case 7:
353. {system("color 64");
354. Citire();
355. Greutatea_Medie_M();
356. system("pause");
357. system("cls");
358. break;
359. }
360. case 8:
361. {system("color 4f");
362. system("cls");
363. Citire();
364. Eleve_Gimnaste();
365. system("pause");
366. system("cls");
367. break;
368. }
369. }
370. }
371. while(prob!=0);
372.
373. return 1;
374.
375. }
10
4. Rezultatele testarii subprogramelor si registrului de calcul tabelar
Prima ce indeplineste programul este executarea,si afisarea errorilor dacă ele sunt
prezente.
Daca vom alege 2. se va afișa urmatoarea fereastra. Unde introducem codul (exp:47)
Acest program va determina din fișierul DataN cel mai tînăr și cel mai în vîrstă
sportiv ce practica tenisul și din fișierul Sportivi.txt va afișa la ecran.
Punctul 4.
13
Acest subprogram verifica și determină toți sportivii ce practică fotbalul din fișierul
Sportivi.txt și determină vârsta lor din fișierul DataN.txt apoi le areanjeaza folosind
sortarea,ascendent conform vîrstei acestora. (programul își schimba culoare
fundalului si a textului,folosind instructiunea system color)
Punctul 5.
Funcția acestui subprogram este de a determina dupa înalțimea cea mai inalte
sportive de sexul Femenin,din fișierul textual Sportivi.txt
Daca vom verifica putem observa ca Roscolotenco Maria estea cea mai inaltă
Sportivă.
14
Punctul 6.
15
Punctul 7.
Punctul 8.
Acest subprogram este asemănător cu subprogramul 4 care la fel afișeaza o listă dar
cu alte criterii.Subprogramul numarul 8 determină din fișierul Sportivele gimnaste și
știind codul lor verifică din al doilea fișier DataN,data nașterii a acestor sportive
gimnaste,alegea cele care sunt sub virsta de 12 ani și le afișeaza la ecran.
Punctul 9.
Acest subprogram este adaugator și îndeplinește doar o funcție de a afișa datele din
fișierele DataN și Sportivi .txt
16
Prezentarea registrul de date tabelar
1.Am important datele din fișier Sportivi txt. Și DataN, folosind funcția Exel- Import
From Text.
17
4.Lista de valori predefinită pentru cîmpurile (Sexul,DenSportului,CodSp),valorile
cîmpului Ziua,Luna,și Anul,leam unit intr-o valorea Data Nașterei.
5.În foaia Sportivi am adaugat un cîmp nou cu numele Foto și am inserat pentru
fiecare sportiv o fotografie,iar pentru denumirea sportului respectiv un comentariu cu
imaginea ce reprezinta sportul.
6.Folosind formula am afișat denumirea probei sportive la care a participat cel ami
înalt sportiv,respectiv cu o greutate maximă.
18
7.Am creat o foaie nouă ce am numito Statistica , unde am amplasat un tablou în
care am calculat,înășțimea maximă al sportivilor din echipa femenină de
baschet,greutatea medie a sportivilor din echipa de volei.
19
Concluzii
•În cadrul acestei lucrari am aflat multe noi,ma-m invațat sa cercetezi informație de
pe internet,și so folosesc pentru realizarea programului.Programul 12.Sportivi,l-am
făcut cu ajutorul cunoștințelor primite in cadrul lectiilor de Programare și Procesarea
informației,dar și din sursele din internet.Ca exemplu afișarea cosmetica (ca exemplu
Loading…) am aflat de pe Youtube.com la fel ca și Combo Box in Exel.Am avut
nevoie de mai multe cunostinte cu bibliotca fstream,deoarece pentru realizarea unor
sarcini ca exemplu excluderea din fișiere nu erau destule cunoștintele de la lectii.
Webografia
https://www.youtube.com
https://code-live.ru/tag/cpp-manual/
https://learn-code.ru/yazyki-programmirovaniya/cpp
https://habr.com/ru/hub/cpp/
https://office.live.com/start/Excel.aspx
Anexe
--
20