#include #include #include #include #include using namespace std; enum class Umaszczenie { brazowy, czarny, bialy, niebieski }; void wypisz(Umaszczenie ob) { switch(ob) { case Umaszczenie::bialy: cout << "bialy\n"; break; case Umaszczenie::brazowy: cout << "brazowy\n"; break; case Umaszczenie::czarny: cout << "czarny\n"; break; case Umaszczenie::niebieski: cout << "niebieski\n"; } } void zapisz_do_pliku(Umaszczenie ob, ofstream& plik) { switch(ob) { case Umaszczenie::bialy: plik << "bialy\n"; break; case Umaszczenie::brazowy: plik << "brazowy\n"; break; case Umaszczenie::czarny: plik << "czarny\n"; break; case Umaszczenie::niebieski: plik << "niebieski\n"; } } struct zwierze { char gatunek[256]; char rasa[256]; int plec; Umaszczenie umaszczenie; int liczbasztuk; double cenajednostkowa; string datadostawy; char uwagi[1000]; }; vector baza; void Dodaj(); void Zobacz(); void Zapisz(); void Wczytaj(); void Usun(); void Edytuj(); void ZmienDateDostawy(); void Wyszukaj(); int main() { char wybor; do { cout << "W sklepie zoologicznym jest " << baza.size() << " zwierzat" << endl; cout << "1. Dodaj zwierze " << endl; cout << "2. Zobacz wszystkie zwierzeta " << endl; cout << "3. Zapisz wprowadzone zmiany " << endl; cout << "4. Wczytaj dane zwierzat " << endl; cout << "5. Usun dane zwierzecia " << endl; cout << "6. Edytuj dane " << endl; cout << "7. Zmien date dostawy" << endl; cout << "8. Wyszukaj zwierze" << endl; cout << "ESC - Koniec programu " << endl << endl; wybor = _getch(); switch (wybor) { case 49: Dodaj(); break; case 50: Zobacz(); break; case 51: Zapisz(); break; case 52: Wczytaj(); break; case 53: Usun(); break; case 54: Edytuj(); break; case 55: ZmienDateDostawy(); break; case 56: Wyszukaj(); break; } system("cls"); } while (wybor != 27); system("pause"); } void Dodaj() { zwierze nowe; cout << "Podaj gatunek: n"; cin >> nowe.gatunek; cout << "Podaj rase: n"; cin >> nowe.rasa; cout << "Podaj plec: n"; cin >> nowe.plec; cout << "Podaj umaszczenie: (B - brazowy, A - bialy, C - czarny, N - niebieski) n"; char komenda; do { komenda = _getch(); komenda = toupper(komenda); } while (komenda != 'B' && komenda != 'C' && komenda != 'A' && komenda != 'N' ); switch (komenda) { case 'B': nowe.umaszczenie = Umaszczenie::brazowy; break; case 'C': nowe.umaszczenie = Umaszczenie::czarny; break; case 'A': nowe.umaszczenie = Umaszczenie::bialy; break; case 'N': nowe.umaszczenie = Umaszczenie::niebieski; break; } cout << "Podaj liczbe sztuk: n"; cin >> nowe.liczbasztuk; cout << "Podaj cene jednostkowa: n"; cin >> nowe.cenajednostkowa; cout << "Podaj date dostawy: n"; cin >> nowe.datadostawy; cout << "Podaj uwagi: n"; cin >> nowe.uwagi; baza.push_back(nowe); cin.ignore(); cout << "Wcisnij ENTER"; getchar(); } void Zobacz() { if (baza.size() != 0) { for (short j = 0; j < baza.size(); j++) { cout << "nNr zwierzecia " << j + 1 << ": " << endl; cout << "Gatunek: " << baza[j].gatunek << endl; cout << "Rasa: " << baza[j].rasa << endl; cout << "Plec: " << baza[j].plec << endl; wypisz(baza[j].umaszczenie); cout << "Liczba sztuk: " << baza[j].liczbasztuk << endl; cout << "Cena Jednostkowa: " << baza[j].cenajednostkowa << endl; cout << "Przewidywana data dostawy: " << baza[j].datadostawy << endl; cout << "Uwagi: " << baza[j].uwagi << endl; } } else cout << "Brak zwierzat"; cout << "Nacisnij ENTER"; getchar(); } void Zapisz() { ofstream plik("sklepzoo.txt", ios::out | ios::trunc); //poprzednia zawartosc zostaje usunieta //plik << baza.size() << "n"; for (short j = 0; j < baza.size(); j++) { plik << baza[j].gatunek << endl; plik << baza[j].rasa << endl; plik << baza[j].plec << endl; zapisz_do_pliku(baza[j].umaszczenie, plik); plik << baza[j].liczbasztuk << endl; plik << baza[j].cenajednostkowa << endl; plik << baza[j].datadostawy << endl; plik << baza[j].uwagi << endl; } cout << "Wcisnij ENTER"; getchar(); } void Wczytaj() { ifstream plik("sklepzoo.txt", ios::in); short j = 0; do { plik >> baza[j].gatunek; plik >> baza[j].rasa; plik >> baza[j].plec; plik >> baza[j].umaszczenie; plik >> baza[j].liczbasztuk; plik >> baza[j].cenajednostkowa; plik >> baza[j].datadostawy; plik >> baza[j].uwagi; j++; } while (!plik.eof()); cout << "Nacisnij ENTER!"; getchar(); } void Usun() { short obiekt; if (baza.size() != 0) { cout << "Podaj numer zwierzecia ktore chcesz usunac: "; cin >> obiekt; cin.ignore(); if (obiekt > baza.size()) cout << "Error"; else { baza.erase(baza.begin() + obiekt); // usunięcie elementu cout << "Zwierze o numerze " << obiekt << " zostalo usuniete"; Zapisz(); } } else { cout << "Error"; getchar(); } } void Edytuj() { int obiekt; if (baza.size() != 0) { cout << "Podaj numer zwierzecia ktore chcesz zmienic: "; cin >> obiekt; cin.ignore(); if (obiekt > baza.size()) cout << "Error"; else { //jest -1 bo zakladam ze numeracja zwierzat jest taka jak w wypisaniu. Natiomiast // tablica zaczyna sie od zera. cout << "Podaj gatunek: n"; cin >> baza[obiekt - 1].gatunek; //jest -1 bo zakladam ze numeracja zwierzat jest taka jak w wypisaniu. Natiomiast // tablica zaczyna sie od zera. cout << "Podaj rase: n";; cin >> baza[obiekt - 1].rasa; cout << "Podaj plec: n"; cin >> baza[obiekt - 1].plec; cout << "Podaj umaszczenie: n"; cin >> baza[obiekt - 1].umaszczenie; cout << "Podaj liczbe sztuk: n"; cin >> baza[obiekt - 1].liczbasztuk; cout << "Podaj cene jednostkowa: n"; cin >> baza[obiekt - 1].cenajednostkowa; cout << "Podaj przewidywana date dostawy: n"; cin >> baza[obiekt - 1].datadostawy; cout << "Podaj uwagi: n"; cin >> baza[obiekt - 1].uwagi; cout << "Sukces"; Zapisz(); } } else { cout << "Error"; getchar(); } } void ZmienDateDostawy() { int obiekt; if (baza.size() != 0) { cout << "Podaj numer zwierzecia ktorego date dostawy chcesz zmienic: "; cin >> obiekt; cin.ignore(); if (obiekt > baza.size()) cout << "Error"; else { cout << "Podaj przewidywana date dostawy: n"; cin >> baza[obiekt - 1].datadostawy; cout << "Sukces"; Zapisz(); } } } void Wyszukaj() { string g; int nr; int plec; vector wyszukane; cout << "Napisz czy chcesz wyszukiwac po gatunku (G), rasie (R) czy plci (P): "; char znak; do { znak = _getch(); znak = toupper(znak); } while (znak != 'G' && znak != 'R' && znak != 'P'); cout << znak << endl; switch (znak) { case 'G': cout << "Wyszukiwanie po gatunkun"; cout << "Podaj gatunek zwierzecian"; cin >> g; cin.ignore(); for (int j = 0; j <= baza.size(); j++) { if (g == baza[j].gatunek) wyszukane.push_back(j + 1); } cout << "Podany gatunek zwierzecia znaloziono na pozycji nr: "; for (int j = 0; j < wyszukane.size(); ++j) cout << wyszukane[j] << 't'; cout << endl; cin.ignore(); break; case 'R': cout << "Wyszukiwanie po rasien"; cout << "Podaj rase zwierzecian"; cin >> g; cin.ignore(); for (int j = 0; j <= baza.size(); j++) { if (g == baza[j].rasa) wyszukane.push_back(j + 1); } cout << "Podana rasa zwierzecia znaloziono na pozycji nr: "; for (int j = 0; j < wyszukane.size(); ++j) cout << wyszukane[j] << 't'; cout << endl; cin.ignore(); break; case 'P': cout << "Wyszukiwanie po plcin"; cout << "Wpisz M dla samca lub F dla samicy: "; do { znak = _getch(); znak = toupper(znak); } while (znak != 'M' && znak != 'F'); // 0 - samce, 1 - samice if (znak == 'M') plec = 0; else plec = 1; } }