Inspiration
One thing I have always struggled with is staying organized in academics. With tons of club meetings, homework assignments, and classes, its hard to keep everything straight. I developed Study Scheduler to fix this, in order to keep track of everything you have going on in your day.
What it does
Study Scheduler keeps track of all the commitments you have. The android app looks at the current day, finds which commitments you have that day, and lists them in chronological order to keep you organized. You can add more commitments, and list will auto update chronologically to fit the event into your schedule. While many apps can do this, Study Scheduler's specialty comes with the work you can add to it. You can add different school assignments, list when they are due and how long they will take to complete and Study Scheduler will algorithmically place them within your schedule to make sure your work gets done. This extra level of scheduling makes sure that you stay on task and avoid procrastination on work assignments, even while managing all your commitments. You can delete elements on your schedule by holding down on them, and the app remembers your schedule even when you exit out of the app.
How we built it
Study Scheduler was built using Android Studio Code. First three activities were created, a main activity that holds the current date and schedule, and an activity to add commitments, and one to add work. An SQL database was then added to the app, so that it can remember what you have going on at all times, and list elements accordingly based on the day. In order to keep track of the data, three classes were created, Item, Work, and Commitment. Both Work and Commitment inherited from Item, allowing all elements to be kept in a polymorphic list of type Item. These elements were then displayed accordingly based on their actual type, allowing a fully functional algorithmic scheduling app.
Challenges we ran into
It would be easier to list what wasn't a challenge in creating this app, so many things went wrong. Originally, instead of using a database, I was hoping to intent all data to the main activity. However, when you go to the AddWork or AddCommitment activities, the MainActivity stops running, losing all that data. This made it necessary to create an SQL database, which created so many problems. Multiple activities had to access the database, and it was necessary to Create, Read, and Delete. Stored in the database was the name of the work/commitment, and a BLOB (binary large object) which stored the polymorphic Item object. This created a whole different challenge of trying to serialize the objects and then deserialize them after accessing them. Another challenge was sorting the commitments based on their times, because the names were displayed, but you had to look at the Item BLOB in order to find the times. These were the large challenges I ran into, but almost every step of this app involved debugging one thing or another.
Accomplishments that I'm proud of
One thing I'm proud of is the SQL database which allows this app to be useful in real life. It was a massive struggle to get working, but a huge help for the app. Another accomplishment was using the selection sort algorithm to sort the commitments by time, making the display a schedule instead of just a list. Another major accomplishment was getting the app to respond to the current day, and only display commitments that were happening on that current day. Finally, creating the algorithm that added worktime into your schedule to finish assignments before the deadline is something I am especially proud of.
What we learned
I learned a lot through this project about Android App Development as a whole. This was my first time trying to make a useful app in real life, and I learned about using multiple activities, connecting an SQL Database, object oriented data storage and polymorphism, and sorting algorithms.
What's next for Study Scheduler
Next is to work on making the work placement algorithm more intelligent. Instead of placing everything in blocks, spreading things out more so the schedule allows for breaks and free time would be helpful. In addition, working with more diverse data, like half hours and fifteen minutes would make the app more useful to the user.
Built With
- android-studio
- datetime
- java
- mysql
- xml
Log in or sign up for Devpost to join the conversation.