Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Program operuje na dynamicznej bazie danych pracownikow.
- Aktualnie użytkownik może dodawać nowych pracowników, usuwać, a także korzystać z zapisu i odczytu plików CSV.
- */
- #include <iostream> /* cout */
- #include <stdlib.h> /* srand, rand */
- #include <time.h> /* time */
- #include <locale.h> /* setlocale */
- #include <vector> /* vector */
- #include <fstream> /* files */
- #include <string> /* string */
- #include <sstream> /* sstream */
- #include "Employee.h"
- #include "Employer.h"
- using namespace std;
- int main()
- {
- setlocale(LC_ALL,""); //polskie znaki w konsoli
- //Person p1; blad! nie mozna tworzyc obiektu klasy abstrakcyjnej!
- srand(time( NULL )); //start czasu
- int choice=1; //zmienna do wyboru opcji
- int a=0; //zmienna indeksowa dynamicznej tablicy obiektów
- string linia(60,'*'); //graficzna linia
- //losowa tablica wyników
- int tab[12];
- for(int i=0;i<12;i++)
- tab[i]=rand() % 56 + 44; // 44-100
- //dynamiczna tablica obiektów typu Employee
- vector < Employee > emp_tab;
- //======================MENU==============================================
- cout<<linia<<endl;
- cout<<"Witaj w bazie danych ludzi pracy! Wybierz czynnosc:\n"
- "1 - wyswietlenie pracownikow\n"
- "2 - dodaj nowego pracownika\n"
- "3 - usun pracownika\n"
- "4 - zapisz do pliku .csv\n"
- "5 - odczyt z pliku\n"
- "0 - koniec\n";
- cout<<linia<<endl;
- //======================MENU==============================================
- while(choice)
- {
- cout<<"Twoj wybor: ";
- cin>>choice;
- while(cin.fail()) // dopóki podawane sa bledne dane
- {
- cout<<"Podaj liczbe z zakresu! "; //komunikat bledu
- cin.clear(); //kasowanie flagi bledu strumienia
- cin.sync(); //kasowanie zbednych znaków z bufora
- cin>>choice;
- }
- switch(choice)
- {
- case 0: //opuszczenie switch, wyjscie z programu
- break;
- case 1: //wyswietlenie dynamicznej tablicy
- {
- if (!emp_tab.size()) cout<<"Pusto!:(\n";
- else
- {
- for(int i=0;i<emp_tab.size();i++)
- emp_tab[i].present();
- }
- break;
- }
- case 2: //dodanie nowego obiektu do tablicy
- {
- emp_tab.push_back(Employee());
- a++;
- emp_tab[a-1].set_employee();
- break;
- }
- case 3: //usuniecie ostatniego elementu tablicy
- {
- if(emp_tab.size()) emp_tab.erase(emp_tab.begin()+a);
- else cout<<"Nie mozna usunac! Pusta baza!\n";
- break;
- }
- case 4: //zapis do pliku CSV
- {
- if(emp_tab.size())
- {
- ofstream NowyPlik;
- string sciezka_zapisu;
- cout<<"Podaj lokalizacje (np.C:\\users\\plik.csv): ";
- cin>>sciezka_zapisu;
- NowyPlik.open(sciezka_zapisu);
- NowyPlik<<"Imie;Nazwisko;Płęć;Firma;Zadowolenie;Wynagrodzenie"<<endl;
- for(int i=0;i<emp_tab.size();i++)
- {
- NowyPlik<<emp_tab[i].show_name()<<";";
- NowyPlik<<emp_tab[i].show_surname()<<";";
- NowyPlik<<emp_tab[i].show_sex()<<";";
- NowyPlik<<emp_tab[i].show_company()<<";";
- NowyPlik<<emp_tab[i].show_satif()<<";";
- NowyPlik<<emp_tab[i].show_salary()<<";";
- NowyPlik<<"\n";
- }
- NowyPlik.close();
- cout<<"\nZapisano "<<sciezka_zapisu<<"!\n\n";
- }
- else cout<<"Nie ma co zapisać! Pusta baza!\n";
- break;
- }
- case 5: //odczyt z pliku CSV
- {
- ifstream plik;
- string sciezka_odczytu;
- cout<<"Podaj lokalizacje (np.C:\\users\\plik.csv): ";
- cin>>sciezka_odczytu;
- plik.open(sciezka_odczytu);
- //plik.open( "C:\\Users\\Mjelec\\Desktop\\plik.csv" );
- if( plik.good() )
- {
- cout<<"plik udalo sie otworzyc\n";
- string wiersz; //przechowuje wiersz
- int lwiersz=0; //liczba wierszy
- string item;
- //analiza wierszy
- while(getline(plik, wiersz)) //dopoki wiersz niepusty
- {
- lwiersz++;
- if(lwiersz==1) continue; //pomijamy 1 wiersz (legende)
- stringstream ss(wiersz);
- Employee *empl = new Employee(); //utworzenie dynamicznego obiektu
- //uzupelnianie danych nowego obiektu:
- //imie
- getline(ss, item, ';');
- empl->set_name(item);
- //nazwisko
- getline(ss, item, ';');
- empl->set_surname(item);
- //plec
- getline(ss, item, ';');
- empl->set_sex(item[0]);
- //firma
- getline(ss, item, ';');
- empl->set_company(item);
- //zadowolenie
- getline(ss, item, ';');
- empl->set_satif(atoi(item.c_str()));
- //wynagrodzenie
- getline(ss, item, '\n');
- empl->set_salary(atof(item.c_str()));
- //dodanie obiektu do tablicy
- emp_tab.push_back(*empl);
- cout<<"Utworzono "<<emp_tab.size()<<" obiektow\n";
- }
- }
- else
- {
- cout<<"otwarcie pliku się nie powiodło\n";
- }
- plik.close();
- break;
- }
- default:
- {
- cout<<"Podaj wlasciwa wartosc!\n";
- cin.clear();
- cin.sync();
- break;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement