Guest User

Untitled

a guest
Apr 20th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.68 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <map>
  5. #include <string>
  6. #include <cstdlib>
  7. #include <sstream>
  8. #include <ctime>
  9.  
  10. using namespace std;
  11.  
  12. int ILE_SPRZEDAZYDAN = 10000;
  13. int ILU_PRACOWNIKOW = 15;
  14. int ILE_DNI = 365;
  15. int ILE_CZASOW = 24;
  16. int ILE_SKARG = 50;
  17.  
  18. char separator = ',';
  19.  
  20. struct Pracownik;
  21.  
  22. map<string, vector<int> > stanowisko_pracownicy;
  23. map<int, Pracownik*> ID_pracownik;
  24.  
  25. int get_rand(int x, int y) // przedzial < )
  26. {
  27. return x + (rand() % (y-x));
  28. }
  29.  
  30. string int_to_str(int i) // zamien liczbe na stringa
  31. {
  32. stringstream ss;
  33. ss << i;
  34. return ss.str();
  35. }
  36.  
  37. int str_to_int(string s)
  38. {
  39. int i;
  40. stringstream ss;
  41. ss << s;
  42. ss >> i;
  43. return i;
  44. }
  45.  
  46. string zero_num(int i) // dodaj zero przed jednocyfrowa liczba
  47. {
  48. if (i >= 10) return int_to_str(i);
  49. else return "0"+int_to_str(i);
  50. }
  51.  
  52. string Imiona[] = {"Leszek", "Adam", "Michał", "Hans", "Paweł", "Piotr", "Ryszard", "Zbigniew", "Jakub", "Marcin"};
  53. string Nazwiska[] = {"Nowak", "Kowalski", "Wiśniewski", "Dąbrowski", "Wójcik", "Kamiński", "Kowalczyk", "Kozłowski", "Markowski", "Fiołek"};
  54. string DniTygodnia[] = {"Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"};
  55.  
  56.  
  57. struct Pracownik
  58. {
  59. int ID;
  60. string imie;
  61. string nazwisko;
  62. string pesel;
  63. string stanowisko;
  64. string wiek;
  65. string ID_szefa;
  66. string data_wprowadzenia;
  67. string data_wygasniecia;
  68. string aktualnosc;
  69.  
  70. static int generuj_ID()
  71. {
  72. static int ID = 0;
  73. return ID++;
  74. }
  75. static string generuj_imie()
  76. {
  77. return Imiona[get_rand(0, 10)];
  78. }
  79. static string generuj_nazwisko()
  80. {
  81. return Nazwiska[get_rand(0, 10)];
  82. }
  83. static string generuj_pesel(int wiek)
  84. {
  85. stringstream ss;
  86. ss << zero_num((2011-wiek)%100); // rok
  87. ss << zero_num(get_rand(1, 13)); // miesiac
  88. ss << zero_num(get_rand(1, 30)); // dzien
  89. for (int i=0;i<5;i++) ss << rand() % 10; // losowe cyferki na końcu
  90.  
  91. string pesel = ss.str();
  92. return pesel;
  93. }
  94. /* static string generuj_wiek(int wiek)
  95. {
  96. if (wiek >= 18 && wiek <= 25) return "18-25";
  97. else if (wiek >= 26 && wiek <= 35) return "26-35";
  98. else if (wiek >= 36 && wiek <= 45) return "36-45";
  99. else if (wiek >= 46 && wiek <= 55) return "46-55";
  100. else return ">=56";
  101. }*/
  102. static string generuj_aktualnosc()
  103. {
  104. if (rand() % 2) return "true";
  105. else return "false";
  106. }
  107. static int losuj_wiek()
  108. {
  109. return get_rand(18, 60);
  110. }
  111. void wypisz_pracownika(ostream& output)
  112. {
  113. output << this->imie << separator << this->nazwisko << separator << this->pesel << separator << this->stanowisko << separator;
  114. if (ID_szefa == "0") output << ID_pracownik[0]->pesel;
  115. else output << "NULL";
  116. output << endl;
  117. }
  118. Pracownik()
  119. {
  120. this->ID = generuj_ID();
  121. this->imie = generuj_imie();
  122. this->nazwisko = generuj_nazwisko();
  123. int wiek = losuj_wiek();
  124. this->pesel = generuj_pesel(wiek);
  125. if (this->ID == 0) this->stanowisko = "Kierownik";
  126. else if (this->ID == 1) this->stanowisko = "Szef kuchni";
  127. else if (this->ID < ILU_PRACOWNIKOW / 3 + 2) this->stanowisko = "Kucharz";
  128. else this->stanowisko = "Kelner";
  129.  
  130. stanowisko_pracownicy[this->stanowisko].push_back(this->ID);
  131.  
  132. if (this->ID != 0) this->ID_szefa = "0";
  133. else this->ID_szefa = "NULL";
  134. ID_pracownik[this->ID] = this;
  135. this->data_wygasniecia = "2012-01-10"; // na sztywno
  136. this->data_wprowadzenia = "2009-10-18"; // na sztywno
  137. this->aktualnosc = "true";
  138. }
  139. };
  140.  
  141. struct Danie
  142. {
  143. string przedzial_cenowy;
  144. string nazwa_dania;
  145. string rodzaj_dania;
  146. float cena_dania;
  147.  
  148. void wypisz_danie(ostream& output)
  149. {
  150. output << this->nazwa_dania << separator << this->rodzaj_dania << separator << this->cena_dania << endl;
  151. }
  152. };
  153.  
  154. Danie dania[] = {{"11-15","Lody koktajlowe","Deser",13},
  155. {"11-15","Sernik","Deser",14},
  156. {"16-20","Torcik czekoladowy","Deser",19},
  157. {"26-30","Pieczeñ z indyka","Miesne",26},
  158. {"26-30","Filet z kurczaka","Miesne",27},
  159. {"21-25","Piers z gesi","Miesne",22},
  160. {"16-20","Pierogi z owocami","Maczne",17},
  161. {"16-20","Spaghetti","Maczne",19},
  162. {"16-20","Salatka grecka","Przystawka",18},
  163. {"21-25","Salatka z tuñczyka","Przystawka",23},
  164. {"1-5","Surowka z czerwonej kapusty","Przystawka",3},
  165. {"6-10","Barszcz czerwony","Zupa",8},
  166. {"6-10","Zurek","Zupa",6},
  167. {"6-10","Rosol z makaronem","Zupa",7},
  168. {"11-15","Chlodnik litewski","Zupa",13},
  169. {"11-15","Ryz z warzywami","Wegetariañskie",14},
  170. {"16-20","Leczo","Wegetarianskie",19},
  171. {"31-35","Sandacz w sosie","Rybne",34},
  172. {"11-15","Panga panierowana","Rybne",14},
  173. {"26-30","Losos z rusztu","Rybne",27}};
  174.  
  175. struct DanieDnia
  176. {
  177. int d, m, r;
  178. int ID_dania;
  179.  
  180. void wypisz_daniednia(ostream& output)
  181. {
  182. output << "'" << int_to_str(d) << "-" << int_to_str(m) << "-" << int_to_str(r) << "'" << separator << dania[ID_dania].nazwa_dania << endl;
  183. }
  184. };
  185.  
  186.  
  187. void wypisz_sprzedazedan(ostream& output)
  188. {
  189. for (int i=0;i<ILE_SPRZEDAZYDAN; i++)
  190. {
  191. int ID_kelnera = stanowisko_pracownicy["Kelner"][rand() % stanowisko_pracownicy["Kelner"].size()];
  192. int ID_kucharza = stanowisko_pracownicy["Kucharz"][rand() % stanowisko_pracownicy["Kucharz"].size()];
  193. int ID_szefakuchni = 1; // zakladamy jednego szefa kuchni
  194.  
  195. //int czas_ID = rand() % ILE_CZASOW;
  196. //int data_ID = ;
  197. int godzina = rand() % 24;
  198. int minuta = rand() % 60;
  199.  
  200. int dzien = rand() % 30;
  201. int miesiac = rand() % 12 + 1;
  202. int rok = 2009;
  203.  
  204. int numer_stolika = rand() % 20;
  205.  
  206. int ile_trans = 1 + rand() % 8;
  207. separator = ',';
  208. for (int ID_transakcji = 0; ID_transakcji < ile_trans; ID_transakcji++)
  209. {
  210. int ilosc_sprzedanych = 1 + rand() % 4;
  211. int ID_dania = rand() % 20;
  212. float cena = ilosc_sprzedanych * dania[ID_dania].cena_dania;
  213.  
  214. output << "(" << ID_pracownik[ID_kelnera]->pesel << separator << ID_pracownik[ID_kucharza]->pesel << separator << ID_pracownik[ID_szefakuchni]->pesel << separator << ID_transakcji << separator << dania[ID_dania].nazwa_dania << separator << cena << separator
  215. << "'" << int_to_str(godzina)+":"+int_to_str(minuta) << "'" << separator << "'" << int_to_str(dzien)+"-"+int_to_str(miesiac)+"-"+int_to_str(rok) << "'" << separator << numer_stolika << separator << ilosc_sprzedanych << ")";
  216. output << ",";
  217. output << endl;
  218. }
  219. }
  220. }
  221.  
  222. void wypisz_skargi(ostream& output)
  223. {
  224. for (int i=0;i<ILE_SKARG;i++)
  225. {
  226. int dzien = rand() % 30;
  227. int miesiac = rand() % 12 + 1;
  228. int rok = 2009;
  229.  
  230. output << 1 + rand() % 5 << separator << "'" << int_to_str(dzien)+"-"+int_to_str(miesiac)+"-"+int_to_str(rok) << "'" << endl;
  231. }
  232. }
  233.  
  234. int main(int argc, char** argv)
  235. {
  236. if (((argc-1) % 2) != 0)
  237. {
  238. cout << "Podano nieprawidlowa liczbe argumentow" << endl;
  239. }
  240. for (int i=1; i<argc;)
  241. {
  242. string s1(argv[i++]);
  243. string s2(argv[i++]);
  244. if (s1 == "-pracownicy")
  245. {
  246. cout << "ustawiam " << str_to_int(s2) << " pracowników" << endl;
  247. ILU_PRACOWNIKOW = str_to_int(s2);
  248. }
  249. if (s1 == "-dni")
  250. {
  251. ILE_DNI = str_to_int(s2);
  252. }
  253. if (s1 == "-czasy")
  254. {
  255. ILE_CZASOW = str_to_int(s2);
  256. }
  257. if (s1 == "-skargi")
  258. {
  259. ILE_SKARG = str_to_int(s2);
  260. }
  261. if (s1 == "-sprzedazedan")
  262. {
  263. ILE_SPRZEDAZYDAN = str_to_int(s2);
  264. }
  265. }
  266. srand(time(0));
  267.  
  268. ofstream plik1("Pracownik.csv");
  269. ofstream plik2("Dania.txt");
  270. ofstream plik3("DaniaDnia.txt");
  271. ofstream plik4("Skargi.txt");
  272. ofstream plik5("SprzedazeDan.sql");
  273.  
  274. separator = ',';
  275.  
  276. Pracownik p;
  277. for (int i=0; i<ILU_PRACOWNIKOW; i++)
  278. (new Pracownik)->wypisz_pracownika(plik1);
  279. // for (int i=0;i<ILE_CZASOW;i++)
  280. // Czas().wypisz_czas(plik1);
  281. // for (int i=0;i<ILE_DNI;i++)
  282. // {
  283. // Data().wypisz_date(plik1);
  284. //}
  285. wypisz_skargi(plik4);
  286.  
  287. separator = ';';
  288.  
  289. for (int i=0;i<20;i++)
  290. {
  291. dania[i].wypisz_danie(plik2);
  292. }
  293. int d=0;
  294. int m=1;
  295. for (int i=0;i<ILE_DNI;i++)
  296. {
  297. d++;
  298. if ((m == 2) && d == 29) { m++; d = 1; }
  299. else if ((m == 1 || m == 3 || m == 5 || m == 7 || m == 9 || m == 10 || m == 12) && d == 32) { m++; d = 1; }
  300. else if ((m == 2 || m == 4 || m == 6 || m == 8 || m == 11) && d == 31) { m++; d = 1; };
  301. //DanieDnia daniednia = {i, rand() % 20};
  302. int r = 2009;
  303. DanieDnia daniednia = {d, m, r, rand() % 20};
  304. daniednia.wypisz_daniednia(plik3);
  305. }
  306.  
  307.  
  308.  
  309. plik5 << "INSERT INTO SPRZEDAZE_DAN (pesel_kelnera, pesel_kucharza, pesel_szefakuchni, id_transakcji, nazwa_dania, cena, czas, data, numer_stolika, ilosc_sprzedanych) VALUES ";
  310. wypisz_sprzedazedan(plik5);
  311. return 0;
  312. }
Add Comment
Please, Sign In to add comment