Project Motivation
As college students, we are constantly busy with attending class, studying, and attending office hours; it is difficult for us to coordinate activities with friends during free time. Planning to meet with others can become cumbersome when you factor in everyone's limited and staggered free time. Whether the event is a quick lunch date or time consuming like visiting a museum together, the only way to guarantee hanging out with others is to plan for it ahead of time. That's where our project comes in. Our version of a schedule builder allows multiple people to input their schedules for the week and collectively determine when they have free time in common.
Project Description
Our schedule builder enables a user to enter events for many people into the user-friendly user interface. The application prompts the user for the person's name, the week of the month, the day of the week, the event title, the event start time, and the event end time. Alternatively the user can choose to upload their calender as a .ics file from any online calendar, and the events will be converted into objects in our program. Once the user is done submitting all of the events, they will click the compare button. The compare button is what runs our algorithm and determines the availabilities across all of the schedules selected, where it is then displayed back to the user. Our project also has the ability to display the schedule of the selected person to the user, so they can use it as a weekly schedule too.
To create our project, we used two different programs to best implement our ideas. First we made multiple java classes to hold attributes for the event, the day of the week, and the schedule. These classes not only hold the attributes, but they also hold the all of the logic for inputting events, and comparing schedules. We also used WindowBuilder to create Java GUI application to allow the user to interact with our program. The GUI prompts the user with all of the proper fields to fully utilize our program and come up with the result that they are looking for
The first challenge was being able to write an algorithm that allows us to compare events on two schedule , and returns the common availabilities across the schedules. Although it was difficult, we were able to overcome this obstacle, and even implement the functionality two compare an arbitrary number of schedules and return the common availabilities to the user.
One of the main challenges that we faced when writing our program was finding a way to import the .ics files and interpret it in the same way we would if every even was entered manually. We were able to solve this by parsing the calendar into each event that only held the start time, the end time, and the title of the event. This allowed us to compare each event from the calendar using our algorithm so the free times and schedule could be displayed to the user.
A major challenge that we came across was in relation to interpreting recurring events from the .ics. Recurring events are slightly different way than the non-recurring events, and require a completely different approach for parsing the file. We were unable to find a solution to this problem due to our time limit for the Hackathon, but we inted to implement that functionality in the future.
We also intended to add the ability for schedule builder to display a person's schedule in calendar view. We were unable to implemet this feature due to time constraints, however, we plan to add it in the future.
Log in or sign up for Devpost to join the conversation.