Untitled
unknown
c_cpp
2 years ago
7.9 kB
9
Indexable
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// Base class representing a user
class User {
protected:
string name; // User's name
string username; // User's username
string password; // User's password
string phoneNumber; // User's phone number
string emailAddress; // User's email address
string role; // User's role (e.g., librarian, patron, etc.)
public:
// Constructor to initialize user data
User(string n, string u, string p, string pn, string e, string r)
: name(n), username(u), password(p), phoneNumber(pn), emailAddress(e), role(r) {}
// Method to authenticate user login
bool login(string enteredUsername, string enteredPassword) {
if (enteredUsername == username && enteredPassword == password) {
cout << "Login successful." << endl;
return true;
} else {
cout << "Login failed. Invalid username or password." << endl;
return false;
}
}
// Method to logout user
void logout() {
cout << "Logged out successfully." << endl;
}
// Method to change user password
void changePassword(string newPassword) {
password = newPassword;
cout << "Password changed successfully." << endl;
}
};
// Class representing a book
class Book {
private:
string title; // Book's title
string author; // Book's author
string genre; // Book's genre
int numberOfCopies; // Number of copies available
public:
// Constructor to initialize book data
Book(string t, string a, string g, int nc) : title(t), author(a), genre(g), numberOfCopies(nc) {}
// Method to check out a book
void checkOut() {
if (numberOfCopies > 0) {
numberOfCopies--;
cout << "Book checked out successfully." << endl;
} else {
cout << "Sorry, the book is not available for checkout." << endl;
}
}
// Method to check in a book
void checkIn() {
numberOfCopies++;
cout << "Book checked in successfully." << endl;
}
// Method to renew a book
void renew() {
cout << "Book renewed successfully." << endl;
}
// Method to check if the book is available
bool isAvailable() {
return numberOfCopies > 0;
}
// Getters for book attributes
string getTitle() const {
return title;
}
string getAuthor() const {
return author;
}
string getGenre() const {
return genre;
}
int getNumberOfCopies() const {
return numberOfCopies;
}
};
// Class representing a magazine
class Magazine {
private:
string title; // Magazine's title
string publisher; // Magazine's publisher
string publicationDate; // Magazine's publication date
public:
// Constructor to initialize magazine data
Magazine(string t, string pub, string pubDate) : title(t), publisher(pub), publicationDate(pubDate) {}
// Method to check out a magazine
void checkOut() {
cout << "Magazine checked out successfully." << endl;
}
// Method to check in a magazine
void checkIn() {
cout << "Magazine checked in successfully." << endl;
}
// Method to check if the magazine is available
bool isAvailable() {
return true;
}
// Getters for magazine attributes
string getTitle() const {
return title;
}
string getPublisher() const {
return publisher;
}
string getPublicationDate() const {
return publicationDate;
}
};
// Class representing a library patron
class Patron : public User {
private:
int libraryCardNumber; // Patron's library card number
string address; // Patron's address
public:
// Constructor to initialize patron data
Patron(string n, string u, string p, string pn, string e, string r, int lcn, string addr)
: User(n, u, p, pn, e, r), libraryCardNumber(lcn), address(addr) {}
// Method to register patron account
void registerAccount() {
cout << "Patron account registered successfully." << endl;
}
// Methods to interact with books and magazines
void checkoutBook(Book &book) {
book.checkOut();
}
void checkoutMagazine(Magazine &magazine) {
magazine.checkOut();
}
void checkInBook(Book &book) {
book.checkIn();
}
void checkInMagazine(Magazine &magazine) {
magazine.checkIn();
}
void renewBook(Book &book) {
book.renew();
}
void renewMagazine(Magazine &magazine) {
cout << "Magazine renewed successfully." << endl;
}
void viewCheckedOutMaterials() {
cout << "List of checked out materials:" << endl;
// Logic to display checked out materials
}
// Getters for patron attributes
int getLibraryCardNumber() const {
return libraryCardNumber;
}
string getAddress() const {
return address;
}
};
// Class representing a librarian
class Librarian : public User {
private:
int employeeId; // Librarian's employee ID
string department; // Librarian's department
public:
// Constructor to initialize librarian data
Librarian(string n, string u, string p, string pn, string e, string r, int empId, string dept)
: User(n, u, p, pn, e, r), employeeId(empId), department(dept) {}
// Methods to manage books and magazines
void addBook(Book &book) {
cout << "Book added successfully." << endl;
}
void editBook(Book &book) {
cout << "Book edited successfully." << endl;
}
void deleteBook(Book &book) {
cout << "Book deleted successfully." << endl;
}
void addMagazine(Magazine &magazine) {
cout << "Magazine added successfully." << endl;
}
void editMagazine(Magazine &magazine) {
cout << "Magazine edited successfully." << endl;
}
void deleteMagazine(Magazine &magazine) {
cout << "Magazine deleted successfully." << endl;
}
// Getters for librarian attributes
int getEmployeeId() const {
return employeeId;
}
string getDepartment() const {
return department;
}
};
int main() {
// Example usage
Book book1("The Great Gatsby", "F. Scott Fitzgerald", "Fiction", 5);
Magazine magazine1("National Geographic", "National Geographic Society", "March 2024");
Patron patron("John Doe", "johndoe", "password", "123456789", "johndoe@example.com", "patron", 123456, "123 Main St.");
Librarian librarian("Jane Smith", "janesmith", "password", "987654321", "janesmith@example.com", "librarian", 987654, "Library Department");
cout << "Book Title: " << book1.getTitle() << endl;
cout << "Book Author: " << book1.getAuthor() << endl;
cout << "Book Genre: " << book1.getGenre() << endl;
cout << "Number of Copies: " << book1.getNumberOfCopies() << endl;
cout << "Magazine Title: " << magazine1.getTitle() << endl;
cout << "Magazine Publisher: " << magazine1.getPublisher() << endl;
cout << "Magazine Publication Date: " << magazine1.getPublicationDate() << endl;
cout << "Patron's Library Card Number: " << patron.getLibraryCardNumber() << endl;
cout << "Patron's Address: " << patron.getAddress() << endl;
cout << "Librarian's Employee ID: " << librarian.getEmployeeId() << endl;
cout << "Librarian's Department: " << librarian.getDepartment() << endl;
return 0;
}
Editor is loading...
Leave a Comment