Newer
Older
* Funksjonene i klassen 'kunder' og deres definisjoner.
* @file kunder.cpp
* @author Abdulsamad Sheikh, Jamal Hussein & Ole Bjørn Halvorsen.
*/
#include <iostream> // cout, cin
#include <fstream> // ifstream, ofstream
#include <string> // String
#include <list> // List
#include <algorithm>
#include "LesData3.h" // Verktøykasse for innlesing
#include "enum.h"
#include "kategori.h"
#include "kategorier.h"
Kunder::~Kunder() {}
bool Kunder::finnKunde(int nr, const kjopOgSalg kOgS) {
for (const auto &val : gKunder) {
if (val->getKundeNr() == nr) {
val->plussKjopOgSalg(kOgS);
return true;
}
*Funksjonen fjerner en kunde, hvis kundenummeret deres eksisterer
*@param nr - kundenummeret som skal fjernes
*/
void Kunder::fjernKunde(int nr) {
if (nr <= 0) {
cout << "Ingen kunder har blitt slettet";
return;
}
auto temp = find_if(gKunder.begin(), gKunder.end(),
[nr](const auto &val) { return (val->getKundeNr() == nr); });
cout << "Er du sikker på at du vil slette kunden?";
skrivUtEnKunde(nr);
char tegn = lesChar("\nJ/N ?");
if (tegn == 'J') {
gKategoribase.slettTing(nr);
gKunder.erase(temp);
*En switch-løkke som lar oss velge mellom de forskjellige kommandoene
*/
void Kunder::handling() {
char valg = lesChar("Kundekommando: 'N'(y) 'A'(lle) 'S'(krivEn) eller 'F'(jern)");
int nr;
case 'S':
nr = lesInt("Kundenummer", 0, sisteNr);
skrivUtEnKunde(nr);
break;
case 'F':
nr = lesInt("Kundenummer", 0, sisteNr);
fjernKunde(nr);
void Kunder::lesFraFil() {
ifstream innfil("KUNDER.DTA");
cout << "Leser fra filen 'KUNDER.DTA'";
if (!innfil) {
cout << "Kunne ikke finne filen";
return;
}
int antKunder = 0, kundenr = 0;
innfil >> antKunder >> kundenr;
for (int i = 0; i < antKunder; ++i) {
Kunde* kundeNy = new Kunde(innfil, kundenr);
gKunder.push_back(kundeNy);
sisteNr++;
innfil >> kundenr;
* En funksjon som oppretter en ny kunde og tildeler den et nummer. Nummeret er er et tall hæyere enn siste nummer.
* Kundens data leses og sorteres inn i datastrukturen.
*
* @see Kunde::Kunde(int nr)
* @see Kunde::lesData()
*/
Kunde* kundeNy = new Kunde(sisteNr);
kundeNy->lesData();
gKunder.push_back(kundeNy);
sisteNr++;
*En funksjon som skriver ut alle kunder sammen med deres detaljer
*@see Kunde::skrivData
*/
void Kunder::skrivUtKunder() const {
int i = 0;
cout << "\nSiste kundenummer: " << sisteNr
<< "\nTotalt antall kunder: " << gKunder.size();
for (const auto &val : gKunder) {
val->skrivData();
i++;
if (i % 20 == 0) {
cout << "\tSkriv hva som helst for neste...";
getchar();
*En funksjon som skriver ut en kundes data/detaljer
*@param nr - kundenummeret som skal skrives ut
*@see Kunde::getKundeNr()
*@see Kunde::skrivDetaljer()
*/
void Kunder::skrivUtEnKunde(int nr) const {
if (gKunder.size() > 0) {
for (const auto &val : gKunder) {
int temp = val->Kunde::getKundeNr();
if (nr == temp) {
val->Kunde::skrivDetaljer();
}
}
} else {
cout << "Ingen registrerte kunder";
*En funksjon som skriver datamedlemmene til klassenn til filen KUNDER.DTA.
*@see Kunde::skrivTilFil
*/
void Kunder::skrivTilFil() {
ofstream utfil("KUNDER.DTA");
cout << "Skriver til filen 'KUNDER.DTA'";
utfil << gKunder.size() << "\n";
for (const auto &val : gKunder) {
val->skrivTilFil(utfil);
}
utfil << sisteNr;