Skip to content

About

Repository for Project

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Campus Event Booking System Overview

The Campus Event Booking System is a Java application designed to help manage events and user registrations on a campus. This program allows different types of users to be created, events to be organized, and bookings to be made while keeping track of event capacity. If an event reaches its maximum capacity, the system automatically manages a waitlist so that users can still sign up and potentially receive a spot later.

This project was built using Java and JavaFX. The backend classes handle the data and logic of the system, while the graphical interface allows users to interact with the system in a simple and visual way. The goal of the project was to create a structured program that demonstrates how multiple components of a system can work together to manage information effectively.

User Management

This part of the system is mainly responsible for creating and storing users. Every user in the system has a unique user ID, along with a name and email address. The program supports three different types of users: students, staff members, and guests. Each of these user types extends the main abstract userManagement class.

When a new user is added, the system checks that the user ID has not already been used. This helps prevent duplicate entries and keeps the data organized. The program can also display user information when needed and provide a summary of their bookings. Users can be viewed individually or listed together depending on the action being performed.

Event Management

The Event Management portion deals with the creation and tracking of events. Each event has an ID, a title, a type, and a maximum capacity that determines how many people can attend. The system keeps track of how many bookings each event currently has and ensures that the number of confirmed attendees never exceeds the allowed capacity.

This part of the system makes it possible to create new events, view existing events, and cancel events when necessary. It works closely with the booking system to ensure that registrations are handled properly.

Booking Management

The Booking Management system connects users with events. When a user registers for an event, a booking object is created that stores information about the user and the event. Each booking also has a status that shows whether the booking is confirmed or waitlisted.

If an event has available space, the booking is immediately confirmed. If not the system places the user on a waitlist instead. This allows users to still register for events even if the event is currently at capacity.

Waitlist Management

The waitlist system helps manage situations where an event becomes full. When users try to book an event that has already reached its capacity, they are added to a waitlist. The waitlist keeps track of the order in which users attempted to register.

If a confirmed booking is cancelled, the system automatically moves the first user on the waitlist into a confirmed spot. This ensures that the process remains fair and that available spots are filled quickly.

Graphical User Interface

The program also includes a graphical user interface built using JavaFX. The interface allows users to navigate through the different parts of the system and perform actions without needing to interact directly with the code.

The GUI includes separate sections for managing users, events, bookings, and waitlists. Navigation buttons allow users to switch between these sections, and tables are used to display information clearly. Input fields and buttons allow users to add new data or perform actions such as creating users or registering for events.

Technologies Used

This project was built using Java. JavaFX was used to create the graphical user interface that allows users to interact with the system visually. Git and GitHub were used to manage version control and collaborate on the project.

How to run

  1. Clone or download the repository and open it in IntelliJ IDEA
  2. move to branch named gui-changetwo (IMPORTANT!!!)
  3. Place users.csv, events.csv, and bookings.csv in the project root (same level as pom.xml)
  4. In the top-right dropdown, click Edit Configurations
  5. Click + → Maven
  6. Set the command line to: clean javafx:run
  7. Set Maven home to Bundled (Maven 3.x) (make sure maven is used properly) 8.Click OK, then hit the green Run button

CSV File Format:

users.csv userId,name,email,userType U001,Alice Smith,alice@uoguelph.ca,Student

events.csv eventId,title,dateTime,location,capacity,status,eventType,topic,speakerName,ageRestriction E101,Intro to Git,2026-02-12T14:30,Library 101,40,Active,Workshop,Version Control,,

bookings.csv bookingId,userId,eventId,createdAt,bookingStatus B9001,U001,E101,2026-02-01T09:15,Confirmed

Project Purpose

The main purpose of this project was to practice building a structured Java application using object-oriented programming principles. Our project demonstrates how different classes and components can work together to form a complete system. It also provides experience with designing user interfaces, managing data through classes, and organizing code across multiple files.

About

Repository for Project

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages