-
Notifications
You must be signed in to change notification settings - Fork 0
/
kunde.cpp
168 lines (146 loc) · 4.11 KB
/
kunde.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/**
* Innmat til funksjonene i klassen Kunde
*
* @file kunde.cpp
* @author Mathilde, Oliver og Ulrik, NTNU
*/
#include "kunde.h"
#include "LesData3.h"
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
/**
* Kunde constructor hvor nytt objekt av classen initieres med et unikt
* kundenummer
*
* @param kNr - kundens unike nummer
*/
Kunde::Kunde(int kNr){
kundeNr = kNr;
antallTilSalgs = antallTingKjopt = antallTingSolgt = 0;
}
/**
* Leser data om kunde fra fil. Dataen leses fra post på følgende format:
* (kundens nummer) antallTilSalgs antallTingKjopt antallTingSolgt mobilnummer postnummer
* navn
* gateadresse
* poststed
* mailadresse
*
* @param inn - Original filstrøm som dataen leses fra
*/
void Kunde::lesFraFil(ifstream & inn){
//Initierer midlertidige/lokale variable for å indikere datatype
int antSalgs, antKjopt, antSolgt, mobilNr, postNr;
string nvn, gateAddr, postStd, epostAddr;
//Leser data av typen int
inn >> antSalgs; inn.ignore(1);
inn >> antKjopt; inn.ignore(1);
inn >> antSolgt; inn.ignore(1);
inn >> mobilNr; inn.ignore(1);
inn >> postNr; inn.ignore();
//Leser alle strings
getline(inn, nvn);
getline(inn, gateAddr);
getline(inn, postStd);
getline(inn, epostAddr);
antallTilSalgs = antSalgs;
antallTingKjopt = antKjopt;
antallTingSolgt = antSolgt;
mobilnummer = mobilNr;
postnummer = postNr;
navn = nvn;
gateadresse = gateAddr;
poststed = postStd;
mailadresse = epostAddr;
}
/**
* Skriver data til vilkårllig kunde til fil på formatet (posten):
* antallTilSalgs antallTingKjopt antallTingSolgt mobilnummer postnummer
* navn
* gateadresse
* poststed
* mailadresse
*
* @param ut - Original filstrøm som data skrives til
*/
void Kunde::skrivTilFil(std::ofstream & ut){
ut << kundeNr << " "
<< antallTilSalgs << " " << antallTingKjopt << " " << antallTingSolgt
<< " " << mobilnummer << " " << postnummer << "\n"
<< navn << "\n" << gateadresse << "\n" << poststed << "\n" << mailadresse
<< "\n";
}
/**
* Leser data for opprettelse av ny kunde
*/
void Kunde::lesData(){
cout << "\n\tNavn p\x8F kunde:"; getline(cin, navn);
mobilnummer = lesInt("\tKundens mobilnummer", 11111111, 99999999);
cout << "\tE-post adresse:"; getline(cin, mailadresse);
cout << "\tGateadresse (gatenavn og husnummer):";
getline(cin, gateadresse);
postnummer = lesInt("\tPostnummer", 0, 9999);
cout << "\tPoststed:"; getline(cin, poststed);
}
/**
* Skriver kundens ID-nummer (kundeNr), navn og mobilnummer ut på skjermen på
* én linje
*/
void Kunde::skrivData(){
cout << kundeNr << right << setw(10) << navn << right << setw(10) << mobilnummer << endl;
}
/**
* Skriver ut all data til en vilkårlig kunde
*
* @see Kunde::skrivData()
*/
void Kunde::skrivAllData(){
Kunde::skrivData();
cout << "\n\t" << "E-post: " << mailadresse
<< "\n\t" << "Adresse: " << gateadresse << ", " << postnummer
<< "\n\t" << "Poststed: " << poststed
<< "\n\t" << "Antall kjopt: " << setw(6) << left << antallTingKjopt
<< "\n\t" << "Antall solgt: " << setw(6) << left << antallTingSolgt
<< "\n\t" << "Antall til salgs: " << setw(6) << left << antallTilSalgs
<< endl;
}
/**
* Ser om det eksisterer en kunde med et vilkårlig kundenummer
*
* @param kNr - Vilkårlig kundenummer
* @return true/false - true dersom det er treff, false hvis ikke
*/
bool Kunde::finnKunde(int kNr){
if(kNr == kundeNr){
return true;
} else {
return false;
}
}
/**
* Øker antallet kunden har kjøpt
*/
void Kunde::kjop(){
antallTingKjopt++;
}
/**
* Minker antallet ting kunden har til salgs og øker antall ting solgt
*/
void Kunde::salg(){
antallTingSolgt++;
}
/**
* Dersom det har gått tomt for antall av en vilkårlig ting, så minkes antall til salgs
*/
void Kunde::minkAntallTilSalgs(){
antallTilSalgs--;
}
/**
* Dersom en kunde oppretter ny ting, så øker antallet for ting til salgs
*/
void Kunde::okAntallTilSalgs(){
antallTilSalgs++;
}