Overview
The C++ student management system, rebuilt in Java with a graphical interface instead of a console and CSV files instead of hand-rolled serialisation.
Rewriting something you have already built is one of the more useful exercises available, because the problem is solved and the only variable left is the approach.
Complexities tackled
A graphical interface changes the shape of the program. A console application runs top to bottom and asks questions in the order it wants them. A windowed one waits, and the user decides what happens next. Moving between those two models is a genuine restructuring, not a port.
CSV is a format other tools can read. Swapping a custom file format for CSV meant the data could be opened in a spreadsheet without the program, which is a small decision with a disproportionate effect on how useful the output is.
Stack
Java with a graphical interface, CSV for persistence.
Working on something similar?
Tell me what you are building and what is in the way. I will tell you honestly whether I am the right person for it.