Projekt: baza danych osobowych cd

Podsumowanie zajęć:

  • klasy i obiekty, pola i metody
  • zakresy dostępu, hermetyzacja: private, public
  • konstruktory (domniemany, kopiujący), destruktory
  • przeciążanie funkcji, przeciążanie operatorów (operator przypisania)
  • strumienie (iostream), łańcuchy znakowe (string)
  • typ wyliczeniowy: enum class

Dodatkowe zagadnienia:

Do projektu bazy danych z poprzednich zajęć dodajemy możliwość zapisu i odczytu bazy danych z pliku.

Uzupełnij projekt o poniższe elementy.

Do klasy Baza dodaj:

  • metodę Zapisz, która zapisuje zawartość bazy danych w pliku tekstowym o nazwie podanej w argumencie
     void Zapisz(const char* nazwa_pliku) const
  • metodę Wczytaj, która wypełnia bazę danych zawartością podanego w argumencie pliku
    Baza& Wczytaj(const char* nazwa_pliku)

    Zakładamy, że wskazany plik został utworzony wcześniej metodą Zapisz. Zaproponuj odpowiedni format zapisu/odczytu danych tak aby metoda Wczytaj była w stanie bezbłędnie odtworzyć zapisany wcześniej stan bazy. Jeżeli wskazany plik istnieje i można go odczytać to aktualna zawartość bazy danych jest zastępowana zawartością pliku, w przeciwnym razie zawartość bazy danych pozostaje bez zmian.

Do realizacji odczytu bazy danych przydatne będą metody pozwalające na konwersję napisów do obiektów Data i Plec:

  • do typu wyliczeniowego Plec dodaj metodę statyczną Plec::from_string(const string& s), która konwertuje napis zawierający nazwę płci (Kobieta, Mezczyzna, Nieznana) na odpowiadającą wartość wyliczeniową typu Plec
  • do klasy Data dodaj metodę statyczną Data::from_string(const string& s), która tworzy i zwraca obiekt klasy Data reprezentujący datę zawartą w napisie w postaci DD-MM-YYYY lub dodaj konstruktor Data(const string& s), który inicjuje obiekt reprezentujący datę napisem w postaci DD-MM-YYYY

Rozbuduj program realizowany na poprzednich zajęciach (Zadanie 5: Baza danych osobowych) o możliwość zapisu i odczytu bazy danych z pliku. Przy pierwszym uruchomieniu program startuje z pustą bazą danych. Użytkownik może dodawać rekordy do bazy danych, przeglądać zawartość bazy danych oraz sortować rekordy alfabetycznie. Program powinien działać w pętli do momentu wybrania opcji zakończenia pracy. W momencie zamknięcia programu (po wybraniu opcji 4 z menu) aktualny stan bazy danych jest zapisywany w pliku znajdującym się w bieżącym katalogu programu. Przy każdym kolejnym uruchomieniu, jeszcze przed wypisaniem menu, program sprawdza, czy w bieżącym katalogu znajduje się plik zawierający zapis bazy danych z poprzedniego uruchomienia. Jeżeli plik istnieje to stan bazy danych zostaje odtworzony z tego pliku i program kontynuuje swoje działanie.