Advertisement
Guest User

sd

a guest
Dec 20th, 2014
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.72 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <string>
  5. #include <iomanip>
  6. #include <sstream>
  7.  
  8. using namespace std;
  9.  
  10. ofstream Vystup_html;/**< @brief vystupny subor */
  11. fstream miestnosti_subor;/**< @brief vstupny subor pre miestnosti */
  12. fstream rezervacie_subor;/**< @brief vstupny subor pre rezervacie */
  13.  
  14. int pocet_miestnosti = 0;
  15. int pocet_rezervacii = 0;
  16.  
  17. struct Miestnosti {
  18. string *id;
  19. string *patro;
  20. string *cislo_miestnosti;
  21. string *kapacita_sedadel;
  22. string *cena_za_den_rezervace;
  23. }miestnosti;
  24. //*id_miestnosti, *den_rezervacie.
  25. struct Rezervacie{
  26. string *id_miestnosti;
  27. string *den_rezervacie;
  28. }rezervacie;
  29.  
  30. void nacitanie(string subor1, string subor2)
  31. {
  32. int pocet = 0;
  33. string prazdny_riadok = " ";
  34.  
  35. miestnosti_subor.open(subor1);
  36.  
  37.  
  38. while (!miestnosti_subor.eof())
  39. {
  40. getline(miestnosti_subor, prazdny_riadok);
  41. pocet++;
  42. }
  43. pocet_miestnosti = pocet;
  44. miestnosti_subor.close();
  45.  
  46. rezervacie_subor.open(subor2);
  47. pocet = 0;
  48.  
  49. while (!rezervacie_subor.eof())
  50. {
  51. getline(rezervacie_subor, prazdny_riadok);
  52. pocet++;
  53. }
  54. pocet_rezervacii = pocet;
  55. rezervacie_subor.close();
  56.  
  57. miestnosti.cena_za_den_rezervace = new string[pocet_miestnosti];
  58. miestnosti.cislo_miestnosti = new string[pocet_miestnosti];
  59. miestnosti.id = new string[pocet_miestnosti];
  60. miestnosti.kapacita_sedadel = new string[pocet_miestnosti];
  61. miestnosti.patro = new string[pocet_miestnosti];
  62.  
  63. rezervacie.den_rezervacie = new string[pocet_rezervacii];
  64. rezervacie.id_miestnosti = new string[pocet_rezervacii];
  65.  
  66. int i = 0;
  67. miestnosti_subor.open(subor1);
  68. while (i < pocet_miestnosti - 1)//nacitanie do poli
  69. {////*id, *patro, *cislo_mistnosti, *kapacita sedadel, *cena za den rezervace)
  70. getline(miestnosti_subor, miestnosti.id[i], ',');
  71. getline(miestnosti_subor, miestnosti.patro[i], ',');
  72. getline(miestnosti_subor, miestnosti.cislo_miestnosti[i], ',');
  73. getline(miestnosti_subor, miestnosti.kapacita_sedadel[i], ',');
  74. getline(miestnosti_subor, miestnosti.cena_za_den_rezervace[i], '\n');
  75. i++;
  76. }
  77. miestnosti_subor.close();
  78. rezervacie_subor.open(subor2);
  79. i = 0;
  80. while (i < pocet_rezervacii - 1)//nacitanie do poli
  81. {
  82.  
  83. getline(rezervacie_subor, rezervacie.id_miestnosti[i], ',');
  84. getline(rezervacie_subor, rezervacie.den_rezervacie[i], '\n');
  85. i++;
  86. }
  87. rezervacie_subor.close();
  88. }
  89.  
  90. void Vypis_hlavicky(string vystup)
  91. {
  92. Vystup_html.open(vystup);
  93. Vystup_html << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
  94. Vystup_html << endl << "<html>" << endl << "<head>";
  95. Vystup_html << endl << "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">";
  96. Vystup_html << endl << "<title>Rezervacie miestnosti</title>";
  97. Vystup_html << endl << "</head>" << endl << "<body bgcolor=" << '"' << "white" << '"' << ">";
  98. }
  99. void Vypis_paty()
  100. {
  101. Vystup_html << endl << "</table>";
  102. Vystup_html << endl << "</body>";
  103. Vystup_html << endl << "</html>";
  104. Vystup_html.close();
  105. cout << "Ulozeni do souboru HTML probehlo uspesne." << endl;
  106. }
  107. void Rezervacia_miestnosti_na_zvoleny_den(string subor1, string subor2, string vystup)
  108. {
  109. string date = "";
  110. string chyba = "";
  111. bool dalej = false;
  112. while (!dalej)
  113. {
  114. cout << "Zadaj datum v tvare [DD:MM:YYYY]: ";
  115. cin >> date;
  116.  
  117. if (cin.fail())
  118. {
  119. cin.clear();
  120. cout << "Chybny vstup" << endl;
  121. cin >> chyba;
  122. }
  123. else if (date.length() != 10)
  124. {
  125. cin.clear();
  126. cout << "Chybny vstup" << endl;
  127. }
  128. else if (date.length() == 10)
  129. {
  130. string den = "";/**< @brief pomocna premenna na ulozenie dna */
  131. den += date[0];
  132. den += date[1];
  133. string mesiac = "";/**< @brief pomocna premenna na ulozenie mesiaca */
  134. mesiac += date[3];
  135. mesiac += date[4];
  136. string rok = "";/**< @brief pomocna premenna na ulozenie roku */
  137. rok += date[6];
  138. rok += date[7];
  139. rok += date[8];
  140. rok += date[9];//atoi(myString.c_str());
  141. if (isdigit(den[1]) && isdigit(den[0]) && isdigit(mesiac[1]) && isdigit(mesiac[0]) && isdigit(rok[0])
  142. && isdigit(rok[1]) && isdigit(rok[2]) && isdigit(rok[3]) && date[2] == ':'&& date[5] == ':'){
  143. if (atoi(den.c_str()) > 0 && atoi(den.c_str()) <= 32 && atoi(mesiac.c_str()) <= 12 &&
  144. atoi(mesiac.c_str()) > 0 && atoi(rok.c_str()) > 2013){
  145. dalej = true;
  146. }
  147. }
  148. }
  149. }
  150. for (int i = 0; i < pocet_miestnosti-1; i++)
  151. {
  152. cout << "ID: " << miestnosti.id[i] << ", cislo miestnosti: " << miestnosti.cislo_miestnosti[i] << " ,kapacita sedadiel: " << miestnosti.kapacita_sedadel[i] << " ,cena za den objednavky: " <<miestnosti.cena_za_den_rezervace[i]<< endl;
  153. }
  154. int volba = 0;
  155. while (dalej)
  156. {
  157. cout << "Zadaj ID miestnosti: ";
  158. cin >> volba;
  159.  
  160. if (cin.fail())
  161. {
  162. cin.clear();
  163. cout << "Chybny vstup" << endl;
  164. cin >> chyba;
  165. }
  166. else if (volba >pocet_miestnosti-1 || volba<1)
  167. {
  168. cin.clear();
  169. cout << "Chybny vstup" << endl;
  170. }
  171. else{
  172. bool nachadza = false;
  173. for (int i = 0; i < pocet_rezervacii; i++)
  174. {
  175. if (atoi(rezervacie.id_miestnosti[i].c_str()) == volba && rezervacie.den_rezervacie[i]==date)
  176. {
  177. nachadza = true;
  178. }
  179. }
  180. if (!nachadza)
  181. {
  182. dalej = false;
  183. }
  184. else if (nachadza)
  185. {
  186. cout << "dana miestnost je uz bohuzial obsadena" << endl;
  187. }
  188. }
  189. }
  190. rezervacie_subor.open(subor2);
  191. rezervacie_subor.seekg(0, rezervacie_subor.end);
  192. stringstream ss;
  193. ss << volba;
  194. string s2;
  195. ss >> s2;
  196. rezervacie_subor << s2;
  197. rezervacie_subor << "," << date << endl;
  198. rezervacie_subor.close();
  199. }
  200. void Vyhladanie_volnych_miestnosti_na_urcity_datum(string subor1, string subor2, string vystup)
  201. {
  202. Vypis_hlavicky(vystup);
  203. string date = "";
  204. string chyba = "";
  205. while (1)
  206. {
  207. cout << "Zadaj datum v tvare [DD:MM:YYYY]: ";
  208. cin >> date;
  209.  
  210. if (cin.fail())
  211. {
  212. cin.clear();
  213. cout << "Chybny vstup" << endl;
  214. cin >> chyba;
  215. }
  216. else if (date.length()!=10)
  217. {
  218. cin.clear();
  219. cout << "Chybny vstup" << endl;
  220. }
  221. else
  222. if (date.length() == 10)
  223. {
  224. string den = "";/**< @brief pomocna premenna na ulozenie dna */
  225. den += date[0];
  226. den += date[1];
  227. string mesiac = "";/**< @brief pomocna premenna na ulozenie mesiaca */
  228. mesiac += date[3];
  229. mesiac += date[4];
  230. string rok = "";/**< @brief pomocna premenna na ulozenie roku */
  231. rok += date[6];
  232. rok += date[7];
  233. rok += date[8];
  234. rok += date[9];//atoi(myString.c_str());
  235. if (isdigit(den[1]) && isdigit(den[0]) && isdigit(mesiac[1]) && isdigit(mesiac[0]) && isdigit(rok[0])
  236. && isdigit(rok[1]) && isdigit(rok[2]) && isdigit(rok[3]) && date[2] == ':'&& date[5] == ':'){
  237. if (atoi(den.c_str()) > 0 && atoi(den.c_str()) <= 32 && atoi(mesiac.c_str()) <= 12 &&
  238. atoi(mesiac.c_str()) > 0 && atoi(rok.c_str()) > 0 && atoi(rok.c_str()) < 2015)
  239. {
  240. break;
  241. }
  242. }
  243. }
  244. }
  245.  
  246.  
  247. Miestnosti vybrane_miestnosti;
  248. vybrane_miestnosti.cena_za_den_rezervace = new string[pocet_miestnosti];
  249. vybrane_miestnosti.cislo_miestnosti = new string[pocet_miestnosti];
  250. vybrane_miestnosti.id = new string[pocet_miestnosti];
  251. vybrane_miestnosti.kapacita_sedadel = new string[pocet_miestnosti];
  252. vybrane_miestnosti.patro = new string[pocet_miestnosti];
  253. //naalokovanie pameti pre pole vybranch prvkov
  254. int index = 0;
  255.  
  256. for (int i = 0; i < pocet_miestnosti - 1; i++)
  257. {
  258. bool nachadza = false;
  259. for (int j = 0; j < pocet_rezervacii; j++)
  260. {
  261. if (miestnosti.id[i] == rezervacie.id_miestnosti[j])
  262. {
  263. if (rezervacie.den_rezervacie[j] == date)
  264. {
  265. nachadza = true;
  266. break;
  267. }
  268. }
  269. }
  270. if (!nachadza)
  271. {
  272. vybrane_miestnosti.cena_za_den_rezervace[index] = miestnosti.cena_za_den_rezervace[i];
  273. vybrane_miestnosti.cislo_miestnosti[index] = miestnosti.cislo_miestnosti[i];
  274. vybrane_miestnosti.id[index] = miestnosti.id[i];
  275. vybrane_miestnosti.kapacita_sedadel[index] = miestnosti.kapacita_sedadel[i];
  276. vybrane_miestnosti.patro[index] = miestnosti.patro[i];
  277. index++;
  278. }
  279. }
  280. //vlozit vybrane hodnoty do poli a urcit ich pocet do indexu
  281. Vystup_html << "<h2 align=\"center\"><b> Vyhladanie miestnosti na datum " << date << "</b></h2>";
  282. Vystup_html << endl << "<table border=1 align=\"center\">";
  283. Vystup_html << endl << "<tr>";
  284. Vystup_html << endl << "<td>" << "ID" << "</td>" << "<td>" << "Patro" <<
  285. "</td>" << "<td>" << "Cislo miestnosti" << "</td>" << "<td>" << "Kapacita sedadel" <<
  286. "</td>" << "<td>" << "Cena za den rezervacie" << "</td>" << "</tr>";
  287. //*id, *patro, *cislo_mistnosti, *kapacita sedadel, *cena za den rezervace)
  288. for (int i = 0; i < index; i++)
  289. {
  290. Vystup_html << endl << "<td>" << vybrane_miestnosti.id[i] << "</td>" << "<td>" << vybrane_miestnosti.patro[i] <<
  291. "</td>" << "<td>" << vybrane_miestnosti.cislo_miestnosti[i] << "</td>" << "<td>" << vybrane_miestnosti.kapacita_sedadel[i] <<
  292. "</td>" << "<td>" << vybrane_miestnosti.cena_za_den_rezervace[i] << "</td>" << "</tr>";
  293. }
  294. //spracovanie a vypisanie dat do html
  295. Vypis_paty();
  296. }
  297. void Vyhladanie_volnych_miestnosti_do_urcitej_ceny(string subor1, string subor2, string vystup)
  298. {
  299. Vypis_hlavicky(vystup);
  300. Miestnosti vybrane_miestnosti;
  301. string cena = "";
  302. int volba = 0;
  303. while (1)
  304. {
  305. cout << "Zadaj cenu: ";
  306. cin >> volba;
  307.  
  308. if (cin.fail())
  309. {
  310. cin.clear();
  311. cout << "Chybny vstup" << endl;
  312. cin >> cena;
  313. }
  314. else if (volba <1)
  315. {
  316. cin.clear();
  317. cout << "Chybny vstup" << endl;
  318. }
  319. else break;
  320. }
  321. vybrane_miestnosti.cena_za_den_rezervace = new string[pocet_miestnosti];
  322. vybrane_miestnosti.cislo_miestnosti = new string[pocet_miestnosti];
  323. vybrane_miestnosti.id = new string[pocet_miestnosti];
  324. vybrane_miestnosti.kapacita_sedadel = new string[pocet_miestnosti];
  325. vybrane_miestnosti.patro = new string[pocet_miestnosti];
  326. //naalokovanie pameti pre pole vybranch prvkov
  327. int index = 0;
  328.  
  329.  
  330. for (int i = 0; i < pocet_miestnosti; i++)
  331. {
  332. if (atoi(miestnosti.cena_za_den_rezervace[i].c_str()) <= volba)
  333. {
  334. bool nachadza = false;
  335. for (int j = 0; j < pocet_rezervacii; j++)
  336. {
  337. if (miestnosti.id[i] == rezervacie.id_miestnosti[j])
  338. {
  339. nachadza = true;
  340. break;
  341. }
  342. }
  343. if (!nachadza)
  344. {
  345. vybrane_miestnosti.cena_za_den_rezervace[index] = miestnosti.cena_za_den_rezervace[i];
  346. vybrane_miestnosti.cislo_miestnosti[index] = miestnosti.cislo_miestnosti[i];
  347. vybrane_miestnosti.id[index] = miestnosti.id[i];
  348. vybrane_miestnosti.kapacita_sedadel[index] = miestnosti.kapacita_sedadel[i];
  349. vybrane_miestnosti.patro[index] = miestnosti.patro[i];
  350. index++;
  351. }
  352. }
  353. }
  354.  
  355.  
  356. //-----vlozit vybrane hodnoty do poli a urcit ich pocet do inexu
  357. Vystup_html << "<h2 align=\"center\"><b> Vyhladanie miestnosti podla zadanej ceny: " << cena << "</b></h2>";
  358. Vystup_html << endl << "<table border=1 align=\"center\">";
  359. Vystup_html << endl << "<tr>";
  360. Vystup_html << endl << "<td>" << "ID" << "</td>" << "<td>" << "Patro" <<
  361. "</td>" << "<td>" << "Cislo miestnosti" << "</td>" << "<td>" << "Kapacita sedadel" <<
  362. "</td>" << "<td>" << "Cena za den rezervacie" << "</td>" << "</tr>";
  363. //*id, *patro, *cislo_mistnosti, *kapacita sedadel, *cena za den rezervace)
  364. for (int i = 0; i < index; i++)
  365. {
  366. Vystup_html << endl << "<td>" << vybrane_miestnosti.id[i] << "</td>" << "<td>" << vybrane_miestnosti.patro[i] <<
  367. "</td>" << "<td>" << vybrane_miestnosti.cislo_miestnosti[i] << "</td>" << "<td>" << vybrane_miestnosti.kapacita_sedadel[i] <<
  368. "</td>" << "<td>" << vybrane_miestnosti.cena_za_den_rezervace[i] << "</td>" << "</tr>";
  369. }
  370. Vypis_paty();
  371. }
  372. void Vyhladanie_volnych_miestnosti_podle_kapacity_osob(string subor1, string subor2, string vystup)
  373. {
  374. Vypis_hlavicky(vystup);
  375. string prazdna_odpoved="";
  376. int volba=0;
  377. while (1)
  378. {
  379. cout << "Zadaj kapacitu osob: ";
  380. cin >> volba;
  381.  
  382. if (cin.fail())
  383. {
  384. cin.clear();
  385. cout << "Chybny vstup" << endl;
  386. cin >> prazdna_odpoved;
  387. }
  388. else if (volba < 1)
  389. {
  390. cin.clear();
  391. cout << "Chybny vstup" << endl;
  392. }
  393. else break;
  394. }
  395. Miestnosti vybrane_miestnosti;
  396. vybrane_miestnosti.cena_za_den_rezervace = new string[pocet_miestnosti];
  397. vybrane_miestnosti.cislo_miestnosti = new string[pocet_miestnosti];
  398. vybrane_miestnosti.id = new string[pocet_miestnosti];
  399. vybrane_miestnosti.kapacita_sedadel = new string[pocet_miestnosti];
  400. vybrane_miestnosti.patro = new string[pocet_miestnosti];
  401. //naalokovanie pameti pre pole vybranch prvkov
  402. int index = 0;
  403. for (int i = 0; i < pocet_miestnosti; i++)
  404. {
  405. if (atoi(miestnosti.kapacita_sedadel[i].c_str()) <= volba)
  406. {
  407. bool nachadza = false;
  408. for (int j = 0; j < pocet_rezervacii; j++)
  409. {
  410. if (miestnosti.id[i] == rezervacie.id_miestnosti[j])
  411. {
  412. nachadza = true;
  413. break;
  414. }
  415. }
  416. if (!nachadza)
  417. {
  418. vybrane_miestnosti.cena_za_den_rezervace[index] = miestnosti.cena_za_den_rezervace[i];
  419. vybrane_miestnosti.cislo_miestnosti[index] = miestnosti.cislo_miestnosti[i];
  420. vybrane_miestnosti.id[index] = miestnosti.id[i];
  421. vybrane_miestnosti.kapacita_sedadel[index] = miestnosti.kapacita_sedadel[i];
  422. vybrane_miestnosti.patro[index] = miestnosti.patro[i];
  423. index++;
  424. }
  425. }
  426. }
  427.  
  428. //----vlozit vybrane hodnoty do poli a urcit ich pocet do inexu
  429. Vystup_html << "<h2 align=\"center\"><b> Vyhladanie miestnosti podla kamacity osob: " << volba << "</b></h2>";
  430. Vystup_html << endl << "<table border=1 align=\"center\">";
  431. Vystup_html << endl << "<tr>";
  432. Vystup_html << endl << "<td>" << "ID" << "</td>" << "<td>" << "Patro" <<
  433. "</td>" << "<td>" << "Cislo miestnosti" << "</td>" << "<td>" << "Kapacita sedadel" <<
  434. "</td>" << "<td>" << "Cena za den rezervacie" << "</td>" << "</tr>";
  435. //*id, *patro, *cislo_mistnosti, *kapacita sedadel, *cena za den rezervace)
  436. for (int i = 0; i < index; i++)
  437. {
  438. Vystup_html << endl << "<td>" << vybrane_miestnosti.id[i] << "</td>" << "<td>" << vybrane_miestnosti.patro[i] <<
  439. "</td>" << "<td>" << vybrane_miestnosti.cislo_miestnosti[i] << "</td>" << "<td>" << vybrane_miestnosti.kapacita_sedadel[i] <<
  440. "</td>" << "<td>" << vybrane_miestnosti.cena_za_den_rezervace[i] << "</td>" << "</tr>";
  441.  
  442. }
  443. Vypis_paty();
  444. }
  445. int main()
  446. {
  447. string subor1 = "miestnosti.csv";
  448. string subor2 = "rezervacie.csv";
  449. string vystup = "Vyhladane_miestnosti.html";
  450.  
  451. nacitanie(subor1, subor2);
  452. //1.Úkolom bude možnosť rezervácie miestnosti na zvolený deň (ak už nieje obsadená).
  453. //2.Vyhladanie voľných miestností na určitý dátum
  454. //3.Vyhladanie voľných miestností do určitej ceny
  455. //4.Vyhladanie voľných miestností podle kapacity osob
  456. //export bude automaticky
  457. cout << " Program pre nacitanie, upravu a ulozenie zaznamu o Rezervacii miestnosti" << endl << endl;
  458. cout << " Export do html je automaticky." << endl;
  459. cout << "Menu:" << endl
  460. << "1. Rezervacia miestnosti na zvoleny den" << endl
  461. << "2. Vyhladanie volnych miestnosti na urcity datum" << endl
  462. << "3. Vyhladanie volnych miestnosti do urcitej ceny" << endl
  463. << "4. Vyhladanie volnych miestnosti podle kapacity osob" << endl
  464. << "5. Konec programu" << endl;
  465. int volba = 0;
  466. string prazdna_odpoved = "";
  467. while (1)
  468. {
  469. cout << "Zadaj volbu: ";
  470. cin >> volba;
  471.  
  472. if (cin.fail())
  473. {
  474. cin.clear();
  475. cout << "Chybny vstup" << endl;
  476. cin >> prazdna_odpoved;
  477. }
  478. else if (volba > 5 || volba<1)
  479. {
  480. cin.clear();
  481. cout << "Chybny vstup" << endl;
  482. }
  483. else break;
  484. }
  485. switch (volba)
  486. {
  487. case 1:
  488. Rezervacia_miestnosti_na_zvoleny_den(subor1, subor2, vystup);
  489. break;
  490. case 2:
  491. Vyhladanie_volnych_miestnosti_na_urcity_datum(subor1, subor2, vystup);
  492. break;
  493. case 3:
  494. Vyhladanie_volnych_miestnosti_do_urcitej_ceny(subor1, subor2, vystup);
  495. break;
  496. case 4:
  497. Vyhladanie_volnych_miestnosti_podle_kapacity_osob(subor1, subor2, vystup);
  498. break;
  499. case 5:
  500. return 0;
  501. break;
  502. default: cout << "Nevybrali jste si ani jednu z moznosti." << endl;
  503. break;
  504. }
  505. return 0;
  506. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement