From 3569b17e593595f8e640e593269e8cc57d70f889 Mon Sep 17 00:00:00 2001 From: Dmortald Date: Sun, 19 Jan 2025 02:14:20 -1100 Subject: [PATCH] My changes --- .vscode/c_cpp_properties.json | 18 + .vscode/launch.json | 24 + .vscode/settings.json | 59 +++ .../ProjectCpp/.vscode/c_cpp_properties.json | 18 + Project/ProjectCpp/.vscode/launch.json | 24 + Project/ProjectCpp/.vscode/settings.json | 59 +++ Project/ProjectCpp/Patron.cpp | 30 ++ Project/ProjectCpp/a.exe | Bin 0 -> 272681 bytes Project/ProjectCpp/book.cpp | 24 + Project/ProjectCpp/book.h | 28 ++ Project/ProjectCpp/book_item.cpp | 34 ++ Project/ProjectCpp/book_item.h | 31 ++ Project/ProjectCpp/library.cpp | 131 +++++ Project/ProjectCpp/library.h | 48 ++ Project/ProjectCpp/library_item.cpp | 47 ++ Project/ProjectCpp/library_item.h | 34 ++ Project/ProjectCpp/main_library_test.cpp | 44 ++ Project/ProjectCpp/patron.h | 31 ++ Project/ProjectCpp/patron_record.cpp | 41 ++ Project/ProjectCpp/patron_record.h | 32 ++ Project/ProjectCpp/project_Answer.cpp | 475 ++++++++++++++++++ 21 files changed, 1232 insertions(+) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 Project/ProjectCpp/.vscode/c_cpp_properties.json create mode 100644 Project/ProjectCpp/.vscode/launch.json create mode 100644 Project/ProjectCpp/.vscode/settings.json create mode 100644 Project/ProjectCpp/Patron.cpp create mode 100644 Project/ProjectCpp/a.exe create mode 100644 Project/ProjectCpp/book.cpp create mode 100644 Project/ProjectCpp/book.h create mode 100644 Project/ProjectCpp/book_item.cpp create mode 100644 Project/ProjectCpp/book_item.h create mode 100644 Project/ProjectCpp/library.cpp create mode 100644 Project/ProjectCpp/library.h create mode 100644 Project/ProjectCpp/library_item.cpp create mode 100644 Project/ProjectCpp/library_item.h create mode 100644 Project/ProjectCpp/main_library_test.cpp create mode 100644 Project/ProjectCpp/patron.h create mode 100644 Project/ProjectCpp/patron_record.cpp create mode 100644 Project/ProjectCpp/patron_record.h create mode 100644 Project/ProjectCpp/project_Answer.cpp diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..a3d4300 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "windows-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "C:/msys64/ucrt64/bin/gcc.exe", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "windows-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..4663a2b --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": true, + "cwd": "c:/Users/DMortal/OOP_Project_Muhammad_Awwal/Project/ProjectCpp", + "program": "c:/Users/DMortal/OOP_Project_Muhammad_Awwal/Project/ProjectCpp/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..bb879da --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/Project/ProjectCpp/.vscode/c_cpp_properties.json b/Project/ProjectCpp/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..a3d4300 --- /dev/null +++ b/Project/ProjectCpp/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "windows-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "C:/msys64/ucrt64/bin/gcc.exe", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "windows-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/Project/ProjectCpp/.vscode/launch.json b/Project/ProjectCpp/.vscode/launch.json new file mode 100644 index 0000000..5221309 --- /dev/null +++ b/Project/ProjectCpp/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": true, + "cwd": "c:/Users/DMortal/ProjectCpp", + "program": "c:/Users/DMortal/ProjectCpp/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/Project/ProjectCpp/.vscode/settings.json b/Project/ProjectCpp/.vscode/settings.json new file mode 100644 index 0000000..bb879da --- /dev/null +++ b/Project/ProjectCpp/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/Project/ProjectCpp/Patron.cpp b/Project/ProjectCpp/Patron.cpp new file mode 100644 index 0000000..cccf506 --- /dev/null +++ b/Project/ProjectCpp/Patron.cpp @@ -0,0 +1,30 @@ +// Source: patron.cpp +#include "patron.h" + +// Constructor implementation +Patron::Patron(const std::string& name, const std::string& libraryCardNumber) + : name(name), libraryCardNumber(libraryCardNumber) {} + +// Getter for the patron's name +std::string Patron::getName() const { return name; } + +// Getter for the library card number +std::string Patron::getLibraryCardNumber() const { return libraryCardNumber; } + +// Setter for the patron's name +void Patron::setName(const std::string& name) { this->name = name; } + +// Setter for the library card number +void Patron::setLibraryCardNumber(const std::string& libraryCardNumber) { + this->libraryCardNumber = libraryCardNumber; +} + +// Placeholder for updating contact information +void Patron::updateContactInfo(const std::string& newContactInfo) { + // Logic for updating contact information can be added here +} + +// Checks if the patron can borrow more books +bool Patron::canBorrowMoreBooks(int currentBorrowedCount, int maxLimit) const { + return currentBorrowedCount < maxLimit; +} \ No newline at end of file diff --git a/Project/ProjectCpp/a.exe b/Project/ProjectCpp/a.exe new file mode 100644 index 0000000000000000000000000000000000000000..277cd0afd3d2a2067cbc25891bd9f128a26b42c5 GIT binary patch literal 272681 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�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 )BD!R3au+= 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 = title; } + +// Setter for the author's name +void Book::setAuthor(const std::string& author) { this->author = author; } + +// Setter for the ISBN +void Book::setISBN(const std::string& isbn) { this->isbn = isbn; } \ No newline at end of file diff --git a/Project/ProjectCpp/book.h b/Project/ProjectCpp/book.h new file mode 100644 index 0000000..2f52414 --- /dev/null +++ b/Project/ProjectCpp/book.h @@ -0,0 +1,28 @@ +// Header: book.h +#ifndef BOOK_H +#define BOOK_H + +#include + +class Book { +private: + std::string title; // Stores the title of the book + std::string author; // Stores the author's name + std::string isbn; // Stores the unique ISBN of the book + +public: + // Constructor to initialize the book's attributes + Book(const std::string& title, const std::string& author, const std::string& isbn); + + // Getters to retrieve book attributes + std::string getTitle() const; + std::string getAuthor() const; + std::string getISBN() const; + + // Setters to modify book attributes + void setTitle(const std::string& title); + void setAuthor(const std::string& author); + void setISBN(const std::string& isbn); +}; + +#endif // BOOK_H \ No newline at end of file diff --git a/Project/ProjectCpp/book_item.cpp b/Project/ProjectCpp/book_item.cpp new file mode 100644 index 0000000..571ba36 --- /dev/null +++ b/Project/ProjectCpp/book_item.cpp @@ -0,0 +1,34 @@ +// Source: book_item.cpp +#include "book_item.h" +#include + +// Constructor implementation +BookItem::BookItem(const std::string& title, const std::string& author, const std::string& isbn) + : LibraryItem(title), author(author), isbn(isbn) {} + +// Getter for the author's name +std::string BookItem::getAuthor() const { return author; } + +// Getter for the ISBN +std::string BookItem::getISBN() const { return isbn; } + +// Setter for the author's name +void BookItem::setAuthor(const std::string& author) { this->author = author; } + +// Setter for the ISBN +void BookItem::setISBN(const std::string& isbn) { this->isbn = isbn; } + +// Prints all details of the book, including availability status +void BookItem::printDetails() const { + std::cout << "Title: " << getTitle() << "\n" + << "Author: " << author << "\n" + << "ISBN: " << isbn << "\n" + << "Checked Out: " << (getIsCheckedOut() ? "Yes" : "No") << "\n" + << "Due Date: " << getDueDate() << "\n"; +} + +// Calculates the late fees for overdue books +double BookItem::calculateLateFees(int daysOverdue) const { + const double feePerDay = 0.5; // Fee rate per day + return daysOverdue * feePerDay; +} \ No newline at end of file diff --git a/Project/ProjectCpp/book_item.h b/Project/ProjectCpp/book_item.h new file mode 100644 index 0000000..3ac5dbc --- /dev/null +++ b/Project/ProjectCpp/book_item.h @@ -0,0 +1,31 @@ +// Header: book_item.h +#ifndef BOOK_ITEM_H +#define BOOK_ITEM_H + +#include "library_item.h" + +class BookItem : public LibraryItem { +private: + std::string author; // Author of the book + std::string isbn; // ISBN of the book + +public: + // Constructor to initialize book-specific details + BookItem(const std::string& title, const std::string& author, const std::string& isbn); + + // Getters for book-specific details + std::string getAuthor() const; + std::string getISBN() const; + + // Setters for book-specific details + void setAuthor(const std::string& author); + void setISBN(const std::string& isbn); + + // Prints details of the book + void printDetails() const; + + // Calculates late fees based on the number of overdue days + double calculateLateFees(int daysOverdue) const; +}; + +#endif // BOOK_ITEM_H \ No newline at end of file diff --git a/Project/ProjectCpp/library.cpp b/Project/ProjectCpp/library.cpp new file mode 100644 index 0000000..c1ef9dc --- /dev/null +++ b/Project/ProjectCpp/library.cpp @@ -0,0 +1,131 @@ +// Source: library.cpp +#include "library.h" +#include +#include + +// Adds a book to the library's collection +void Library::addBook(const BookItem& book) { + books.push_back(book); +} + +// Registers a new patron and initializes their record +void Library::addPatron(const Patron& patron) { + patrons.push_back(patron); + patronRecords.emplace_back(); +} + +// Allows a patron to borrow a book if available +void Library::borrowBook(const std::string& isbn, const std::string& patronCardNumber) { + // Find the book by ISBN and check availability + auto bookIt = std::find_if(books.begin(), books.end(), + [&isbn](const BookItem& book) { return book.getISBN() == isbn && !book.getIsCheckedOut(); }); + + if (bookIt == books.end()) { + std::cout << "Book not available for borrowing.\n"; + return; + } + + // Find the patron by library card number + auto patronIt = std::find_if(patrons.begin(), patrons.end(), + [&patronCardNumber](const Patron& patron) { return patron.getLibraryCardNumber() == patronCardNumber; }); + + if (patronIt == patrons.end()) { + std::cout << "Patron not found.\n"; + return; + } + + // Borrow the book and update the patron's record + int patronIndex = std::distance(patrons.begin(), patronIt); + bookIt->checkOut("2025-01-18"); // Example due date + patronRecords[patronIndex].addBook(*bookIt); + std::cout << "Book borrowed successfully.\n"; +} + +// Processes the return of a borrowed book +void Library::returnBook(const std::string& isbn, const std::string& patronCardNumber) { + // Find the patron by library card number + auto patronIt = std::find_if(patrons.begin(), patrons.end(), + [&patronCardNumber](const Patron& patron) { return patron.getLibraryCardNumber() == patronCardNumber; }); + + if (patronIt == patrons.end()) { + std::cout << "Patron not found.\n"; + return; + } + + // Remove the book from the patron's record + int patronIndex = std::distance(patrons.begin(), patronIt); + patronRecords[patronIndex].removeBook(isbn); + + // Mark the book as returned in the library's collection + auto bookIt = std::find_if(books.begin(), books.end(), + [&isbn](const BookItem& book) { return book.getISBN() == isbn; }); + + if (bookIt != books.end()) { + bookIt->returnItem(); + std::cout << "Book returned successfully.\n"; + } +} + +// Lists all books in the library +void Library::listBooks() const { + std::cout << "Library Books:\n"; + for (const auto& book : books) { + std::cout << "Title: " << book.getTitle() + << ", Author: " << book.getAuthor() + << ", ISBN: " << book.getISBN() + << ", Checked Out: " << (book.getIsCheckedOut() ? "Yes" : "No") + << "\n"; + } +} + +// Lists all patrons in the library +void Library::listPatrons() const { + std::cout << "Library Patrons:\n"; + for (const auto& patron : patrons) { + std::cout << "Name: " << patron.getName() + << ", Library Card Number: " << patron.getLibraryCardNumber() + << "\n"; + } +} + +// Lists all overdue books in the library +void Library::listOverdueBooks() const { + for (const auto& book : books) { + if (book.getIsCheckedOut()) { + // Placeholder: Logic for checking overdue books + std::cout << book.getTitle() << " is overdue.\n"; + } + } +} + +// Notifies patrons with overdue books +void Library::notifyPatronsWithOverdueBooks() const { + for (size_t i = 0; i < patrons.size(); ++i) { + if (patronRecords[i].hasOverdueBooks()) { + std::cout << "Notify " << patrons[i].getName() << " about overdue books.\n"; + } + } +} + +// Generates a summary report of the library's current state +void Library::generateLibraryReport() const { + int availableBooks = std::count_if(books.begin(), books.end(), + [](const BookItem& book) { return !book.getIsCheckedOut(); }); + + std::cout << "Library Report:\n"; + std::cout << "Total Books: " << availableBooks << "\n"; + std::cout << "Total Patrons: " << patrons.size() << "\n"; +} + +// Adds default books and patrons +void Library::addDefaultData() { + // Adding books with personalization + addBook(BookItem("CPE 303 Object Oriented Programming", "Muhammad Awwal Muhammad", "20222052")); + addBook(BookItem("CPE 303 Object Oriented Programming", "Rayyan Akindele", "20221151")); + addBook(BookItem("CPE 303 Object Oriented Programming", "Tobi Opemipo Awoniyi", "20220848")); + addBook(BookItem("CPE 303 Object Oriented Programming", "Boniface Nnajiofor", "20221874")); + addBook(BookItem("CPE 303 Object Oriented Programming", "Christian Chiaha", "20220424")); + + // Adding lecturer as a patron + addPatron(Patron("Dr. Ali Emmanuel", "18012025")); +} \ No newline at end of file diff --git a/Project/ProjectCpp/library.h b/Project/ProjectCpp/library.h new file mode 100644 index 0000000..56596d9 --- /dev/null +++ b/Project/ProjectCpp/library.h @@ -0,0 +1,48 @@ +// Header: library.h +#ifndef LIBRARY_H +#define LIBRARY_H + +#include +#include "book_item.h" +#include "patron.h" +#include "patron_record.h" + +class Library { +private: + std::vector books; // Collection of all books in the library + std::vector patrons; // List of registered patrons + std::vector patronRecords; // Records of books borrowed by each patron + +public: + // Adds a book to the library's collection + void addBook(const BookItem& book); + + // Registers a new patron + void addPatron(const Patron& patron); + + // Allows a patron to borrow a book by ISBN + void borrowBook(const std::string& isbn, const std::string& patronCardNumber); + + // Processes the return of a borrowed book by ISBN + void returnBook(const std::string& isbn, const std::string& patronCardNumber); + + // Lists all books in the library + void listBooks() const; + + // Lists all patrons in the library + void listPatrons() const; + + // Lists all overdue books + void listOverdueBooks() const; + + // Notifies patrons with overdue books + void notifyPatronsWithOverdueBooks() const; + + // Generates a summary report of the library's current state + void generateLibraryReport() const; + + // Personalization: Add default books and patrons + void addDefaultData(); +}; + +#endif // LIBRARY_H \ No newline at end of file diff --git a/Project/ProjectCpp/library_item.cpp b/Project/ProjectCpp/library_item.cpp new file mode 100644 index 0000000..64fdcf2 --- /dev/null +++ b/Project/ProjectCpp/library_item.cpp @@ -0,0 +1,47 @@ +// Source: library_item.cpp +#include "library_item.h" + +// Constructor implementation +LibraryItem::LibraryItem(const std::string& title) + : title(title), isCheckedOut(false), dueDate("") {} + +// Getter for the title +std::string LibraryItem::getTitle() const { return title; } + +// Getter for the checkout status +bool LibraryItem::getIsCheckedOut() const { return isCheckedOut; } + +// Getter for the due date +std::string LibraryItem::getDueDate() const { return dueDate; } + +// Setter for the title +void LibraryItem::setTitle(const std::string& title) { this->title = title; } + +// Setter for the checkout status +void LibraryItem::setIsCheckedOut(bool status) { isCheckedOut = status; } + +// Setter for the due date +void LibraryItem::setDueDate(const std::string& dueDate) { this->dueDate = dueDate; } + +// Marks the item as checked out and sets the due date +void LibraryItem::checkOut(const std::string& dueDate) { + isCheckedOut = true; + this->dueDate = dueDate; +} + +// Marks the item as returned +void LibraryItem::returnItem() { + isCheckedOut = false; + dueDate = ""; +} + +// Placeholder for renewing the item (extending the due date) +void LibraryItem::renewItem(int extraDays) { + // Logic to extend the due date can be added here +} + +// Marks the item as lost +void LibraryItem::markAsLost() { + isCheckedOut = true; + dueDate = "Lost"; +} \ No newline at end of file diff --git a/Project/ProjectCpp/library_item.h b/Project/ProjectCpp/library_item.h new file mode 100644 index 0000000..d44fb15 --- /dev/null +++ b/Project/ProjectCpp/library_item.h @@ -0,0 +1,34 @@ +// Header: library_item.h +#ifndef LIBRARY_ITEM_H +#define LIBRARY_ITEM_H + +#include + +class LibraryItem { +private: + std::string title; // Title of the library item + bool isCheckedOut; // Status indicating if the item is checked out + std::string dueDate; // Due date for the item + +public: + // Constructor to initialize the library item + LibraryItem(const std::string& title); + + // Getters to retrieve item details + std::string getTitle() const; + bool getIsCheckedOut() const; + std::string getDueDate() const; + + // Setters to modify item details + void setTitle(const std::string& title); + void setIsCheckedOut(bool status); + void setDueDate(const std::string& dueDate); + + // Methods for library item management + void checkOut(const std::string& dueDate); + void returnItem(); + void renewItem(int extraDays); + void markAsLost(); +}; + +#endif // LIBRARY_ITEM_H \ No newline at end of file diff --git a/Project/ProjectCpp/main_library_test.cpp b/Project/ProjectCpp/main_library_test.cpp new file mode 100644 index 0000000..91c5fab --- /dev/null +++ b/Project/ProjectCpp/main_library_test.cpp @@ -0,0 +1,44 @@ +#include "library.h" +#include + +int main() { + Library library; + + // Add default books and patrons + library.addDefaultData(); + + // Display initial books and patrons + library.listBooks(); + library.listPatrons(); + + // Display the library report + library.generateLibraryReport(); + + // Borrow a book by ISBN for a patron + std::cout << "\nAttempting to borrow a book:\n"; + library.borrowBook("20222052", "18012025"); + + library.listBooks(); + + // Display updated library report + std::cout << "\nUpdated Library Report:\n"; + library.generateLibraryReport(); + + // Return a book by ISBN for a patron + std::cout << "\nAttempting to return a book:\n"; + library.returnBook("20222052", "18012025"); + + // Display the final library report + std::cout << "\nFinal Library Report:\n"; + library.generateLibraryReport(); + + // List overdue books + std::cout << "\nListing overdue books:\n"; + library.listOverdueBooks(); + + // Notify patrons with overdue books + std::cout << "\nNotifying patrons with overdue books:\n"; + library.notifyPatronsWithOverdueBooks(); + + return 0; +} diff --git a/Project/ProjectCpp/patron.h b/Project/ProjectCpp/patron.h new file mode 100644 index 0000000..e23da74 --- /dev/null +++ b/Project/ProjectCpp/patron.h @@ -0,0 +1,31 @@ +// Header: patron.h +#ifndef PATRON_H +#define PATRON_H + +#include + +class Patron { +private: + std::string name; // Patron's name + std::string libraryCardNumber; // Unique library card number for the patron + +public: + // Constructor to initialize the patron's details + Patron(const std::string& name, const std::string& libraryCardNumber); + + // Getters to retrieve patron details + std::string getName() const; + std::string getLibraryCardNumber() const; + + // Setters to modify patron details + void setName(const std::string& name); + void setLibraryCardNumber(const std::string& libraryCardNumber); + + // Method to update the patron's contact information + void updateContactInfo(const std::string& newContactInfo); + + // Checks if the patron can borrow more books based on their limit + bool canBorrowMoreBooks(int currentBorrowedCount, int maxLimit) const; +}; + +#endif // PATRON_H \ No newline at end of file diff --git a/Project/ProjectCpp/patron_record.cpp b/Project/ProjectCpp/patron_record.cpp new file mode 100644 index 0000000..703192b --- /dev/null +++ b/Project/ProjectCpp/patron_record.cpp @@ -0,0 +1,41 @@ +// Source: patron_record.cpp +#include "patron_record.h" +#include + +// Adds a book to the patron's checked-out list +void PatronRecord::addBook(const BookItem& book) { + checkedOutBooks.push_back(book); +} + +// Removes a book from the checked-out list by matching ISBN +void PatronRecord::removeBook(const std::string& isbn) { + checkedOutBooks.erase(std::remove_if(checkedOutBooks.begin(), checkedOutBooks.end(), + [&isbn](const BookItem& book) { return book.getISBN() == isbn; }), + checkedOutBooks.end()); +} + +// Returns the list of currently checked-out books +std::vector PatronRecord::listCheckedOutBooks() const { + return checkedOutBooks; +} + +// Returns the count of books currently checked out +int PatronRecord::getBorrowedBookCount() const { + return checkedOutBooks.size(); +} + +// Placeholder for checking overdue books +bool PatronRecord::hasOverdueBooks() const { + // Logic for checking overdue books can be added here + return false; +} + +// Calculates total late fees for all overdue books +double PatronRecord::calculateTotalLateFees() const { + double totalFees = 0.0; + for (const auto& book : checkedOutBooks) { + // Placeholder: Assume all books are overdue by 5 days for testing + totalFees += book.calculateLateFees(5); + } + return totalFees; +} \ No newline at end of file diff --git a/Project/ProjectCpp/patron_record.h b/Project/ProjectCpp/patron_record.h new file mode 100644 index 0000000..9080489 --- /dev/null +++ b/Project/ProjectCpp/patron_record.h @@ -0,0 +1,32 @@ +// Header: patron_record.h +#ifndef PATRON_RECORD_H +#define PATRON_RECORD_H + +#include +#include "book_item.h" + +class PatronRecord { +private: + std::vector checkedOutBooks; // List of books currently checked out by the patron + +public: + // Adds a book to the patron's record + void addBook(const BookItem& book); + + // Removes a book from the patron's record by ISBN + void removeBook(const std::string& isbn); + + // Returns a list of all books currently checked out + std::vector listCheckedOutBooks() const; + + // Returns the count of books currently borrowed + int getBorrowedBookCount() const; + + // Checks if the patron has any overdue books + bool hasOverdueBooks() const; + + // Calculates the total late fees for all overdue books + double calculateTotalLateFees() const; +}; + +#endif // PATRON_RECORD_H \ No newline at end of file diff --git a/Project/ProjectCpp/project_Answer.cpp b/Project/ProjectCpp/project_Answer.cpp new file mode 100644 index 0000000..3b3a3f1 --- /dev/null +++ b/Project/ProjectCpp/project_Answer.cpp @@ -0,0 +1,475 @@ +// // Header: book.h +// #ifndef BOOK_H +// #define BOOK_H + +// #include + +// class Book { +// private: +// std::string title; // Stores the title of the book +// std::string author; // Stores the author's name +// std::string isbn; // Stores the unique ISBN of the book + +// public: +// // Constructor to initialize the book's attributes +// Book(const std::string& title, const std::string& author, const std::string& isbn); + +// // Getters to retrieve book attributes +// std::string getTitle() const; +// std::string getAuthor() const; +// std::string getISBN() const; + +// // Setters to modify book attributes +// void setTitle(const std::string& title); +// void setAuthor(const std::string& author); +// void setISBN(const std::string& isbn); +// }; + +// #endif // BOOK_H + +// // Source: book.cpp +// #include "book.h" + +// // Constructor implementation +// Book::Book(const std::string& title, const std::string& author, const std::string& isbn) +// : title(title), author(author), isbn(isbn) {} + +// // Getter for the book title +// std::string Book::getTitle() const { return title; } + +// // Getter for the author's name +// std::string Book::getAuthor() const { return author; } + +// // Getter for the ISBN +// std::string Book::getISBN() const { return isbn; } + +// // Setter for the book title +// void Book::setTitle(const std::string& title) { this->title = title; } + +// // Setter for the author's name +// void Book::setAuthor(const std::string& author) { this->author = author; } + +// // Setter for the ISBN +// void Book::setISBN(const std::string& isbn) { this->isbn = isbn; } + +// // Header: patron.h +// #ifndef PATRON_H +// #define PATRON_H + +// #include + +// class Patron { +// private: +// std::string name; // Patron's name +// std::string libraryCardNumber; // Unique library card number for the patron + +// public: +// // Constructor to initialize the patron's details +// Patron(const std::string& name, const std::string& libraryCardNumber); + +// // Getters to retrieve patron details +// std::string getName() const; +// std::string getLibraryCardNumber() const; + +// // Setters to modify patron details +// void setName(const std::string& name); +// void setLibraryCardNumber(const std::string& libraryCardNumber); + +// // Method to update the patron's contact information +// void updateContactInfo(const std::string& newContactInfo); + +// // Checks if the patron can borrow more books based on their limit +// bool canBorrowMoreBooks(int currentBorrowedCount, int maxLimit) const; +// }; + +// #endif // PATRON_H + +// // Source: patron.cpp +// #include "patron.h" + +// // Constructor implementation +// Patron::Patron(const std::string& name, const std::string& libraryCardNumber) +// : name(name), libraryCardNumber(libraryCardNumber) {} + +// // Getter for the patron's name +// std::string Patron::getName() const { return name; } + +// // Getter for the library card number +// std::string Patron::getLibraryCardNumber() const { return libraryCardNumber; } + +// // Setter for the patron's name +// void Patron::setName(const std::string& name) { this->name = name; } + +// // Setter for the library card number +// void Patron::setLibraryCardNumber(const std::string& libraryCardNumber) { +// this->libraryCardNumber = libraryCardNumber; +// } + +// // Placeholder for updating contact information +// void Patron::updateContactInfo(const std::string& newContactInfo) { +// // Logic for updating contact information can be added here +// } + +// // Checks if the patron can borrow more books +// bool Patron::canBorrowMoreBooks(int currentBorrowedCount, int maxLimit) const { +// return currentBorrowedCount < maxLimit; +// } + +// // Header: library_item.h +// #ifndef LIBRARY_ITEM_H +// #define LIBRARY_ITEM_H + +// #include + +// class LibraryItem { +// private: +// std::string title; // Title of the library item +// bool isCheckedOut; // Status indicating if the item is checked out +// std::string dueDate; // Due date for the item + +// public: +// // Constructor to initialize the library item +// LibraryItem(const std::string& title); + +// // Getters to retrieve item details +// std::string getTitle() const; +// bool getIsCheckedOut() const; +// std::string getDueDate() const; + +// // Setters to modify item details +// void setTitle(const std::string& title); +// void setIsCheckedOut(bool status); +// void setDueDate(const std::string& dueDate); + +// // Methods for library item management +// void checkOut(const std::string& dueDate); +// void returnItem(); +// void renewItem(int extraDays); +// void markAsLost(); +// }; + +// #endif // LIBRARY_ITEM_H + +// // Source: library_item.cpp +// #include "library_item.h" + +// // Constructor implementation +// LibraryItem::LibraryItem(const std::string& title) +// : title(title), isCheckedOut(false), dueDate("") {} + +// // Getter for the title +// std::string LibraryItem::getTitle() const { return title; } + +// // Getter for the checkout status +// bool LibraryItem::getIsCheckedOut() const { return isCheckedOut; } + +// // Getter for the due date +// std::string LibraryItem::getDueDate() const { return dueDate; } + +// // Setter for the title +// void LibraryItem::setTitle(const std::string& title) { this->title = title; } + +// // Setter for the checkout status +// void LibraryItem::setIsCheckedOut(bool status) { isCheckedOut = status; } + +// // Setter for the due date +// void LibraryItem::setDueDate(const std::string& dueDate) { this->dueDate = dueDate; } + +// // Marks the item as checked out and sets the due date +// void LibraryItem::checkOut(const std::string& dueDate) { +// isCheckedOut = true; +// this->dueDate = dueDate; +// } + +// // Marks the item as returned +// void LibraryItem::returnItem() { +// isCheckedOut = false; +// dueDate = ""; +// } + +// // Placeholder for renewing the item (extending the due date) +// void LibraryItem::renewItem(int extraDays) { +// // Logic to extend the due date can be added here +// } + +// // Marks the item as lost +// void LibraryItem::markAsLost() { +// isCheckedOut = true; +// dueDate = "Lost"; +// } + +// // Header: book_item.h +// #ifndef BOOK_ITEM_H +// #define BOOK_ITEM_H + +// #include "library_item.h" + +// class BookItem : public LibraryItem { +// private: +// std::string author; // Author of the book +// std::string isbn; // ISBN of the book + +// public: +// // Constructor to initialize book-specific details +// BookItem(const std::string& title, const std::string& author, const std::string& isbn); + +// // Getters for book-specific details +// std::string getAuthor() const; +// std::string getISBN() const; + +// // Setters for book-specific details +// void setAuthor(const std::string& author); +// void setISBN(const std::string& isbn); + +// // Prints details of the book +// void printDetails() const; + +// // Calculates late fees based on the number of overdue days +// double calculateLateFees(int daysOverdue) const; +// }; + +// #endif // BOOK_ITEM_H + +// // Source: book_item.cpp +// #include "book_item.h" +// #include + +// // Constructor implementation +// BookItem::BookItem(const std::string& title, const std::string& author, const std::string& isbn) +// : LibraryItem(title), author(author), isbn(isbn) {} + +// // Getter for the author's name +// std::string BookItem::getAuthor() const { return author; } + +// // Getter for the ISBN +// std::string BookItem::getISBN() const { return isbn; } + +// // Setter for the author's name +// void BookItem::setAuthor(const std::string& author) { this->author = author; } + +// // Setter for the ISBN +// void BookItem::setISBN(const std::string& isbn) { this->isbn = isbn; } + +// // Prints all details of the book, including availability status +// void BookItem::printDetails() const { +// std::cout << "Title: " << getTitle() << "\n" +// << "Author: " << author << "\n" +// << "ISBN: " << isbn << "\n" +// << "Checked Out: " << (getIsCheckedOut() ? "Yes" : "No") << "\n" +// << "Due Date: " << getDueDate() << "\n"; +// } + +// // Calculates the late fees for overdue books +// double BookItem::calculateLateFees(int daysOverdue) const { +// const double feePerDay = 0.5; // Fee rate per day +// return daysOverdue * feePerDay; +// } + +// // Header: patron_record.h +// #ifndef PATRON_RECORD_H +// #define PATRON_RECORD_H + +// #include +// #include "book_item.h" + +// class PatronRecord { +// private: +// std::vector checkedOutBooks; // List of books currently checked out by the patron + +// public: +// // Adds a book to the patron's record +// void addBook(const BookItem& book); + +// // Removes a book from the patron's record by ISBN +// void removeBook(const std::string& isbn); + +// // Returns a list of all books currently checked out +// std::vector listCheckedOutBooks() const; + +// // Returns the count of books currently borrowed +// int getBorrowedBookCount() const; + +// // Checks if the patron has any overdue books +// bool hasOverdueBooks() const; + +// // Calculates the total late fees for all overdue books +// double calculateTotalLateFees() const; +// }; + +// #endif // PATRON_RECORD_H + +// // Source: patron_record.cpp +// #include "patron_record.h" +// #include + +// // Adds a book to the patron's checked-out list +// void PatronRecord::addBook(const BookItem& book) { +// checkedOutBooks.push_back(book); +// } + +// // Removes a book from the checked-out list by matching ISBN +// void PatronRecord::removeBook(const std::string& isbn) { +// checkedOutBooks.erase(std::remove_if(checkedOutBooks.begin(), checkedOutBooks.end(), +// [&isbn](const BookItem& book) { return book.getISBN() == isbn; }), +// checkedOutBooks.end()); +// } + +// // Returns the list of currently checked-out books +// std::vector PatronRecord::listCheckedOutBooks() const { +// return checkedOutBooks; +// } + +// // Returns the count of books currently checked out +// int PatronRecord::getBorrowedBookCount() const { +// return checkedOutBooks.size(); +// } + +// // Placeholder for checking overdue books +// bool PatronRecord::hasOverdueBooks() const { +// // Logic for checking overdue books can be added here +// return false; +// } + +// // Calculates total late fees for all overdue books +// double PatronRecord::calculateTotalLateFees() const { +// double totalFees = 0.0; +// for (const auto& book : checkedOutBooks) { +// // Placeholder: Assume all books are overdue by 5 days for testing +// totalFees += book.calculateLateFees(5); +// } +// return totalFees; +// } + +// // Header: library.h +// #ifndef LIBRARY_H +// #define LIBRARY_H + +// #include +// #include "book_item.h" +// #include "patron.h" +// #include "patron_record.h" + +// class Library { +// private: +// std::vector books; // Collection of all books in the library +// std::vector patrons; // List of registered patrons +// std::vector patronRecords; // Records of books borrowed by each patron + +// public: +// // Adds a book to the library's collection +// void addBook(const BookItem& book); + +// // Registers a new patron +// void addPatron(const Patron& patron); + +// // Allows a patron to borrow a book by ISBN +// void borrowBook(const std::string& isbn, const std::string& patronCardNumber); + +// // Processes the return of a borrowed book by ISBN +// void returnBook(const std::string& isbn, const std::string& patronCardNumber); + +// // Lists all overdue books +// void listOverdueBooks() const; + +// // Notifies patrons with overdue books +// void notifyPatronsWithOverdueBooks() const; + +// // Generates a summary report of the library's current state +// void generateLibraryReport() const; +// }; + +// #endif // LIBRARY_H + +// // Source: library.cpp +// #include "library.h" +// #include +// #include + +// // Adds a book to the library's collection +// void Library::addBook(const BookItem& book) { +// books.push_back(book); +// } + +// // Registers a new patron and initializes their record +// void Library::addPatron(const Patron& patron) { +// patrons.push_back(patron); +// patronRecords.emplace_back(); +// } + +// // Allows a patron to borrow a book if available +// void Library::borrowBook(const std::string& isbn, const std::string& patronCardNumber) { +// // Find the book by ISBN and check availability +// auto bookIt = std::find_if(books.begin(), books.end(), +// [&isbn](const BookItem& book) { return book.getISBN() == isbn && !book.getIsCheckedOut(); }); + +// if (bookIt == books.end()) { +// std::cout << "Book not available for borrowing.\n"; +// return; +// } + +// // Find the patron by library card number +// auto patronIt = std::find_if(patrons.begin(), patrons.end(), +// [&patronCardNumber](const Patron& patron) { return patron.getLibraryCardNumber() == patronCardNumber; }); + +// if (patronIt == patrons.end()) { +// std::cout << "Patron not found.\n"; +// return; +// } + +// // Borrow the book and update the patron's record +// int patronIndex = std::distance(patrons.begin(), patronIt); +// bookIt->checkOut("2025-01-10"); // Example due date +// patronRecords[patronIndex].addBook(*bookIt); +// std::cout << "Book borrowed successfully.\n"; +// } + +// // Processes the return of a borrowed book +// void Library::returnBook(const std::string& isbn, const std::string& patronCardNumber) { +// // Find the patron by library card number +// auto patronIt = std::find_if(patrons.begin(), patrons.end(), +// [&patronCardNumber](const Patron& patron) { return patron.getLibraryCardNumber() == patronCardNumber; }); + +// if (patronIt == patrons.end()) { +// std::cout << "Patron not found.\n"; +// return; +// } + +// // Remove the book from the patron's record +// int patronIndex = std::distance(patrons.begin(), patronIt); +// patronRecords[patronIndex].removeBook(isbn); + +// // Mark the book as returned in the library's collection +// auto bookIt = std::find_if(books.begin(), books.end(), +// [&isbn](const BookItem& book) { return book.getISBN() == isbn; }); + +// if (bookIt != books.end()) { +// bookIt->returnItem(); +// std::cout << "Book returned successfully.\n"; +// } +// } + +// // Lists all overdue books in the library +// void Library::listOverdueBooks() const { +// for (const auto& book : books) { +// if (book.getIsCheckedOut()) { +// // Placeholder: Logic for checking overdue books +// std::cout << book.getTitle() << " is overdue.\n"; +// } +// } +// } + +// // Notifies patrons with overdue books +// void Library::notifyPatronsWithOverdueBooks() const { +// for (size_t i = 0; i < patrons.size(); ++i) { +// if (patronRecords[i].hasOverdueBooks()) { +// std::cout << "Notify " << patrons[i].getName() << " about overdue books.\n"; +// } +// } +// } + +// // Generates a summary report of the library's current state +// void Library::generateLibraryReport() const { +// std::cout << "Library Report:\n"; +// std::cout << "Total Books: " << books.size() << "\n"; +// std::cout << "Total Patrons: " << patrons.size() << "\n"; +// }