-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path14_katalog_ksiazek.cpp
148 lines (113 loc) · 3.26 KB
/
14_katalog_ksiazek.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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <algorithm>
using namespace std;
/**********************
Klasa opisujaca ksiazke
**********************/
class ksiazka
{
public:
// enum tez trafil do definicji klasy
enum kategoriaKsiazki {powiesc, poradnik, dzieciece};
string tytul;
string autor;
kategoriaKsiazki kategoria;
float cena;
string ISBN;
unsigned int iloscWMagazynie; // nowa zmienna
// funkcja zwroci ilosc ksiazek dostepnych w magazynie
unsigned int sprawdzDostepnosc();
// funkcja zwroci true, jezeli sprzedaz sie udala
bool sprzedajKsiazke(unsigned int ilosc);
void zmienCene(float nowaCena);
};
void ksiazka::zmienCene(float nowaCena)
{
cout << "Zmieniono cene ksiazki \"" << tytul << "\". Stara cena: " << cena;
cena = nowaCena;
cout << ". Nowa cena: " << cena << "\n" ;
return;
}
unsigned int ksiazka::sprawdzDostepnosc()
{
return iloscWMagazynie;
}
bool ksiazka::sprzedajKsiazke(unsigned int ilosc)
{
if (iloscWMagazynie < ilosc)
{
cout << "Nie ma wystarczajacej ilosci egzemplarzy w magazynie!\n";
return false;
}
iloscWMagazynie -= ilosc;
cout << "Sprzedano " << ilosc << " egzemplarzy ksiazki \"" << tytul << "\".\n";
return true;
}
/**********************
Klasa opisujaca katalog
**********************/
class katalogKsiazek
{
public:
int wyszukajKsiazkePoNumerze(string numerISBN);
// Funkcja zwroci indeks, pod ktorym w naszym katalogu znajduje sie
// ksiazka z tym numerem ISBN
int wyszukajKsiazkePoTytule(string tytul);
// Funkcja zwroci indeks, pod ktorym w naszym katalogu znajduje sie
// ksiazka o tym tytule
int dodajKsiazke(ksiazka egzemplarz);
// Doda nowa ksiazke do katalogu i zwroci jej indeks
private:
static const unsigned int rozmiarKatalogu = 2;
ksiazka katalog[rozmiarKatalogu];
};
int katalogKsiazek::wyszukajKsiazkePoNumerze(string numerISBN)
{
return 0;
}
int katalogKsiazek::wyszukajKsiazkePoTytule(string tytul)
{
return 0;
}
int katalogKsiazek::dodajKsiazke(ksiazka egzemplarz)
{
unsigned int licznikKsiazek = 0;
int liczba;
while((liczba=egzemplarz.ISBN.find('-')) != -1) egzemplarz.ISBN.erase(liczba,1);
while (katalog[licznikKsiazek].ISBN != "" || licznikKsiazek >= rozmiarKatalogu - 1)
{
// chcemy dodac ksiazke na koniec tablicy
licznikKsiazek++;
}
if (licznikKsiazek >= rozmiarKatalogu - 1)
{
cout << "Brak miejsca w katalogu na nowa pozycje" << endl;
return licznikKsiazek;
}
katalog[licznikKsiazek] = egzemplarz;
cout << "Ksiazek w magazynie: " << licznikKsiazek + 1 << endl;
// cout << egzemplarz.ISBN;
return licznikKsiazek;
}
/**********************
Program glowny
**********************/
int main()
{
katalogKsiazek taniaKsiegarnia;
// Dlaczego taka nazwa: poniewaz mozemy miec duzo obiektow
// typu katalogKsiazek. A ten katalog sluzy do katalogowania
// ksiazek w ksiegarni o nazwie Tania Ksiegarnia.
ksiazka nowa = { "Alkoholik - instrukcja obslugi", "Glowacz Ewelina",
ksiazka::poradnik, 29.90, "9788362329960", 2 };
taniaKsiegarnia.dodajKsiazke(nowa);
nowa = { "Zamien chemie na jedzenie", "Julita Bator",
ksiazka::poradnik, 28.99, "97-883240-2045-4", 2 };
taniaKsiegarnia.dodajKsiazke(nowa);
string tytulSzukany = "Ania z zielonego wzgorza";
taniaKsiegarnia.wyszukajKsiazkePoTytule(tytulSzukany);
return 0;
}