Advertisement
Guest User

Untitled

a guest
May 26th, 2015
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.96 KB | None | 0 0
  1. /*
  2. Program operuje na dynamicznej bazie danych pracownikow.
  3. Aktualnie użytkownik może dodawać nowych pracowników, usuwać, a także korzystać z zapisu i odczytu plików CSV.
  4.  
  5.  
  6. */
  7. #include <iostream>     /* cout */
  8. #include <stdlib.h>     /* srand, rand */
  9. #include <time.h>       /* time */
  10. #include <locale.h>     /* setlocale */
  11. #include <vector>       /* vector */
  12. #include <fstream>      /* files */
  13. #include <string>       /* string */
  14. #include <sstream>      /* sstream */
  15. #include "Employee.h"
  16. #include "Employer.h"
  17. using namespace std;
  18.  
  19. int main()
  20. {
  21.     setlocale(LC_ALL,"");   //polskie znaki w konsoli
  22.     //Person p1; blad! nie mozna tworzyc obiektu klasy abstrakcyjnej!
  23.     srand(time( NULL ));    //start czasu
  24.  
  25.     int choice=1;           //zmienna do wyboru opcji
  26.     int a=0;                //zmienna indeksowa dynamicznej tablicy obiektów
  27.     string linia(60,'*');   //graficzna linia
  28.  
  29.     //losowa tablica wyników
  30.     int tab[12];
  31.     for(int i=0;i<12;i++)
  32.     tab[i]=rand() % 56 + 44;   // 44-100
  33.  
  34.     //dynamiczna tablica obiektów typu Employee
  35.     vector < Employee > emp_tab;
  36.  
  37.     //======================MENU==============================================
  38.     cout<<linia<<endl;
  39.     cout<<"Witaj w bazie danych ludzi pracy! Wybierz czynnosc:\n"
  40.     "1 - wyswietlenie pracownikow\n"
  41.     "2 - dodaj nowego pracownika\n"
  42.     "3 - usun pracownika\n"
  43.     "4 - zapisz do pliku .csv\n"
  44.     "5 - odczyt z pliku\n"
  45.     "0 - koniec\n";
  46.     cout<<linia<<endl;
  47.     //======================MENU==============================================
  48.     while(choice)
  49.     {
  50.  
  51.         cout<<"Twoj wybor: ";
  52.         cin>>choice;
  53.         while(cin.fail()) // dopóki podawane sa bledne dane
  54.         {
  55.           cout<<"Podaj liczbe z zakresu! "; //komunikat bledu
  56.           cin.clear();                      //kasowanie flagi bledu strumienia
  57.           cin.sync();                       //kasowanie zbednych znaków z bufora
  58.           cin>>choice;
  59.         }
  60.  
  61.         switch(choice)
  62.         {
  63.             case 0: //opuszczenie switch, wyjscie z programu
  64.                 break;
  65.             case 1: //wyswietlenie dynamicznej tablicy
  66.                 {
  67.                     if (!emp_tab.size()) cout<<"Pusto!:(\n";
  68.                     else
  69.                     {
  70.                         for(int i=0;i<emp_tab.size();i++)
  71.                             emp_tab[i].present();
  72.                     }
  73.                     break;
  74.                 }
  75.  
  76.             case 2: //dodanie nowego obiektu do tablicy
  77.                 {
  78.                     emp_tab.push_back(Employee());
  79.                     a++;
  80.                     emp_tab[a-1].set_employee();
  81.                     break;
  82.                 }
  83.  
  84.             case 3: //usuniecie ostatniego elementu tablicy
  85.                 {
  86.                     if(emp_tab.size()) emp_tab.erase(emp_tab.begin()+a);
  87.                     else cout<<"Nie mozna usunac! Pusta baza!\n";
  88.                     break;
  89.                 }
  90.  
  91.             case 4: //zapis do pliku CSV
  92.                 {
  93.                     if(emp_tab.size())
  94.                     {
  95.                     ofstream NowyPlik;
  96.                     string sciezka_zapisu;
  97.                     cout<<"Podaj lokalizacje (np.C:\\users\\plik.csv): ";
  98.                     cin>>sciezka_zapisu;
  99.                     NowyPlik.open(sciezka_zapisu);
  100.                     NowyPlik<<"Imie;Nazwisko;Płęć;Firma;Zadowolenie;Wynagrodzenie"<<endl;
  101.                          for(int i=0;i<emp_tab.size();i++)
  102.                          {
  103.                             NowyPlik<<emp_tab[i].show_name()<<";";
  104.                             NowyPlik<<emp_tab[i].show_surname()<<";";
  105.                             NowyPlik<<emp_tab[i].show_sex()<<";";
  106.                             NowyPlik<<emp_tab[i].show_company()<<";";
  107.                             NowyPlik<<emp_tab[i].show_satif()<<";";
  108.                             NowyPlik<<emp_tab[i].show_salary()<<";";
  109.                             NowyPlik<<"\n";
  110.                          }
  111.  
  112.                     NowyPlik.close();
  113.                     cout<<"\nZapisano "<<sciezka_zapisu<<"!\n\n";
  114.  
  115.  
  116.                     }
  117.                     else cout<<"Nie ma co zapisać! Pusta baza!\n";
  118.                     break;
  119.                 }
  120.  
  121.             case 5: //odczyt z pliku CSV
  122.                 {
  123.                     ifstream plik;
  124.                     string sciezka_odczytu;
  125.                     cout<<"Podaj lokalizacje (np.C:\\users\\plik.csv): ";
  126.                     cin>>sciezka_odczytu;
  127.                     plik.open(sciezka_odczytu);
  128.  
  129.                     //plik.open( "C:\\Users\\Mjelec\\Desktop\\plik.csv" );
  130.                     if( plik.good() )
  131.                     {
  132.                         cout<<"plik udalo sie otworzyc\n";
  133.                         string wiersz;  //przechowuje wiersz
  134.                         int lwiersz=0;  //liczba wierszy
  135.                         string item;
  136.  
  137.  
  138.                         //analiza wierszy
  139.                         while(getline(plik, wiersz)) //dopoki wiersz niepusty
  140.                         {
  141.                             lwiersz++;
  142.                             if(lwiersz==1) continue; //pomijamy 1 wiersz (legende)
  143.  
  144.                             stringstream ss(wiersz);
  145.                             Employee *empl = new Employee(); //utworzenie dynamicznego obiektu
  146.                             //uzupelnianie danych nowego obiektu:
  147.  
  148.                             //imie
  149.                             getline(ss, item, ';');
  150.                             empl->set_name(item);
  151.                             //nazwisko
  152.                             getline(ss, item, ';');
  153.                             empl->set_surname(item);
  154.                             //plec
  155.                             getline(ss, item, ';');
  156.                             empl->set_sex(item[0]);
  157.                             //firma
  158.                             getline(ss, item, ';');
  159.                             empl->set_company(item);
  160.                              //zadowolenie
  161.                             getline(ss, item, ';');
  162.                             empl->set_satif(atoi(item.c_str()));
  163.                              //wynagrodzenie
  164.                             getline(ss, item, '\n');
  165.                             empl->set_salary(atof(item.c_str()));
  166.  
  167.                             //dodanie obiektu do tablicy
  168.                             emp_tab.push_back(*empl);
  169.                             cout<<"Utworzono "<<emp_tab.size()<<" obiektow\n";
  170.                         }
  171.  
  172.  
  173.                     }
  174.                     else
  175.                     {
  176.                         cout<<"otwarcie pliku się nie powiodło\n";
  177.                     }
  178.                     plik.close();
  179.                     break;
  180.                 }
  181.  
  182.             default:
  183.                 {
  184.                     cout<<"Podaj wlasciwa wartosc!\n";
  185.                     cin.clear();
  186.                     cin.sync();
  187.                     break;
  188.                 }
  189.         }
  190.     }
  191.  
  192.  
  193.     return 0;
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement