Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 110.24 KB | None | 0 0
  1.  
  2.  
  3.  
  4. #include <stdio.h>
  5. #include <iostream>
  6. #include <conio.h>
  7. #include <string.h>
  8. #include <windows.h>
  9. #include <dirent.h>
  10. #include "picosha2.h"
  11.  
  12. #define L 50
  13. #define MAX 5
  14.  
  15. using namespace std;
  16.  
  17. void gotoxy(int x, int y)
  18. {
  19. COORD c;
  20. c.X = x-1;
  21. c.Y = y-1;
  22. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
  23. }
  24. void piszMenu(int x, int y)
  25. {
  26. gotoxy(x,y);
  27. cout<<"---------MENU-----------"<<endl;
  28. cout<<"1. Czyszczenie"<<endl;
  29. cout<<"2. Czytanie"<<endl;
  30. cout<<"3. Drukowanie"<<endl;
  31. cout<<"4. Wartosc"<<endl;
  32. cout<<"5. Zapisz do pliku"<<endl;
  33. cout<<"6. Wczytaj z pliku"<<endl;
  34. cout<<"7. DeleteCurrent"<<endl;
  35. cout<<"8. ShowCurrent"<<endl;
  36. cout<<"a. Next"<<endl;
  37. cout<<"b. Previous"<<endl;
  38. cout<<"c. SetCurrent"<<endl;
  39. cout<<"0. Wyjscie z programu"<<endl;
  40.  
  41. }
  42. class towar
  43. {
  44. protected:
  45. char marka[L], model[L];
  46. float cena, moc;
  47. int sztuk, rocznik;
  48. public:
  49. towar();
  50. void czysc();
  51. void pobierz(char *marka, char *model, float cena, float moc, int rocznik, int sztuk);
  52. void drukuj();
  53. float wartosc();
  54. //nowe rzeczy
  55. void piszXY(int x, int y);
  56. // uzupełniona o setery i getery
  57. void setMarka(char *naz);
  58. void setModel(char *model);
  59. void setCena(float cen);
  60. void setMoc(float moc);
  61. void setRocznik(int rocznik);
  62. void setSztuk(int szt);
  63. char* getMarka();
  64. char* getModel();
  65. float getCena();
  66. float getMoc();
  67. int getSztuk();
  68. int getRocznik();
  69.  
  70. };
  71.  
  72. class bazatowar:public towar
  73. {
  74. protected:
  75. towar *tab; // Wskazanie do obiektu (ÓW) towar
  76. towar *trash;
  77. towar *found;
  78. towar *temp;
  79. int rozmiar;
  80. int licznosc;
  81. int licznoscFound;
  82. int licznoscTrash;
  83. int current;
  84. int currentFound;
  85. int currentTrash;
  86. int fileAmount;
  87. string currentFileName;
  88. string dbfileName;
  89. char *passwd;
  90. FILE *zp;
  91. private:
  92. int i;
  93. public:
  94. bazatowar(int rozmiar);
  95. void dodajkolejny(char *marka, char *model, float cena, float moc, int rocznik, int sztuk);
  96. void czysccalosc();
  97. void drukujcalosc();
  98. void wartosci();
  99. float sumawartosc();
  100. bool saveFile(string fileName);
  101. int saveFileAs(char* newFileName);
  102. void openFile();
  103. void next();
  104. void previous();
  105. void showCurrent(int x, int y);
  106. void setCurrent(int index);
  107. void deleteCurrent();
  108. void deleteCurrentFound();
  109. int menuEdytuj();
  110. void setRocznikCurrent(int rok);
  111. bool searchCena(float min, float max);
  112. bool searchMarka(char *marka);
  113. bool searchMarkaCena(char *marka, float min, float max);
  114. void showCurrentFound(int x, int y);
  115. void nextFound();
  116. void previousFound();
  117. string* getFileList();
  118. bool hasSuffix(const string& s, const string& suffix);
  119. string addSuffix(char* dbname);
  120. string addSuffix(string dbname);
  121. string openFileFromList(int fileIndex, string* fileList);
  122. bool fileExists(char fname[L]);
  123. int getFileAmount();
  124. string getFileName();
  125. void setLicznosc(int licz);
  126. int getLicznosc();
  127. void setRozmiar(int roz);
  128. int getRozmiar();
  129. string getdbFileName();
  130. void setdbFileName(string fileName);
  131. bool removeFile(string filename);
  132. bool searchAdvanced(bool *kryterium, short int *operatory, char *markaQuery, char *modelQuery, float mocMinQuery, float mockMaxQuery, int roczniMinkQuery, int rocznikMaxQuery, float cenaMinQuery, float cenaMaxQuery, int sztukMinQuery, int sztukMaxQuery);
  133. int sortdb(int sortBy, bool AscdDsc, int rozmiar);
  134. void setPasswd(string password);
  135. char *getPasswd();
  136. string encryptPasswd(string password);
  137. string readPasswdFromFile(int fileIndex, string* fileList);
  138. };
  139.  
  140. towar::towar()
  141. {
  142. strcpy(marka, " "); //konstruktor zwykle powinien czyscic
  143. strcpy(model, " ");
  144. moc=0;
  145. cena = 0;
  146. sztuk = 0;
  147. rocznik=0;
  148. }
  149. void towar::czysc()
  150. {
  151. strcpy(marka, " ");
  152. strcpy(model, " ");
  153. moc=0;
  154. cena = 0;
  155. sztuk = 0;
  156. rocznik=0;
  157. }
  158. void towar::pobierz(char *marka, char *model, float cena, float moc, int rocznik, int sztuk)
  159. {
  160. strcpy(this->marka, marka);
  161. strcpy(this->model, model);
  162. this->cena = cena;
  163. this->moc = moc;
  164. this->sztuk = sztuk;
  165. this->rocznik = rocznik;
  166.  
  167. }
  168. void towar::drukuj()
  169. {
  170. cout<<"Marka: "<<marka<<endl;
  171. cout<<"Model: "<<model<<endl;
  172. cout<<"Moc: "<<moc<<endl;
  173. cout<<"Cena: "<<cena<<endl;
  174. cout<<"Rocznik: "<<rocznik<<endl;
  175. cout<<"Ilosc: "<<sztuk<<endl;
  176. cout<<"------------------------"<<endl;
  177. //cout<<marka<<" "<<model<<" "<<moc<<" "<<cena<<" "<<sztuk<<""<<endl;
  178. }
  179. float towar::wartosc()
  180. {
  181. return cena*sztuk;
  182. }
  183.  
  184. void towar::setMarka(char *naz)
  185. {
  186. strcpy(marka, naz);
  187. }
  188. void towar::setModel(char *mod)
  189. {
  190. strcpy(model, mod);
  191. }
  192. void towar::setMoc(float moc)
  193. {
  194. this->moc=moc;
  195. }
  196. void towar::setCena(float cen)
  197. {
  198. cena = cen;
  199. }
  200. void towar::setSztuk(int szt)
  201. {
  202. sztuk = szt;
  203. }
  204. void towar::setRocznik(int rocznik)
  205. {
  206. this->rocznik=rocznik;
  207. }
  208. char* towar::getMarka()
  209. {
  210. return marka;
  211. }
  212. char* towar::getModel()
  213. {
  214. return model;
  215. }
  216. float towar::getCena()
  217. {
  218. return cena;
  219. }
  220. float towar::getMoc()
  221. {
  222. return moc;
  223. }
  224. int towar::getSztuk()
  225. {
  226. return sztuk;
  227. }
  228. int towar::getRocznik()
  229. {
  230. return rocznik;
  231. }
  232. void towar::piszXY(int x, int y)
  233. {
  234. //lepiej 2 metody na etykiety i wartosci (oddzielnie)
  235. gotoxy(x,y);
  236. cout<<"Marka: ";
  237. gotoxy(x,y+1);
  238. cout<<"Model: ";
  239. gotoxy(x,y+2);
  240. cout<<"Moc: ";
  241. gotoxy(x,y+3);
  242. cout<<"Rocznik: ";
  243. gotoxy(x,y+4);
  244. cout<<"Cena: ";
  245. gotoxy(x,y+5);
  246. cout<<"Ilosc: ";
  247. gotoxy(x+8,y);
  248. cout<<marka;
  249. gotoxy(x+8,y+1);
  250. cout<<model;
  251. gotoxy(x+8,y+2);
  252. cout<<moc;
  253. gotoxy(x+8,y+3);
  254. cout<<rocznik;
  255. gotoxy(x+8,y+4);
  256. cout<<cena;
  257. gotoxy(x+8,y+5);
  258. cout<<sztuk;
  259. }
  260. /****************Metody Bazatowar******************/
  261.  
  262. bazatowar::bazatowar(int rozmiar)
  263. {
  264. //pytanie o rozmiar przeniesiony do main
  265. this->rozmiar = rozmiar;
  266. tab = new towar[rozmiar];
  267. found = new towar[rozmiar];
  268. trash = new towar[rozmiar];
  269. for (i=0; i<rozmiar; i++) //historycznie, mozna wyrzucic
  270. tab[i].czysc();
  271. licznosc = 0;
  272. licznoscTrash=0;
  273. licznoscFound=0;
  274. current=-1;
  275. currentTrash=-1;
  276. currentFound=-1;
  277. passwd = new char[300];
  278. }
  279.  
  280. void bazatowar::czysccalosc()
  281. {
  282. for (i=0; i<rozmiar; i++)
  283. tab[i].czysc();
  284. licznosc = 0;
  285. current=-1;
  286. }
  287.  
  288. void bazatowar::dodajkolejny(char *marka, char *model, float cena, float moc, int rocznik, int sztuk)
  289. { //metoda powinna zwracać nr błędu
  290. if(licznosc<rozmiar)
  291. {
  292. // strcpy(tab[licznosc].marka,naz);
  293. // cena = cen;
  294. // tab[licznosc].sztuk = szt;
  295. tab[licznosc].pobierz(marka, model, cena, moc, rocznik, sztuk);
  296. current=licznosc;
  297. licznosc++;
  298. }
  299. }
  300. void bazatowar::drukujcalosc()
  301. {
  302. for(i=0;i<rozmiar;i++)
  303. tab[i].drukuj();
  304. }
  305.  
  306. void bazatowar::wartosci()
  307. {
  308. for(i=0;i<rozmiar;i++)
  309. cout<<tab[i].wartosc()<<endl;
  310. }
  311.  
  312. float bazatowar::sumawartosc()
  313. {
  314. float suma_wart=0;
  315. for(i=0;i<rozmiar;i++)
  316. suma_wart+=tab[i].wartosc();
  317. return suma_wart;
  318. }
  319.  
  320. void bazatowar::next(){
  321. if(current<licznosc-1) //current musi być mniejszy o 1 od liczności bo indexy w tablicy zaczynają się od 0
  322. current++;
  323. }
  324. void bazatowar::nextFound()
  325. {
  326. if(currentFound<licznoscFound-1) //current musi być mniejszy o 1 od liczności bo indexy w tablicy zaczynają się od 0
  327. currentFound++;
  328. }
  329.  
  330. void bazatowar::previous(){
  331. if(current>0) // Current musi być większy od 0, bo nie ma w tablicy indexy mniejszego od 0
  332. current--;
  333. }
  334. void bazatowar::previousFound(){
  335. if(currentFound>0) // Current musi być większy od 0, bo nie ma w tablicy indexy mniejszego od 0
  336. currentFound--;
  337. }
  338. void bazatowar::showCurrent(int x, int y)
  339. {
  340.  
  341. if(current>=0) {
  342. tab[current].piszXY(x, y);
  343. cout<<endl;
  344. }
  345. //sprawdzamy czy element obecny istnieje w tablicy, jesli current mniejszy niz 1 znaczy nie ma czego wypisywac
  346. }
  347. void bazatowar::showCurrentFound(int x, int y)
  348. {
  349. if(current>=0) //Sprawdzamy czy current ma swoje odniesienie w tablicy - jest większy lub równy 0; Reszta nas nie interesuje;
  350. //Current musi być mniejszy od licznosci ale sprawdzamy to w poprzednich metodach
  351. found[currentFound].piszXY(x, y);
  352. }
  353.  
  354. void bazatowar::setCurrent(int index)
  355. {
  356. if(index>=0 && index<licznosc)
  357. current=index;
  358. }
  359.  
  360. void bazatowar::deleteCurrent()
  361. {
  362. if(current>=0 && licznosc>1)
  363. {
  364. for(i=current; i<licznosc-1; i++)
  365. tab[i] = tab[i+1];
  366. licznosc--;
  367. current--;
  368. }
  369. else
  370. {
  371. if(licznosc==1)
  372. {
  373. current=-1;
  374. licznosc--;
  375. }
  376. }
  377. }
  378. void bazatowar::deleteCurrentFound()
  379. {
  380. if(currentFound>=0 && licznoscFound>1)
  381. {
  382. for(i=currentFound; i<licznoscFound-1; i++)
  383. tab[i] = tab[i+1];
  384. licznoscFound--;
  385. currentFound--;
  386. }
  387. else
  388. {
  389. if(licznoscFound==1)
  390. {
  391. currentFound=-1;
  392. licznoscFound--;
  393. }
  394. }
  395. }
  396. /*
  397. void bazatowar::setRocznikCurrent(int rok)
  398. {
  399. if(current>=0 && licznosc>1)
  400. {
  401. tab[current].rocznik = rok;
  402. }
  403. }
  404. */
  405. int bazatowar::menuEdytuj()
  406. {
  407. int m;
  408. cout<<"Wybierz co chcesz edytowac:"<<endl;
  409. cout<<"1. Marka"<<endl;
  410. cout<<"2. Model"<<endl;
  411. cout<<"3. Moc"<<endl;
  412. cout<<"4. Rocznik"<<endl;
  413. cout<<"5. Ilosc"<<endl;
  414. cout<<"6. Cena"<<endl;
  415. cin>>m;
  416. return m;
  417. }
  418. //*****************Pobieranie i saveFile ********************
  419.  
  420. bool bazatowar::hasSuffix(const string& s, const string& suffix)
  421. {
  422. return (s.size() >= suffix.size()) && equal(suffix.rbegin(), suffix.rend(), s.rbegin());
  423. }
  424. string bazatowar::addSuffix(char* dbname)
  425. {
  426. if(strcat(dbname, ".db"))
  427. return dbname;
  428. else
  429. return "0";
  430. }
  431. string bazatowar::addSuffix(string dbname)
  432. {
  433. string dbNameWithSuffix = dbname + ".db";
  434. if(dbNameWithSuffix != "")
  435. return dbNameWithSuffix;
  436. else
  437. return "0";
  438. }
  439. string* bazatowar::getFileList()
  440. {
  441. string* fileList;
  442. fileList = new string[L];
  443. int i=0;
  444. string path = "D:\\OneDrive\\Dev\\Projekt\\Bazy\\";
  445. DIR *dir = opendir(path.c_str());
  446. if(dir)
  447. {
  448. dirent *entry;
  449. while((entry = readdir(dir))!= NULL)
  450. {
  451. if(bazatowar::hasSuffix(entry->d_name, ".db"))
  452. {
  453. fileList[i]=entry->d_name;
  454. i++;
  455. }
  456. }
  457. }
  458. if(i==0)
  459. fileAmount = -1;
  460. else
  461. fileAmount = i;
  462. closedir(dir);
  463. return fileList;
  464.  
  465. }
  466. int bazatowar::getFileAmount()
  467. {
  468. return fileAmount;
  469. }
  470.  
  471. bool bazatowar::saveFile(string fileName)
  472. {
  473. char dbpath[100];
  474. strcpy(dbpath, "D:\\OneDrive\\Dev\\Projekt\\Bazy\\");
  475. char* baza = new char[100];
  476. strcpy(baza, dbpath);
  477. strcat(baza, fileName.c_str());
  478. if(!hasSuffix(baza, ".db"))
  479. addSuffix(baza);
  480. char buffer[200];
  481. strcpy(buffer, passwd);
  482. zp = fopen(baza, "wb");
  483. if(zp != NULL)
  484. {
  485. fwrite(&rozmiar, sizeof(rozmiar), 1, zp); //saveFileywanie rozmiaru do pliku baza.db
  486. fwrite(&licznosc, sizeof(licznosc), 1, zp);//saveFileywanie licznosci do pliku baza.db
  487. fwrite(tab, sizeof(*tab)*rozmiar, 1, zp); //saveFileywanie tabeli klasy towar do pliku //zamykanie
  488. fwrite(buffer, sizeof(char), sizeof(buffer) ,zp);
  489. return 1;
  490. }
  491. else
  492. return 0;
  493. fclose(zp);
  494. }
  495.  
  496. int bazatowar::saveFileAs(char* newFileName)
  497. {
  498.  
  499. char dbpath[100];
  500. strcpy(dbpath, "D:\\OneDrive\\Dev\\Projekt\\Bazy\\");
  501. char* baza = new char[100];
  502. char buffer[200];
  503. strcpy(buffer, passwd);
  504. cout<<"buffer: "<<buffer<<endl;
  505. strcpy(baza, "");
  506. strcpy(baza, dbpath);
  507. strcat(baza, newFileName);
  508. if(!hasSuffix(baza, ".db"))
  509. addSuffix(baza);
  510. zp = fopen(baza, "wb");
  511. if(zp != NULL)
  512. {
  513. currentFileName = newFileName;
  514. fwrite(&rozmiar, sizeof(rozmiar), 1, zp); //saveFileywanie rozmiaru do pliku baza.db
  515. fwrite(&licznosc, sizeof(licznosc), 1, zp);//saveFileywanie licznosci do pliku baza.db
  516. fwrite(tab, sizeof(*tab)*rozmiar, 1, zp); //saveFileywanie tabeli klasy towar do pliku
  517. fwrite(buffer, sizeof(char), sizeof(buffer) ,zp);
  518. return 1;
  519. fclose(zp);
  520. }
  521. else
  522. return 0; //zamykanie pliku
  523. fclose(zp);
  524. }
  525. void bazatowar::openFile()
  526. {
  527. char *buffer;
  528. // cout<<"openFile pliku";
  529. zp = fopen("D:\\OneDrive\\Dev\\Projekt\\Bazy\\baza.db", "rb+"); //openFile pliku baza.db
  530. fread(&rozmiar, sizeof(rozmiar), 1, zp); //odczytywanie rozmiaru
  531. fread(&licznosc, sizeof(licznosc), 1, zp); //odczytywanie licznosci
  532. for(i=0; i<rozmiar; i++) //odczytywanie nazwy ceny i sztuk pętlą przez metody get
  533. {
  534. fread(&tab[i], sizeof(tab[i]),1, zp); // Czyta tablicę, konkretny element
  535. //cout<<tab[i].getmarka()<<" "<<tab[i].getCena()<<" "<<tab[i].getSztuk()<<endl; //Wypisuje nazwę, cenę, sztuk
  536.  
  537. }
  538. fread(buffer, sizeof(char), sizeof(buffer) ,zp);
  539. current=0;
  540. fclose(zp); //zamykanie pliku
  541. // DRUGA METODA
  542.  
  543. //fread(tab, sizeof(*tab)*rozmiar, 1, zp);
  544. }
  545. string bazatowar::openFileFromList(int fileIndex, string* fileList)
  546. {
  547. long lSize;
  548. char *buffer;
  549. size_t result;
  550.  
  551. char dbpath[100];
  552. strcpy(dbpath, "D:\\OneDrive\\Dev\\Projekt\\Bazy\\");
  553. char* baza = new char[100];
  554. strcpy(baza, "");
  555. strcpy(baza, dbpath);
  556. //cout<<fileList[fileIndex-1].c_str();
  557. strcat(baza, fileList[fileIndex-1].c_str());
  558. //cout<<"baza: "<<baza<<endl;
  559. if(zp = fopen(baza, "rb"))
  560. {
  561. fseek(zp, 0, SEEK_END);
  562. lSize = ftell (zp);
  563. rewind (zp);
  564.  
  565. buffer = (char*) malloc(sizeof(char)*lSize);
  566. if(buffer == NULL) return "";
  567.  
  568. currentFileName = (fileList[fileIndex-1].c_str());
  569. //openFile pliku baza.db
  570. fread(&rozmiar, sizeof(rozmiar), 1, zp); //odczytywanie rozmiaru
  571. fread(&licznosc, sizeof(licznosc), 1, zp); //odczytywanie licznosci
  572. cout<<"passwd w openfile: "<<passwd<<endl;
  573. for(i=0; i<rozmiar; i++) //odczytywanie nazwy ceny i sztuk pętlą przez metody get
  574. {
  575. fread(&tab[i], sizeof(tab[i]),1, zp);
  576. }
  577. fread(buffer, 1, lSize,zp);
  578. //if(result != lSize) return "";
  579. passwd = buffer;
  580.  
  581. current=0;
  582. fclose(zp);
  583. return baza;
  584. }
  585. else
  586. return "";
  587. // DRUGA METODA
  588. fclose(zp);
  589.  
  590. //fread(tab, sizeof(*tab)*rozmiar, 1, zp);
  591.  
  592. }
  593. bool bazatowar::fileExists(char fname[L])
  594. {
  595. if (FILE *file = fopen(fname, "r")) {
  596. fclose(file);
  597. return true;
  598. } else {
  599. return false;
  600. }
  601. }
  602. bool bazatowar::searchCena(float min, float max)
  603. {
  604. licznoscFound=0;
  605. currentFound=-1;
  606. for(i=0; i<licznosc; i++)
  607. if(tab[i].getCena()>=min && tab[i].getCena()<=max)
  608. {
  609. found[licznoscFound]=tab[i];
  610. licznoscFound++;
  611. }
  612. if(licznoscFound)
  613. {
  614. currentFound=0;
  615. return 1;
  616. }
  617. else
  618. return 0;
  619. }
  620. bool bazatowar::searchMarka(char *marka)
  621. {
  622. //cout<<"tab["<<i<<"]"<<tab[i].getMarka();
  623. //cout<<"marka wyszukana: "<<marka;
  624. licznoscFound=0;
  625. currentFound=-1;
  626. for(i=0; i<licznosc; i++)
  627. {
  628. //cout<<"tab["<<i<<"]"<<tab[i].getMarka();
  629. if(!strcmp(tab[i].getMarka(), marka))
  630. {
  631. found[licznoscFound]=tab[i];
  632. licznoscFound++;
  633. }
  634. }
  635. if(licznoscFound)
  636. {
  637. currentFound=0;
  638. return 1;
  639. }
  640. else
  641. return 0;
  642. }
  643. bool bazatowar::searchMarkaCena(char *marka, float min, float max)
  644. {
  645. //cout<<"tab["<<i<<"]"<<tab[i].getMarka();
  646. //cout<<"marka wyszukana: "<<marka;
  647. licznoscFound=0;
  648. currentFound=-1;
  649. for(i=0; i<licznosc; i++)
  650. {
  651. //cout<<"tab["<<i<<"]"<<tab[i].getMarka();
  652. if(!strcmp(tab[i].getMarka(), marka) && tab[i].getCena()>=min && tab[i].getCena()<=max)
  653. {
  654. found[licznoscFound]=tab[i];
  655. licznoscFound++;
  656. }
  657. }
  658. if(licznoscFound)
  659. {
  660. currentFound=0;
  661. return 1;
  662. }
  663. else
  664. return 0;
  665. }
  666. string bazatowar::getFileName()
  667. {
  668. if(currentFileName == "")
  669. return "";
  670. else
  671. return currentFileName;
  672. }
  673. void bazatowar::setdbFileName(string fileName)
  674. {
  675. dbfileName = fileName;
  676. }
  677. string bazatowar::getdbFileName()
  678. {
  679. return dbfileName;
  680. }
  681. void bazatowar::setLicznosc(int licz)
  682. {
  683. this->licznosc = licz;
  684. }
  685. int bazatowar::getLicznosc()
  686. {
  687. return licznosc;
  688. }
  689. void bazatowar::setRozmiar(int roz)
  690. {
  691. this->rozmiar = roz;
  692. }
  693. int bazatowar::getRozmiar()
  694. {
  695. return rozmiar;
  696. }
  697. bool bazatowar::removeFile(string filename)
  698. {
  699. string dbpath = "D:\\OneDrive\\Dev\\Projekt\\Bazy\\", fileNameWithPath;
  700. fileNameWithPath = dbpath; fileNameWithPath = fileNameWithPath + filename;
  701. if(remove(fileNameWithPath.c_str()))
  702. return 1;
  703. else
  704. return 0;
  705. }
  706.  
  707. bool bazatowar::searchAdvanced(bool *kryterium, short int *operatory, char *markaQuery, char *modelQuery, float mocMinQuery, float mocMaxQuery, int roczniMinkQuery, int rocznikMaxQuery, float cenaMinQuery, float cenaMaxQuery, int sztukMinQuery, int sztukMaxQuery)
  708. {
  709. licznoscFound = 0;
  710. currentFound=-1;
  711. int i=0; int ilosc_kryt=0;
  712. for(i= 0; i<=5; i++)
  713. {
  714. if(kryterium[i])
  715. {
  716. ilosc_kryt++; //ilosc kryteriow
  717. }
  718. }
  719. cout<<"Podawanie kryteriow zakonczone."<<endl;
  720. //for(i=0; i<=5; i++)
  721. //{
  722. //if(kryterium[i])
  723. //cout<<"kryt["<<i<<"]: "<<kryterium[i];
  724. //}
  725. //for(i=0; (i+1)<ilosc_kryt;i++)
  726. //cout<<"Operator["<<i<<"]: "<<operatory[i];
  727.  
  728. //cout<<"Podaj operator nr "<<j+1<<endl<<" 1. Oraz | 2. Lub | 3. Oraz nie| 4. Lub nie"<<endl;
  729. if(kryterium[0] && !kryterium[1] && !kryterium[2] && !kryterium[3] && !kryterium[4] && !kryterium[5])
  730. {
  731. cout<<"wszedl do kryterium"<<endl;
  732. for(i=0; i<licznosc;i++)
  733. {
  734.  
  735. if(strcmp(tab[i].getMarka(), markaQuery) == 0)
  736. {
  737.  
  738. found[licznoscFound]=tab[i];
  739. licznoscFound++;
  740. }
  741. }
  742.  
  743. }
  744. if(!kryterium[0] && kryterium[1] && !kryterium[2] && !kryterium[3] && !kryterium[4] && !kryterium[5])
  745. {
  746. for(i=0; i<licznosc;i++)
  747. {
  748.  
  749. if(strcmp(tab[i].getModel(), modelQuery) == 0)
  750. {
  751.  
  752. found[licznoscFound]=tab[i];
  753. licznoscFound++;
  754. }
  755. }
  756.  
  757. }
  758. if(!kryterium[0] && !kryterium[1] && kryterium[2] && !kryterium[3] && !kryterium[4] && !kryterium[5])
  759. {
  760. for(i=0; i<licznosc;i++)
  761. {
  762.  
  763. if(tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery)
  764. {
  765.  
  766. found[licznoscFound]=tab[i];
  767. licznoscFound++;
  768. }
  769. }
  770.  
  771. }
  772. else if((kryterium[0] && kryterium[1] && !kryterium[2] && !kryterium[3] && !kryterium[4] && !kryterium[5]))
  773. {
  774. if(operatory[0] == 1)
  775. {
  776. for(i=0; i<licznosc;i++)
  777. {
  778.  
  779. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0)
  780. {
  781.  
  782. found[licznoscFound]=tab[i];
  783. licznoscFound++;
  784. }
  785. }
  786. }
  787. else if(operatory[0] == 2)
  788. for(i=0; i<licznosc;i++)
  789. {
  790.  
  791. if((strcmp(tab[i].getMarka(), markaQuery) == 0) || (strcmp(tab[i].getModel(), modelQuery) == 0))
  792. {
  793.  
  794. found[licznoscFound]=tab[i];
  795. licznoscFound++;
  796. }
  797. }
  798. else if(operatory[0] == 3)
  799. for(i=0; i<licznosc;i++)
  800. {
  801.  
  802. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && !(strcmp(tab[i].getModel(), modelQuery) == 0))
  803. {
  804. cout<<!(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0);
  805.  
  806. found[licznoscFound]=tab[i];
  807. licznoscFound++;
  808. }
  809. }
  810. else
  811. for(i=0; i<licznosc;i++)
  812. {
  813.  
  814. if(!(strcmp(tab[i].getMarka(), markaQuery) == 0 || strcmp(tab[i].getModel(), modelQuery) == 0))
  815. {
  816.  
  817. found[licznoscFound]=tab[i];
  818. licznoscFound++;
  819. }
  820. }
  821. }
  822. else if((kryterium[0] && !kryterium[1] && kryterium[2] && !kryterium[3] && !kryterium[4] && !kryterium[5]))
  823. {
  824. if(operatory[0] == 1)
  825. {
  826. for(i=0; i<licznosc;i++)
  827. {
  828.  
  829. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  830. {
  831.  
  832. found[licznoscFound]=tab[i];
  833. licznoscFound++;
  834. }
  835. }
  836. }
  837. else if(operatory[0] == 2)
  838. for(i=0; i<licznosc;i++)
  839. {
  840.  
  841. if((strcmp(tab[i].getMarka(), markaQuery) == 0) || (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  842. {
  843.  
  844. found[licznoscFound]=tab[i];
  845. licznoscFound++;
  846. }
  847. }
  848. else if(operatory[0] == 3)
  849. for(i=0; i<licznosc;i++)
  850. {
  851.  
  852. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && !(tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  853. {
  854. found[licznoscFound]=tab[i];
  855. licznoscFound++;
  856. }
  857. }
  858. else
  859. for(i=0; i<licznosc;i++)
  860. {
  861.  
  862. if(!(strcmp(tab[i].getMarka(), markaQuery) == 0 || (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery)))
  863. {
  864.  
  865. found[licznoscFound]=tab[i];
  866. licznoscFound++;
  867. }
  868. }
  869. }
  870. else if((!kryterium[0] && kryterium[1] && kryterium[2] && !kryterium[3] && !kryterium[4] && !kryterium[5]))
  871. {
  872. if(operatory[0] == 1)
  873. {
  874. for(i=0; i<licznosc;i++)
  875. {
  876.  
  877. if(strcmp(tab[i].getModel(), modelQuery) == 0 && (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  878. {
  879.  
  880. found[licznoscFound]=tab[i];
  881. licznoscFound++;
  882. }
  883. }
  884. }
  885. else if(operatory[0] == 2)
  886. for(i=0; i<licznosc;i++)
  887. {
  888.  
  889. if((strcmp(tab[i].getModel(), modelQuery) == 0) || (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  890. {
  891.  
  892. found[licznoscFound]=tab[i];
  893. licznoscFound++;
  894. }
  895. }
  896. else if(operatory[0] == 3)
  897. for(i=0; i<licznosc;i++)
  898. {
  899.  
  900. if(strcmp(tab[i].getModel(), modelQuery) == 0 && !(tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  901. {
  902. found[licznoscFound]=tab[i];
  903. licznoscFound++;
  904. }
  905. }
  906. else
  907. for(i=0; i<licznosc;i++)
  908. {
  909.  
  910. if(!(strcmp(tab[i].getModel(), modelQuery) == 0 || (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery)))
  911. {
  912.  
  913. found[licznoscFound]=tab[i];
  914. licznoscFound++;
  915. }
  916. }
  917. }
  918. else if((kryterium[0] && kryterium[1] && kryterium[2] && !kryterium[3] && !kryterium[4] && !kryterium[5]))
  919. {
  920. if(operatory[0] == 1)
  921. {
  922. if(operatory[1] == 1)
  923. {
  924. for(i=0; i<licznosc;i++)
  925. {
  926.  
  927. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 && (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  928. {
  929.  
  930. found[licznoscFound]=tab[i];
  931. licznoscFound++;
  932. }
  933. }
  934. }
  935. else if(operatory[1] == 2)
  936. {
  937. for(i=0; i<licznosc;i++)
  938. {
  939.  
  940. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 || (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  941. {
  942.  
  943. found[licznoscFound]=tab[i];
  944. licznoscFound++;
  945. }
  946. }
  947. }
  948. else if(operatory[1] == 3)
  949. {
  950. for(i=0; i<licznosc;i++)
  951. {
  952.  
  953. if((strcmp(tab[i].getMarka(), markaQuery) == 0 && !(strcmp(tab[i].getModel(), modelQuery)) == 0 && (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery)))
  954. {
  955.  
  956. found[licznoscFound]=tab[i];
  957. licznoscFound++;
  958. }
  959. }
  960. }
  961. else
  962. {
  963. for(i=0; i<licznosc;i++)
  964. {
  965.  
  966. if(!(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 || (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery)))
  967. {
  968.  
  969. found[licznoscFound]=tab[i];
  970. licznoscFound++;
  971. }
  972. }
  973. }
  974. }
  975. else if(operatory[0] == 2)
  976. {
  977. if(operatory[1] == 2)
  978. {
  979. for(i=0; i<licznosc;i++)
  980. {
  981.  
  982. if(strcmp(tab[i].getMarka(), markaQuery) == 0 || strcmp(tab[i].getModel(), modelQuery) == 0 && (tab[i].getMoc() > mocMinQuery || tab[i].getMoc() < mocMaxQuery))
  983. {
  984.  
  985. found[licznoscFound]=tab[i];
  986. licznoscFound++;
  987. }
  988. }
  989. }
  990. else if(operatory[1] == 2)
  991. {
  992. for(i=0; i<licznosc;i++)
  993. {
  994.  
  995. if(strcmp(tab[i].getMarka(), markaQuery) == 0 || strcmp(tab[i].getModel(), modelQuery) == 0 || (tab[i].getMoc() > mocMinQuery || tab[i].getMoc() < mocMaxQuery))
  996. {
  997.  
  998. found[licznoscFound]=tab[i];
  999. licznoscFound++;
  1000. }
  1001. }
  1002. }
  1003. else if(operatory[1] == 3)
  1004. {
  1005. for(i=0; i<licznosc;i++)
  1006. {
  1007.  
  1008. if((strcmp(tab[i].getMarka(), markaQuery) == 0 || !(strcmp(tab[i].getModel(), modelQuery)) == 0 && (tab[i].getMoc() > mocMinQuery || tab[i].getMoc() < mocMaxQuery)))
  1009. {
  1010.  
  1011. found[licznoscFound]=tab[i];
  1012. licznoscFound++;
  1013. }
  1014. }
  1015. }
  1016. else
  1017. {
  1018. for(i=0; i<licznosc;i++)
  1019. {
  1020.  
  1021. if(!(strcmp(tab[i].getMarka(), markaQuery) == 0 || strcmp(tab[i].getModel(), modelQuery) == 0 || (tab[i].getMoc() > mocMinQuery || tab[i].getMoc() < mocMaxQuery)))
  1022. {
  1023.  
  1024. found[licznoscFound]=tab[i];
  1025. licznoscFound++;
  1026. }
  1027. }
  1028. }
  1029. }
  1030. else if(operatory[0] == 3)
  1031. {
  1032. if(operatory[1] == 1)
  1033. {
  1034. for(i=0; i<licznosc;i++)
  1035. {
  1036.  
  1037. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 && (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  1038. {
  1039.  
  1040. found[licznoscFound]=tab[i];
  1041. licznoscFound++;
  1042. }
  1043. }
  1044. }
  1045. else if(operatory[1] == 2)
  1046. {
  1047. for(i=0; i<licznosc;i++)
  1048. {
  1049.  
  1050. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 || (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  1051. {
  1052.  
  1053. found[licznoscFound]=tab[i];
  1054. licznoscFound++;
  1055. }
  1056. }
  1057. }
  1058. else if(operatory[1] == 3)
  1059. {
  1060. for(i=0; i<licznosc;i++)
  1061. {
  1062.  
  1063. if(!(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 && (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery)))
  1064. {
  1065.  
  1066. found[licznoscFound]=tab[i];
  1067. licznoscFound++;
  1068. }
  1069. }
  1070. }
  1071. }
  1072. else
  1073. {
  1074. if(operatory[1] == 1)
  1075. {
  1076. for(i=0; i<licznosc;i++)
  1077. {
  1078.  
  1079. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 && (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  1080. {
  1081.  
  1082. found[licznoscFound]=tab[i];
  1083. licznoscFound++;
  1084. }
  1085. }
  1086. }
  1087. else if(operatory[1] == 2)
  1088. {
  1089. for(i=0; i<licznosc;i++)
  1090. {
  1091.  
  1092. if(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 || (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery))
  1093. {
  1094.  
  1095. found[licznoscFound]=tab[i];
  1096. licznoscFound++;
  1097. }
  1098. }
  1099. }
  1100. else if(operatory[1] == 3)
  1101. {
  1102. for(i=0; i<licznosc;i++)
  1103. {
  1104.  
  1105. if(!(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 && (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery)))
  1106. {
  1107.  
  1108. found[licznoscFound]=tab[i];
  1109. licznoscFound++;
  1110. }
  1111. }
  1112. }
  1113. else
  1114. {
  1115. for(i=0; i<licznosc;i++)
  1116. {
  1117.  
  1118. if(!(strcmp(tab[i].getMarka(), markaQuery) == 0 && strcmp(tab[i].getModel(), modelQuery) == 0 || (tab[i].getMoc() > mocMinQuery && tab[i].getMoc() < mocMaxQuery)))
  1119. {
  1120.  
  1121. found[licznoscFound]=tab[i];
  1122. licznoscFound++;
  1123. }
  1124. }
  1125. }
  1126. }
  1127. }
  1128. //cout<<"Licznosc: "<<licznosc<<endl;
  1129. //cout<<"licznoscFound: "<<licznoscFound<<endl;
  1130. //cout<<"current: "<<current<<endl;
  1131. //cout<<"currentFound: "<<currentFound<<endl;
  1132. if(licznoscFound)
  1133. {
  1134. currentFound=0;
  1135. return 1;
  1136. }
  1137. else
  1138. return 0;
  1139. }
  1140. int bazatowar::sortdb(int sortBy, bool AscDesc, int rozmiar)
  1141. {
  1142. if(sortBy)
  1143. {
  1144. current=0;
  1145. bool warta = true;
  1146. bazatowar tmp(rozmiar);
  1147. if(sortBy == 1)
  1148. {
  1149. if(AscDesc==1)
  1150. {
  1151. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1152. {
  1153. warta=false;
  1154. for(int i=0; i<rozmiar-1; i++)
  1155. if((strcmp(tab[i].getMarka(), tab[i+1].getMarka())) > 0)
  1156. {
  1157.  
  1158. tmp.tab[i]=tab[i];
  1159. tab[i]=tab[i+1];
  1160. tab[i+1]=tmp.tab[i];
  1161. warta=true;
  1162. }
  1163. }
  1164. return 1;
  1165. }
  1166. else
  1167. {
  1168. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1169. {
  1170. warta=false;
  1171. for(int i=0; i<rozmiar-1; i++)
  1172. if((strcmp(tab[i].getMarka(), tab[i+1].getMarka())) < 0)
  1173. {
  1174.  
  1175. tmp.tab[i]=tab[i];
  1176. tab[i]=tab[i+1];
  1177. tab[i+1]=tmp.tab[i];
  1178. warta=true;
  1179. }
  1180. }
  1181. return 2;
  1182. }
  1183. }
  1184. if(sortBy == 2)
  1185. {
  1186. if(AscDesc==1)
  1187. {
  1188. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1189. {
  1190. warta=false;
  1191. for(int i=0; i<rozmiar-1; i++)
  1192. if((strcmp(tab[i].getModel(), tab[i+1].getModel())) > 0)
  1193. {
  1194.  
  1195. tmp.tab[i]=tab[i];
  1196. tab[i]=tab[i+1];
  1197. tab[i+1]=tmp.tab[i];
  1198. warta=true;
  1199. }
  1200. }
  1201. return 3;
  1202. }
  1203. else
  1204. {
  1205. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1206. {
  1207. warta=false;
  1208. for(int i=0; i<rozmiar-1; i++)
  1209. if((strcmp(tab[i].getModel(), tab[i+1].getModel())) < 0)
  1210. {
  1211.  
  1212. tmp.tab[i]=tab[i];
  1213. tab[i]=tab[i+1];
  1214. tab[i+1]=tmp.tab[i];
  1215. warta=true;
  1216. }
  1217. }
  1218. return 4;
  1219. }
  1220. }
  1221. if(sortBy == 3)
  1222. {
  1223. if(AscDesc==1)
  1224. {
  1225. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1226. {
  1227. warta=false;
  1228. for(int i=0; i<rozmiar-1; i++)
  1229. if(tab[i].getMoc() > tab[i+1].getMoc())
  1230. {
  1231.  
  1232. tmp.tab[i]=tab[i];
  1233. tab[i]=tab[i+1];
  1234. tab[i+1]=tmp.tab[i];
  1235. warta=true;
  1236. }
  1237. }
  1238. return 5;
  1239. }
  1240. else
  1241. {
  1242. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1243. {
  1244. warta=false;
  1245. for(int i=0; i<rozmiar-1; i++)
  1246. if(tab[i].getMoc() < tab[i+1].getMoc())
  1247. {
  1248.  
  1249. tmp.tab[i]=tab[i];
  1250. tab[i]=tab[i+1];
  1251. tab[i+1]=tmp.tab[i];
  1252. warta=true;
  1253. }
  1254. }
  1255. return 6;
  1256. }
  1257. }
  1258. if(sortBy == 4)
  1259. {
  1260. if(AscDesc==1)
  1261. {
  1262. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1263. {
  1264. warta=false;
  1265. for(int i=0; i<rozmiar-1; i++)
  1266. if(tab[i].getRocznik() > tab[i+1].getRocznik())
  1267. {
  1268.  
  1269. tmp.tab[i]=tab[i];
  1270. tab[i]=tab[i+1];
  1271. tab[i+1]=tmp.tab[i];
  1272. warta=true;
  1273. }
  1274. }
  1275. return 7;
  1276. }
  1277. else
  1278. {
  1279. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1280. {
  1281. warta=false;
  1282. for(int i=0; i<rozmiar-1; i++)
  1283. if(tab[i].getRocznik() < tab[i+1].getRocznik())
  1284. {
  1285.  
  1286. tmp.tab[i]=tab[i];
  1287. tab[i]=tab[i+1];
  1288. tab[i+1]=tmp.tab[i];
  1289. warta=true;
  1290. }
  1291. }
  1292. return 8;
  1293. }
  1294. }
  1295. if(sortBy == 5)
  1296. {
  1297. if(AscDesc==1)
  1298. {
  1299. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1300. {
  1301. warta=false;
  1302. for(int i=0; i<rozmiar-1; i++)
  1303. if(tab[i].getCena() > tab[i+1].getCena())
  1304. {
  1305.  
  1306. tmp.tab[i]=tab[i];
  1307. tab[i]=tab[i+1];
  1308. tab[i+1]=tmp.tab[i];
  1309. warta=true;
  1310. }
  1311. }
  1312. return 9;
  1313. }
  1314. else
  1315. {
  1316. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1317. {
  1318. warta=false;
  1319. for(int i=0; i<rozmiar-1; i++)
  1320. if(tab[i].getCena() < tab[i+1].getCena())
  1321. {
  1322.  
  1323. tmp.tab[i]=tab[i];
  1324. tab[i]=tab[i+1];
  1325. tab[i+1]=tmp.tab[i];
  1326. warta=true;
  1327. }
  1328. }
  1329. return 10;
  1330. }
  1331. }
  1332. if(sortBy == 6)
  1333. {
  1334. if(AscDesc==1)
  1335. {
  1336. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1337. {
  1338. warta=false;
  1339. for(int i=0; i<rozmiar-1; i++)
  1340. if(tab[i].getSztuk() > tab[i+1].getSztuk())
  1341. {
  1342.  
  1343. tmp.tab[i]=tab[i];
  1344. tab[i]=tab[i+1];
  1345. tab[i+1]=tmp.tab[i];
  1346. warta=true;
  1347. }
  1348. }
  1349. return 11;
  1350. }
  1351. else
  1352. for(int przebieg=1; (przebieg<rozmiar && warta==true); przebieg++)
  1353. {
  1354. warta=false;
  1355. for(int i=0; i<rozmiar-1; i++)
  1356. if(tab[i].getSztuk() < tab[i+1].getSztuk())
  1357. {
  1358.  
  1359. tmp.tab[i]=tab[i];
  1360. tab[i]=tab[i+1];
  1361. tab[i+1]=tmp.tab[i];
  1362. warta=true;
  1363. }
  1364. }
  1365. return 12;
  1366. }
  1367. }
  1368. else
  1369. return 0;
  1370.  
  1371. }
  1372. void bazatowar::setPasswd(string password)
  1373. {
  1374. strcpy(passwd,password.c_str());
  1375. }
  1376. char* bazatowar::getPasswd()
  1377. {
  1378. return passwd;
  1379. }
  1380. string bazatowar::encryptPasswd(string password)
  1381. {
  1382. return picosha2::hash256_hex_string(password);
  1383. }
  1384. string bazatowar::readPasswdFromFile(int fileIndex, string* fileList)
  1385. {
  1386. long lSize;
  1387. char *buffer;
  1388. size_t result;
  1389. char dbpath[100];
  1390. strcpy(dbpath, "D:\\OneDrive\\Dev\\Projekt\\Bazy\\");
  1391. char* baza = new char[100];
  1392. strcpy(baza, "");
  1393. strcpy(baza, dbpath);
  1394. cout<<fileList[fileIndex-1].c_str();
  1395. strcat(baza, fileList[fileIndex-1].c_str());
  1396. cout<<"baza: "<<baza<<endl;
  1397. cout<<"baza: "<<baza;
  1398. cout<<"readPassFromFile pass: "<<passwd;
  1399. if(zp = fopen(baza, "rb"))
  1400. {
  1401. fseek(zp, 0, SEEK_END);
  1402. lSize = ftell (zp);
  1403. rewind (zp);
  1404.  
  1405. buffer = (char*) malloc(sizeof(char)*lSize);
  1406. if(buffer == NULL) return "";
  1407.  
  1408. currentFileName = (fileList[fileIndex-1].c_str());
  1409. //openFile pliku baza.db
  1410. fread(&rozmiar, sizeof(rozmiar), 1, zp); //odczytywanie rozmiaru
  1411. fread(&licznosc, sizeof(licznosc), 1, zp); //odczytywanie licznosci
  1412. for(i=0; i<rozmiar; i++) //odczytywanie nazwy ceny i sztuk pętlą przez metody get
  1413. {
  1414. fread(&tab[i], sizeof(tab[i]),1, zp);
  1415. }
  1416. fread(buffer, 1, lSize,zp);
  1417. //if(result != lSize) return "";
  1418. passwd = buffer;
  1419. cout<<"passwd w openfile: "<<passwd<<endl;
  1420.  
  1421. current=0;
  1422. fclose(zp);
  1423. return baza;
  1424. }
  1425. else
  1426. return "";
  1427. //DRUGA METODA
  1428. fclose(zp);
  1429. }
  1430. main()
  1431. {
  1432. // towar tab[MAX], t2, tablica[5];
  1433. char n[L], m[L], zn, mark[L], mod[L], menu, fileName[L], newFileName[L];
  1434. float c, moc, min, max;
  1435. int sz, i, rozmiar, r, fileIndex;
  1436. string* fileList, dbpath = "D:\\OneDrive\\Dev\\Projekt\\Bazy\\";
  1437.  
  1438. //cout<<"Podaj ilosc rekordow: ";
  1439. //cin>>rozmiar;
  1440. //cin.ignore();
  1441. rozmiar = 50;
  1442. bazatowar baza(rozmiar);
  1443.  
  1444. do
  1445. {
  1446. //gotoxy(1, 1);
  1447. cout<<"1. Plik"<<endl;
  1448. //gotoxy(10, 1);
  1449. cout<<"2. Baza"<<endl;
  1450. //gotoxy(20, 1);
  1451. cout<<"3. Wyszukaj"<<endl;
  1452. //cout<<"1. Czyszczenie"<<endl;
  1453. //cout<<"2. Czytanie"<<endl;
  1454. //cout<<"3. Drukowanie"<<endl;
  1455. cout<<"4. Wartosc"<<endl;
  1456. cout<<"0. Wyjscie z programu"<<endl;
  1457. zn=getch();
  1458. system("CLS");
  1459. switch(zn)
  1460. {
  1461. case '1':
  1462. do
  1463. {
  1464. cout<<"----- Menu Plik -----"<<endl;
  1465. cout<<"1. Nowy plik."<<endl;
  1466. cout<<"2. Dodaj rekord do bazy."<<endl;
  1467. cout<<"----------------"<<endl;
  1468. cout<<"3. Pokaz liste plikow."<<endl;
  1469. cout<<"4. Otworz plik."<<endl;
  1470. cout<<"----------------"<<endl;
  1471. cout<<"5. Zapisz plik"<<endl;
  1472. cout<<"6. Zapisz jako nowy plik"<<endl;
  1473. cout<<"----------------"<<endl;
  1474. cout<<"7. Usun plik"<<endl;
  1475. cout<<"0. Powrot"<<endl;
  1476. menu=getch();
  1477. system("CLS");
  1478. switch(menu)
  1479. {
  1480. case '1':
  1481. {
  1482. char c;
  1483.  
  1484. cout<<"Podaj ilosc rekordow nowej bazy: ";
  1485. do
  1486. {
  1487. cin>>rozmiar;
  1488. cin.ignore();
  1489. if(rozmiar<=0)
  1490. cout<<"Podaj rozmiar wiekszy niz 0"<<endl;
  1491. else
  1492. {
  1493. bazatowar baza(rozmiar);
  1494. baza.czysccalosc();
  1495. }
  1496. } while(rozmiar<=0);
  1497. baza.setRozmiar(rozmiar);
  1498. baza.setCurrent(-1);
  1499. do
  1500. {
  1501.  
  1502. cout<<"Czy chcesz od razu dodac rekordy? 1. Tak | 0. Nie"<<endl;
  1503. c=getch();
  1504.  
  1505. } while (c!='1' && c!='0');
  1506. if(c=='1')
  1507. {
  1508. for(int i=0;i<rozmiar; i++)
  1509. {
  1510. char n[L],m[L];
  1511. int moc, r, sz;
  1512. float c;
  1513.  
  1514. cout<<"Podaj rekord nr: "<<i+1<<". Pozostalo do konca: "<<rozmiar-(i+1)<<endl;
  1515. do
  1516. {
  1517. cout<<"Marka: ";
  1518. gets(n);
  1519. if(strlen(n)==0)
  1520. cout<<"Marka nie moze byc pusta."<<endl;
  1521. } while (strlen(n)==0);
  1522. do
  1523. {
  1524. cout<<"Model: ";
  1525. gets(m);
  1526. if(strlen(m)==0)
  1527. cout<<"Model nie moze byc pusty."<<endl;
  1528. } while (strlen(m)==0);
  1529. do
  1530. {
  1531. cout<<"Moc: ";
  1532. cin>>moc;
  1533. if(moc<=0)
  1534. cout<<"Moc musi byc wieksza niz 0"<<endl;
  1535. } while (moc<=0);
  1536. do
  1537. {
  1538. cout<<"Rocznik: ";
  1539. cin>>r;
  1540. if(r<=1950)
  1541. cout<<"Rocznik musi byc wiekszy niz 1950"<<endl;
  1542. } while(r<=1950);
  1543. do
  1544. {
  1545. cout<<"Cena: ";
  1546. cin>>c;
  1547. if(c<=0)
  1548. cout<<"Cena musi byc wieksza niz 0"<<endl;
  1549. } while (c<=0);
  1550. do
  1551. {
  1552. cout<<"Sztuk: ";
  1553. cin>>sz;
  1554. if(sz<0)
  1555. cout<<"Ilosc sztuk musi byc rowna lub wieksza od 0"<<endl;
  1556. } while (sz<0);
  1557.  
  1558. cout<<"Rekord nr: "<<i+1<<" dodany z sukcesem."<<endl;
  1559. cin.ignore();
  1560. baza.dodajkolejny(n,m,c,moc,r,sz);
  1561. baza.setLicznosc(i+1);
  1562. }
  1563. }
  1564. } // koniec case 1 - nowy plik
  1565. break;
  1566. case '2':
  1567. {
  1568. int licznosc = baza.getLicznosc();
  1569. if(licznosc < rozmiar)
  1570. {
  1571. char n[L],m[L];
  1572. int moc, r, sz;
  1573. float c;
  1574. i=baza.getLicznosc();
  1575.  
  1576. cout<<"Podaj rekord nr: "<<i+1<<". Pozostalo do konca: "<<rozmiar-(i+1)<<endl;
  1577. do
  1578. {
  1579. cout<<"Marka: ";
  1580. gets(n);
  1581. if(strlen(n)==0)
  1582. cout<<"Marka nie moze byc pusta."<<endl;
  1583. } while (strlen(n)==0);
  1584. do
  1585. {
  1586. cout<<"Model: ";
  1587. gets(m);
  1588. if(strlen(m)==0)
  1589. cout<<"Model nie moze byc pusty."<<endl;
  1590. } while (strlen(m)==0);
  1591. do
  1592. {
  1593. cout<<"Moc: ";
  1594. cin>>moc;
  1595. if(moc<=0)
  1596. cout<<"Moc musi byc wieksza niz 0"<<endl;
  1597. } while (moc<=0);
  1598. do
  1599. {
  1600. cout<<"Rocznik: ";
  1601. cin>>r;
  1602. if(r<=1950)
  1603. cout<<"Rocznik musi byc wiekszy niz 1950"<<endl;
  1604. } while(r<=1950);
  1605. do
  1606. {
  1607. cout<<"Cena: ";
  1608. cin>>c;
  1609. if(c<=0)
  1610. cout<<"Cena musi byc wieksza niz 0"<<endl;
  1611. } while (c<=0);
  1612. do
  1613. {
  1614. cout<<"Sztuk: ";
  1615. cin>>sz;
  1616. if(sz<0)
  1617. cout<<"Ilosc sztuk musi byc rowna lub wieksza od 0"<<endl;
  1618. } while (sz<0);
  1619.  
  1620. cout<<"Rekord nr: "<<i+1<<" dodany z sukcesem."<<endl;
  1621. cin.ignore();
  1622. baza.dodajkolejny(n,m,c,moc,r,sz);
  1623. }
  1624. else
  1625. {
  1626.  
  1627. int currentSize = baza.getRozmiar();
  1628. int currentRecords = baza.getLicznosc();
  1629. char c = '0';
  1630. do
  1631. {
  1632.  
  1633. cout<<"Baza jest pelna. Obecny rozmiar: "<<currentSize<<". Ilosc dodanych elementow: "<<currentRecords<<endl;
  1634. cout<<"Powiekszyc rozmiar bazy? 1. Tak | 0. Nie"<<endl;
  1635. c=getch();
  1636. } while (c != '0' && c != '1');
  1637. if(c == '1')
  1638. {
  1639. int newSize;
  1640. currentSize = baza.getRozmiar();
  1641. bazatowar temp(currentSize);
  1642. temp = baza;
  1643.  
  1644. cout<<"Podaj nowy rozmiar bazy: "<<endl;
  1645. do
  1646. {
  1647. cin>>newSize;
  1648. if(newSize <= currentSize)
  1649. {
  1650.  
  1651. cout<<"Nowy rozmiar musi byc wiekszy!"<<endl;
  1652. cout<<"Podaj nowy rozmiar bazy: "<<endl;
  1653. }
  1654. } while(newSize <= currentSize);
  1655. baza = temp;
  1656. do
  1657. {
  1658.  
  1659. cout<<"Rozmiar bazy zostal powiekszony."<<endl;
  1660. cout<<"Czy chcesz dodac kolejny rekord? 1. Tak | 0. Nie"<<endl;
  1661. c=getch();
  1662. } while (c != '1' && c != '0');
  1663. if(c == '1')
  1664. {
  1665. int addElements;
  1666. do
  1667. {
  1668.  
  1669. cout<<"Ile rekordow chcesz dodac? Obecny rozmiar: "<<newSize<<". Ilosc elementow: "<<currentRecords<<"."<<endl;
  1670. cout<<"Maksymalna liczba nowych elementow "<<newSize-currentRecords<<"."<<endl;
  1671. cin>>addElements;
  1672. cin.ignore();
  1673. } while(addElements > (newSize-currentRecords));
  1674. int newTotalRecords = currentRecords+addElements;
  1675.  
  1676. baza.setRozmiar(newSize);
  1677. baza.setLicznosc(currentRecords);
  1678. rozmiar=newSize;
  1679. for(currentRecords; currentRecords<newTotalRecords; currentRecords++)
  1680. {
  1681. char n[L],m[L];
  1682. int moc, r, sz;
  1683. float c;
  1684.  
  1685. cout<<"Podaj rekord nr: "<<currentRecords+1<<". Pozostalo do konca: "<<newTotalRecords-currentRecords-1<<endl;
  1686. do
  1687. {
  1688. cout<<"Marka: ";
  1689. gets(n);
  1690. if(strlen(n)==0)
  1691. cout<<"Marka nie moze byc pusta."<<endl;
  1692. } while (strlen(n)==0);
  1693. do
  1694. {
  1695. cout<<"Model: ";
  1696. gets(m);
  1697. if(strlen(m)==0)
  1698. cout<<"Model nie moze byc pusty."<<endl;
  1699. } while (strlen(m)==0);
  1700. do
  1701. {
  1702. cout<<"Moc: ";
  1703. cin>>moc;
  1704. if(moc<=0)
  1705. cout<<"Moc musi byc wieksza niz 0"<<endl;
  1706. } while (moc<=0);
  1707. do
  1708. {
  1709. cout<<"Rocznik: ";
  1710. cin>>r;
  1711. if(r<=1950)
  1712. cout<<"Rocznik musi byc wiekszy niz 1950"<<endl;
  1713. } while(r<=1950);
  1714. do
  1715. {
  1716. cout<<"Cena: ";
  1717. cin>>c;
  1718. if(c<=0)
  1719. cout<<"Cena musi byc wieksza niz 0"<<endl;
  1720. } while (c<=0);
  1721. do
  1722. {
  1723. cout<<"Sztuk: ";
  1724. cin>>sz;
  1725. if(sz<0)
  1726. cout<<"Ilosc sztuk musi byc rowna lub wieksza od 0"<<endl;
  1727. } while (sz<0);
  1728.  
  1729. cout<<"Rekord nr: "<<i+1<<" dodany z sukcesem."<<endl;
  1730. cin.ignore();
  1731. baza.dodajkolejny(n,m,c,moc,r,sz);
  1732. }
  1733. cout<<"rozmiar: "<<rozmiar;
  1734. cout<<(currentRecords);
  1735. //cout<<"licznosc: "<<licznosc;
  1736. baza.drukujcalosc();
  1737. //temp.drukujcalosc();
  1738. }
  1739.  
  1740. }
  1741. }
  1742. break;
  1743. }
  1744. case '3':
  1745. {
  1746. string* fileList = baza.getFileList();
  1747. baza.getFileList(); // wyswietlanie listy plikow
  1748. cout<<"Pliki znajdujace sie w folderze baz danych: "<<endl;
  1749. for(int i=0; (i<L && fileList[i] != ""); i++)
  1750. {
  1751. cout<<i+1<<". "<<fileList[i]<<endl;
  1752. }
  1753. cout<<"-----------------------------"<<endl;
  1754. }
  1755. break;
  1756. case '4':
  1757. {
  1758. string* fileList = baza.getFileList();
  1759. baza.getFileList(); // wyswietlanie listy plikow
  1760. for(int i=0; (i<L && fileList[i] != ""); i++)
  1761. cout<<i+1<<". "<<fileList[i]<<endl;
  1762. cout<<"-----------------------------"<<endl;
  1763. cout<<"Podaj numer pliku ktory chcesz otworzyc:"<<endl;
  1764. do
  1765. {
  1766. cin>>fileIndex;
  1767. cin.ignore();
  1768. if(fileIndex<1 && fileIndex >=L)
  1769. cout<<"Podaj numer od 0 do "<<L<<"."<<endl;
  1770. } while (fileIndex<1 && fileIndex >=L);
  1771.  
  1772. fileList = baza.getFileList();
  1773. baza.readPasswdFromFile(fileIndex, fileList);
  1774. char *password;
  1775. password = baza.getPasswd();
  1776. cout<<"password w main: "<<password;
  1777. if(strcmp(password, ""))
  1778. {
  1779. char *userpass;
  1780. userpass = new char[200];
  1781. cout<<"Podaj haslo do pliku: "<<endl;
  1782. cin>>userpass;
  1783. strcpy(userpass, baza.encryptPasswd(userpass).c_str());
  1784. cout<<"passwd: "<<password<<endl;
  1785. cout<<"userpass: "<<userpass<<endl;
  1786. if(strcmp(userpass, password) == 0)
  1787. {
  1788. if(baza.openFileFromList(fileIndex, fileList) != "")
  1789. {
  1790. string dbfile = fileList[fileIndex-1];
  1791. baza.setdbFileName(dbfile);
  1792. cout<<"passwd: "<<password;
  1793. cout<<"Plik: "<<dbfile<<" otwarty z sukcesem"<<endl;
  1794. cout<<"---------------------------------"<<endl<<endl;
  1795. }
  1796. else
  1797. {
  1798. cout<<"passwd: "<<password;
  1799. cout<<"Plik nie zostal otwarty."<<endl;
  1800. }
  1801. //baza.openFile();
  1802. } //otwieranie pliku z listy
  1803. else
  1804. {
  1805. cout<<"Bledne haslo."<<endl;
  1806. baza.czysccalosc();
  1807. }
  1808. }
  1809. else
  1810. {
  1811. cout<<"brak hasla"<<endl;
  1812. if(baza.openFileFromList(fileIndex, fileList) != "")
  1813. {
  1814. cout<<"passwd: "<<password;
  1815. string dbfile = fileList[fileIndex-1];
  1816. baza.setdbFileName(dbfile);
  1817. cout<<"Plik: "<<dbfile<<" otwarty z sukcesem"<<endl;
  1818. cout<<"---------------------------------"<<endl<<endl;
  1819. }
  1820. else
  1821. {
  1822. cout<<"passwd: "<<password;
  1823. cout<<"Plik nie zostal otwarty."<<endl;
  1824. }
  1825. }
  1826. }
  1827. break;
  1828. case '5':
  1829. {
  1830. char c;
  1831. c='0';
  1832. string* fileList = baza.getFileList();
  1833. bool fileExists = false;
  1834.  
  1835. i = 0;
  1836. string fileName = baza.getdbFileName();
  1837. //cout<<"fileName: "<<fileName;
  1838. if(fileName == "")
  1839. {
  1840.  
  1841. cout<<"Baza nie zostala dotychczas zapisana. Podaj nazwe nowego pliku: "<<endl;
  1842. cin>>fileName;
  1843. fileName = baza.addSuffix(fileName);
  1844. baza.setdbFileName(fileName);
  1845. //cout<<baza.addSuffix(fileName);
  1846. int iloscPlikow = baza.getFileAmount();
  1847. do
  1848. {
  1849. for(i=0; i<iloscPlikow; i++)
  1850. if(fileName == fileList[i])
  1851. {
  1852. fileExists = true;
  1853. }
  1854. i++;
  1855. //cout<<"i: "<<i;
  1856. } while((i < iloscPlikow) && fileExists == false);
  1857.  
  1858.  
  1859. //cout<<"fileExists: "<<fileExists;
  1860. if(fileExists == true)
  1861. {
  1862. cout<<"Plik o takiej nazwie juz istnieje. Czy chcesz nadpisac? 1. Tak | 0. Nie"<<endl;
  1863. c=getch();
  1864. if(c == '1')
  1865. {
  1866. if(baza.saveFile(fileName))
  1867. {
  1868. cout<<"Plik "<<fileName<<" zapisany z sukcesem."<<endl;
  1869. cout<<"------------------------------------"<<endl<<endl;
  1870. }
  1871. else
  1872. {
  1873. //cout<<"fileName: "<<fileName<<endl;
  1874. cout<<"Wystapil blad zapisu."<<endl;
  1875. cout<<"------------------------------------"<<endl<<endl;
  1876. }
  1877. }
  1878. else
  1879. {
  1880. cout<<"Plik nie zostal zapisany."<<endl;
  1881. }
  1882. }
  1883. else
  1884. {
  1885.  
  1886.  
  1887. if(baza.saveFile(fileName))
  1888. {
  1889.  
  1890. system("CLS");
  1891. cout<<"Plik "<<fileName<<" zapisany z sukcesem."<<endl;
  1892. cout<<"------------------------------------"<<endl<<endl;
  1893. }
  1894. else
  1895. {
  1896. system("CLS");
  1897. cout<<"Wystapil blad zapisu."<<endl;
  1898. cout<<"------------------------------------"<<endl<<endl;
  1899. }
  1900. }
  1901. }
  1902. else
  1903. {
  1904. int iloscPlikow = baza.getFileAmount();
  1905.  
  1906. do
  1907. {
  1908. if(fileName == fileList[i])
  1909. {
  1910. fileExists = true;
  1911. }
  1912. i++;
  1913. //cout<<"i: "<<i;
  1914. } while((i < iloscPlikow) && fileExists == false);
  1915. if(fileExists == true)
  1916. {
  1917. cout<<"Plik o takiej nazwie juz istnieje. Czy chcesz nadpisac? 1. Tak | 0. Nie"<<endl;
  1918. c=getch();
  1919. if(c == '1')
  1920. {
  1921. if(baza.saveFile(fileName))
  1922. {
  1923. system("CLS");
  1924. cout<<"Plik "<<fileName<<" zapisany z sukcesem."<<endl;
  1925. cout<<"------------------------------------"<<endl<<endl;
  1926. }
  1927. else
  1928. {
  1929. system("CLS");
  1930. //cout<<"fileName: "<<fileName<<endl;
  1931. cout<<"Wystapil blad zapisu."<<endl;
  1932. cout<<"------------------------------------"<<endl<<endl;
  1933. }
  1934. }
  1935. else
  1936. {
  1937. system("CLS");
  1938. cout<<"Plik nie zostal zapisany."<<endl;
  1939. }
  1940. }
  1941. else
  1942. {
  1943. //cout<<"fileName: "<<fileName<<endl;
  1944. //cout<<"currentFileName: "<<currentFileName;
  1945. //cout<<"baza.saveFile():"<<baza.saveFile(fileName);
  1946.  
  1947. if(baza.saveFile(fileName))
  1948. {
  1949. system("CLS");
  1950. cout<<"Plik "<<fileName<<" zapisany z sukcesem."<<endl;
  1951. cout<<"------------------------------------"<<endl<<endl;
  1952. }
  1953. else
  1954. {
  1955. system("CLS");
  1956. cout<<"Wystapil blad zapisu."<<endl;
  1957. cout<<"------------------------------------"<<endl<<endl;
  1958. }
  1959. //cout<<"fileName: "<<fileName[fileIndex-1];
  1960.  
  1961. }
  1962. }
  1963. break;
  1964.  
  1965. }
  1966. case '6':
  1967. {
  1968. string* fileList = baza.getFileList();
  1969. int iloscPlikow = baza.getFileAmount();
  1970.  
  1971. bool fileExists = false;
  1972. i=0;
  1973.  
  1974. char newFileName[L];
  1975. char newdbName[L];
  1976. cout<<"Podaj nazwe nowego pliku: "<<endl;
  1977. gets(newFileName);
  1978. strcpy(newdbName, baza.addSuffix(newFileName).c_str());
  1979. do
  1980. {
  1981. if(newFileName == fileList[i])
  1982. {
  1983. fileExists = true;
  1984. }
  1985. i++;
  1986. //cout<<"i: "<<i;
  1987. } while((i < iloscPlikow) && fileExists == false);
  1988.  
  1989. if(fileExists == true)
  1990. {
  1991. cout<<"Plik o takiej nazwie juz istnieje. Czy chcesz nadpisac? 1. Tak | 0. Nie"<<endl;
  1992. c=getch();
  1993. if(c == '1')
  1994. {
  1995. char p;
  1996. do
  1997. {
  1998. cout<<"Czy chcesz nadac plikowi haslo? 1. Tak | 0. Nie"<<endl;
  1999. p=getch();
  2000. } while(p!='1' && p!='0');
  2001. if(p=='1')
  2002. {
  2003. string passwd;
  2004. cout<<"Podaj haslo"<<endl;
  2005. cin>>passwd;
  2006. passwd = baza.encryptPasswd(passwd);
  2007. baza.setPasswd(passwd);
  2008. }
  2009. if(baza.saveFileAs(newFileName))
  2010. {
  2011. //system("CLS");
  2012. cout<<"Plik "<<newFileName<<" zapisany z sukcesem."<<endl;
  2013. cout<<"------------------------------------"<<endl<<endl;
  2014. }
  2015. else
  2016. {
  2017. //system("CLS");
  2018. //cout<<"fileName: "<<fileName<<endl;
  2019. cout<<"Wystapil blad zapisu."<<endl;
  2020. cout<<"------------------------------------"<<endl<<endl;
  2021. }
  2022. }
  2023. else
  2024. {
  2025. system("CLS");
  2026. cout<<"Plik nie zostal zapisany."<<endl;
  2027. }
  2028. }
  2029. else
  2030. {
  2031. //cout<<"fileName: "<<fileName<<endl;
  2032. //cout<<"currentFileName: "<<currentFileName;
  2033. //cout<<"baza.saveFile():"<<baza.saveFile(fileName);
  2034.  
  2035. if(baza.saveFileAs(newFileName))
  2036. {
  2037. // system("CLS");
  2038. cout<<"Plik "<<newFileName<<" zapisany z sukcesem."<<endl;
  2039. cout<<"------------------------------------"<<endl<<endl;
  2040. }
  2041. else
  2042. {
  2043. //system("CLS");
  2044. cout<<"Wystapil blad zapisu."<<endl;
  2045. cout<<"------------------------------------"<<endl<<endl;
  2046. }
  2047. //cout<<"fileName: "<<fileName[fileIndex-1];
  2048.  
  2049. }
  2050. break;
  2051. }
  2052. case '7':
  2053. {
  2054. string fileNameToRemove;
  2055. char c;
  2056. fileNameToRemove = baza.getFileName();
  2057. if(fileNameToRemove =="")
  2058. {
  2059. string* fileList = baza.getFileList();
  2060. baza.getFileList(); // wyswietlanie listy plikow
  2061. for(int i=0; (i<L && fileList[i] != ""); i++)
  2062. cout<<i+1<<". "<<fileList[i]<<endl;
  2063. cout<<"-----------------------------"<<endl;
  2064. cout<<"Podaj numer pliku ktory chcesz otworzyc:"<<endl;
  2065. do
  2066. {
  2067. cin>>fileIndex;
  2068. cin.ignore();
  2069. if(fileIndex<1 && fileIndex >=L)
  2070. cout<<"Podaj numer od 0 do "<<L<<"."<<endl;
  2071. } while (fileIndex<1 && fileIndex >=L);
  2072. fileList = baza.getFileList();
  2073. system("CLS");
  2074. if(baza.openFileFromList(fileIndex, fileList) != "")
  2075. {
  2076. string dbfile = fileList[fileIndex-1];
  2077. baza.setdbFileName(dbfile);
  2078. cout<<"Plik: "<<dbfile<<" otwarty z sukcesem"<<endl;
  2079. cout<<"---------------------------------"<<endl<<endl;
  2080. }
  2081. else
  2082. {
  2083. cout<<"Plik nie zostal otwarty."<<endl;
  2084. }
  2085. //baza.openFile();
  2086. } //otwieranie pliku z listy
  2087. fileNameToRemove = baza.getFileName();
  2088. do
  2089. {
  2090. cout<<"Czy na pewno chcesz usunac plik: "<<fileNameToRemove<<" ? 1. Tak | 0. Nie"<<endl;
  2091. c=getch();
  2092. if(c == '1')
  2093. {
  2094. if(baza.removeFile(fileNameToRemove))
  2095. cout<<"Plik"<<fileNameToRemove<<" zostal usuniety."<<endl;
  2096. else
  2097. cout<<"Wystapil blad usuwania"<<endl;
  2098. }
  2099. else
  2100. cout<<"Plik nie zostal usuniety. "<<endl;
  2101. } while(c != '0' && c != '1');
  2102. }
  2103. case '0':
  2104. menu=0;
  2105.  
  2106. break;
  2107. } //koniec swich od menu Plik
  2108.  
  2109. } while (menu != 0);
  2110. break;
  2111. case '2':
  2112. {
  2113. do
  2114. {
  2115. cout<<"----- Menu Baza -----"<<endl;
  2116. cout<<"1. Przegladaj."<<endl;
  2117. cout<<"2. Wyczysc."<<endl;
  2118. cout<<"3. Sortowanie."<<endl;
  2119. cout<<"0. Powrot"<<endl;
  2120. menu=getch();
  2121. system("CLS");
  2122. switch(menu)
  2123. {
  2124. case '1':
  2125. {
  2126. baza.showCurrent(50, 1);
  2127. do
  2128. {
  2129. gotoxy(1,1);
  2130. cout<<"----- Menu Przegladaj -----"<<endl;
  2131. cout<<"1. Nastepny."<<endl;
  2132. cout<<"2. Poprzedni"<<endl;
  2133. cout<<"3. Przejdz do"<<endl;
  2134. cout<<"4. Usun"<<endl;
  2135. cout<<"0. Powrot"<<endl;
  2136. menu=getch();
  2137. system("CLS");
  2138. switch(menu)
  2139. {
  2140. case '1' :
  2141. {
  2142. baza.next();
  2143. baza.showCurrent(50, 1);
  2144. break;
  2145. }
  2146. case '2' :
  2147. {
  2148. baza.previous();
  2149. baza.showCurrent(50, 1);
  2150. break;
  2151. }
  2152. case '3':
  2153. {
  2154. int nr;
  2155. cout<<"Podaj numer elementu do ktorego chcesz przejsc: "<<endl;
  2156. cin>>nr;
  2157. cin.ignore();
  2158. baza.setCurrent(nr-1);
  2159. baza.showCurrent(50,1);
  2160. break;
  2161. }
  2162. case '4':
  2163. {
  2164. baza.deleteCurrent();
  2165. baza.showCurrent(50, 1);
  2166. break;
  2167. }
  2168. }
  2169.  
  2170. } while(menu != '0');
  2171. break;
  2172. }//end switch przegladaj
  2173. case '2':
  2174. {
  2175. int confirmation;
  2176. do
  2177. {
  2178. cout<<"Czy na pewno chcesz wyczyscic baze z pamieci? 1. Tak | 0. Nie"<<endl;
  2179. cin>>confirmation;
  2180. if(confirmation)
  2181. baza.czysccalosc();
  2182. else
  2183. cout<<"Baza zostala usunieta z pamieci."<<endl;
  2184. } while(confirmation != 1 && confirmation != 0);
  2185.  
  2186. }
  2187. case '3':
  2188. {
  2189. int licznosc = baza.getLicznosc();
  2190. if(licznosc>0)
  2191. {
  2192. bool ascdesc; char c;
  2193. int sortby =-1;
  2194. do
  2195. {
  2196. cout<<"Podaj wg ktorego kryterium chcesz sortowac: "<<endl;
  2197. cout<<"1. Model"<<endl;
  2198. cout<<"2. Marka"<<endl;
  2199. cout<<"3. Moc"<<endl;
  2200. cout<<"4. Rocznik"<<endl;
  2201. cout<<"5. Cena"<<endl;
  2202. cout<<"6. Ilosc"<<endl;
  2203. cout<<"0. Powrot"<<endl;
  2204. c=getch();
  2205. sortby=c-'0';
  2206. } while(sortby < 1 && sortby > 6);
  2207. if(sortby)
  2208. {
  2209. do
  2210. {
  2211. system("CLS");
  2212. cout<<"Jak chcesz sortowac? 1. Rosnaco | 2. Malejaco"<<endl;
  2213. c=getch();
  2214. if(c=='1')
  2215. ascdesc=true;
  2216. else
  2217. ascdesc=false;
  2218. } while(c!= '1' && c!='2');
  2219. }
  2220. int sortcode = baza.sortdb(sortby, ascdesc, licznosc);
  2221. cout<<"sortcode: "<<sortcode;
  2222. if(sortby)
  2223. {
  2224. system("CLS");
  2225. switch(sortcode)
  2226. {
  2227. case 0 : cout<<"Wystapil blad. Nie posortowano"<<endl; break;
  2228. case 1 : cout<<"Posortowano rosnaco wedlug marki."<<endl; break;
  2229. case 2 : cout<<"Posortowano malejaco wedlug marki."<<endl; break;
  2230. case 3 : cout<<"Posortowano rosnaco wedlug modelu."<<endl; break;
  2231. case 4 : cout<<"Posortowano malejaco wedlug modelu."<<endl; break;
  2232. case 5 : cout<<"Posortowano rosnaco wedlug mocy."<<endl; break;
  2233. case 6 : cout<<"Posortowano malejaco wedlug mocy."<<endl; break;
  2234. case 7 : cout<<"Posortowano rosnaco wedlug rocznika."<<endl; break;
  2235. case 8 : cout<<"Posortowano malejaco wedlug rocznika."<<endl; break;
  2236. case 9 : cout<<"Posortowano rosnaco wedlug ceny."<<endl; break;
  2237. case 10 : cout<<"Posortowano malejaco wedlug ceny."<<endl; break;
  2238. case 11 : cout<<"Posortowano rosnaco wedlug ilosci sztuk."<<endl; break;
  2239. case 12 : cout<<"Posortowano malejaco wedlug ilosci sztuk."<<endl; break;
  2240. }
  2241. }
  2242. }
  2243. else
  2244. {
  2245. cout<<"Brak rekordow w bazie. Wczytaj z pliku lub dodaj nowa."<<endl;
  2246. }
  2247. break;
  2248. }
  2249. }
  2250. } while(menu != '0');
  2251. break;
  2252. }
  2253. case '3':
  2254. {
  2255. int licznosc = baza.getLicznosc();
  2256. if(licznosc>0)
  2257. {
  2258. do
  2259. {
  2260. char c;
  2261. bool kryt[5];
  2262. int j=0;
  2263. for (i=0; i<=5; i++)
  2264. kryt[i]=false;
  2265. do
  2266. {
  2267. system("CLS");
  2268. cout<<"Podaj kryterium po ktorym chcesz wyszukiwac: "<<endl;
  2269. cout<<"[x] - krytermium wybrane | [ ] - kryterium niewybrane"<<endl;
  2270. cout<<"1. Marka "<<(kryt[0] ? "[x]" : "[ ]");
  2271. cout<<" | 2. Model "<< (kryt[1] ? "[x]" : "[ ]");
  2272. cout<<" | 3. Moc "<< (kryt[2] ? "[x]" : "[ ]");
  2273. //cout<<" | 4. Rocznik "<< (kryt[3] ? "[x]" : "[ ]");
  2274. //cout<<" | 5. Cena "<< (kryt[4] ? "[x]" : "[ ]");
  2275. //cout<<" | 6. Ilosc "<< (kryt[5] ? "[x]" : "[ ]");
  2276. cout<<" | 0. Zapisz kryteria"<<endl;
  2277. c=getch();
  2278. switch(c)
  2279. {
  2280. case '1' : if(kryt[0] == false) kryt[0] = true; else kryt[0] = false; break;
  2281. case '2' : if(kryt[1] == false) kryt[1] = true; else kryt[1] = false; break;
  2282. case '3' : if(kryt[2] == false) kryt[2] = true; else kryt[2] = false; break;
  2283. case '4' : if(kryt[3] == false) kryt[3] = true; else kryt[3] = false; break;
  2284. case '5' : if(kryt[4] == false) kryt[4] = true; else kryt[4] = false; break;
  2285. case '6' : if(kryt[5] == false) kryt[5] = true; else kryt[5] = false; break;
  2286. }
  2287. } while (c != '0');
  2288. system("CLS");
  2289. short int ilosc_kryt = 0;
  2290. short int oper[ilosc_kryt];
  2291. for(i= 0; i<=5; i++)
  2292. {
  2293. oper[i]=-1; //zerowanie operatorow
  2294. if(kryt[i])
  2295. {
  2296. ilosc_kryt++; //ilosc kryteriow
  2297. }
  2298. }
  2299. //cout<<"Wybrane kryteria: "<<(kryt[0] ? "Marka " : "")<<(kryt[1] ? "Model " : "")<<(kryt[2] ? "Moc " : "")<<(kryt[3] ? "Rocznik " : "")<<(kryt[4] ? "Cena " : "")<<(kryt[5] ? "Ilosc ": "");
  2300. do
  2301. {
  2302. i=0;
  2303. cout<<"Wybrane kryteria: ";
  2304. //wyswietlanie miejsca do operatorow
  2305. if(kryt[0] == true)
  2306. {
  2307. cout<<"Model ";
  2308. if((i+1)<ilosc_kryt)
  2309. {
  2310. if(oper[i] == -1)
  2311. cout<<"["<<i+1<<"] ";
  2312. else
  2313. if(oper[i] == 1)
  2314. cout<<"[Oraz] ";
  2315. else if (oper[i] == 2)
  2316. cout<<"[Lub] ";
  2317. else if(oper[i] == 3)
  2318. cout<<"[Oraz nie] ";
  2319. else
  2320. cout<<"[Lub nie] ";
  2321. i++;
  2322. }
  2323. }
  2324. if(kryt[1] == true)
  2325. {
  2326. cout<<"Marka ";
  2327. if((i+1)<ilosc_kryt)
  2328. {
  2329. if(oper[i] == -1)
  2330. cout<<"["<<i+1<<"] ";
  2331. else
  2332. if(oper[i] == 1)
  2333. cout<<"[Oraz] ";
  2334. else if (oper[i] == 2)
  2335. cout<<"[Lub] ";
  2336. else if(oper[i] == 3)
  2337. cout<<"[Oraz nie] ";
  2338. else
  2339. cout<<"[Lub nie] ";
  2340. i++;
  2341. }
  2342. }
  2343. if(kryt[2] == true)
  2344. {
  2345. cout<<"Moc ";
  2346. if((i+1)<ilosc_kryt)
  2347. {
  2348. if(oper[i] == -1)
  2349. cout<<"["<<i+1<<"] ";
  2350. else
  2351. if(oper[i] == 1)
  2352. cout<<"[Oraz] ";
  2353. else if (oper[i] == 2)
  2354. cout<<"[Lub] ";
  2355. else if(oper[i] == 3)
  2356. cout<<"[Oraz nie] ";
  2357. else
  2358. cout<<"[Lub nie] ";
  2359. i++;
  2360. }
  2361. }
  2362. if(kryt[3] == true)
  2363. {
  2364. cout<<"Rocznik ";
  2365. if((i+1)<ilosc_kryt)
  2366. {
  2367. if(oper[i] == -1)
  2368. cout<<"["<<i+1<<"] ";
  2369. else
  2370. if(oper[i] == 1)
  2371. cout<<"[Oraz] ";
  2372. else if (oper[i] == 2)
  2373. cout<<"[Lub] ";
  2374. else if(oper[i] == 3)
  2375. cout<<"[Oraz nie] ";
  2376. else
  2377. cout<<"[Lub nie] ";
  2378. i++;
  2379. }
  2380. }
  2381. if(kryt[4] == true)
  2382. {
  2383. cout<<"Cena ";
  2384. if((i+1)<ilosc_kryt)
  2385. {
  2386. if(oper[i] == -1)
  2387. cout<<"["<<i+1<<"] ";
  2388. else
  2389. if(oper[i] == 1)
  2390. cout<<"[Oraz] ";
  2391. else if (oper[i] == 2)
  2392. cout<<"[Lub] ";
  2393. else if(oper[i] == 3)
  2394. cout<<"[Oraz nie] ";
  2395. else
  2396. cout<<"[Lub nie] ";
  2397. i++;
  2398. }
  2399. }
  2400. if(kryt[5] == true)
  2401. {
  2402. cout<<"Ilosc ";
  2403. if((i+1)<ilosc_kryt)
  2404. {
  2405. if(oper[i] == -1)
  2406. cout<<"["<<i+1<<"] ";
  2407. else
  2408. if(oper[i] == 1)
  2409. cout<<"[Oraz] ";
  2410. else if (oper[i] == 2)
  2411. cout<<"[Lub] ";
  2412. else if(oper[i] == 3)
  2413. cout<<"[Oraz nie] ";
  2414. else
  2415. cout<<"[Lub nie] ";
  2416. i++;
  2417. }
  2418. }
  2419. cout<<endl;
  2420. if((j+1)<ilosc_kryt)
  2421. {
  2422. //cout<<"oper["<<i<<"]: before"<<oper[i];
  2423. cout<<"Podaj operator nr "<<j+1<<endl<<" 1. Oraz | 2. Lub | 3. Oraz nie| 4. Lub nie"<<endl;
  2424. c=getch();
  2425. oper[j]=c-'0';
  2426. j++;
  2427. //cout<<"oper["<<i<<"]: after"<<oper[i];
  2428. }
  2429. else if((j+1)==ilosc_kryt)
  2430. {
  2431. j++;
  2432. }
  2433. } while((j+1)<ilosc_kryt);
  2434. cout<<"Podawanie kryteriow zakonczone."<<endl;
  2435. cout<<"Podaj wyszukiwane wartosci."<<endl;
  2436. char markaQuery[L], modelQuery[L];
  2437. float mocMinQuery = -1, mocMaxQuery = -1, cenaMinQuery = -1, cenaMaxQuery = -1;
  2438. int rocznikMinQuery = -1, rocznikMaxQuery = -1, sztukMinQuery = -1, sztukMaxQuery = -1;
  2439. for(i=0; i<=5; i++)
  2440. {
  2441. if(kryt[i])
  2442. {
  2443. if(i == 0)
  2444. {
  2445. cout<<"Podaj marke: ";
  2446. gets(markaQuery);
  2447. }
  2448. if(i == 1)
  2449. {
  2450. cout<<"Podaj model: ";
  2451. gets(modelQuery);
  2452. }
  2453. if(i == 2)
  2454. {
  2455. do
  2456. {
  2457. cout<<"Podaj moc minimalna: ";
  2458. cin>>mocMinQuery;
  2459. cout<<"Podaj moc maksymalna: ";
  2460. cin>>mocMaxQuery;
  2461. } while (mocMinQuery > mocMaxQuery);
  2462. }
  2463. if(i == 3)
  2464. {
  2465. do
  2466. {
  2467. cout<<"Podaj rocznik minimalny: ";
  2468. cin>>rocznikMinQuery;
  2469. cout<<"Podaj rocznik maksymalny: ";
  2470. cin>>rocznikMaxQuery;
  2471. cin.ignore();
  2472. }while (rocznikMinQuery > rocznikMaxQuery);
  2473. }
  2474. if(i == 4)
  2475. {
  2476. do
  2477. {
  2478. cout<<"Podaj cene minimalna: ";
  2479. cin>>cenaMinQuery;
  2480. cout<<"Podaj cene maksymalna: ";
  2481. cin>>cenaMaxQuery;
  2482. }while (cenaMinQuery > cenaMaxQuery);
  2483. }
  2484. if(i == 5)
  2485. {
  2486. do
  2487. {
  2488. cout<<"Podaj ilosc sztuk minimalna: ";
  2489. cin>>sztukMinQuery;
  2490. cout<<"Podaj ilosc sztuk maksymalna: ";
  2491. cin>>sztukMaxQuery;
  2492. }while (sztukMinQuery > sztukMaxQuery);
  2493. }
  2494. }
  2495. }
  2496. //cout<<"Operator["<<i<<"]: "<<oper[i];
  2497. //cout<<"----------"<<endl;
  2498. //baza.searchAdvanced(kryt, oper, markaQuery, modelQuery, mocMinQuery, mocMaxQuery, rocznikMinQuery, rocznikMaxQuery, cenaMinQuery, cenaMaxQuery, sztukMinQuery, sztukMaxQuery);
  2499. if(!baza.searchAdvanced(kryt, oper, markaQuery, modelQuery, mocMinQuery, mocMaxQuery, rocznikMinQuery, rocznikMaxQuery, cenaMinQuery, cenaMaxQuery, sztukMinQuery, sztukMaxQuery))
  2500. {
  2501. cout<<"nie znaleziono"<<endl;
  2502. }
  2503. else
  2504. {
  2505. system("CLS");
  2506. baza.showCurrentFound(50, 1);
  2507. gotoxy(1,1);
  2508. cout<<"----- Menu Znalezione -----"<<endl;
  2509. cout<<"1. Nastepny znaleziony."<<endl;
  2510. cout<<"2. Poprzedni znaleziony."<<endl;
  2511. cout<<"3. Usun znaleziony."<<endl;
  2512. cout<<"0. Powrot."<<endl;
  2513.  
  2514. do
  2515. {
  2516. menu=getch();
  2517. switch(menu)
  2518. {
  2519. case '1':
  2520. {
  2521. baza.nextFound();
  2522. baza.showCurrentFound(50,1);
  2523. break;
  2524. }
  2525. case '2':
  2526. {
  2527. baza.previousFound();
  2528. baza.showCurrentFound(50,1);
  2529. break;
  2530. }
  2531. case '3':
  2532. {
  2533. baza.deleteCurrentFound();
  2534. baza.showCurrentFound(50,1);
  2535. }
  2536. }
  2537. } while(menu != '0');
  2538. break;
  2539. }
  2540. } while(menu != '0');
  2541. }
  2542. else
  2543. cout<<"Brak rekordow w bazie. Wczytaj z pliku lub dodaj nowa."<<endl;
  2544. break;
  2545. }
  2546. case '4': baza.wartosci();
  2547. cout<<"Suma wszystkich wartosci= "<<baza.sumawartosc()<<endl;
  2548. break;
  2549. case '5': cout<<"Zapisano do pliku"<<endl;
  2550. cout<<"Podaj nazwe:"<<endl;
  2551. cin>>newFileName;
  2552. baza.saveFileAs(newFileName);
  2553. break;
  2554. case '6': cout<<"Wczytano z pliku"<<endl;
  2555. baza.openFile();
  2556. break;
  2557. case '7': baza.deleteCurrent();
  2558. break;
  2559. case '8': baza.showCurrent(50,10);
  2560. break;
  2561. case '9':
  2562. switch(baza.menuEdytuj())
  2563. {
  2564. case '1' : cout<<"Podaj rocznik";
  2565. int rocznik = 2005;
  2566. //baza.setRocznikCurrent(rocznik);
  2567. break;
  2568. }
  2569. break;
  2570. case 'a': baza.next();
  2571. baza.showCurrent(50,10);
  2572. break;
  2573. case 'A': baza.nextFound();
  2574. baza.showCurrentFound(50,10);
  2575. break;
  2576. case 'b': baza.previous();
  2577. baza.showCurrent(50,10);
  2578. break;
  2579. case 'B': baza.previousFound();
  2580. baza.showCurrentFound(50,10);
  2581. break;
  2582. case 'c': cout<<"Podaj numer elementu"<<endl;
  2583. cin>>i;
  2584. baza.setCurrent(i);
  2585. break;
  2586. case 's': cout<<"Podaj cene minimalna: ";
  2587. cin>>min;
  2588. cout<<"Podaj cene maksymalna: ";
  2589. cin>>max;
  2590. if(!baza.searchCena(min, max))
  2591. cout<<"Nic nie znalazlem"<<endl;
  2592. else
  2593. baza.showCurrentFound(50, 10);
  2594. break;
  2595. case 'z': do
  2596. {
  2597. cout<<"Marka: ";
  2598. gets(mark);
  2599. if(strlen(mark)==0)
  2600. cout<<"Marka nie moze byc pusta."<<endl;
  2601. } while (strlen(mark)==0);
  2602. if(!baza.searchMarka(mark))
  2603. cout<<"Nic nie znalazlem"<<endl;
  2604. else
  2605. baza.showCurrentFound(50,10);
  2606. break;
  2607. case 'x': do
  2608. {
  2609. cout<<"Marka: ";
  2610. gets(mark);
  2611. if(strlen(mark)==0)
  2612. cout<<"Marka nie moze byc pusta."<<endl;
  2613. } while (strlen(mark)==0);
  2614. do
  2615. {
  2616. cout<<"Podaj cene minimalna: ";
  2617. cin>>min;
  2618. cout<<"Podaj cene maksymalna: ";
  2619. cin>>max;
  2620. } while(min>max);
  2621. if(!baza.searchMarka(mark) && !baza.searchCena(min, max))
  2622. cout<<"Nic nie znalazlem"<<endl;
  2623. else
  2624. baza.showCurrentFound(50,10);
  2625. break;
  2626. case 'S': cout<<"Podaj numer elementu"<<endl;
  2627. cin>>i;
  2628. baza.showCurrentFound(50, 10);
  2629. break;
  2630. case '0': cout<<"Koniec"<<endl;
  2631. getchar();
  2632. break;
  2633. }
  2634. } while (zn!='0');
  2635.  
  2636. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement