Baza Danych

1. Zawarto pliku (bazy danych)
Na plik zawierajcy baz danych skada si n, 0<n<100 wierszy zawierajcy informacj o n rnych produktach spoywczych. Kady wiersz podzielony jest na 6 kolumn o szerokoci odpowiednio 5, 20, 8, 8, 8, 8 znakw. W kolumnach znajduj si informacje o produktach. Kolumna 1 (o szerokoci 5 znakw) zawiera numer wiersza. Kolumna 2 (o szerokoci 20 znakw) zawiera nazw produktu. Pozostae kolumny zawieraj odpowiednio informacj na temat iloci produktu (liczba rzeczywista), jednostki miary (litr, kilogram, sztuka, etc.), ceny jednostkowej (liczba rzeczywista) oraz ceny cakowitej (liczba rzeczywista - iloczyn ceny jednostkowej i iloci produktu). 

Wane jest rwnie formatowanie zawartoci poszczeglnych kolumn. Zawarto kolumn 1-4 ma by wyrwnana do lewej, zawarto kolumn 5-6 do prawej. 

Wszystkie liczby rzeczywiste w bazie danych maj by zapisane z precyzj dokadnie dwch miejsc po przecinku. 

Przykadowa zawarto pliku z baz danych:
1    chleb               2.00    sztuka      1.60    3.20
2    maslo               0.50    kg          3.00    1.50

Naley zauway, e kady wiersz ma sta dugo. Na kocu kadego wiersza znajduj si dwa znaki biae CR (carriage return) oraz LF (line feed).

2. Omwienie programu:
a. Po uruchomieniu programu uytkownik pytany jest o ciek dostpu i nazw pliku z baz danych (omawian w punkcie 1)
b. Jeli podany plik nie istnieje - uytkownik ma by zapytany o moliwo utworzenia pliku (w przypadku podjcia decyzji o nieutworzeniu pliku - program zakoczy dziaanie)
c. Nastpnie ma si wywietli menu zawierajcy pozycje:
1 Wywietl ca baz danych
2 Wyszukaj element
3 Dodaj element
4 Usu element
5 Modyfikuj element
0 Zakocz dziaanie programu
d. Po wybraniu pozycji 1 wywietlana jest zawarto caej bazy danych (lub stosowna informacja, gdy baza jest pusta)
e. Po wybraniu pozycji 2 uytkownik podaje albo numer wiersza bazy danych albo nazw produktu, ktry nastpnie ma by wyszukany i wywietlony na ekranie
f. Po wybraniu pozycji 3 uytkownik jest pytany o nazw produktu, ilo, jednostk miary i cen jednostkow produktu, po czym, jeli w bazie danych nie ma wprowadzonego produktu, produkt jest dodawany (na koniec pliku) do bazy danych. W przeciwnym przypadku modyfikowany jest wiersz bazy danych, zawierajcy star informacj o produkcie.
g. Po wybraniu pozycji 4 uytkownik podaje albo numer wiersza bazy danych albo nazw produktu do usunicia
h. Po wybraniu pozycji 5 uytkownik podaje albo numer wiersza bazy danych albo nazw produktu do zmodyfikowania. Jeli wskazany produkt nie istnieje, program wyiwetli stosown informacj nie modyfikujc bazy danych. W przeciwnym przypadku uytkownik pytany jest o nazw, ilo, jednostk miary i cen jednostkow produktu, po czym modyfikowana jest odpowiednia linia bazy danych.
i. Po wybraniu pozycji 0 program zakoczy dziaanie

3. Uwagi:
a. Program bdzie zrealizowany obiektowo. Sugeruje si utworzenie klasy produkt oraz klasy baza_danych, przecienie operatorw << (istream &, produkt & ), >> (ostream &, produkt &), << (ifstream &, produkt & ), >> (ofstream &, produkt &), etc.
b. Wszystkie informacje na ekranie maj by wywietlane w formacie identycznym (szeroko kolumn, formatowanie, precyzja liczb rzeczywistych, etc.) jak w pliku z baz danych.
c. Wszelkich operacji na pliku oraz standardowym strumieniu wyjciowym (wybr wyrwnania, szerokoci pola, precyzji liczb float, etc.) naley dokonywa za pomoc funkcji klasy ios.
d. Wszelkie operacje na bazie danych powinny odbywa si bezporednio na pliku. Wczytywanie caego pliku do pamici jest niedopuszczalne.
e. Plik z baz danych powinien by otwierany bezporednio przed dokonaniem operacji we/wy i zamykany bezporednio po zakoczeniu operacji we/wy. 
f. W trakcie przeszukiwania/modyfikacji/odczytu/zapisu pliku naley pozycjonowa wskanik do odczytu/zapisu za pomoc funkcji seekg(), seekp(). 

