Team Leader: Barlam, Arjie
Team Members:
- Ausejo, Althea Gayle
- Guisijan, Rizaleda Gabriela
- Morva, Nathaniel Carlo
- Salvado, Shella
- Vista, Valentino
- Overview
- Features
- System Requirements
- Installation
- Usage Guide
- User Roles
- Technical Documentation
- System Limitations
- Contributing
A console-based Library Management System that enables users to browse and borrow books while providing administrators with tools to manage the library's inventory. The system includes user authentication, book management, borrowing tracking, and suggestion features.
Main Objective: Provide a free book lending service to users while maintaining proper inventory control and borrowing limits.
- ✅ Book Management: Add and remove books from the library inventory
- ✅ Borrower Tracking: View list of current borrowers and their borrowed books
- ✅ Suggestion Management: Review and approve user-suggested books
- ✅ User Management: Monitor borrowing patterns and limits
- ✅ Book Browsing: Search and view available books with direct links
- ✅ Book Borrowing: Borrow up to 2 books for a maximum of 1 month
- ✅ Book Returning: Return borrowed books to free up borrowing slots
- ✅ Book Suggestions: Suggest new books for the library to consider
- ✅ Account Management: User registration and login system
- Java: JDK 8 or higher
- Operating System: Windows, macOS, or Linux
- Memory: Minimum 512MB RAM
- Storage: 50MB free space
-
Clone or Download the Repository
git clone <repository-url> cd library-system
-
Compile the Java Program
javac Library_System.java
-
Run the Application
java Library_System
When you run the program, you'll see the main menu:
============LIBRARY_SYSTEM=================
Type "exit" in order to exit the program, thanks for trusting us!
===========================================
Do you have an account?[y/n]:
- Type
nwhen asked if you have an account - Follow the registration prompts:
- Enter a unique username
- Enter a password
- After registration, you can log in with your credentials
- Type
ywhen asked if you have an account - Enter your username and password
- Access your respective dashboard (Admin or Guest)
- Default Admin Account:
- Username:
carlo - Password:
morva
- Username:
Admin Dashboard Options:
- Add a new book - Add books with name and link
- Remove a book - Delete books from inventory
- See list of borrowers - View current borrowing status
- View suggestions - Review and approve user suggestions
- Log-out - Exit admin session
Guest Dashboard Options:
- Browse a book - View available books and their links
- Borrow a book - Borrow books (max 2 books, 1 month limit)
- Return a book - Return borrowed books
- Suggest a book - Recommend books for library addition
- Log-out - Exit guest session
Main Class: Library_System
| Data Structure | Purpose | Type |
|---|---|---|
registeredAcc |
Store user accounts (username → password) | Hashtable<String, String> |
borrowers |
Track borrowed books (user+date+count → book) | TreeMap<String, String> |
books |
Store available books (title → link) | Hashtable<String, String> |
suggestedBooks |
Store user book suggestions | HashSet<String> |
- Purpose: Handle user registration
- Parameters: None (uses Scanner input)
- Returns: void
- Functionality: Validates unique usernames and stores credentials
- Purpose: Validate user login credentials
- Parameters:
username: User's login namepassword: User's password
- Returns: String (null if valid, error message if invalid)
- Purpose: Check if user has borrowed books
- Parameters:
username: User to check - Returns: boolean (true if user has borrowed books)
Key Format: "username, date, (borrowCount)"
Value: "bookName"
Example: "john, 2024-01-15, (2)" → "Java Programming"
Pre-registered Accounts:
- Admin:
carlo/morva - Guests:
carlo2/morva2,carlo3/morva3,carlo32/morva
Initial Books:
- Java → https://pdfdrive.com/Java
- JavaScript → https://pdfdrive.com/JavaScript
- ❌ No Persistent Storage: Data is lost when program exits
- ❌ Single Admin Account: Only one hardcoded admin
- ❌ Limited Borrowing: Maximum 2 books per user
- ❌ Manual Setup: Admin must add books each session
- ❌ Console Interface: No graphical user interface
- ❌ Basic Authentication: No password encryption
- Borrowing Limit: 2 books maximum per user
- Borrowing Duration: 1 month maximum
- Account Types: Admin (full access) vs Guest (limited access)
- Book Addition: Only admins can add/remove books
- Session-based: No data persistence between runs
- Database Integration: Add persistent storage (MySQL, PostgreSQL)
- Password Security: Implement password hashing
- GUI Development: Create desktop or web interface
- Multiple Admins: Support multiple administrator accounts
- Email Notifications: Overdue book notifications
- Search Functionality: Advanced book search and filtering
- Reporting System: Generate borrowing statistics and reports
- Book Categories: Organize books by genre/subject
- User Profiles: Extended user information and preferences
- API Development: REST API for mobile app integration
- Fork the repository
- Create a feature branch
- Make changes and test thoroughly
- Submit a pull request with detailed description
- Use meaningful variable and method names
- Add comments for complex logic
- Follow Java naming conventions
- Test all user flows before submission
- Admin login and all admin functions
- Guest registration and login
- Book browsing and borrowing
- Book returning functionality
- Suggestion system
- Error handling for invalid inputs
- Borrowing limit enforcement
For questions or issues:
- Check existing documentation
- Review the code comments
- Contact the development team
- Submit an issue in the repository
Note: This system is designed for educational purposes and demonstrates basic object-oriented programming concepts in Java.