Skip to content
Snippets Groups Projects
kunder.cpp 1.68 KiB
Newer Older
#include "Kunder.h"

Kunder::Kunder() : sisteNr(0) {}

void Kunder::leggTilKunde(Kunde* kunde) {
    auto it = kunder.begin();
    while (it != kunder.end() && (*it)->getKundeNr() < kunde->getKundeNr()) {
        ++it;
    }
    kunder.insert(it, kunde);
}

void Kunder::skrivUtKunder() {
Abdulsamad Sheikh's avatar
Abdulsamad Sheikh committed
    int antallKunder = kunder.size();
    int sisteKundeNr = antallKunder > 0 ? kunder.back()->getKundeNr() : 0;
    char valg ;
    std::cout << "Siste kundenummer brukt: " << sisteKundeNr << std::endl;
    std::cout << "Antall kunder: " << antallKunder << std::endl;
    std::cout << "Kunder:\n";
Abdulsamad Sheikh's avatar
Abdulsamad Sheikh committed
    bool visNeste = true;
    for (int i = 0; i < antallKunder && visNeste; i++) {
        kunder[i]->skrivData();
        if ((i + 1) % 20 == 0) {
            valg = lesChar("Vil du se de neste kundene?");
            if (valg == 'N') {
                visNeste = false;
                antallKunder = i + 1; // set antallKunder to the current index
            }
        }
    }
}

Kunde* Kunder::finnKunde(int kundeNr) {
    for (auto kunde : kunder) {
        if (kunde->getKundeNr() == kundeNr) {
            return kunde;
        }
    }
    return nullptr;
}

bool Kunder::fjernKunde(int kundeNr) {
    for (auto it = kunder.begin(); it != kunder.end(); ++it) {
        if ((*it)->getKundeNr() == kundeNr) {
            delete *it;
            kunder.erase(it);
            return true;
        }
    }
    return false;
}

Kunder::~Kunder() {
    for (auto kunde : kunder) {
        delete kunde;
    }
}
Abdulsamad Sheikh's avatar
Abdulsamad Sheikh committed

void Kunder::opprettNyKunde() {
    Kunde* nyKunde = new Kunde();
    nyKunde->lesData();
    int nyttKundeNr = sisteNr + 1;
    nyKunde->setKundeNr(nyttKundeNr);
    leggTilKunde(nyKunde);
    sisteNr = nyttKundeNr;
}