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