Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <map>
- #include <string>
- #include <cstdlib>
- #include <sstream>
- #include <ctime>
- using namespace std;
- int ILE_SPRZEDAZYDAN = 10000;
- int ILU_PRACOWNIKOW = 15;
- int ILE_DNI = 365;
- int ILE_CZASOW = 24;
- int ILE_SKARG = 50;
- char separator = ',';
- struct Pracownik;
- map<string, vector<int> > stanowisko_pracownicy;
- map<int, Pracownik*> ID_pracownik;
- int get_rand(int x, int y) // przedzial < )
- {
- return x + (rand() % (y-x));
- }
- string int_to_str(int i) // zamien liczbe na stringa
- {
- stringstream ss;
- ss << i;
- return ss.str();
- }
- int str_to_int(string s)
- {
- int i;
- stringstream ss;
- ss << s;
- ss >> i;
- return i;
- }
- string zero_num(int i) // dodaj zero przed jednocyfrowa liczba
- {
- if (i >= 10) return int_to_str(i);
- else return "0"+int_to_str(i);
- }
- string Imiona[] = {"Leszek", "Adam", "Michał", "Hans", "Paweł", "Piotr", "Ryszard", "Zbigniew", "Jakub", "Marcin"};
- string Nazwiska[] = {"Nowak", "Kowalski", "Wiśniewski", "Dąbrowski", "Wójcik", "Kamiński", "Kowalczyk", "Kozłowski", "Markowski", "Fiołek"};
- string DniTygodnia[] = {"Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"};
- struct Pracownik
- {
- int ID;
- string imie;
- string nazwisko;
- string pesel;
- string stanowisko;
- string wiek;
- string ID_szefa;
- string data_wprowadzenia;
- string data_wygasniecia;
- string aktualnosc;
- static int generuj_ID()
- {
- static int ID = 0;
- return ID++;
- }
- static string generuj_imie()
- {
- return Imiona[get_rand(0, 10)];
- }
- static string generuj_nazwisko()
- {
- return Nazwiska[get_rand(0, 10)];
- }
- static string generuj_pesel(int wiek)
- {
- stringstream ss;
- ss << zero_num((2011-wiek)%100); // rok
- ss << zero_num(get_rand(1, 13)); // miesiac
- ss << zero_num(get_rand(1, 30)); // dzien
- for (int i=0;i<5;i++) ss << rand() % 10; // losowe cyferki na końcu
- string pesel = ss.str();
- return pesel;
- }
- /* static string generuj_wiek(int wiek)
- {
- if (wiek >= 18 && wiek <= 25) return "18-25";
- else if (wiek >= 26 && wiek <= 35) return "26-35";
- else if (wiek >= 36 && wiek <= 45) return "36-45";
- else if (wiek >= 46 && wiek <= 55) return "46-55";
- else return ">=56";
- }*/
- static string generuj_aktualnosc()
- {
- if (rand() % 2) return "true";
- else return "false";
- }
- static int losuj_wiek()
- {
- return get_rand(18, 60);
- }
- void wypisz_pracownika(ostream& output)
- {
- output << this->imie << separator << this->nazwisko << separator << this->pesel << separator << this->stanowisko << separator;
- if (ID_szefa == "0") output << ID_pracownik[0]->pesel;
- else output << "NULL";
- output << endl;
- }
- Pracownik()
- {
- this->ID = generuj_ID();
- this->imie = generuj_imie();
- this->nazwisko = generuj_nazwisko();
- int wiek = losuj_wiek();
- this->pesel = generuj_pesel(wiek);
- if (this->ID == 0) this->stanowisko = "Kierownik";
- else if (this->ID == 1) this->stanowisko = "Szef kuchni";
- else if (this->ID < ILU_PRACOWNIKOW / 3 + 2) this->stanowisko = "Kucharz";
- else this->stanowisko = "Kelner";
- stanowisko_pracownicy[this->stanowisko].push_back(this->ID);
- if (this->ID != 0) this->ID_szefa = "0";
- else this->ID_szefa = "NULL";
- ID_pracownik[this->ID] = this;
- this->data_wygasniecia = "2012-01-10"; // na sztywno
- this->data_wprowadzenia = "2009-10-18"; // na sztywno
- this->aktualnosc = "true";
- }
- };
- struct Danie
- {
- string przedzial_cenowy;
- string nazwa_dania;
- string rodzaj_dania;
- float cena_dania;
- void wypisz_danie(ostream& output)
- {
- output << this->nazwa_dania << separator << this->rodzaj_dania << separator << this->cena_dania << endl;
- }
- };
- Danie dania[] = {{"11-15","Lody koktajlowe","Deser",13},
- {"11-15","Sernik","Deser",14},
- {"16-20","Torcik czekoladowy","Deser",19},
- {"26-30","Pieczeñ z indyka","Miesne",26},
- {"26-30","Filet z kurczaka","Miesne",27},
- {"21-25","Piers z gesi","Miesne",22},
- {"16-20","Pierogi z owocami","Maczne",17},
- {"16-20","Spaghetti","Maczne",19},
- {"16-20","Salatka grecka","Przystawka",18},
- {"21-25","Salatka z tuñczyka","Przystawka",23},
- {"1-5","Surowka z czerwonej kapusty","Przystawka",3},
- {"6-10","Barszcz czerwony","Zupa",8},
- {"6-10","Zurek","Zupa",6},
- {"6-10","Rosol z makaronem","Zupa",7},
- {"11-15","Chlodnik litewski","Zupa",13},
- {"11-15","Ryz z warzywami","Wegetariañskie",14},
- {"16-20","Leczo","Wegetarianskie",19},
- {"31-35","Sandacz w sosie","Rybne",34},
- {"11-15","Panga panierowana","Rybne",14},
- {"26-30","Losos z rusztu","Rybne",27}};
- struct DanieDnia
- {
- int d, m, r;
- int ID_dania;
- void wypisz_daniednia(ostream& output)
- {
- output << "'" << int_to_str(d) << "-" << int_to_str(m) << "-" << int_to_str(r) << "'" << separator << dania[ID_dania].nazwa_dania << endl;
- }
- };
- void wypisz_sprzedazedan(ostream& output)
- {
- for (int i=0;i<ILE_SPRZEDAZYDAN; i++)
- {
- int ID_kelnera = stanowisko_pracownicy["Kelner"][rand() % stanowisko_pracownicy["Kelner"].size()];
- int ID_kucharza = stanowisko_pracownicy["Kucharz"][rand() % stanowisko_pracownicy["Kucharz"].size()];
- int ID_szefakuchni = 1; // zakladamy jednego szefa kuchni
- //int czas_ID = rand() % ILE_CZASOW;
- //int data_ID = ;
- int godzina = rand() % 24;
- int minuta = rand() % 60;
- int dzien = rand() % 30;
- int miesiac = rand() % 12 + 1;
- int rok = 2009;
- int numer_stolika = rand() % 20;
- int ile_trans = 1 + rand() % 8;
- separator = ',';
- for (int ID_transakcji = 0; ID_transakcji < ile_trans; ID_transakcji++)
- {
- int ilosc_sprzedanych = 1 + rand() % 4;
- int ID_dania = rand() % 20;
- float cena = ilosc_sprzedanych * dania[ID_dania].cena_dania;
- 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
- << "'" << 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 << ")";
- output << ",";
- output << endl;
- }
- }
- }
- void wypisz_skargi(ostream& output)
- {
- for (int i=0;i<ILE_SKARG;i++)
- {
- int dzien = rand() % 30;
- int miesiac = rand() % 12 + 1;
- int rok = 2009;
- output << 1 + rand() % 5 << separator << "'" << int_to_str(dzien)+"-"+int_to_str(miesiac)+"-"+int_to_str(rok) << "'" << endl;
- }
- }
- int main(int argc, char** argv)
- {
- if (((argc-1) % 2) != 0)
- {
- cout << "Podano nieprawidlowa liczbe argumentow" << endl;
- }
- for (int i=1; i<argc;)
- {
- string s1(argv[i++]);
- string s2(argv[i++]);
- if (s1 == "-pracownicy")
- {
- cout << "ustawiam " << str_to_int(s2) << " pracowników" << endl;
- ILU_PRACOWNIKOW = str_to_int(s2);
- }
- if (s1 == "-dni")
- {
- ILE_DNI = str_to_int(s2);
- }
- if (s1 == "-czasy")
- {
- ILE_CZASOW = str_to_int(s2);
- }
- if (s1 == "-skargi")
- {
- ILE_SKARG = str_to_int(s2);
- }
- if (s1 == "-sprzedazedan")
- {
- ILE_SPRZEDAZYDAN = str_to_int(s2);
- }
- }
- srand(time(0));
- ofstream plik1("Pracownik.csv");
- ofstream plik2("Dania.txt");
- ofstream plik3("DaniaDnia.txt");
- ofstream plik4("Skargi.txt");
- ofstream plik5("SprzedazeDan.sql");
- separator = ',';
- Pracownik p;
- for (int i=0; i<ILU_PRACOWNIKOW; i++)
- (new Pracownik)->wypisz_pracownika(plik1);
- // for (int i=0;i<ILE_CZASOW;i++)
- // Czas().wypisz_czas(plik1);
- // for (int i=0;i<ILE_DNI;i++)
- // {
- // Data().wypisz_date(plik1);
- //}
- wypisz_skargi(plik4);
- separator = ';';
- for (int i=0;i<20;i++)
- {
- dania[i].wypisz_danie(plik2);
- }
- int d=0;
- int m=1;
- for (int i=0;i<ILE_DNI;i++)
- {
- d++;
- if ((m == 2) && d == 29) { m++; d = 1; }
- else if ((m == 1 || m == 3 || m == 5 || m == 7 || m == 9 || m == 10 || m == 12) && d == 32) { m++; d = 1; }
- else if ((m == 2 || m == 4 || m == 6 || m == 8 || m == 11) && d == 31) { m++; d = 1; };
- //DanieDnia daniednia = {i, rand() % 20};
- int r = 2009;
- DanieDnia daniednia = {d, m, r, rand() % 20};
- daniednia.wypisz_daniednia(plik3);
- }
- plik5 << "INSERT INTO SPRZEDAZE_DAN (pesel_kelnera, pesel_kucharza, pesel_szefakuchni, id_transakcji, nazwa_dania, cena, czas, data, numer_stolika, ilosc_sprzedanych) VALUES ";
- wypisz_sprzedazedan(plik5);
- return 0;
- }
Add Comment
Please, Sign In to add comment