Skip to content

calvinKLyeung/CoursePlanningApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Course Planning Application Project

An alternative to Workday

  • 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.

Phase 0 - User Stories in General

  • 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

Phase 2 - User Stories about Save and Read

  • 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].

Phase 3 - Instructions for End User

  • You can frist create an empty Course Plan by clicking the Open New Course Plan button
  • You can then add a term to the Course Plan by clicking the Add Term button
  • You can remmove a term from the Course Plan by clicking the Remove Term button
  • 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 Course button
  • You can drop a course from the Course Plan by clicking the Drop Course button
  • 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 Courses button
  • You can change the status of a course in the Course Plan by clicking the Mark Completed button
  • You can view the statistics of the Course Plan by clicking the View Statistics button
  • 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 Plan button
  • You can reload the state of my application by clicking the Load Course Plan button
  • You can quit the state of my application by clicking the Quit button

Phase 4 - Task 2

  • 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

Phase 4 - Task 3

  • 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.

About

OO Design practice

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages