A comprehensive, console-based Event Management System built with core Java. This application demonstrates key Object-Oriented Programming (OOP) principles to manage various types of events, users, and registrations in a structured and extensible way.
This system provides a complete, self-contained solution for managing event and user data directly from a command-line interface. It is designed with a focus on clean architecture, modularity, and strong OOP foundations, making it a robust and extensible platform for event coordination. The application handles the entire lifecycle of event and user management, from creation to reporting.
-
📦 Dynamic Object Management Add, remove, and display events and users. The system uses a flexible, in-memory data structure (
LinkedList
) for efficient data handling. -
🏛️ Polymorphic Design Create different types of events (Corporate, Wedding, Conference) and users (Admin, Customer). Each type has unique attributes and behaviors, showcasing the power of polymorphism.
-
⚙️ Interactive Command-Line Interface (CLI) A user-friendly, menu-driven interface allows for easy interaction with the system's features without needing a graphical front-end.
-
✔️ Robust Data Validation Built-in utility classes ensure data integrity by validating dates, email formats, phone numbers, and other user inputs before processing.
-
⚠️ Structured Exception Handling A custom exception hierarchy provides graceful error handling for invalid operations, such as searching for a non-existent event or entering incorrect data. -
📊 Reporting Module Generate an on-demand summary report that displays key metrics like the total number of events, total budget across all events, and a count of events by category.
The project is organized into a modular package structure to ensure a clean separation of concerns:
src/eventmanagement/
├── core/
│ ├── Event.java
│ ├── EventManager.java
│ └── Registration.java
├── events/
│ ├── ConferenceEvent.java
│ ├── CorporateEvent.java
│ └── WeddingEvent.java
├── exceptions/
│ ├── EventManagementException.java
│ ├── EventNotFoundException.java
│ └── ... (and other custom exceptions)
├── gui/
│ └── SimpleEventManagementGUI.java
├── users/
│ ├── Admin.java
│ ├── Customer.java
│ └── User.java
├── util/
│ ├── DateValidator.java
│ └── StringValidator.java
│
├── EventManagementSystem.java # The main engine of the application.
├── Main1.java # The primary interactive CLI entry point.
└── GUILauncher.java # The entry point for launching the GUI.
Follow these instructions to get a copy of the project up and running on your local machine.
- Make sure you have a Java Development Kit (JDK) version 8 or higher installed.
- A terminal with
bash
support (like Git Bash on Windows, or the default terminal on macOS/Linux).
-
Clone the repository
git clone <your-repository-url> cd <your-repository-directory>
-
Compile the source code A build script is included to compile all
.java
files into thebin
directory.bash build.sh
-
Run the application Use the
run-main.sh
script to start the interactive console application.bash run-main.sh
Once the application is running, you will be greeted with the main menu. Simply enter the number corresponding to the action you wish to perform.
===== Event Management System =====
1. Add Event
2. Remove Event
3. Display All Events
4. Add User
5. Remove User
6. Display All Users
7. Generate Event Summary Report
8. Exit
Enter your choice:
The application will guide you through the process for each option, prompting for required information like event details or user IDs.
The system is built on a foundation of proven software design principles for robustness and maintainability.
- ✅ Object-Oriented Programming for clean and reusable code.
- Abstraction: Core logic is defined in abstract classes (
Event
,User
) and interfaces (EventManager
). - Inheritance: Concrete classes (
WeddingEvent
,Admin
) extend base classes to inherit common functionality. - Polymorphism: The system treats all event and user types as their base objects, simplifying management logic.
- Abstraction: Core logic is defined in abstract classes (
- 🔗 Separation of Concerns by dividing the application into distinct packages for UI, business logic, data models, and utilities.
⚠️ Custom Exception Hierarchy to manage application-specific errors and provide clear feedback to the user.
To verify that the application is set up correctly:
- Run the application using
bash run-main.sh
. - Select option
3
(Display All Events). It should report that no events are available. - Select option
1
(Add Event) and follow the prompts to add a new event. - Select option
3
again. The newly created event should now be displayed. - Select option
8
to exit the application gracefully.
Planned features to enrich the system:
- 🗄️ Database Persistence: Integrate with a database (like MySQL or PostgreSQL) to store data permanently.
- 🎨 Full GUI Implementation: Develop the
SimpleEventManagementGUI
into a fully featured graphical interface using Swing or JavaFX. - 🔐 User Authentication: Add a login system with roles and permissions.
- 📈 Advanced Analytics: Introduce more complex reports and data visualizations.
- 🌐 API Endpoints: Expose a REST API to allow other services to interact with the system.
##👥 Team This project was developed by a passionate team:
Dishank Vyas
Krishna Shetty
Shaman Shetty
Contributions are welcome! Please follow these steps to contribute:
- Fork the repository.
- Create a new feature branch.
git checkout -b feature/your-feature-name
- Commit your changes.
git commit -m 'Add your amazing feature'
- Push to the branch.
git push origin feature/your-feature-name
- Open a Pull Request. 🙌