- What will the application do?
This application will allow users to set up a pool of available courses and build their own course plan. The application can store and modify the users' course plan and flag any courses with unfulfilled prerequisites or credit excluded. - Who will use it?
Students in general. The application is not limited to UBC students since the application accept input of any form of course code. But for now the sample courses will mainly be drawn from UBC. - Why is this project of interest to you?
Using Workday to plan my courses has be an extremely frustrating experience. I thought I could do a slightly better job than the Workday. Therefore, I come up with the idea of building an alternative course planning application.
- As a user, I want to be able to add a course (course code in letters and numbers, like CPSC 213) to my course plan
(user adding an X to a Y) - As a user, I want to be able to view the list of courses in my course plan
(user viewing a list of items) - As a user, I want to be able to mark a course as completed with the relevant grade and term
- As a user, I want to be able to remove a course from my course plan
- As a user, I want to be able to see the number of courses in my course plan and the number of courses and credits
- As a user, I want to be able to save my Course Plan to a JSON file (if I so choose from the application menu)
- As a user, I want to be able to be able to load my Course Plan from a JSON file (if I so choose from the application menu)
- As a user, when I select the quit option (q) from the application menu, I want to be reminded to save my Course Plan to a JSON file and have the option to do so or not by choosing [y/n].
- You can frist create an empty Course Plan by clicking the
Open New Course Planbutton - You can then add a term to the Course Plan by clicking the
Add Termbutton - You can remmove a term from the Course Plan by clicking the
Remove Termbutton - You can generate the first required action related to the user story "to be able to add a course (course code in letters and numbers, like CPSC 213) to my course plan" by clicking the
Add Coursebutton - You can drop a course from the Course Plan by clicking the
Drop Coursebutton - You can generate the second required action related to the user story "to be able to view the list of courses in my course plan" by clicking the
View All Coursesbutton - You can change the status of a course in the Course Plan by clicking the
Mark Completedbutton - You can view the statistics of the Course Plan by clicking the
View Statisticsbutton - You can locate my visual component by looking at the welcome frame or the bottom left of the main frame
- You can save the state of my application by clicking the
Save Course Planbutton - You can reload the state of my application by clicking the
Load Course Planbutton - You can quit the state of my application by clicking the
Quitbutton
-
Wed Nov 27 19:54:34 PST 2024
Course Plan created or loaded -
Wed Nov 27 19:54:34 PST 2024
Term added -
Wed Nov 27 19:54:34 PST 2024
Term added -
Wed Nov 27 19:54:34 PST 2024
Course added to the specified term -
Wed Nov 27 19:54:34 PST 2024
Course added to the specified term -
Wed Nov 27 19:54:34 PST 2024
Course added to the specified term -
Wed Nov 27 19:54:34 PST 2024
Course added to the specified term -
Wed Nov 27 19:54:34 PST 2024
Course added to the specified term -
Wed Nov 27 19:54:34 PST 2024
Course added to the specified term
- If I had more time to work on the project, I will break down the CoursePlanAppGUI class into multiple classes to handle different display and interactive functionalities. At the moment, the CoursePlanAppGUI is an all-in-one single class to handle the creation, instantiation, and interaction of all the frames, panels, buttons, display boxes. I think breaking them apart and into smaller classes where each class specialize on a single panel of interactive display on a specific area of the JFrame will be a more reasonable and readable design.
- Also, the JsonReader and JsonWriter classes can be redesigned as a Singleton pattern. Right now, the JsonReader and JsonWriter fields being stored in the CLI and GUI classes are not being used for data storage or any other purpose but only for parsing CoursePlan into JSON file or parsing JSON file back into CoursePlan. It might make more sense to turn the JsonReader and JsonWriter classes into Singletons as we only need a single object throughout the whole program to invoke the methods for parsing.