diff --git a/Answers/LibraryManagement/.gitignore b/Answers/LibraryManagement/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/Answers/LibraryManagement/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/Answers/LibraryManagement/.idea/.gitignore b/Answers/LibraryManagement/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/Answers/LibraryManagement/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Answers/LibraryManagement/.idea/encodings.xml b/Answers/LibraryManagement/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/Answers/LibraryManagement/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Answers/LibraryManagement/.idea/misc.xml b/Answers/LibraryManagement/.idea/misc.xml
new file mode 100644
index 0000000..82dbec8
--- /dev/null
+++ b/Answers/LibraryManagement/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Answers/LibraryManagement/.idea/uiDesigner.xml b/Answers/LibraryManagement/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/Answers/LibraryManagement/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/Answers/LibraryManagement/.idea/vcs.xml b/Answers/LibraryManagement/.idea/vcs.xml
new file mode 100644
index 0000000..b2bdec2
--- /dev/null
+++ b/Answers/LibraryManagement/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Answers/LibraryManagement/pom.xml b/Answers/LibraryManagement/pom.xml
new file mode 100644
index 0000000..bcaed17
--- /dev/null
+++ b/Answers/LibraryManagement/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+
+ org.example
+ LibraryManagement
+ 1.0-SNAPSHOT
+
+
+ 17
+ 17
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/Answers/LibraryManagement/src/main/java/org/example/Admin.java b/Answers/LibraryManagement/src/main/java/org/example/Admin.java
new file mode 100644
index 0000000..6f6579a
--- /dev/null
+++ b/Answers/LibraryManagement/src/main/java/org/example/Admin.java
@@ -0,0 +1,35 @@
+package org.example;
+
+public class Admin {
+ private static int firstId;
+ private String Id;
+ private static String Name;
+ private static String PhoneNumber;
+
+ static String idgenerator() {
+ String ID = "Admin Id is " + firstId;
+ firstId += firstId;
+ return (ID);
+ }
+
+ public Admin(String Id, String Name, String PhoneNumber) {
+ this.Id = idgenerator();
+ this.Name = Name;
+ this.PhoneNumber = PhoneNumber;
+ }
+
+ public String getId() {
+ return Id;
+ }
+
+ public String getName() {
+ return Name;
+ }
+
+ public String getPhoneNumber() {
+ return PhoneNumber;
+ }
+ public static void Login(String password){
+
+ }
+}
diff --git a/Answers/LibraryManagement/src/main/java/org/example/Book.java b/Answers/LibraryManagement/src/main/java/org/example/Book.java
new file mode 100644
index 0000000..7094062
--- /dev/null
+++ b/Answers/LibraryManagement/src/main/java/org/example/Book.java
@@ -0,0 +1,48 @@
+package org.example;
+
+public class Book {
+ private static int firstId = 1;
+ private static String Id;
+ private static String Title;
+ private static String Author;
+ private static Boolean status;
+ private static String Description;
+
+ public Book(String Title, String Author, String Description){
+ this.Id = idgenerator();
+ this.Title = Title;
+ this.Author = Author;
+ this.status = true;
+ this.Description = Description;
+
+ }
+
+ public void setStatus(boolean status){
+ this.status = status;
+ }
+
+ static String idgenerator(){
+ String ID = "book number" + firstId;
+ firstId+=firstId;
+ return(ID);
+ }
+ public static String getId() {
+ return Id;
+ }
+
+ public static String getTitle() {
+ return Title;
+ }
+
+ public static String getAuthor() {
+ return Author;
+ }
+
+ public static boolean isAvailable() {
+ return status;
+ }
+
+ public static String getDescription(){
+ return Description;
+ }
+}
\ No newline at end of file
diff --git a/Answers/LibraryManagement/src/main/java/org/example/CLI.java b/Answers/LibraryManagement/src/main/java/org/example/CLI.java
new file mode 100644
index 0000000..af3af1d
--- /dev/null
+++ b/Answers/LibraryManagement/src/main/java/org/example/CLI.java
@@ -0,0 +1,148 @@
+package org.example;
+
+import java.util.Scanner;
+
+public class CLI {
+ private static Library library;
+
+ public CLI(Library library) {
+ this.library = library;
+ }
+
+ public static void start() {
+ System.out.println("Type 'command' to see available commands.");
+
+ try (Scanner scanner = new Scanner(System.in)) {
+ while (true) {
+ String input = scanner.nextLine().trim();
+ if (input.equals("exit")) {
+ System.out.println("Exiting...");
+ return;
+ } else {
+ perform(input);
+ }
+ }
+ }
+ }
+
+ public static void perform(String input) {
+ String[] parts = input.split(" ", 2);
+ if (parts.length == 0) {
+ System.out.println("Command not found.");
+ return;
+ }
+ String command = parts[0].toLowerCase();
+ String arguments = (parts.length > 1) ? parts[1] : "";
+
+ switch (command) {
+ case "lib":
+ edame(arguments);
+ break;
+ case "exit":
+ System.out.println("Exiting...");
+ break;
+ case "command":
+ commands();
+ break;
+ default:
+ System.out.println("Command not found. Type 'command' to see available commands.");
+ break;
+ }
+ }
+
+ public static void edame(String arguments) {
+ String[] parts = arguments.split(" ", 2);
+ if (parts.length == 0) {
+ System.out.println("Command NOT FOUND. Type 'command' to see available commands.");
+ return;
+ }
+
+ String subCommand = parts[0].toLowerCase();
+ String subArguments = (parts.length > 1) ? parts[1] : "";
+ switch (subCommand) {
+ case "add":
+ addBook(subArguments);
+ break;
+ case "get":
+ handleGet(subArguments);
+ break;
+ case "rent":
+ rentBook(subArguments);
+ break;
+ case "remove":
+ removeMember(subArguments);
+ break;
+ case "return":
+ returnBook(subArguments);
+ break;
+ default:
+ System.out.println("Command not found. Type 'command' to see commands.");
+ break;
+ }
+ }
+
+ public static void addBook(String arguments) {
+ String[] parts = arguments.split(" ", 3);
+ if (parts.length < 3) {
+ System.out.println("Invalid command format. Usage: lib add book ");
+ return;
+ }
+ String name = parts[0];
+ String author = parts[1];
+ String subtitle = (parts.length > 2) ? parts[2] : "";
+ library.addbook(new Book(name, author, subtitle));
+ System.out.println("Book added successfully.");
+ }
+
+ public static void handleGet(String arguments) {
+ if (arguments.equalsIgnoreCase("hrs")) {
+ System.out.println("Operating hours: " + library.getOperatingHours());
+ } else {
+ System.out.println(library.getbookRepository());
+ }
+ }
+
+ public static void rentBook(String arguments) {
+ String[] parts = arguments.split(" ", 3);
+ if (parts.length < 3) {
+ System.out.println("Invalid command format.");
+ return;
+ }
+ String bookName = parts[0];
+ String memberName = parts[1];
+ String memberID = parts[2];
+ library.rentbook(bookName, memberName, memberID);
+ System.out.println("Book rented successfully.");
+ }
+
+ public static void removeMember(String arguments) {
+ if (arguments.isEmpty()) {
+ System.out.println("Invalid command format.");
+ return;
+ }
+ library.removeuser(arguments);
+ System.out.println("Member removed successfully.");
+ }
+
+ public static void returnBook(String arguments) {
+ if (arguments.isEmpty()) {
+ System.out.println("Invalid command format.");
+ return;
+ }
+ library.returnbook(arguments);
+ System.out.println("Book returned successfully.");
+ }
+
+ public static void commands() {
+ System.out.println("Choose a command:");
+ System.out.println("lib add book : Add a new book to the library.");
+ System.out.println("lib get hrs: Retrieve library operating hours.");
+ System.out.println("lib rent : Rent a book from the library.");
+ System.out.println("lib add member : Add a new member to the library (admin privilege required).");
+ System.out.println("lib rent : Rent a book for a specific member.");
+ System.out.println("lib get available books: See available books for rental.");
+ System.out.println("lib remove member : Remove a member from the library (admin privilege required).");
+ System.out.println("lib return : Return a rented book to the library.");
+ System.out.println("Exit: Exit the program.");
+ }
+}
diff --git a/Answers/LibraryManagement/src/main/java/org/example/Library.java b/Answers/LibraryManagement/src/main/java/org/example/Library.java
new file mode 100644
index 0000000..077816c
--- /dev/null
+++ b/Answers/LibraryManagement/src/main/java/org/example/Library.java
@@ -0,0 +1,100 @@
+package org.example;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.ArrayList;
+
+public class Library {
+
+ private static String name;
+ private static int capacity;
+ private static String OperatingHours;
+ private static ArrayList bookRepository;
+ private static HashMap UserRegistery;
+ private static ArrayList RentalRegistery;
+
+ public Library(String name, int capacity, String OperatingHours) {
+ this.name = name;
+ this.capacity = capacity;
+ this.OperatingHours = OperatingHours;
+ this.bookRepository = new ArrayList<>();
+ this.UserRegistery = new HashMap<>();
+ this.RentalRegistery = new ArrayList<>();
+ }
+ public void addbook(Book book){
+ if (bookRepository.size() > capacity){
+ bookRepository.add(book);
+ System.out.println("The book: " + Book.getTitle() + "added to book repository.");
+ }
+ else {
+ System.out.println("the book repository is full.");
+ }
+ }
+ public void adduser(NormalUser normalUser){
+ UserRegistery.put(NormalUser.getName(), normalUser);
+ System.out.println("The user " + NormalUser.getName() + "has been added to the library.");
+ }
+ public void removebook(Book book){
+ if (bookRepository.contains(book)){
+ bookRepository.remove(book);
+ System.out.println("book has been removed sucssesfully.");
+ }
+ else {
+ System.out.println("we didnt find the book.");
+ }
+ }
+ public void removeuser(String normalUsername){
+ if (UserRegistery.containsValue(normalUsername)){
+ UserRegistery.remove(normalUsername);
+ System.out.println("User removed from the library.");
+ }
+ else{
+ System.out.println("user not found.");
+ }
+ }
+ public void rentbook(String bookname, String normalUsername, String RentalId){
+ Rent newrent = new Rent(Rent.getBookname(), Rent.getNormalUsername(), Rent.getRentalId());
+ RentalRegistery.add(newrent);
+ System.out.println("book added sucssesfully.");
+ }
+ public void returnbook(String bookname){
+ for (int i = 0; i getbookRepository(){
+ return bookRepository;
+ }
+ public static String getOperatingHours(){
+ return OperatingHours;
+ }
+ public static HashMap getUserRegistery(){
+ return UserRegistery;
+ }
+ public static ArrayList getRentalRegistery(){
+ return RentalRegistery;
+ }
+}
+
+
+
+
+
+
+
diff --git a/Answers/LibraryManagement/src/main/java/org/example/MyApp.java b/Answers/LibraryManagement/src/main/java/org/example/MyApp.java
new file mode 100644
index 0000000..e349e7c
--- /dev/null
+++ b/Answers/LibraryManagement/src/main/java/org/example/MyApp.java
@@ -0,0 +1,10 @@
+package org.example;
+
+public class MyApp{
+
+ public static void main(String[] args) {
+ Library library = new Library(Library.getname(), Library.getcapacity(), Library.getOperatingHours());
+ CLI cli = new CLI(library);
+ cli.start();
+ }
+}
\ No newline at end of file
diff --git a/Answers/LibraryManagement/src/main/java/org/example/NormalUser.java b/Answers/LibraryManagement/src/main/java/org/example/NormalUser.java
new file mode 100644
index 0000000..d6184f8
--- /dev/null
+++ b/Answers/LibraryManagement/src/main/java/org/example/NormalUser.java
@@ -0,0 +1,39 @@
+package org.example;
+
+public class NormalUser {
+ private static int firstId;
+ private static String Id;
+ private static String Name;
+ private static String PhoneNumber;
+ private static String Date;
+
+ static String idgenerator() {
+ String ID = "Normal User Id is " + firstId;
+ firstId += firstId;
+ return (ID);
+ }
+
+ public NormalUser(String Id, String Name, String PhoneNumber, String Date) {
+ this.Id = idgenerator();
+ this.Name = Name;
+ this.PhoneNumber = PhoneNumber;
+ this.Date = Date;
+
+ }
+
+ public static String getId() {
+ return Id;
+ }
+
+ public static String getName() {
+ return Name;
+ }
+
+ public String getPhoneNumber() {
+ return PhoneNumber;
+ }
+ public String getDate() {
+ return Date;
+ }
+
+}
diff --git a/Answers/LibraryManagement/src/main/java/org/example/Rent.java b/Answers/LibraryManagement/src/main/java/org/example/Rent.java
new file mode 100644
index 0000000..22085fc
--- /dev/null
+++ b/Answers/LibraryManagement/src/main/java/org/example/Rent.java
@@ -0,0 +1,36 @@
+package org.example;
+import java.time.LocalDate;
+
+public class Rent {
+ private static int firstId = 1;
+ private static String bookname;
+ private static String normalUsername;
+ private static String RentalId;
+ private static LocalDate RentalDate;
+
+ static String idgenerator() {
+ String ID = "Rental Id is " + firstId;
+ firstId += firstId;
+ return (ID);
+ }
+
+ public Rent(String bookname, String normalUsername,String RentalId){
+ this.bookname = bookname;
+ this.normalUsername = normalUsername;
+ this.RentalId = idgenerator();
+ }
+
+ public static String getBookname(){
+ return bookname;
+ }
+ public static String getNormalUsername(){
+ return normalUsername;
+ }
+ public static String getRentalId(){
+ return RentalId;
+ }
+ public static LocalDate getRentalDate(){
+ return RentalDate;
+ }
+
+}
\ No newline at end of file
diff --git a/Answers/LibraryManagement/src/main/java/org/example/User.java b/Answers/LibraryManagement/src/main/java/org/example/User.java
new file mode 100644
index 0000000..08238e6
--- /dev/null
+++ b/Answers/LibraryManagement/src/main/java/org/example/User.java
@@ -0,0 +1,33 @@
+package org.example;
+
+public class User {
+
+ private static int firstId;
+ private static String Id;
+ private static String Name;
+ private static String PhoneNumber;
+
+ static String idgenerator() {
+ String ID = "User Id is " + firstId;
+ firstId += firstId;
+ return (ID);
+ }
+
+ public User(String Id, String Name, String PhoneNumber) {
+ this.Id = idgenerator();
+ this.Name = Name;
+ this.PhoneNumber = PhoneNumber;
+ }
+
+ public static String getId() {
+ return Id;
+ }
+
+ public static String getName() {
+ return Name;
+ }
+
+ public static String getPhoneNumber() {
+ return PhoneNumber;
+ }
+}
\ No newline at end of file