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

pola i metody statyczne

Dodatkowe zagadnienia:

konwersja typów za pomocą konstruktora z jednym argumentem

operacje na plikach:

plik nagłowkowy <fstream>

strumien wyjściowy (zapis do pliku) ofstream

strumień wejściowy (odczyt z pliku) ifstream

uzyskiwanie dostępu do pliku: open(), close(), is_open()

sprawdzanie błędów: eof(), good(), fail()

odczyt linii tekstu ze strumienia wejściowego getline, odczyt znaku ze strumienia get()

konwersja liczb na napisy: stoi(), konwersja napisów na liczby to_string()

wyszukiwanie znaków w napisie metodą find()

wyodrębnianie podciągu znakow z napisu substr

Projekt: Baza danych osobowych c.d.

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

Opis projektu: Projekt: baza danych osobowych

Kod źródłowy z poprzednich zajęć baza.zip dostępny również w repozytorium GitHub

Uzupełnij projekt o poniższe elementy.

Do klasy Data dodaj:

konstruktor Data(const string& s), który inicjuje obiekt reprezentujący datę napisem w postaci DD-MM-YYYY. Zakładamy, że argument będzie zawsze zawierała poprawny format daty, metoda nie musi tego weryfikować. Tego typu konstruktor pozwoli na konwersję napisu na datę.

Data d=(Data)"21-11-1999";

Do klasy Baza dodaj:

metodę Zapisz, która zapisuje zawartość bazy danych w pliku tekstowym wskazanym w argumencie pliku

void Zapisz(const char* nazwa_pliku) const

metoda 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łednie odtworzyć zapisany wczesniej 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.

Program

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.