#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>
#include <vector>
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<zwierze> 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<int> 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;
}
}