daily pastebin goal
84%
SHARE
TWEET

Untitled

a guest Apr 20th, 2018 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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()-1;
  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. //        cout << "wygenerowany ID " << this->ID << endl;
  139.     }
  140. };
  141.  
  142. struct Danie
  143. {
  144.     string przedzial_cenowy;
  145.     string nazwa_dania;
  146.     string rodzaj_dania;
  147.     float cena_dania;
  148.  
  149.     void wypisz_danie(ostream& output)
  150.     {
  151.         output << this->nazwa_dania << separator << this->rodzaj_dania << separator << this->cena_dania << endl;
  152.     }
  153. };
  154.  
  155. Danie dania[] = {{"11-15","Lody koktajlowe","Deser",13},
  156.                         {"11-15","Sernik","Deser",14},
  157.                         {"16-20","Torcik czekoladowy","Deser",19},
  158.                         {"26-30","Pieczeñ z indyka","Miesne",26},
  159.                         {"26-30","Filet z kurczaka","Miesne",27},
  160.                         {"21-25","Piers z gesi","Miesne",22},
  161.                         {"16-20","Pierogi z owocami","Maczne",17},
  162.                         {"16-20","Spaghetti","Maczne",19},
  163.                         {"16-20","Salatka grecka","Przystawka",18},
  164.                         {"21-25","Salatka z tuñczyka","Przystawka",23},
  165.                         {"1-5","Surowka z czerwonej kapusty","Przystawka",3},
  166.                         {"6-10","Barszcz czerwony","Zupa",8},
  167.                         {"6-10","Zurek","Zupa",6},
  168.                         {"6-10","Rosol z makaronem","Zupa",7},
  169.                         {"11-15","Chlodnik litewski","Zupa",13},
  170.                         {"11-15","Ryz z warzywami","Wegetariañskie",14},
  171.                         {"16-20","Leczo","Wegetarianskie",19},
  172.                         {"31-35","Sandacz w sosie","Rybne",34},
  173.                         {"11-15","Panga panierowana","Rybne",14},
  174.                         {"26-30","Losos z rusztu","Rybne",27}};
  175.  
  176. struct DanieDnia
  177. {
  178.     int d, m, r;
  179.     int ID_dania;
  180.  
  181.     void wypisz_daniednia(ostream& output)
  182.     {
  183.         output << "'" << int_to_str(d) << "-" << int_to_str(m) << "-" << int_to_str(r) << "'" << separator << dania[ID_dania].nazwa_dania << endl;
  184.     }
  185. };
  186.  
  187.  
  188. void wypisz_sprzedazedan(ostream& output)
  189. {
  190.     for (int i=0;i<ILE_SPRZEDAZYDAN; i++)
  191.     {
  192.         int ID_kelnera = stanowisko_pracownicy["Kelner"][rand() % stanowisko_pracownicy["Kelner"].size()];
  193.         int ID_kucharza = stanowisko_pracownicy["Kucharz"][rand() % stanowisko_pracownicy["Kucharz"].size()];
  194.         int ID_szefakuchni = 1; // zakladamy jednego szefa kuchni
  195.  
  196.         //int czas_ID = rand() % ILE_CZASOW;
  197.         //int data_ID = ;
  198.         int godzina = rand() % 24;
  199.         int minuta = rand() % 60;
  200.  
  201.         int dzien = rand() % 30;
  202.         int miesiac = rand() % 12 + 1;
  203.         int rok = 2009;
  204.  
  205.         int numer_stolika = rand() % 20;
  206.  
  207.         int ile_trans = 1 + rand() % 8;
  208.         separator = ',';
  209.         for (int ID_transakcji = 0; ID_transakcji < ile_trans; ID_transakcji++)
  210.         {
  211.             int ilosc_sprzedanych = 1 + rand() % 4;
  212.             int ID_dania = rand() % 20;
  213.             float cena = ilosc_sprzedanych * dania[ID_dania].cena_dania;
  214.  
  215.             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
  216.                     << "'" << 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 << ")";
  217.             output << ",";
  218.             output << endl;
  219.         }
  220.     }
  221. }
  222.  
  223. void wypisz_skargi(ostream& output)
  224. {
  225.     for (int i=0;i<ILE_SKARG;i++)
  226.     {
  227.         int dzien = rand() % 30;
  228.         int miesiac = rand() % 12 + 1;
  229.         int rok = 2009;
  230.  
  231.         output <<  1 + rand() % 5 << separator << "'" << int_to_str(dzien)+"-"+int_to_str(miesiac)+"-"+int_to_str(rok) << "'" << endl;
  232.     }
  233. }
  234.  
  235. int main(int argc, char** argv)
  236. {
  237.     if (((argc-1) % 2) != 0)
  238.     {
  239.         cout << "Podano nieprawidlowa liczbe argumentow" << endl;
  240.     }
  241.     for (int i=1; i<argc;)
  242.     {
  243.         string s1(argv[i++]);
  244.         string s2(argv[i++]);
  245.         if (s1 == "-pracownicy")
  246.         {
  247.             cout << "ustawiam " << str_to_int(s2) << " pracowników" << endl;
  248.             ILU_PRACOWNIKOW = str_to_int(s2);
  249.         }
  250.         if (s1 == "-dni")
  251.         {
  252.             ILE_DNI = str_to_int(s2);
  253.         }
  254.         if (s1 == "-czasy")
  255.         {
  256.             ILE_CZASOW = str_to_int(s2);
  257.         }
  258.         if (s1 == "-skargi")
  259.         {
  260.             ILE_SKARG = str_to_int(s2);
  261.         }
  262.         if (s1 == "-sprzedazedan")
  263.         {
  264.             ILE_SPRZEDAZYDAN = str_to_int(s2);
  265.         }
  266.     }
  267.     srand(time(0));
  268.  
  269.     ofstream plik1("Pracownik.csv");
  270.     ofstream plik2("Dania.txt");
  271.     ofstream plik3("DaniaDnia.txt");
  272.     ofstream plik4("Skargi.txt");
  273.     ofstream plik5("SprzedazeDan.sql");
  274.  
  275.     separator = ',';
  276.  
  277.     Pracownik p;
  278.     for (int i=0; i<ILU_PRACOWNIKOW; i++)
  279.         (new Pracownik)->wypisz_pracownika(plik1);
  280. //    for (int i=0;i<ILE_CZASOW;i++)
  281.   //      Czas().wypisz_czas(plik1);
  282.   //  for (int i=0;i<ILE_DNI;i++)
  283.    // {
  284.     //    Data().wypisz_date(plik1);
  285.     //}
  286.     wypisz_skargi(plik4);
  287.  
  288.     separator = ';';
  289.  
  290.     for (int i=0;i<20;i++)
  291.     {
  292.         dania[i].wypisz_danie(plik2);
  293.     }
  294.     int d=0;
  295.     int m=1;
  296.     for (int i=0;i<ILE_DNI;i++)
  297.     {
  298.         d++;
  299.         if ((m == 2) && d == 29) { m++; d = 1; }
  300.         else if ((m == 1 || m == 3 || m == 5 || m == 7 || m == 9 || m == 10 || m == 12) && d == 32) { m++; d = 1; }
  301.         else if ((m == 2 || m == 4 || m == 6 || m == 8 || m == 11) && d == 31) { m++; d = 1; };
  302.         //DanieDnia daniednia = {i, rand() % 20};
  303.         int r = 2009;
  304.         DanieDnia daniednia = {d, m, r, rand() % 20};
  305.         daniednia.wypisz_daniednia(plik3);
  306.     }
  307.  
  308.  
  309.  
  310.     plik5 << "INSERT INTO SPRZEDAZE_DAN (pesel_kelnera, pesel_kucharza, pesel_szefakuchni, id_transakcji, nazwa_dania, cena, czas, data, numer_stolika, ilosc_sprzedanych) VALUES ";
  311.     wypisz_sprzedazedan(plik5);
  312.     return 0;
  313. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top