From 7bd43a5e9840dca849f721f432056f8af293b05d Mon Sep 17 00:00:00 2001 From: seyedkosarmousavi Date: Thu, 16 May 2024 22:19:18 +0330 Subject: [PATCH 1/9] create a file --- Answers/java project/.idea/misc.xml | 6 +++ Answers/java project/.idea/modules.xml | 8 +++ Answers/java project/.idea/vcs.xml | 6 +++ Answers/java project/.idea/workspace.xml | 67 ++++++++++++++++++++++++ 4 files changed, 87 insertions(+) create mode 100644 Answers/java project/.idea/misc.xml create mode 100644 Answers/java project/.idea/modules.xml create mode 100644 Answers/java project/.idea/vcs.xml create mode 100644 Answers/java project/.idea/workspace.xml diff --git a/Answers/java project/.idea/misc.xml b/Answers/java project/.idea/misc.xml new file mode 100644 index 0000000..862d09b --- /dev/null +++ b/Answers/java project/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Answers/java project/.idea/modules.xml b/Answers/java project/.idea/modules.xml new file mode 100644 index 0000000..2bc8252 --- /dev/null +++ b/Answers/java project/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Answers/java project/.idea/vcs.xml b/Answers/java project/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/Answers/java project/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Answers/java project/.idea/workspace.xml b/Answers/java project/.idea/workspace.xml new file mode 100644 index 0000000..a88fb05 --- /dev/null +++ b/Answers/java project/.idea/workspace.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1715876450758 + + + + \ No newline at end of file From 070f5591607f0eda9cc6405c5e0e8a6cb02e5321 Mon Sep 17 00:00:00 2001 From: seyedkosarmousavi Date: Thu, 16 May 2024 22:20:00 +0330 Subject: [PATCH 2/9] add Book class --- Answers/java project/Book.java | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Answers/java project/Book.java diff --git a/Answers/java project/Book.java b/Answers/java project/Book.java new file mode 100644 index 0000000..f468ef3 --- /dev/null +++ b/Answers/java project/Book.java @@ -0,0 +1,42 @@ +public class Book { + private static int idCounter = 1; + private int bookID; + private String title; + private String author; + private boolean isAvailable; + private String description; + + public Book(String title, String author, String description) { + this.bookID = idCounter++; + this.title = title; + this.author = author; + this.isAvailable = true; + this.description = description; + } + + // Getters and Setters + public int getBookID() { + return bookID; + } + + public String getTitle() { + return title; + } + + public String getAuthor() { + return author; + } + + public boolean isAvailable() { + return isAvailable; + } + + public void setAvailable(boolean available) { + isAvailable = available; + } + + public String getDescription() { + return description; + } + } + From e83b2919090a4a681582801b46d35242769ff97b Mon Sep 17 00:00:00 2001 From: seyedkosarmousavi Date: Thu, 16 May 2024 22:20:41 +0330 Subject: [PATCH 3/9] add User class --- Answers/java project/User.java | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Answers/java project/User.java diff --git a/Answers/java project/User.java b/Answers/java project/User.java new file mode 100644 index 0000000..f0b6fcc --- /dev/null +++ b/Answers/java project/User.java @@ -0,0 +1,26 @@ +public class User { + private static int idCounter = 1; + private int userID; + private String name; + private String phoneNumber; + + public User(String name, String phoneNumber) { + this.userID = idCounter++; + this.name = name; + this.phoneNumber = phoneNumber; + } + + // Getters and Setters + public int getUserID() { + return userID; + } + + public String getName() { + return name; + } + + public String getPhoneNumber() { + return phoneNumber; + } + } + From fc1a93caeac73b1ab072b9ebaf5847bb0b3e1c03 Mon Sep 17 00:00:00 2001 From: seyedkosarmousavi Date: Thu, 16 May 2024 22:21:16 +0330 Subject: [PATCH 4/9] add Admin class --- Answers/java project/Admin.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Answers/java project/Admin.java diff --git a/Answers/java project/Admin.java b/Answers/java project/Admin.java new file mode 100644 index 0000000..1b7ec21 --- /dev/null +++ b/Answers/java project/Admin.java @@ -0,0 +1,12 @@ +public class Admin extends User { + private String password; + + public Admin(String name, String phoneNumber, String password) { + super(name, phoneNumber); + this.password = password; + } + + public String getPassword() { + return password; + } +} From 1c467a3a530b8c213e0c37d6f3b3c478a448dafb Mon Sep 17 00:00:00 2001 From: seyedkosarmousavi Date: Thu, 16 May 2024 22:21:47 +0330 Subject: [PATCH 5/9] add Rent class --- Answers/java project/Rent.java | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Answers/java project/Rent.java diff --git a/Answers/java project/Rent.java b/Answers/java project/Rent.java new file mode 100644 index 0000000..1e0291f --- /dev/null +++ b/Answers/java project/Rent.java @@ -0,0 +1,32 @@ +import java.util.Date; + +public class Rent { + private static int idCounter = 1; + private int rentalID; + private Book book; + private NormalUser user; + private Date rentalDate; + + public Rent(Book book, NormalUser user) { + this.rentalID = idCounter++; + this.book = book; + this.user = user; + this.rentalDate = new Date(); + } + + public int getRentalID() { + return rentalID; + } + + public Book getBook() { + return book; + } + + public NormalUser getUser() { + return user; + } + + public Date getRentalDate() { + return rentalDate; + } +} \ No newline at end of file From 08db4e9d26160af9ee495cc9463d126a0be59b1e Mon Sep 17 00:00:00 2001 From: seyedkosarmousavi Date: Thu, 16 May 2024 22:22:26 +0330 Subject: [PATCH 6/9] add NormalUser class --- Answers/java project/NormalUser.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Answers/java project/NormalUser.java diff --git a/Answers/java project/NormalUser.java b/Answers/java project/NormalUser.java new file mode 100644 index 0000000..c3b58cb --- /dev/null +++ b/Answers/java project/NormalUser.java @@ -0,0 +1,15 @@ +import java.util.Date; + + public class NormalUser extends User { + private Date registrationDate; + + public NormalUser(String name, String phoneNumber) { + super(name, phoneNumber); + this.registrationDate = new Date(); + } + + public Date getRegistrationDate() { + return registrationDate; + } + } + From 16460af5a1fdc0420466c16cf152e124397cecec Mon Sep 17 00:00:00 2001 From: seyedkosarmousavi Date: Thu, 16 May 2024 22:22:56 +0330 Subject: [PATCH 7/9] add CLI class --- Answers/java project/CLI.java | 76 +++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Answers/java project/CLI.java diff --git a/Answers/java project/CLI.java b/Answers/java project/CLI.java new file mode 100644 index 0000000..828665b --- /dev/null +++ b/Answers/java project/CLI.java @@ -0,0 +1,76 @@ +import java.util.List; +import java.util.Scanner; + +public class CLI { + private static Library library = new Library("City Library", 1000, "9 AM - 5 PM"); + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + while (true) { + System.out.print("Enter command: "); + String command = scanner.nextLine(); + processCommand(command); + } + } + + private static void processCommand(String command) { + String[] parts = command.split(" "); + switch (parts[0]) { + case "lib": + handleLibraryCommand(parts); + break; + default: + System.out.println("Unknown command"); + } + } + + private static void handleLibraryCommand(String[] parts) { + switch (parts[1]) { + case "add": + if (parts[2].equals("book")) { + String title = parts[3]; + String author = parts[4]; + String description = parts[5]; + library.addBook(title, author, description); + System.out.println("Book added successfully"); + } else if (parts[2].equals("member")) { + String name = parts[3]; + String phone = parts[4]; + String password = parts[5]; + library.addUser(new Admin(name, phone, password)); + System.out.println("Member added successfully"); + } + break; + case "get": + if (parts[2].equals("hrs")) { + System.out.println("Library operating hours: " + library.getOperatingHours()); + } else if (parts[2].equals("available") && parts[3].equals("books")) { + List< Book> availableBooks = library.getAvailableBooks(); + for (Book book : availableBooks) { + System.out.println(book.getTitle() + " by " + book.getAuthor()); + } + } + break; + case "rent": + int bookID = Integer.parseInt(parts[2]); + int userID = Integer.parseInt(parts[3]); + library.rentBook(bookID, userID); + System.out.println("Book rented successfully"); + break; + case "return": + bookID = Integer.parseInt(parts[2]); + library.returnBook(bookID); + System.out.println("Book returned successfully"); + break; + case "remove": + if (parts[2].equals("member")) { + userID = Integer.parseInt(parts[3]); + library.removeUser(userID); + System.out.println("Member removed successfully"); + } + break; + default: + System.out.println("Unknown library command"); + } + } +} \ No newline at end of file From 5d95fd5a5089933e484f05f8bfed34c21661379e Mon Sep 17 00:00:00 2001 From: seyedkosarmousavi Date: Thu, 16 May 2024 22:23:20 +0330 Subject: [PATCH 8/9] add Library ckass --- Answers/java project/Library.java | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Answers/java project/Library.java diff --git a/Answers/java project/Library.java b/Answers/java project/Library.java new file mode 100644 index 0000000..abd2dca --- /dev/null +++ b/Answers/java project/Library.java @@ -0,0 +1,66 @@ +import java.util.ArrayList; +import java.util.List; + +public class Library { + private String name; + private int capacity; + private String operatingHours; + private List books; + private List users; + private List rentals; + + public Library(String name, int capacity, String operatingHours) { + this.name = name; + this.capacity = capacity; + this.operatingHours = operatingHours; + this.books = new ArrayList<>(); + this.users = new ArrayList<>(); + this.rentals = new ArrayList<>(); + } + + // Method to add a book + public void addBook(String title, String author, String description) { + books.add(new Book(title, author, description)); + } + + public void addUser(User user) { + users.add(user); + } + + public void removeUser(int userID) { + users.removeIf(user -> user.getUserID() == userID); + } + + public void rentBook(int bookID, int userID) { + Book book = books.stream().filter(b -> b.getBookID() == bookID && b.isAvailable()).findFirst().orElse(null); + if (book != null) { + User user = users.stream().filter(u -> u.getUserID() == userID && u instanceof NormalUser).findFirst().orElse(null); + if (user != null) { + book.setAvailable(false); + rentals.add(new Rent(book, (NormalUser) user)); + } + } + } + + + public void returnBook(int bookID) { + Rent rent = rentals.stream().filter(r -> r.getBook().getBookID() == bookID).findFirst().orElse(null); + if (rent != null) { + rent.getBook().setAvailable(true); + rentals.remove(rent); + } + } + + public List getAvailableBooks() { + List availableBooks = new ArrayList<>(); + for (Book book : books) { + if (book.isAvailable()) { + availableBooks.add(book); + } + } + return availableBooks; + } + public String getOperatingHours() { + return operatingHours; + } +} \ No newline at end of file From e507d4798f0c32147d39a35056b5442d2ec809d1 Mon Sep 17 00:00:00 2001 From: seyedkosarmousavi Date: Thu, 16 May 2024 22:25:18 +0330 Subject: [PATCH 9/9] add MyApp class --- Answers/java project/.idea/.name | 1 + .../inspectionProfiles/Project_Default.xml | 6 +++ Answers/java project/.idea/vcs.xml | 1 + Answers/java project/.idea/workspace.xml | 38 ++++++------------ Answers/java project/MyApp.java | 5 +++ .../production/java project/.idea/.gitignore | 3 ++ .../java project/.idea/java project.iml | 11 +++++ .../production/java project/.idea/misc.xml | 6 +++ .../production/java project/.idea/modules.xml | 8 ++++ .../out/production/java project/.idea/vcs.xml | 6 +++ .../out/production/java project/Admin.class | Bin 0 -> 538 bytes .../out/production/java project/Book.class | Bin 0 -> 1143 bytes .../out/production/java project/CLI.class | Bin 0 -> 3957 bytes .../out/production/java project/Library.class | Bin 0 -> 4046 bytes .../out/production/java project/MyApp.class | Bin 0 -> 385 bytes .../production/java project/NormalUser.class | Bin 0 -> 558 bytes .../out/production/java project/Rent.class | Bin 0 -> 950 bytes .../out/production/java project/User.class | Bin 0 -> 782 bytes 18 files changed, 59 insertions(+), 26 deletions(-) create mode 100644 Answers/java project/.idea/.name create mode 100644 Answers/java project/.idea/inspectionProfiles/Project_Default.xml create mode 100644 Answers/java project/MyApp.java create mode 100644 Answers/java project/out/production/java project/.idea/.gitignore create mode 100644 Answers/java project/out/production/java project/.idea/java project.iml create mode 100644 Answers/java project/out/production/java project/.idea/misc.xml create mode 100644 Answers/java project/out/production/java project/.idea/modules.xml create mode 100644 Answers/java project/out/production/java project/.idea/vcs.xml create mode 100644 Answers/java project/out/production/java project/Admin.class create mode 100644 Answers/java project/out/production/java project/Book.class create mode 100644 Answers/java project/out/production/java project/CLI.class create mode 100644 Answers/java project/out/production/java project/Library.class create mode 100644 Answers/java project/out/production/java project/MyApp.class create mode 100644 Answers/java project/out/production/java project/NormalUser.class create mode 100644 Answers/java project/out/production/java project/Rent.class create mode 100644 Answers/java project/out/production/java project/User.class diff --git a/Answers/java project/.idea/.name b/Answers/java project/.idea/.name new file mode 100644 index 0000000..056975b --- /dev/null +++ b/Answers/java project/.idea/.name @@ -0,0 +1 @@ +Book.java \ No newline at end of file diff --git a/Answers/java project/.idea/inspectionProfiles/Project_Default.xml b/Answers/java project/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..12efd36 --- /dev/null +++ b/Answers/java project/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Answers/java project/.idea/vcs.xml b/Answers/java project/.idea/vcs.xml index 6c0b863..64713b8 100644 --- a/Answers/java project/.idea/vcs.xml +++ b/Answers/java project/.idea/vcs.xml @@ -1,6 +1,7 @@ + \ No newline at end of file diff --git a/Answers/java project/.idea/workspace.xml b/Answers/java project/.idea/workspace.xml index a88fb05..77c6761 100644 --- a/Answers/java project/.idea/workspace.xml +++ b/Answers/java project/.idea/workspace.xml @@ -4,21 +4,7 @@