Advertisement
Pata15

SportTracker

Dec 19th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.39 KB | None | 0 0
  1. /*! \mainpage Sport Tracker
  2. * \section Zadání
  3. * Aplikace pro záznam sportovních aktivit ukládá výsledky do CSV souboru. Ten obsahuje:
  4. * -unikátní ID sportovní aktivity,
  5. * -datum konání aktivity,
  6. * -typ aktivity (chůze, běh, kolo, inline),
  7. * -celkovou vzdálenost v km, dobu aktivity v minutách,
  8. * -odhad spálených kJ.
  9. * Pro data z vytvořeného/načteného CSV a vstupu uživatele z klávesnice vygenerujte přehled do HTML, který bude obsahovat:
  10. * -mesíční souhrn dle typu aktivit včetně dopočtené průmerné rychlosti;
  11. * -roční souhrn dle typu aktivit seřazených sestupně podle četnosti sportovních aktivit.
  12. * \section Prostředí
  13. * Microsoft Visual Studio 2013
  14. */
  15.  
  16. #include <stdlib.h>
  17. #include <iostream>
  18. #include <fstream>
  19. #include <string>
  20. #include <iomanip>
  21.  
  22. using namespace std;
  23.  
  24. string Nazev_vstupniho_souboru1;//Udaje_o_aktivitach
  25. string Nazev_vstupniho_souboru2;//Udaje_o_typech
  26. string Nazev_vystupniho_souboru;
  27.  
  28. ofstream Vystup_html;
  29. fstream Udaje_o_aktivitach;
  30. fstream Udaje_o_typech;
  31.  
  32. /*!
  33. * \brief Struktura Aktivity
  34. */
  35. struct Aktivity {
  36. string *ID;/**< @brief proměnná pro uložení ID */
  37. string *Datum;/**< @brief proměnná pro uložení Datumu */
  38. string *Typ_Aktivity;/**< @brief proměnná pro uložení Typu Aktivity */
  39. string *CelkovaVzdalenost;/**< @brief proměnná pro uložení Celkové vzdálenosti aktivity */
  40. string *DobaTrvani;/**< @brief proměnná pro uložení Doby trvání aktivity */
  41. string *SpaleneKJ;/**< @brief proměnná pro uložení počtu Spálených kalorií v KJ */
  42. }Sportovni_Aktivity;
  43.  
  44. /*!
  45. * \brief Struktura Typu Aktivity
  46. */
  47. struct TypyAktivit {
  48. string *ID;/**< @brief proměnná pro uložení ID */
  49. string *Nazev;/**< @brief proměnná pro uložení Názvu aktivity */
  50. int *cetnost;
  51. }Typy_Aktivit;
  52.  
  53. /*!
  54. * \brief velikost
  55. * \param Nazev_souboru
  56. */
  57. int velikost(string Nazev_souboru)
  58. {
  59. int pocet_radku = -1;
  60. string pocet_radku1 = " ";
  61. fstream soubor;
  62. soubor.open(Nazev_souboru);
  63.  
  64. while (!soubor.eof())
  65. {
  66. getline(soubor, pocet_radku1);
  67. pocet_radku++;
  68. }
  69. soubor.close();
  70. return pocet_radku;
  71. }
  72.  
  73. /*!
  74. * \brief retyp
  75. * \param a
  76. * \return
  77. */
  78. string retyp(int a)
  79. {
  80. for (int i = 0; i < velikost(Nazev_vstupniho_souboru2); i++)
  81. {
  82. if (atoi(Typy_Aktivit.ID[i].c_str()) == a)
  83. {
  84. return Typy_Aktivit.Nazev[i];
  85. }
  86. }
  87. return "null";
  88. }
  89.  
  90. /*!
  91. * \brief dynamickaAlokace
  92. */
  93. void dynamickaAlokace()
  94. {
  95. Sportovni_Aktivity.CelkovaVzdalenost = new string[velikost(Nazev_vstupniho_souboru1)];
  96. Sportovni_Aktivity.Datum = new string[velikost(Nazev_vstupniho_souboru1)];
  97. Sportovni_Aktivity.DobaTrvani = new string[velikost(Nazev_vstupniho_souboru1)];
  98. Sportovni_Aktivity.ID = new string[velikost(Nazev_vstupniho_souboru1)];
  99. Sportovni_Aktivity.SpaleneKJ = new string[velikost(Nazev_vstupniho_souboru1)];
  100. Sportovni_Aktivity.Typ_Aktivity = new string[velikost(Nazev_vstupniho_souboru1)];
  101. Typy_Aktivit.ID = new string[velikost(Nazev_vstupniho_souboru2)];
  102. Typy_Aktivit.Nazev = new string[velikost(Nazev_vstupniho_souboru2)];
  103. Typy_Aktivit.cetnost = new int[velikost(Nazev_vstupniho_souboru2)];
  104. }
  105.  
  106. /*!
  107. * \brief nacitani
  108. */
  109. void nacitani()
  110. {
  111. dynamickaAlokace();
  112. int i = 0;
  113. int pocetPrvku = velikost(Nazev_vstupniho_souboru1);
  114. Udaje_o_aktivitach.open(Nazev_vstupniho_souboru1);
  115. while (i < pocetPrvku)//nacitani do poli
  116. {
  117. getline(Udaje_o_aktivitach, Sportovni_Aktivity.ID[i], ',');
  118. getline(Udaje_o_aktivitach, Sportovni_Aktivity.Datum[i], ',');
  119. getline(Udaje_o_aktivitach, Sportovni_Aktivity.Typ_Aktivity[i], ',');
  120. getline(Udaje_o_aktivitach, Sportovni_Aktivity.CelkovaVzdalenost[i], ',');
  121. getline(Udaje_o_aktivitach, Sportovni_Aktivity.DobaTrvani[i], ',');
  122. getline(Udaje_o_aktivitach, Sportovni_Aktivity.SpaleneKJ[i], '\n');
  123. i++;
  124. }
  125. Udaje_o_aktivitach.close();
  126. Udaje_o_typech.open(Nazev_vstupniho_souboru2);
  127. i = 0;
  128. pocetPrvku = velikost(Nazev_vstupniho_souboru2);
  129. while (i < pocetPrvku)//nacitani do poli
  130. {
  131. getline(Udaje_o_typech, Typy_Aktivit.ID[i], ',');
  132. getline(Udaje_o_typech, Typy_Aktivit.Nazev[i], '\n');
  133. i++;
  134. }
  135. Udaje_o_typech.close();
  136. }
  137.  
  138. /*!
  139. * \brief Funkce, která vypíše hlavičku do html
  140. */
  141. void Vypis_hlavicky()
  142. {
  143. Vystup_html.close();
  144. Vystup_html.open(Nazev_vystupniho_souboru);
  145. Vystup_html << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
  146. Vystup_html << endl << "<html>" << endl << "<head>";
  147. Vystup_html << endl << "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">";
  148. Vystup_html << endl << "<title>Sportovni Aktivity</title>";
  149. Vystup_html << endl << "</head>" << endl << "<body bgcolor=" << '"' << "yellow" << '"' << ">";
  150. }
  151.  
  152. /*!
  153. * \brief Funkce, která vypíše patu do html
  154. */
  155. void Vypis_paty()
  156. {
  157.  
  158. Vystup_html << endl << "</body>";
  159. Vystup_html << endl << "</html>";
  160. Vystup_html.close();
  161. cout << "Ulozeni do souboru HTML probehlo uspesne." << endl;
  162. system("Pause");
  163. }
  164.  
  165. /*!
  166. * \brief Funkce pro kontrolu času při výběru č.3(přidání aktivity)
  167. * Zvolený čas musí být ve tvaru DD.MM.YYYY = 10 znaků
  168. * \param cas
  169. */
  170. bool kontrolaCasu(string cas)
  171. {
  172. if (cas.length() == 10)
  173. {
  174. string den = "";
  175. den += cas[0];
  176. den += cas[1];
  177. string mesic = "";
  178. mesic += cas[3];
  179. mesic += cas[4];
  180. string rok = "";
  181. rok += cas[6];
  182. rok += cas[7];
  183. rok += cas[8];
  184. rok += cas[9];
  185. if (isdigit(den[1]) && isdigit(den[0]) && isdigit(mesic[1]) && isdigit(mesic[0]) && isdigit(rok[0])
  186. && isdigit(rok[1]) && isdigit(rok[2]) && isdigit(rok[3])){
  187. if (atoi(den.c_str()) > 0 && atoi(den.c_str()) <= 32 && atoi(mesic.c_str()) <= 12 &&
  188. atoi(mesic.c_str()) > 0 && atoi(rok.c_str()) > 0 && atoi(rok.c_str()) < 2015)
  189. {
  190. return true;
  191. }
  192. }
  193. }
  194.  
  195.  
  196. return false;
  197. }
  198.  
  199. /*!
  200. * \brief Funkce, která přidá Typ aktivity
  201. * \param name
  202. */
  203. void pridaniTypu(string name)
  204. {
  205. Udaje_o_typech.open(Nazev_vstupniho_souboru2);
  206. Udaje_o_typech.seekg(0, Udaje_o_typech.end);
  207. Udaje_o_typech << velikost(Nazev_vstupniho_souboru2) + 1;
  208. Udaje_o_typech << "," << name << endl;
  209. Udaje_o_typech.close();
  210. }
  211.  
  212. /*!
  213. * \brief Funkce, která přidá novou aktivitu
  214. * \param newAktivita
  215. */
  216. void pridaniAktivity(Aktivity newAktivita)
  217. {
  218. Udaje_o_aktivitach.open(Nazev_vstupniho_souboru1);
  219. Udaje_o_aktivitach.seekg(0, Udaje_o_aktivitach.end);
  220. Udaje_o_aktivitach << velikost(Nazev_vstupniho_souboru1) + 1;
  221. Udaje_o_aktivitach << "," << newAktivita.Datum[0] << "," << newAktivita.Typ_Aktivity[0]
  222. << "," << newAktivita.CelkovaVzdalenost[0] << "," << newAktivita.DobaTrvani[0]
  223. << "," << newAktivita.SpaleneKJ[0] << endl;
  224. Udaje_o_aktivitach.close();
  225. }
  226.  
  227. /*!
  228. * \brief Funkce, která přidá typAktivity
  229. * \param number
  230. */
  231. string typAktivity(string number)
  232. {
  233. nacitani();
  234. int i = 0;
  235. while (velikost(Nazev_vstupniho_souboru2) > i)
  236. {
  237. if (atoi(Typy_Aktivit.ID[i].c_str()) == atoi(number.c_str())){
  238. return Typy_Aktivit.Nazev[i];
  239. }
  240. i++;
  241. }
  242. return "neznamy mesic";
  243. }
  244.  
  245. /*!
  246. * \brief Funkce Bubble Sort
  247. */
  248. void bubblesort()
  249. {
  250. for (int i = 0; i < velikost(Nazev_vstupniho_souboru2); i++)
  251. {
  252. for (int j = i; j < velikost(Nazev_vstupniho_souboru2); j++)
  253. {
  254. TypyAktivit typ;
  255. typ.ID = new string[1];
  256. typ.Nazev = new string[1];
  257. typ.cetnost = new int[1];
  258. if (Typy_Aktivit.cetnost[i]>Typy_Aktivit.cetnost[j])
  259. {
  260. typ.cetnost[0] = Typy_Aktivit.cetnost[i];
  261. typ.ID[0] = Typy_Aktivit.ID[i];
  262. typ.Nazev[0] = Typy_Aktivit.Nazev[i];
  263.  
  264. Typy_Aktivit.cetnost[i] = Typy_Aktivit.cetnost[j];
  265. Typy_Aktivit.ID[i] = Typy_Aktivit.ID[j];
  266. Typy_Aktivit.Nazev[i] = Typy_Aktivit.Nazev[j];
  267.  
  268. Typy_Aktivit.cetnost[j] = typ.cetnost[0];
  269. Typy_Aktivit.ID[j] = typ.ID[0];
  270. Typy_Aktivit.Nazev[j] = typ.Nazev[0];
  271.  
  272. }
  273. }
  274. }
  275. }
  276.  
  277. /*!
  278. * \brief Funkce na výpočet průměrné rychlosti
  279. * \param a
  280. * \param b
  281. * \return
  282. */
  283. double prumerna_rychlost(double a, double b)
  284. {
  285. if (a == 0 || b == 0){ return 0.0; }
  286. return a / (b / 60);
  287. }
  288.  
  289. /*!
  290. * \brief Měsíční souhrn dle typu aktivit včetně dopočtené průměrné rychlosti
  291. * V poli rocni_aktivity jsou všechny aktivity daného roku
  292. * V poli typy_aktivit jsou četnosti jednotlivých typů za daný rok
  293. * V poli typy_aktivit jsou seřazené aktivity podle četnosti pomocí Bubble Sortu
  294. * \param rok
  295. * \param mesic
  296. */
  297. void mesicni_souhrn(int rok, int mesic)
  298. {
  299. Aktivity rocni_aktivity;
  300.  
  301. rocni_aktivity.CelkovaVzdalenost = new string[velikost(Nazev_vstupniho_souboru1)];
  302. rocni_aktivity.Datum = new string[velikost(Nazev_vstupniho_souboru1)];
  303. rocni_aktivity.DobaTrvani = new string[velikost(Nazev_vstupniho_souboru1)];
  304. rocni_aktivity.ID = new string[velikost(Nazev_vstupniho_souboru1)];
  305. rocni_aktivity.SpaleneKJ = new string[velikost(Nazev_vstupniho_souboru1)];
  306. rocni_aktivity.Typ_Aktivity = new string[velikost(Nazev_vstupniho_souboru1)];
  307.  
  308. nacitani();
  309. Vypis_hlavicky();
  310. int i = 0;
  311. int index = 0;
  312. while (velikost(Nazev_vstupniho_souboru1) > i){
  313. string rok1 = "";
  314. string mesic1 = "";
  315. rok1 += Sportovni_Aktivity.Datum[i][6];
  316. rok1 += Sportovni_Aktivity.Datum[i][7];
  317. rok1 += Sportovni_Aktivity.Datum[i][8];
  318. rok1 += Sportovni_Aktivity.Datum[i][9];
  319. mesic1 += Sportovni_Aktivity.Datum[i][3];
  320. mesic1 += Sportovni_Aktivity.Datum[i][4];
  321. if (rok == atoi(rok1.c_str()) && mesic == atoi(mesic1.c_str()))
  322. {
  323. rocni_aktivity.CelkovaVzdalenost[index] = Sportovni_Aktivity.CelkovaVzdalenost[i];
  324. rocni_aktivity.Datum[index] = Sportovni_Aktivity.Datum[i];
  325. rocni_aktivity.DobaTrvani[index] = Sportovni_Aktivity.DobaTrvani[i];
  326. rocni_aktivity.ID[index] = Sportovni_Aktivity.ID[i];
  327. rocni_aktivity.SpaleneKJ[index] = Sportovni_Aktivity.SpaleneKJ[i];
  328. rocni_aktivity.Typ_Aktivity[index++] = Sportovni_Aktivity.Typ_Aktivity[i];
  329. }
  330. i++;
  331. }
  332. for (int j = 0; j < velikost(Nazev_vstupniho_souboru2); j++)
  333. {
  334. Typy_Aktivit.cetnost[j] = 0;
  335. }
  336. for (int j = 0; j < index; j++)
  337. {
  338. for (int k = 0; k < velikost(Nazev_vstupniho_souboru2); k++)
  339. {
  340. if (Typy_Aktivit.ID[k] == rocni_aktivity.ID[j])
  341. {
  342. Typy_Aktivit.cetnost[k]++;
  343. }
  344. }
  345. }
  346. bubblesort();
  347.  
  348. for (int q = 0; q < velikost(Nazev_vstupniho_souboru2); q++)
  349. {
  350. Vystup_html << "<h2 align=\"center\"><b>" << Typy_Aktivit.Nazev[q] << "</b></h2>";
  351. Vystup_html << endl << "<table border=1 align=\"center\">";
  352. Vystup_html << endl << "<tr>";
  353. Vystup_html << endl << "<td>" << "ID" << "</td>" << "<td>" << "Datum konani aktivity" <<
  354. "</td>" << "<td>" << "Typ aktivity" << "</td>" << "<td>" << "Celkova vzdalenost v Km" <<
  355. "</td>" << "<td>" << "Doba aktivity v min" << "</td>" << "<td>" << "Odhad spalenych Kj" << "</td></tr>";
  356. double vzdalenost = 0;
  357. double cas = 0;
  358. for (int w = 0; w < velikost(Nazev_vstupniho_souboru1); w++)
  359. {
  360. if (Typy_Aktivit.ID[q] == rocni_aktivity.Typ_Aktivity[w] && rocni_aktivity.ID[w] != "")
  361. {
  362. Vystup_html << endl << "<td>" << rocni_aktivity.ID[w] << "</td>" << "<td>" << rocni_aktivity.Datum[w] <<
  363. "</td>" << "<td>" << retyp(atoi(rocni_aktivity.Typ_Aktivity[w].c_str())) << "</td>" << "<td>" << rocni_aktivity.CelkovaVzdalenost[w] <<
  364. "</td>" << "<td>" << rocni_aktivity.DobaTrvani[w] << "</td>" << "<td>" << rocni_aktivity.SpaleneKJ[w] << "</td></tr>";
  365. vzdalenost += (double)atoi(rocni_aktivity.CelkovaVzdalenost[w].c_str());
  366. cas += (double)atoi(rocni_aktivity.DobaTrvani[w].c_str());
  367. }
  368. }
  369. Vystup_html << endl << "</table>";
  370. Vystup_html << "<h3 align=\"center\"><b> Prumerna rychlost:" << prumerna_rychlost(vzdalenost, cas) << "</b></h3>";
  371. }
  372.  
  373.  
  374. Vypis_paty();
  375. }
  376.  
  377. /*!
  378. * \brief Roční souhrn dle typu aktivit seřazených sestupně podle četnosti sportovních aktivit
  379. * V poli rocni_aktivity jsou vsechny aktivity daného roku
  380. * V poli typy_aktivit jsou četnosti jednotlivých typů za daný rok
  381. * V poli typy_aktivit jsou seřazené aktivity podla četnosti pomocí Bubble Sortu
  382. * \param rok
  383. */
  384. void rocni_souhrn(int rok)
  385. {
  386. Aktivity rocni_aktivity;
  387.  
  388. rocni_aktivity.CelkovaVzdalenost = new string[velikost(Nazev_vstupniho_souboru1)];
  389. rocni_aktivity.Datum = new string[velikost(Nazev_vstupniho_souboru1)];
  390. rocni_aktivity.DobaTrvani = new string[velikost(Nazev_vstupniho_souboru1)];
  391. rocni_aktivity.ID = new string[velikost(Nazev_vstupniho_souboru1)];
  392. rocni_aktivity.SpaleneKJ = new string[velikost(Nazev_vstupniho_souboru1)];
  393. rocni_aktivity.Typ_Aktivity = new string[velikost(Nazev_vstupniho_souboru1)];
  394.  
  395. nacitani();
  396. Vypis_hlavicky();
  397. int i = 0;
  398. int index = 0;
  399. while (velikost(Nazev_vstupniho_souboru1) > i){
  400. string rok1 = "";
  401. rok1 += Sportovni_Aktivity.Datum[i][6];
  402. rok1 += Sportovni_Aktivity.Datum[i][7];
  403. rok1 += Sportovni_Aktivity.Datum[i][8];
  404. rok1 += Sportovni_Aktivity.Datum[i][9];
  405. if (rok == atoi(rok1.c_str()))
  406. {
  407. rocni_aktivity.CelkovaVzdalenost[index] = Sportovni_Aktivity.CelkovaVzdalenost[i];
  408. rocni_aktivity.Datum[index] = Sportovni_Aktivity.Datum[i];
  409. rocni_aktivity.DobaTrvani[index] = Sportovni_Aktivity.DobaTrvani[i];
  410. rocni_aktivity.ID[index] = Sportovni_Aktivity.ID[i];
  411. rocni_aktivity.SpaleneKJ[index] = Sportovni_Aktivity.SpaleneKJ[i];
  412. rocni_aktivity.Typ_Aktivity[index++] = Sportovni_Aktivity.Typ_Aktivity[i];
  413. }
  414. i++;
  415. }
  416. for (int j = 0; j < velikost(Nazev_vstupniho_souboru2); j++)
  417. {
  418. Typy_Aktivit.cetnost[j] = 0;
  419. }
  420. for (int j = 0; j < index; j++)
  421. {
  422. for (int k = 0; k < velikost(Nazev_vstupniho_souboru2); k++)
  423. {
  424. if (Typy_Aktivit.ID[k] == rocni_aktivity.ID[j])
  425. {
  426. Typy_Aktivit.cetnost[k]++;
  427. }
  428. }
  429. }
  430. bubblesort();
  431.  
  432. for (int q = 0; q < velikost(Nazev_vstupniho_souboru2); q++)
  433. {
  434. Vystup_html << "<h2 align=\"center\"><b>" << Typy_Aktivit.Nazev[q] << "</b></h2>";
  435. Vystup_html << endl << "<table border=1 align=\"center\">";
  436. Vystup_html << endl << "<tr>";
  437. Vystup_html << endl << "<td>" << "ID" << "</td>" << "<td>" << "Datum konani aktivity" <<
  438. "</td>" << "<td>" << "Typ aktivity" << "</td>" << "<td>" << "Celkova vzdalenost v Km" <<
  439. "</td>" << "<td>" << "Doba aktivity v min" << "</td>" << "<td>" << "Odhad spalenych Kj" << "</td></tr>";
  440. for (int w = 0; w < velikost(Nazev_vstupniho_souboru1); w++)
  441. {
  442. if (Typy_Aktivit.ID[q] == rocni_aktivity.Typ_Aktivity[w] && rocni_aktivity.ID[w] != "")
  443. {
  444. Vystup_html << endl << "<td>" << rocni_aktivity.ID[w] << "</td>" << "<td>" << rocni_aktivity.Datum[w] <<
  445. "</td>" << "<td>" << retyp(atoi(rocni_aktivity.Typ_Aktivity[w].c_str())) << "</td>" << "<td>" << rocni_aktivity.CelkovaVzdalenost[w] <<
  446. "</td>" << "<td>" << rocni_aktivity.DobaTrvani[w] << "</td>" << "<td>" << rocni_aktivity.SpaleneKJ[w] << "</td></tr>";
  447.  
  448. }
  449. }
  450. Vystup_html << endl << "</table>";
  451. }
  452.  
  453.  
  454. Vypis_paty();
  455. }
  456.  
  457. /*!
  458. * \brief main
  459. */
  460. int main()
  461. {
  462. /*!
  463. * \brief Načítání souborů, které mají nastavenou relativní cestu
  464. * Načítání .csv souboru Nazev_vstupniho_souboru1, který obsahuje:
  465. * -ID sportovní aktivity
  466. * -datum konání aktivity
  467. * -typ aktivity (načítán ze souboru "Typy_sportovnich_aktivit.csv"
  468. * -celkovou vzdálenost v km
  469. * -dobu aktivity v minutách
  470. * -odhad spálených kJ
  471. * Načítání .csv souboru Nazev_vstupniho_souboru2, který obsahuje jednotlivé typy aktivit
  472. * (chůze, běh, kolo, inline)
  473. */
  474. Nazev_vstupniho_souboru1 = "Sportovni_aktivity.csv";
  475. Nazev_vstupniho_souboru2 = "Typy_sportovnich_aktivit.csv";
  476. Nazev_vystupniho_souboru = "Vystup.html";
  477.  
  478. nacitani();
  479.  
  480. while (1)
  481. {
  482. nacitani();
  483. system("cls");
  484. cout << "*****************************************************************" << endl
  485. << "* Sport Tracker *" << endl
  486. << "*****************************************************************" << endl << endl;
  487. cout << "Menu:" << endl
  488. << " 1. Vytvoreni vystupu webove stranky" << endl
  489. << " *Mesicni souhrn dle typu aktivit vcetne dopoctene" << endl
  490. << " prumerne rychlosti" << endl
  491. << " 2. Vytvoreni vystupu webove stranky" << endl
  492. << " *Rocni souhrn dle typu aktivit serazenych sestupne" << endl
  493. << " podle cetnosti sportovnich aktivit" << endl
  494. << " 3. Pridani aktivity" << endl
  495. << " 4. Konec" << endl;
  496. int volba = 0;
  497. string chyba = "";
  498. while (1)
  499. {
  500. cout << "Zadej volbu: ";
  501. cin >> volba;
  502.  
  503. if (cin.fail())
  504. {
  505. cin.clear();
  506. cout << "Chybny vstup" << endl;
  507. cin >> chyba;
  508. }
  509. else if (volba > 5)
  510. {
  511. cin.clear();
  512. cout << "Chybny vstup" << endl;
  513. }
  514. else break;
  515. }
  516. switch (volba)
  517. {
  518. case 1:
  519. int rok;
  520. int mesic;
  521. while (1)
  522. {
  523. cout << "Zadajte rok: ";
  524. cin >> volba;
  525. if (cin.fail())
  526. {
  527. cin.clear();
  528. cout << "Chybny vstup" << endl;
  529. cin >> chyba;
  530. }
  531. else if (volba < 0)
  532. {
  533. cin.clear();
  534. cout << "Chybny vstup" << endl;
  535. }
  536. else
  537. {
  538. rok = volba;
  539.  
  540. break;
  541. }
  542. }
  543. while (1)
  544. {
  545. cout << "Zadajte mesic: ";
  546. cin >> volba;
  547. if (cin.fail())
  548. {
  549. cin.clear();
  550. cout << "Chybny vstup" << endl;
  551. cin >> chyba;
  552. }
  553. else if (volba > 12 && volba < 0)
  554. {
  555. cin.clear();
  556. cout << "Chybny vstup" << endl;
  557. }
  558. else
  559. {
  560. mesic = volba;
  561. break;
  562. }
  563. }
  564.  
  565. mesicni_souhrn(rok, mesic);
  566. break;
  567. case 2:
  568. int rok1;
  569. while (1)
  570. {
  571. cout << "Zadajte rok: ";
  572. cin >> volba;
  573. if (cin.fail())
  574. {
  575. cin.clear();
  576. cout << "Chybny vstup" << endl;
  577. cin >> chyba;
  578. }
  579. else if (volba < 0)
  580. {
  581. cin.clear();
  582. cout << "Chybny vstup" << endl;
  583. }
  584. else
  585. {
  586. rok1 = volba;
  587. break;
  588. }
  589. }
  590. rocni_souhrn(rok1);
  591. break;
  592. case 3:
  593. while (1)
  594. {
  595. cout << endl;
  596. cout << "1 - Pro pridani aktivity: " << endl;
  597. cout << "2 - Pro pridani Typu aktivity" << endl;
  598. cout << "Zadej volbu:";
  599. cin >> volba;
  600.  
  601. if (cin.fail())
  602. {
  603. cin.clear();
  604. cout << "Chybny vstup" << endl;
  605. cin >> chyba;
  606. }
  607. else if (volba > 2)
  608. {
  609. cin.clear();
  610. cout << "Chybny vstup" << endl;
  611. }
  612. else break;
  613. }
  614. if (volba == 1)
  615. {
  616. Aktivity novaAktivita;
  617. novaAktivita.CelkovaVzdalenost = new string[1];
  618. novaAktivita.Datum = new string[1];
  619. novaAktivita.DobaTrvani = new string[1];
  620. novaAktivita.ID = new string[1];
  621. novaAktivita.SpaleneKJ = new string[1];
  622. novaAktivita.Typ_Aktivity = new string[1];
  623. while (1)
  624. {
  625. string example = "";
  626. cout << "Zadaj datum konani aktivity v tvare [DD.MM.YYYY]: ";
  627. cin >> example;
  628. if (kontrolaCasu(example))
  629. {
  630. novaAktivita.Datum[0] = example;
  631. break;
  632. }
  633. }
  634. while (1)
  635. {
  636. cout << "Zadaj typ aktivity:" << endl;
  637. Udaje_o_typech.open(Nazev_vstupniho_souboru2);
  638. for (int i = 0; i < velikost(Nazev_vstupniho_souboru2); i++)
  639. {
  640. string num = "";
  641. string out = "";
  642.  
  643. getline(Udaje_o_typech, num, ',');
  644. getline(Udaje_o_typech, out, '\n');
  645. cout << num << " - " << out << endl;
  646. }
  647. Udaje_o_typech.close();
  648. cout << "Zadej volbu: ";
  649. cin >> volba;
  650. if (cin.fail())
  651. {
  652. cin.clear();
  653. cout << "Chybny vstup" << endl;
  654. cin >> chyba;
  655. }
  656. else if (volba > velikost(Nazev_vstupniho_souboru2))
  657. {
  658. cin.clear();
  659. cout << "Chybny vstup" << endl;
  660. }
  661. else
  662. {
  663. novaAktivita.Typ_Aktivity[0] = to_string(volba);
  664. break;
  665. }
  666. }
  667. while (1)
  668. {
  669. double example = 0;
  670. cout << "Zadej celkovu vzdalenost v [Km]: ";
  671. cin >> example;
  672. if (cin.fail())
  673. {
  674. cin.clear();
  675. cout << "Chybny vstup" << endl;
  676. }
  677. else if (example == 0)
  678. {
  679. cin.clear();
  680. cout << "Chybny vstup" << endl;
  681. }
  682. else{
  683. novaAktivita.CelkovaVzdalenost[0] = to_string(example);
  684. break;
  685. }
  686. }
  687. while (1)
  688. {
  689. double example = 0;
  690. cout << "Zadej dobu aktivity v [min]: ";
  691. cin >> example;
  692. if (cin.fail())
  693. {
  694. cin.clear();
  695. cout << "Chybny vstup" << endl;
  696. }
  697. else if (example == 0)
  698. {
  699. cin.clear();
  700. cout << "Chybny vstup" << endl;
  701. }
  702. else{
  703. novaAktivita.DobaTrvani[0] = to_string(example);
  704. break;
  705. }
  706. }
  707. novaAktivita.ID[0] = velikost(Nazev_vstupniho_souboru1) + 1;
  708. novaAktivita.SpaleneKJ[0] = to_string((atoi(novaAktivita.DobaTrvani[0].c_str()) / 60.0) * 1500);
  709. pridaniAktivity(novaAktivita);
  710. }
  711. else{
  712. string name = "";
  713. while (1)
  714. {
  715. cout << "Zadej Nazev Typu: ";
  716. cin >> name;
  717. if (cin.fail())
  718. {
  719. cin.clear();
  720. cout << "Chybny vstup" << endl;
  721. }
  722. else
  723. break;
  724. }
  725. pridaniTypu(name);
  726. }
  727. break;
  728.  
  729. case 4:
  730. Vystup_html.close();
  731. return 0;
  732. break;
  733. default: cout << "Nevybrali jste si ani jednu z moznosti." << endl;
  734. break;
  735. }
  736. }
  737.  
  738. system("Pause");
  739. return 0;
  740. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement