- Course: Programming Fundamentals / Java Programming
- Assignment Type: Console Application Development
- Programming Paradigm: Procedural Programming (No OOP)
- Duration: 2-3 Weeks
- Total Marks: 100
Students are required to develop a comprehensive Library Management System using Java console application. This assignment focuses on implementing a complete library management system using only procedural programming concepts, arrays, and fundamental programming constructs without object-oriented programming (OOP) principles.
Upon completion of this assignment, students will be able to:
- Apply procedural programming concepts to solve real-world library management problems
- Implement data management using arrays and 2D arrays effectively
- Design and develop menu-driven console applications with user-friendly interfaces
- Handle data validation and error checking in library applications
- Create comprehensive reporting systems for library analytics
- Manage data relationships between multiple entities without using objects
- Implement CRUD operations (Create, Read, Update, Delete) using procedural approaches
The system must manage the following entities using separate arrays:
- Member ID (int) - Primary Key
- Name (String) - Member full name
- Address (String) - Member address
- Phone Number (String) - Contact information
- Membership Type (String) - Regular/Premium/Student
- Book ID (String) - Primary Key
- Title (String) - Book title
- Author (String) - Book author
- Genre (String) - Book category
- Publication Year (int) - Year published
- Total Copies (int) - Total books available
- Available Copies (int) - Currently available books
- Transaction ID (int) - Primary Key
- Member ID (int) - Foreign Key referencing Member
- Book ID (String) - Foreign Key referencing Book
- Borrow Date (String) - Date book was borrowed
- Due Date (String) - Return due date
- Return Date (String) - Actual return date (null if not returned)
- Fine Amount (double) - Late return fine
- Reservation ID (int) - Primary Key
- Member ID (int) - Foreign Key referencing Member
- Book ID (String) - Foreign Key referencing Book
- Reservation Date (String) - Date of reservation
- Status (String) - Active/Fulfilled/Cancelled
- No Object-Oriented Programming - No classes (except main class), objects, inheritance, or encapsulation
- Procedural Programming Only - Use only static methods and functions
- Array-Based Data Storage - All data must be stored in arrays or 2D arrays
- Loop-Based Operations - Use loops for all data processing and searching
- Console Interface - Text-based menu system only
- No External Libraries - Use only standard Java libraries
Maximum Array Sizes:
- Members: 200 records
- Books: 300 records
- Borrowing Transactions: 500 records
- Reservations: 100 records
Data Persistence: In-memory storage only (data resets on program restart)
- Input validation for member ID uniqueness
- Capture member details (ID, name, address, phone, membership type)
- Prevent duplicate member IDs
- Display success/error messages
- Display all members in tabular format
- Show member ID, name, address, phone, and membership type
- Handle empty member list scenario
- Search by member ID or name
- Display complete member information
- Handle member not found scenarios
- Find member by ID
- Allow selective field updates
- Maintain data integrity
- Confirm successful updates
- Unique book ID validation
- Input book details (ID, title, author, genre, year, copies)
- Prevent duplicate book IDs
- Display confirmation messages
- Tabular display of all books
- Show ID, title, author, genre, year, and availability
- Handle empty library scenarios
- Search by book ID, title, or author
- Display complete book information
- Handle book not found cases
- Modify book details except ID
- Update title, author, genre, year, and copies
- Validate input data
- Add or remove book copies
- Track available vs total copies
- Display current availability after updates
- Generate unique transaction IDs
- Validate member and book existence
- Check book availability
- Calculate due dates (14 days from borrow date)
- Update available copies
- Handle member borrowing limits (max 3 books)
- Find active borrowing transaction
- Calculate fine for late returns ($1 per day)
- Update book availability
- Record return date
- Display fine amount if applicable
- Create book reservations when not available
- Validate member and book existence
- Generate unique reservation IDs
- Set reservation status as "Active"
- Display all reservations by status
- Show member and book details
- Allow cancellation of reservations
- Total number of books and members
- Currently borrowed books count
- Available books count
- Total fines collected
- List members with current borrowings
- Show borrowing history
- Calculate total fines per member
- Books sorted by borrowing frequency
- Display borrow count for each book
- Show most and least popular genres
- List all overdue books
- Calculate accumulated fines
- Display member contact information for follow-up
- Clear and intuitive main menu
- Proper sub-menu navigation
- Consistent interface design
- Validate user inputs
- Handle invalid menu selections
- Display appropriate error messages
- Use separate arrays for each entity attribute
- Implement counter variables to track current array usage
- Create search functions for finding records by key fields
- Maintain data relationships through foreign key references
Main Menu
├── 1. Manage Members
│ ├── Add Member
│ ├── View All Members
│ ├── Search Member
│ └── Update Member
├── 2. Manage Books
│ ├── Add Book
│ ├── View All Books
│ ├── Search Book
│ ├── Update Book
│ └── Manage Availability
├── 3. Borrowing Operations
│ ├── Borrow Book
│ └── Return Book
├── 4. Reservations
│ ├── Reserve Book
│ ├── View Reservations
│ └── Cancel Reservation
├── 5. Generate Reports
│ ├── Library Statistics
│ ├── Member Activity Report
│ ├── Popular Books Report
│ └── Overdue Books Report
└── 6. Exit
Initialize the system with:
- 5 sample members with different membership types
- 10 sample books from various genres
- 2-3 sample borrowing transactions
- Display initialization confirmation message
- Correct use of arrays and loops (15%)
- Proper data validation and error handling (15%)
- Complete CRUD operations implementation (15%)
- Accurate calculations and business logic (15%)
- All required features implemented (10%)
- Menu navigation and user experience (8%)
- Report generation accuracy (7%)
- Code organization and readability (5%)
- Proper variable naming and comments (5%)
- Efficient algorithm implementation (5%)
- Source Code File: LibraryManagementSystem.java
- Documentation: Assignment report with:
- System overview and features
- Data structure explanation
- Sample output screenshots
- Testing scenarios and results
- Challenges faced and solutions
- File naming: StudentID_LibrarySystem.zip
- Include: Source code, documentation, and any additional files
- Submission deadline: [Insert specific date]
Students must demonstrate:
- All menu options working correctly
- Data validation preventing invalid inputs
- Book borrowing and returning with fine calculations
- Report generation with accurate calculations
- Error handling for edge cases
| Component | Excellent (90-100%) | Good (80-89%) | Satisfactory (70-79%) | Needs Improvement (60-69%) | Unsatisfactory (<60%) |
|---|---|---|---|---|---|
| Member Management | All CRUD operations work flawlessly with proper validation | Most operations work with minor issues | Basic operations work with some validation missing | Limited functionality with several bugs | Major functionality missing |
| Book Management | Complete book management with availability tracking | Good book management with minor gaps | Basic book operations working | Limited book features | Poor implementation |
| Borrowing System | Seamless borrowing/returning with fine calculations | Good borrowing system with minor issues | Basic borrowing functionality | Limited borrowing features | Major borrowing system flaws |
| Reporting System | Comprehensive reports with accurate calculations | Good reports with minor calculation issues | Basic reports working | Limited reporting features | Poor or missing reports |
| Code Quality | Clean, well-documented, efficient code | Good code structure with minor improvements needed | Acceptable code quality | Code needs significant improvement | Poor code quality |
- Java Arrays and Loops - Review multidimensional arrays and nested loops
- Date Handling - Working with date strings and calculations
- Input Validation - Scanner class usage and error handling
- String Manipulation - Formatting output and string comparisons
- Mathematical Operations - Fine calculations and date arithmetic
- Start with basic menu structure before implementing features
- Test each module independently before integration
- Use meaningful variable names for better code readability
- Implement data validation at input points
- Test edge cases like empty arrays and invalid inputs
- Consider borrowing limits and membership restrictions
- Borrowing Period: 14 days
- Maximum Books per Member: 3 books
- Fine Rate: $1.00 per day for overdue books
- Membership Types: Regular, Premium, Student
- Reservation Duration: 7 days to claim reserved books
This assignment must be completed individually. While students may discuss general programming concepts, sharing code or copying solutions will result in academic penalties. All submitted work must be original and properly attributed.
For technical questions or clarification on requirements, students should:
- Review assignment guidelines thoroughly
- Consult course materials and lecture notes
- Use office hours for instructor assistance
- Post general questions on course discussion forum
Assignment Coordinator: [Instructor Name]
Contact: [Email Address]
Office Hours: [Schedule]
This assignment is designed to reinforce fundamental programming concepts while building practical software development skills for library management systems. Good luck with your implementation!