UCLA is the #1 public university in terms of dining options. However, every day, students end up sitting around their dorms during meal periods, or coming back from campus, wondering where they should eat. But, no one wants the pressure of choosing a dining option, especially when one's friends have no opinions on where to eat. Often, that causes a stalemate where everyone sits around, unsure where to go to eat until someone finally chooses a dining hall, or all the dining options close. To remedy this, we created Dining Decisions to help groups of friends all over UCLA decide the best place to eat!

What it does

Dining Decisions is a program that takes in a variety of user multiple choice options then gives out a nearby, open dining option that fits their needs. The program takes in the user's location, mood, health food preference, and whether the user is willing to go to a takeout option, dining hall, or either. Additionally, the program takes data straight from the UCLA dining website for crowd data and the computer's clock to tell which dining options are closed. Based off of the user's answers, the algorithm gives each dining hall a point value and the dining option with the most points is displayed to the user with a corresponding picture.

How we built it

We built this project with Java because that was a language each group member was familiar with. From there, we planned out the class structure of the program on a piece of paper drawing connections between methods and classes so everything had a smooth relationship. Once the idea was flushed out on paper, we each took responsibility for a different class and began to program the methods in each class. As we developed our program, we began to upload our code onto a Github repository such that we could reference each others' code and progress further until it was complete.

Challenges we ran into

The most prominent challenge we ran into was gathering the crowd data from the UCLA dining service website to use in our code. Many of the APIs found online were paid services, required an application, or weren't in service anymore. Additionally, none of us had experience in gathering data from the Internet in our code. Thus, we asked for help from a mentor and he was able to provide us with the correct resources to web scrape. Once that hurdle was overcome, our next issue was parsing through for the dining hours. Because of the time constraint and because the API the mentor directed us to didn't give the hours of the dining halls, we had to hard code in constants to ensure the program kept in mind which dining halls are closed.

Accomplishments that we're proud of

The first accomplishment we're proud of is getting one of our group members to stop using BlueJ. Another accomplishment we're proud of is one of our members, Josh, had almost no experience in programming, yet throughout the day, Josh was able to take over the most complicated part of our code. He ended up programming the method that got the data from the UCLA dining website and converting the data received into the necessary variable types. We are also proud that even though it was the first time using Github for three of the members, there were no merge conflicts.

What we learned

We learned how to make an API get request in Java and parse the data that we received from it. Other data we learned how to get was the time and data from the computer itself. Additionally, we learned how to collaborate together over GitHub, something that previously only one member knew how to use.

What's next for Dining Decisions

The next steps for Dining Decisions would be to check for the hours online so if the hours for dining options change with holidays, the program will be able to account for it. We could also improve the user interface to take in more variables so the algorithm can better pinpoint the best dining option to eat in. Lastly, we can implement machine learning to better fine tune the algorithm that determines the dining halls.

Built With

Share this project: