This was one of the projects students did when I helped teach APCS to high schoolers as a TEALS volunteer (FracCalc).
Some of the implementations went way overboard and it was so much fun to watch and to play a part.
Even as a “seasoned” developer I learned some tidbits talking through the ways to do (and not do) certain parts. When to store input raw vs processed, etc.