Professional Documents
Culture Documents
Oop Vet I Vozilo
Oop Vet I Vozilo
ŽIVOTINJA CPP
#include "Zivotinja.h"
#include <iostream>
int Zivotinja::brojZivotinja = 0;
void Zivotinja::setGodine(int g) {
godine = g;
}
void Zivotinja::setTezina(double t) {
tezina = t;
}
void Zivotinja::setVakcinisan(bool v) {
vakcinisan = v;
}
void Zivotinja::setSpol(Spol s) {
spol = s;
}
int Zivotinja::vratiBrojZivotinja() {
return brojZivotinja;
}
return in;
}
ŽIVOTINJA.H
#pragma once
#include <string>
class Zivotinja {
protected:
std::string ime;
int godine;
double tezina;
bool vakcinisan;
public:
enum class Spol { Muzjak, Zenka };
Zivotinja() = default;
protected:
Spol spol;
};
PAS CPP
#include "Pas.h"
#include <iostream>
Pas::Pas(const std::string& r, const std::string zP, const std::string& i, int g, double t, bool v, Spol s) :
Zivotinja(i, g, t, v, s), rasa(r), zemljaPorijekla(zP){
}
return unos;
}
PAS.H
#pragma once
#include "Zivotinja.h"
#include <vector>
public:
Pas() = default;
Pas(const std::string& r, const std::string zP, const std::string& i, int g, double t, bool v, Spol s);
KONJ CPP
#include "Konj.h"
#include <iostream>
Konj::Konj(const std::string& sv, const std::string& i, int g, double t, bool v, Spol s):
Zivotinja(i, g, t, v, s), svrha(sv) {brojZivotinja++;}
return unos;
}
KONJ.H
#pragma once
#include "Zivotinja.h"
public:
Konj() = default;
Konj(const std::string& sv, const std::string& i, int g, double t, bool v, Spol s);
};
#include "VeterinarskaStanica.h"
#include "VeterinarskaStanica.h"
#include <memory>
#include <fstream>
#include <iostream>
VeterinarskaStanica::VeterinarskaStanica(){
ucitaj();
}
void VeterinarskaStanica::ucitaj() {
auto pas = new Pas();
auto konj = new Konj();
std::string provjera, tekst;
std::ifstream ispis("zivotinja.txt");
if (ispis.is_open()) {
while (!ispis.eof()) {
ispis >> provjera;
if (provjera == "Vrsta:") {
ispis >> provjera;
if (provjera == "Pas") {
ispis >> provjera;
if (provjera == "Ime:") {
tekst = "";
do {
ispis >> provjera;
if (provjera != "Godine:") {
tekst += provjera;
}
} while (provjera != "Godine:");
pas->setIme(tekst);
}
if (provjera == "Godine:") {
ispis >> provjera;
pas->setGodine(stoi(provjera));
}
if (provjera == "Tezina:") {
ispis >> provjera;
pas->setTezina(stod(provjera));
}
if (provjera == "Vakcinisana:") {
ispis >> provjera;
if (provjera == "da") pas->setVakcinisan(true);
else pas->setVakcinisan(false);
}
if (provjera == "Spol:") {
ispis >> provjera;
if (provjera == "Z") pas->setSpol(Zivotinja::Spol::Zenka);
else pas->setSpol(Zivotinja::Spol::Muzjak);
}
if (provjera == "Rasa:") {
ispis >> provjera;
tekst = "";
do {
ispis >> provjera;
if (provjera != "ZP:") {
tekst += provjera;
}
} while (provjera != "ZP:");
pas->setRasa(tekst);
}
if (provjera == "ZP:") {
ispis >> provjera;
tekst = "";
do {
ispis >> provjera;
if (provjera != "Vrsta:") {
tekst += provjera;
}
} while (provjera != "Vrsta:");
pas->setZP(tekst);
zivotinja.push_back(pas);
}
}
else if (provjera == "Konj") {
ispis >> provjera;
if (provjera == "Ime:") {
tekst = "";
do {
ispis >> provjera;
if (provjera != "Godine:") {
tekst += provjera;
}
} while (provjera != "Godine:");
konj->setIme(tekst);
}
if (provjera == "Godine:") {
ispis >> provjera;
pas->setGodine(stoi(provjera));
}
if (provjera == "Tezina:") {
ispis >> provjera;
konj->setTezina(stod(provjera));
}
if (provjera == "Vakcinisana:") {
ispis >> provjera;
if (provjera == "da") konj->setVakcinisan(true);
else konj->setVakcinisan(false);
}
if (provjera == "Spol:") {
ispis >> provjera;
if (provjera == "Z") konj->setSpol(Zivotinja::Spol::Zenka);
else konj->setSpol(Zivotinja::Spol::Muzjak);
}
if (provjera == "Svrha:") {
ispis >> provjera;
tekst = "";
do {
ispis >> provjera;
if (provjera != "Vrsta:") {
tekst += provjera;
}
} while (provjera != "Vrsta:");
konj->setSvrha(tekst);
zivotinja.push_back(konj);
}
}
}
}
ispis.close();
}
else {
std::cout << "\nDatoteka ne postoji";
}
}
void VeterinarskaStanica::dodajPsa(const std::string r, const std::string zP, const std::string& i, int g, double t, bool v,
Zivotinja::Spol s) {
auto temp = new Pas();
temp->setIme(i);
temp->setGodine(g);
temp->setTezina(t);
temp->setVakcinisan(v);
temp->setSpol(s);
temp->setRasa(r);
temp->setZP(zP);
zivotinja.push_back(temp);
}
void VeterinarskaStanica::dodajKonj(const std::string& sv, const std::string& i, int g, double t, bool v, Zivotinja::Spol s){
auto temp = new Konj();
temp->setIme(i);
temp->setGodine(g);
temp->setTezina(t);
temp->setVakcinisan(v);
temp->setSpol(s);
temp->setSvrha(sv);
zivotinja.push_back(temp);
}
std::vector<Zivotinja*>& VeterinarskaStanica::vakcinisaneZ(){
std::vector<Zivotinja*>animal;
for (const auto& z : zivotinja) {
if (z->getVakcinisan()) {
animal.push_back(z);
}
}
return animal;
}
std::vector<Zivotinja*>& VeterinarskaStanica::PasM(){
std::vector<Zivotinja*>animal;
std::cout << "\nUnesite trazenu rasu: \n";
std::string r;
std::cin >> r;
for (const auto& z : zivotinja) {
if (z->ima(r)){
animal.push_back(z);
}
}
return animal;
}
std::vector<Zivotinja*>& VeterinarskaStanica::Konjo() {
std::vector<Zivotinja*>animal;
std::cout << "\nUnesite zeljenu svrhu: \n";
std::string r;
std::getline(std::cin, r);
for (const auto& z : zivotinja) {
if (z->ima(r)) {
animal.push_back(z);
}
}
return animal;
}
VETERINARSKA STAMICA H
#pragma once
#include "Konj.h"
#include "Pas.h"
#include <vector>
class VeterinarskaStanica {
std::vector<Zivotinja*>zivotinja;
public:
VeterinarskaStanica();
void ucitaj();
void dodajPsa(const std::string r, const std::string zP, const std::string& i, int g, double t, bool v, Zivotinja::Spol
s);
void dodajKonj(const std::string& sv, const std::string& i, int g, double t, bool v, Zivotinja::Spol s);
std::vector<Zivotinja*>& vakcinisaneZ();
std::vector<Zivotinja*>& PasM();
std::vector<Zivotinja*>& Konjo();
inline ~VeterinarskaStanica() {
for (const auto& s : zivotinja) {
delete s;
}
}
};
MAIN CPP
#include <iostream>
#include "VeterinarskaStanica.h"
int main(){
VeterinarskaStanica vets;
vets.ucitaj();
int broj;
do {
std::cout << "1 - Unos psa" << std::endl;
std::cout << "2 - Unos konja" << std::endl;
std::cout << "3 - Ispis vakcinisanih zivotinja" << std::endl;
std::cout << "4 - Ispis najstarije zivotinje" << std::endl;
std::cout << "5 - Pretraga po rasi" << std::endl;
std::cout << "6 - Pretraga po vrsti" << std::endl;
std::cout << "7 - Kraj" << std::endl;
do {
std::cout << "Izbor: ";
std::cin >> broj;
} while (broj < 0 || broj > 6);
switch (broj) {
case 1: {
std::cout << "\nUnos psa\n";
std::cout << "Ime: ";
std::string ime;
std::cin >> ime;
std::cin.ignore();
}
case 6: {
std::cout << "\nPretraga konja po vrsti:\n";
std::vector<Zivotinja*> psic = vets.Konjo();
if (psic.empty()) {
std::cout << "\nNema konja te vrste\n";
break;
}
std::cout << "\nKonji: \n";
for (const auto& ziv : psic) ziv->ispis(std::cout);
break;
}
case 0: {
std::cout << "\nKraj programa";
}
default:
break;
}
VOZILO.H
#ifndef OOP_PRIPREMA2_VOZILO_H
#define OOP_PRIPREMA2_VOZILO_H
#include <string>
class Vozilo {
protected:
int godinaProizvodnje, brojTockova;
std::string proizvodjac;
public:
Vozilo() = default;
static int trenutnaGodina();
[[nodiscard]] int getGodinaProizvodnje() const;
void setGodinaProizvodnje(int godinaProizvodnje);
[[nodiscard]] int getBrojTockova() const;
void setBrojTockova(int brojTockova);
[[nodiscard]] const std::string& getProizvodjac() const;
void setProizvodjac(const std::string& proizvodjac);
virtual void ispis(std::ostream& out) const;
[[nodiscard]] virtual bool oldTimer() const = 0;
virtual ~Vozilo() = default;
};
#endif
VOZILO.CPP
#include "Vozilo.h"
#include <iostream>
#include <ctime>
int Vozilo::trenutnaGodina() {
const time_t time = std::time(nullptr);
struct tm *tm = std::localtime(&time);
return tm->tm_year + 1900;
}
AUTOMOBIL.H
#ifndef OOP_PRIPREMA2_AUTOMOBIL_H
#define OOP_PRIPREMA2_AUTOMOBIL_H
#include "Vozilo.h"
#endif
AUTOMOBIL.CPP
#include "Automobil.h"
#include <iostream>
MOTOR.H
#ifndef OOP_PRIPREMA2_MOTOR_H
#define OOP_PRIPREMA2_MOTOR_H
#include "Vozilo.h"
#endif
MOTOR.CPP
#include "Motor.h"
#include <iostream>
KONTEJNER.H
#ifndef OOP_PRIPREMA2_KONTEJNER_H
#define OOP_PRIPREMA2_KONTEJNER_H
#include <vector>
#include <stdexcept>
#include "Vozilo.h"
#include "Automobil.h"
class Kontejner {
std::vector<Vozilo*> vozila;
public:
Kontejner() = default;
[[nodiscard]] inline size_t operator!() {
return vozila.size();
}
[[nodiscard]] inline Vozilo* operator[](int index) const {
/*if (index < 0 || index >= vozila.size())
throw std::invalid_argument("Neispravan indeks");
return vozila[index];*/
return vozila.at(index);
}
void dodajAutomobil(const std::string& marka, const std::string& tip, Automobil::Gorivo gorivo, int brojTockova, int
godinaProizvodnje, const std::string& proizvodjac);
void dodajMotor(int brojTockova, int godinaProizvodnje, const std::string& proizvodjac, int brojKubika);
[[nodiscard]] inline std::vector<Vozilo*> sviOldTajmeri() const {
std::vector<Vozilo*> pomocniVektor;
for (const auto& vozilo : vozila)
if (vozilo->oldTimer()) pomocniVektor.push_back(vozilo);
return pomocniVektor;
}
inline ~Kontejner() {
for (const auto& vozilo : vozila) delete vozilo;
}
};
#endif
KONTEJNER.CPP
#include "Kontejner.h"
#include "Motor.h"
void
Kontejner::dodajAutomobil(const std::string &marka, const std::string &tip, Automobil::Gorivo gorivo, int brojTockova,
int godinaProizvodnje, const std::string &proizvodjac) {
auto* automobil = new Automobil();
automobil->setMarka(marka);
automobil->setTip(tip);
automobil->setGorivo(gorivo);
automobil->setBrojTockova(brojTockova);
automobil->setGodinaProizvodnje(godinaProizvodnje);
automobil->setProizvodjac(proizvodjac);
vozila.push_back(automobil);
}
void Kontejner::dodajMotor(int brojTockova, int godinaProizvodnje, const std::string &proizvodjac, int brojKubika) {
auto* motor = new Motor();
motor->setBrojKubika(brojKubika);
motor->setBrojTockova(brojTockova);
motor->setGodinaProizvodnje(godinaProizvodnje);
motor->setProizvodjac(proizvodjac);
vozila.push_back(motor);
}
MAIN.CPP
#include <iostream>
#include "Kontejner.h"
int main() {
Kontejner kontejner;
int izbor;
while ((izbor = meni())) {
std::cin.ignore();
switch (izbor) {
case 1: {
std::cout << "Unesite marku automobila: ";
std::string marka;
std::getline(std::cin, marka);
int gorivoIndex;
std::cout << "Unesite tip goriva automobila (0 - DIZEL, 1 - BENZIN, 2 ELEKTRICNO VOZILO): ";
do {
std::cin >> gorivoIndex;
} while (gorivoIndex < 0 || gorivoIndex > 2);
Automobil::Gorivo gorivo;
switch (gorivoIndex) {
case 0: gorivo = Automobil::Gorivo::DIZEL; break;
case 1: gorivo = Automobil::Gorivo::BENZIN; break;
case 2: gorivo = Automobil::Gorivo::ELEKTRICNO_VOZILO; break;
default: gorivo = Automobil::Gorivo::DIZEL; break;
}