Бібліотечна система
Бібліотечна система для управління книгами
Завантаження...
Пошук...
Нічого не знайдено
Author.hpp
Див. документацію.
1// SPDX-License-Identifier: Proprietary
2// Copyright © 2025 Oleksandr Dreval. All rights reserved.
3
16#ifndef AUTHOR_HPP
17#define AUTHOR_HPP
18
19#include <iostream>
20#include <nlohmann/json.hpp>
21#include <string>
22#include <vector>
23
25#include "ftxui/component/component.hpp"
26#include "ftxui/dom/elements.hpp"
27#include "ftxui/screen/screen.hpp"
28
29class Book;
30
46class Author : public AbstractCollection {
47private:
48 // clang-format off
49 std::string m_firstName;
50 std::string m_lastName;
51 std::string m_bestBook;
52 int m_numWrittenBooks;
53 std::vector<std::string> m_authorBooks;
54 // clang-format on
55
56public:
62 static std::string trimAndReduceSpaces(std::string_view str);
63
68 Author();
69
78 Author(
79 std::string_view firstName,
80 std::string_view lastName,
81 std::string_view bestBook,
82 int numWrittenBooks);
83
88 std::string getFirstName() const noexcept { return m_firstName; }
89
94 std::string getLastName() const noexcept { return m_lastName; }
95
100 int getNumWrittenBooks() const noexcept { return m_numWrittenBooks; }
101
106 std::string getBestBook() const noexcept { return m_bestBook; }
107
117 void display() const override;
118
124 double calculateStat() const override;
125
133 bool search(const std::string& keyword) const override;
134
143 void inputFromKeyboard();
144
150 bool searchByName(const std::string& searchName) const;
151
158 static double calculateAverageBooks(const std::vector<Author>& authors);
159
165 void addBook(const std::string& bookTitle);
166
171 void setFirstName(std::string_view firstName) noexcept { m_firstName = firstName; }
172
177 void setLastName(std::string_view lastName) noexcept { m_lastName = lastName; }
178
183 void setBestBook(std::string_view bestBook) noexcept { m_bestBook = bestBook; }
184
189 void setNumWrittenBooks(int numWrittenBooks) noexcept { m_numWrittenBooks = numWrittenBooks; }
190
195 void setAuthorBooks(const std::vector<std::string>& authorBooks) noexcept {
196 m_authorBooks = authorBooks;
197 }
198
203 const std::vector<std::string>& getBooks() const noexcept { return m_authorBooks; }
204
211 friend std::ostream& operator<<(std::ostream& os, const Author& author) {
212 os << author.getFirstName() << " " << author.getLastName();
213 return os;
214 }
215
221 static void processJsonData(const nlohmann::json& item, Book& book);
222
228 const std::vector<std::string>& getAuthorBooks() const noexcept { return m_authorBooks; }
229};
230
231#endif // AUTHOR_HPP
Визначає абстрактний базовий клас для всіх колекційних об'єктів у системі
Абстрактний базовий клас, що визначає інтерфейс для роботи з колекціями
Definition AbstractCollection.hpp:30
Клас, що представляє автора книг у бібліотечній системі
Definition Author.hpp:46
static double calculateAverageBooks(const std::vector< Author > &authors)
Обчислює середню кількість книг для списку авторів
Definition Author.cpp:260
bool searchByName(const std::string &searchName) const
Шукає автора за іменем
Definition Author.cpp:237
double calculateStat() const override
Обчислює статистику автора @override.
Definition Author.cpp:127
const std::vector< std::string > & getAuthorBooks() const noexcept
Отримує список книг автора
Definition Author.hpp:228
void setBestBook(std::string_view bestBook) noexcept
Встановлює нову кращу книгу
Definition Author.hpp:183
void inputFromKeyboard()
Заповнює дані автора з консолі
Definition Author.cpp:159
void setNumWrittenBooks(int numWrittenBooks) noexcept
Встановлює кількість написаних книг
Definition Author.hpp:189
static void processJsonData(const nlohmann::json &item, Book &book)
Обробляє JSON дані для створення автора
Definition Author.cpp:298
std::string getFirstName() const noexcept
Отримує ім'я автора
Definition Author.hpp:88
void setLastName(std::string_view lastName) noexcept
Встановлює нове прізвище автора
Definition Author.hpp:177
void setFirstName(std::string_view firstName) noexcept
Встановлює нове ім'я автора
Definition Author.hpp:171
Author()
Створює об'єкт автора зі значеннями за замовчуванням
Definition Author.cpp:73
const std::vector< std::string > & getBooks() const noexcept
Отримує список книг автора
Definition Author.hpp:203
void display() const override
Виводить повну інформацію про автора у консоль @override.
Definition Author.cpp:105
int getNumWrittenBooks() const noexcept
Отримує кількість написаних книг
Definition Author.hpp:100
std::string getLastName() const noexcept
Отримує прізвище автора
Definition Author.hpp:94
std::string getBestBook() const noexcept
Отримує назву кращої книги автора
Definition Author.hpp:106
void addBook(const std::string &bookTitle)
Додає книгу до списку робіт автора
Definition Author.cpp:279
bool search(const std::string &keyword) const override
Виконує пошук за ключовим словом @override.
Definition Author.cpp:138
friend std::ostream & operator<<(std::ostream &os, const Author &author)
Виводить ім'я та прізвище автора у потік
Definition Author.hpp:211
static std::string trimAndReduceSpaces(std::string_view str)
Видаляє зайві пробіли з рядка (з початку, кінця та між словами).
Definition Author.cpp:41
void setAuthorBooks(const std::vector< std::string > &authorBooks) noexcept
Встановлює повний список книг автора
Definition Author.hpp:195
Клас, що представляє книгу в бібліотечній системі
Definition Book.hpp:46