The Event Management System is a modular, console-based application written in Java 21 that allows users to create, manage, and track events. It integrates essential features like user management, event scheduling, ticket booking, and real-time analytics, while adhering to modern software development practices and incorporating advanced Java features.
- Event Creation & Management:
- Create events with attributes like name, type, date, venue, and capacity.
- Update or delete existing events.
- User Registration:
- Register users for events with validation to prevent duplicate entries.
- Analytics:
- Display real-time statistics such as total registrations and event occupancy percentage.
- Data Export:
- Export event and registration details to CSV or JSON files.
- Java 21 Features:
- Virtual Threads: Efficiently handle concurrent operations like user registration and analytics updates.
- Pattern Matching: Validate user inputs, such as email and phone number, with pattern matching.
- OOP Principles and Design Patterns:
- Encapsulation: Securely manage event and user data.
- Inheritance and Polymorphism: Implement a modular system for handling different event types.
- Design Patterns:
- Singleton: Centralized file management with a single instance.
- Factory: Create event objects of various types (e.g., seminars, concerts).
- Builder: Handle optional properties like speaker details and VIP access.
- Collections Framework, Streams, and Multithreading:
- Use collections (e.g.,
Mapfor event lookups,Listfor registrations). - Utilize streams for filtering and aggregating data (e.g., finding fully booked events).
- Implement multithreading for parallel operations, such as analytics and ticket updates.
- Use collections (e.g.,
- Java I/O and Functional Programming:
- Java I/O: Read/write event and user data to/from CSV/JSON files.
- Functional Programming: Use lambdas and functional interfaces for managing filters and input processing.
- Event:
- Attributes:
id,name,type,date,venue,capacity,registrations. - Methods:
addRegistration(),isFullyBooked().
- Attributes:
- User:
- Attributes:
id,name,email,phone. - Methods:
validate().
- Attributes:
- EventFactory:
- Create events of different types using the Factory pattern.
- Analytics:
- Real-time calculation of registration statistics using streams and multithreading.
- FileManager:
- Handles reading/writing data to/from CSV/JSON using Java I/O.
- ThreadManager:
- Manages concurrent operations using Virtual Threads.
- Validator:
- Validates inputs such as email, phone number, and event details using pattern matching.
| Feature | Topic Coverage |
|---|---|
| Event creation | OOP principles (encapsulation, inheritance), Factory pattern |
| Registration management | Collections Framework, Streams, Functional Interfaces |
| Real-time analytics | Streams API, Multithreading, Virtual Threads |
| Data validation | Pattern Matching (Switch), Functional Interfaces |
| Export to CSV/JSON | Java I/O, Functional Programming |
| Concurrency handling | Multithreading, Virtual Threads |
- Start Console Application:
- Display menu with options: Create Event, Register User, View Analytics, Export Data.
- Event Creation:
- User inputs event details (validated using pattern matching).
- Event object is created using the Factory and Builder patterns.
- Registration:
- User selects an event and provides registration details (validated using pattern matching).
- Registration is handled with Virtual Threads to avoid blocking.
- View Analytics:
- Analytics generated using streams are displayed in real time.
- Export Data:
- Event and registration details are written to CSV/JSON files using Java I/O.
- Java 21: Core programming language with advanced features like Virtual Threads and Pattern Matching.
- JUnit: Unit testing framework for validating functionality.
- Maven/Gradle: Dependency and build management.
- Collections and Streams: Efficient data processing.
- Multithreading: For handling concurrency with Virtual Threads.
Contributions are welcome! Feel free to fork the repository and submit a pull request with your changes.
This project is licensed under the MIT License. See the LICENSE file for details.