This project was for a university assignment where we had to create a section of a CV Builder for an end user. Depending on our last digit in our ID, we were assigned 3 sections to complete. My 3 sections where User, Profile Statement, and Skills.
User was about their title, name, and email. This was so the user can select a different user profile when generating a CV for a job application. For example, one profile could be for an personal job application, using their personal email address and name, while another could be for a business application that uses their business email address and title. Each element can be edited by just clicking on the field you want to edit and changing the text inside. Than after clicking save, it'll save the changes to the CSV file. There is also an include button so the user can choose which profile they want to include (only 1 can be chosen)
Profile Statement is about their intro about themselves, a statement about themselves. In this section, it was important that the user was able to input a statement straight from the program itself via a text field or via a pre-made txt file. I decided to use a JSON file management system to store the statements as I could have the statement saved as a string object and a true or false boolean in another object to see if the user has selected that statement as the active profile statement. A statement can be edited after uploading or adding it by just clicking on the statement you want to edit, clicking Edit, than updating the text in the text field. Clicking save will save all changes and update the JSON file. To see if a statement was included, there would be a tick next to the statement.
Skills is about their skills (shocking I know), they can add, edit, and remove skills. All skills are included in the final CV file but to make sure the user is aware they'll be added, ticks are added next to each skill. The skills were added to a CSV file.
When the user was happy with the additions, they were able to export the CV to either the console or to a HTML file to share/print. The HTML file includes their selected user, statements, and skills.
The whole thing took me a week to program and test, during that time I experimented with different types of methods to make the CV Builder. On the first day, I spent my time using a GUI Builder to set a foundation of what I should be aiming for. Such as panel sizing, menu layout, tab structure, etc. Once I got a design down that I liked, I started to program the swing program. We weren't allowed to use a GUI builder for the assignment so I deleted the GUI code and started programming from scratch. Since I was quite aware of the syntax of Java swing, I was able to get most of the foundation work finished on day 2. Most of day 3 was making sure scablabity was possible and the code was modular so if needed I can add more sections on in the long run. To achieve scablabity, I simply just made sure that each section of code was able to survive outside of the main section of code. For example, if I wanted to remove a tab, I could simply find the line that is labelled "insert tab [name]" and remove it, than the tab file being called to generate the code will be seperated from the main panel file. The rest of the days 4-7 were spent adding optional functions and debugging. During this part I added a Help tab on the menu bar so the user was able to get some help in case they got lost, a labelled import and export button in the file menu option, etc. The final 2 days were solely spent making sure the end users experience was clean and polished.
The grade I got from this was a 94%. Some fixes I could of done to get the extra 6% would of been to add proper commit descriptions as I usually just put "Foundation for CV Builder" instead of what I actually changed/added from the commit. Another issue was during the demo video I gave, I didn't have enough time to talk about the design so I spent the time talking about the code which cost me a few marks. I also forgot to credit a youtube video in my demo and final code commit as that's how I thought myself how to use JSON (I indeed got marked down because I didn't reference a youtube video :D).