| Field | Detail |
|---|---|
| π€ Name | Samuel Monsalve Orrego |
| π§ Clan | Lovelace |
| π§ Mail | samuel.monsalve.orrego@gmail.com |
| πͺͺ Document | CC 1013458915 |
A comprehensive desktop application for library management built with Java SE 17, featuring book catalog management, member registration, loan tracking, and CSV export capabilities.
- π Features
- ποΈ Architecture
- π» Installation
- π― Usage
- ποΈ Database Schema
- π§© Project Structure
- π§ͺ Testing
- βοΈ Configuration
- π API Documentation
- π€ Contributing
- π Acknowledgments
- CRUD Operations: Add, view, update, and delete books
- Advanced Search: Find books by title or author
- ISBN Validation: Ensure unique ISBN numbers
- Stock Control: Track total and available copies
- CSV Export: Export complete book catalog
- Member Registration: Add new library members
- ID Validation: Unique identification number system
- Status Management: Activate/deactivate members
- Contact Info: Store email and phone details
- CSV Export: Export member directory
- Loan Processing: Create book loans with validation
- Return Handling: Manage returns and fine calculation
- Transaction Safety: ACID-compliant loan operations
- Status Tracking: Active, returned, and overdue loans
- Loan Limits: Enforce per-member book limits
- Overdue Loans: Track and identify overdue books
- Fine Calculation: Automated fine computation
- CSV Reports: Export loan/overdue reports
- Activity Logging: Full operational logging
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β VIEW β β CONTROLLER β β SERVICE β
βββββββββββββββββββ€ βββββββββββββββββββ€ βββββββββββββββββββ€
β MenuView β β BookController β β BookService β
β BookView ββ---βMemberController ββ---β MemberService β
β MemberView β β LoanController β β LoanService β
β LoanView β βββββββββββββββββββ βββββββββββββββββββ
βββββββββββββββββββ β β
βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ
β DAO β β DOMAIN β
βββββββββββββββββββ€ βββββββββββββββββββ€
β BookDAO β β Book β
β MemberDAO β β Member β
β LoanDAO β β Loan β
βββββββββββββββββββ βββββββββββββββββββ
- π§© MVC Architecture: Clear separation of concerns
- ποΈ DAO Pattern: Abstracts database access
- βοΈ Service Layer: Encapsulates business logic
- π¦ DTO Pattern: Simplified data transfer
- β Java JDK 17 or higher
- π’οΈ MySQL Server 8.0+
- π MySQL Connector/J 8.0+
-
Clone the Repository
git clone https://github.com/Samnmy/LibroNova.git cd LibroNova -
Configure Database Connection
Edit theconfig.propertiesfile:db.url=jdbc:mysql://localhost:3306/library_db db.user=your_username db.password=your_password
-
Add MySQL Connector
Download MySQL Connector/J
Add it to your project classpath. -
Run the Application
javac -cp ".:mysql-connector-java-8.0.xx.jar" app/Main.java java -cp ".:mysql-connector-java-8.0.xx.jar" app.Main
public class Main {
public static void main(String[] args) {
DatabaseConfig.initializeDatabase();
// Controllers and views auto-initialize
}
}π Book Management: Add, search, update, delete, export
π₯ Member Management: Register, view, update, deactivate, export
π Loan Management: Create, return, view, overdue, history
π Reports: Overdue loans and CSV reports
File: library_db.sql
booksβ book informationmembersβ library membersloansβ loan transactions- Includes foreign key relationships and constraints
LibroNova/
βββ src/
β βββ app/
β β βββ Main.java
β β βββ TestConnection.java
β βββ config/
β β βββ DatabaseConfig.java
β βββ controller/
β β βββ BookController.java
β β βββ MemberController.java
β β βββ LoanController.java
β βββ dao/
β β βββ BookDAO.java
β β βββ BookDAOJDBC.java
β β βββ MemberDAO.java
β β βββ MemberDAOJDBC.java
β β βββ LoanDAO.java
β β βββ LoanDAOJDBC.java
β βββ domain/
β β βββ Book.java
β β βββ Member.java
β β βββ Loan.java
β βββ exceptions/
β β βββ BusinessException.java
β βββ service/
β β βββ BookService.java
β β βββ MemberService.java
β β βββ LoanService.java
β βββ util/
β β βββ CSVExportUtil.java
β β βββ DateUtils.java
β βββ view/
β βββ BookView.java
β βββ MemberView.java
β βββ LoanView.java
β βββ MenuView.java
βββ export/
βββ config.properties
βββ library_db.sql
βββ README.md
javac -cp ".:mysql-connector-java-8.0.xx.jar:junit-platform-console-standalone-1.9.0.jar" service/*Test.java
java -jar junit-platform-console-standalone-1.9.0.jar --class-path . --scan-class-path- BookServiceTest: CRUD operations and validation
- MemberServiceTest: Member management
- LoanServiceTest: Loan logic and fines
- DomainObjectsTest: Entity validation
# Database Configuration
db.url=jdbc:mysql://localhost:3306/library_db
db.user=root
db.password=your_password
# Business Rules
loan.days=14
fine.per.day=5.00
max.books.per.member=3- INFO: General operations
- WARNING: Business rule violations
- SEVERE: Errors and exceptions
- FINE: Debug information
public class BookService {
public void addBook(Book book) throws BusinessException;
public List<Book> getAllBooks();
public Optional<Book> getBookByIsbn(String isbn);
public void updateBook(Book book) throws BusinessException;
public void deleteBook(Integer id) throws BusinessException;
public boolean isBookAvailableForLoan(Integer bookId);
}public class LoanService {
public void createLoan(Integer bookId, Integer memberId) throws BusinessException;
public void returnLoan(Integer loanId) throws BusinessException;
public List<Loan> getActiveLoans();
public List<Loan> getOverdueLoans();
public int countActiveLoansByMember(Integer memberId);
}We welcome contributions!
- Fork the repository
- Create a branch
git checkout -b feature/AmazingFeature
- Commit your changes
git commit -m "Add AmazingFeature" - Push to the branch
git push origin feature/AmazingFeature
- Open a Pull Request
- β Built with Java SE 17
- π’οΈ MySQL for data persistence
- π§ͺ JUnit 5 for testing
- π PlantUML for diagrams
Β© 2025 LibroNova Project β Developed with β€οΈ by Samnmy