diff options
feat(Week07): Add solutions
1 files changed, 65 insertions, 0 deletions
| -rw-r--r-- | Week07/Exercise01/OnlineLibrary.h | 65 |
diff --git a/Week07/Exercise01/OnlineLibrary.h b/Week07/Exercise01/OnlineLibrary.h new file mode 100644 index 0000000..4121af0 --- /dev/null +++ b/Week07/Exercise01/OnlineLibrary.h @@ -0,0 +1,65 @@ +#ifndef _ONLINE_LIBRARY +#define _ONLINE_LIBRARY + +#include "Book.h" +#include "LibraryBanking.h" +#include "Transaction.h" +#include "User.h" +#include "Librarian.h" + +class OnlineLibrary { + Book* books; + unsigned booksCount; + unsigned booksAlloc; + + User* users; + unsigned usersCount; + unsigned usersAlloc; + + Librarian* librarians; + unsigned librariansCount; + unsigned librariansAlloc; + + // В методи на OnlineLibrary, тази структура се казва "TransactionConnection" + // Извън методи на OnlineLibrary, тази структура се казва "OnlineLibrary::TransactionConnection" + struct TransactionConnection { + const User* user; + const Book* book; + const Transaction* transaction; + }; + TransactionConnection* connections; + unsigned connectionsCount; + unsigned connectionsAlloc; + + void free(); + void copyFrom(const OnlineLibrary& other); + + void resizeBooks(); + void resizeUsers(); + void resizeLibrarians(); + void resizeConnections(); + +public: + OnlineLibrary(); + ~OnlineLibrary(); + OnlineLibrary(const OnlineLibrary& other); + OnlineLibrary& operator=(const OnlineLibrary& other); + OnlineLibrary(OnlineLibrary&& other); + OnlineLibrary& operator=(OnlineLibrary&& other); + + void RegisterUser(const User& user); + User* LoginUser(const String& email, const String& password); + + void RegisterLibrarian(const Librarian& librarian); + Librarian* LoginLibrarian(unsigned librarianNumber, const String& password); + + void ListBooks() const; + Book* GetBook(unsigned index); + void AddBook(const Book& book); + void PurchaseBook(const Book& book, const User& user, LibraryBanking& banking); + + void ListTransactions(const User& user) const; + void ExportTransactions(const User& user, const String& fileName) const; +}; + +#endif /* _ONLINE_LIBRARY */ |
