diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..79f8b54 Binary files /dev/null and b/.DS_Store differ diff --git a/Code/LibCoreInventoryManagement.java b/Code/LibCoreInventoryManagement.java new file mode 100644 index 0000000..7917169 --- /dev/null +++ b/Code/LibCoreInventoryManagement.java @@ -0,0 +1,32 @@ +import java.util.*; + +public class LibCoreInventoryManagement { + private List resourceList = new ArrayList(); + + public void addResource(String title, String author, String category) { + for (int i = 0; i < resourceList.size(); i++) { + Resource addedResource = new Resource(title, author, category); + resourceList.add(addedResource); + } + } + + public void editResource(String resourceTitle, String ) { + for (int i = 0; i < resourceList.size(); i++) { + Resource inlist = resourceList.getTitle(resourceTitle); + if (inlist.equalsIgnoreCase(resource)) { + resourceList.set + } + } + } + + public void removeResource(Resource resource) { + String stringAsResource = String.valueOf(resource); + boolean removed = resourceList.remove(resource); + if (removed == true) { + return; + } + else { + System.out.println("Not Removed"); + } + } +} diff --git a/Documentation/Finalized Class Diagram.pdf b/Documentation/Finalized Class Diagram.pdf new file mode 100644 index 0000000..632f88e Binary files /dev/null and b/Documentation/Finalized Class Diagram.pdf differ diff --git a/Documentation/Finalized Sequence Diagram.pdf b/Documentation/Finalized Sequence Diagram.pdf new file mode 100644 index 0000000..d0307f8 Binary files /dev/null and b/Documentation/Finalized Sequence Diagram.pdf differ diff --git a/Documentation/Finalized Use Case Diagram.pdf b/Documentation/Finalized Use Case Diagram.pdf new file mode 100644 index 0000000..016e6a0 Binary files /dev/null and b/Documentation/Finalized Use Case Diagram.pdf differ diff --git a/Documentation/LibCore Design Document (3).docx b/Documentation/LibCore Design Document (3).docx new file mode 100644 index 0000000..48c1e4c Binary files /dev/null and b/Documentation/LibCore Design Document (3).docx differ diff --git a/Documentation/SRS (1).docx b/Documentation/SRS (1).docx new file mode 100644 index 0000000..3c1cb07 Binary files /dev/null and b/Documentation/SRS (1).docx differ diff --git a/Documentation/Use Case Specifications Document.docx b/Documentation/Use Case Specifications Document.docx new file mode 100644 index 0000000..a5485a8 Binary files /dev/null and b/Documentation/Use Case Specifications Document.docx differ diff --git a/Gantt chart.pdf b/Gantt chart.pdf new file mode 100644 index 0000000..b300237 Binary files /dev/null and b/Gantt chart.pdf differ diff --git a/Phase 2 Presentation/CS401 Project [Phase 2].pdf b/Phase 2 Presentation/CS401 Project [Phase 2].pdf new file mode 100644 index 0000000..4badb42 Binary files /dev/null and b/Phase 2 Presentation/CS401 Project [Phase 2].pdf differ diff --git a/README.md b/README.md index 989d528..cbd100b 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,133 @@ ![Logo](https://i.postimg.cc/FK9Vj4sc/Screenshot-2025-01-22-at-7-37-34-PM.png) -## Libcore - Library Management -write the purpose of the library management and what makes this more beneficial for libraries to use. -## Features +# LIBcore Library Management System -- Book search -- List of books checked out or still in stock -- Late check on books not returned by a certain date -- +## 📚 Purpose +The LIBcore Library Management System is designed to streamline the way libraries manage book lending, user activity, and inventory. It replaces manual systems and spreadsheets with an interactive, multi-user networked application that makes library management easy, efficient, and scalable. +This system is particularly beneficial to libraries because: +- It supports **multi-user concurrent access** via a client-server architecture. +- Users (members) and staff have **separate interfaces** tailored to their roles. +- It maintains organized **digital records** of users, books, and loan history using structured text files. +- It includes logic to track late returns and automatically update resource availability. -## Usage +--- -```java -usage explanation here +## ✨ Features + +### ✅ Book Search +Users can view all available books in a clean tabular format with columns for ID, Title, Author, Category, and Availability. + +### ✅ Check Book Status +Staff can see which books are currently checked out and which are in stock. + +### ✅ Late Check +Automatically identifies books not returned by the due date and flags them as overdue. + +### ✅ GUI Dashboard +- Built using `Swing`, the GUI is interactive and intuitive. +- Members can browse, borrow, and return books easily. +- Staff can manage resources, view user data, export transactions, and perform admin actions. + +--- + +## 🚀 Usage & Setup + +### 1. Clone the repository +```bash +git clone https://github.com/ttran569/libcore.git +cd libcore +git checkout ttran569-patch-1 +``` + +### 2. Project Structure +``` +libcore/ +├── src/ +│ ├── client/ +│ │ ├── member/ # Member GUI and client logic +│ │ │ └── MemberGUI.java, MemberClient.java +│ │ └── staff/ # Staff GUI and client logic +│ │ └── StaffGUI.java, StaffClient.java +│ ├── server/ # Server code and networking +│ │ ├── Server.java, ClientHandler.java +│ └── server/services/ # Business logic +│ └── ResourceManager.java, TransactionManager.java, UserManager.java +├── data/ +│ ├── users.txt +│ ├── resources.txt +│ └── transactions.txt +``` + +### 3. How to Run +1. Start the server: +```bash +Run Server.java (Eclipse or CLI) ``` +2. Run Staff or Member client on separate machines or windows: +```bash +Run StaffClient.java or MemberClient.java +``` +> Clients communicate with the server via sockets. + +### 4. Text Files Used +- `users.txt`: contains all user information +- `resources.txt`: contains all book records +- `transactions.txt`: contains borrow/return history + +--- + +## 🧠 Code Explanation + +### `ClientHandler.java` +- Core server-side logic +- Handles login, logout, view resources, borrow, return, export transactions + +### `ResourceManager.java` +- Adds, edits, deletes, and checks availability of resources +- Updates `resources.txt` + +### `TransactionManager.java` +- Logs all transactions +- Exports and filters overdue books + +### `UserManager.java` +- Displays user data from `users.txt` + +### `StaffGUI.java` +- GUI for staff +- Options to view/add books, view users, return/borrow, export logs + +### `MemberGUI.java` +- GUI for members +- Simplified to borrow, return, and view available books + +### `SessionManager.java` +- Handles user sessions and session expiry (future-ready) + +### `AuthenticationService.java` +- Validates user login credentials from `users.txt` + +--- + +## 👥 User Roles +- `STAFF`: Full access to resources and logs +- `MEMBER`: Can only borrow/return/view books + +--- + +## 📌 Notes +- Uses plain `.txt` files instead of a DB for simplicity +- Easily expandable to JDBC / MySQL / SQLite in the future +- Fully object-oriented, modular design using Java and Swing + +--- + +## 📬 Contributions +This project was developed by Kartik Tripathi and contributors. Contributions, forks, and feedback are welcome. + +--- + +## 📄 License +This project is for academic and educational use. diff --git a/Work Schedule.pdf b/Work Schedule.pdf new file mode 100644 index 0000000..5958015 Binary files /dev/null and b/Work Schedule.pdf differ