JavaFX – Automotive management application

This assignment was a “bonus” assignment given to me once I finished all my other work. In previous years, other students attempted to make an inventory system for the Automotive department to track their oil and oil filters, and eventually, their whole inventory. I made this assignment in IntelliJ using Java as a Controller, FXML and CSS3 as design and UI, and Maven to compile the software into an executable and run JavaFX. Along with this, I also used SQL Server to host the database for the inventory and account management on the shop server that hosts SQL Server. I created two FXML files, one for logging into the main page, so that everyone has unique settings and options, and one for controlling the inventory. I then divided the inventory into different sections for controlling the inventory directly or taking in shipments. I designed the input based on a scanner tool for the Automotive department to use to scan items in, so they can search or input inventory.

There was a lot of planning and large-scale development into this project, unlike anything preceding it. Not to mention, this project was to, hopefully, get deployed, maintained, and updated in future years. I could not code this like a short assignment, and had to piece together maintainable code, which is a new experience at this large scale. I paid closer attention to variable and method names, organization of methods, and control flow to reduce bugs and make the time spent debugging or further implementation for other programmers easier. Nothing in particular for this project was difficult on the coding aspect, and I would rank my proficiency at a four. The scale and abstraction make it difficult, but fundamentally, it is all that we have been doing in previous assignments. However, I am at a two to three when it comes to the networking of the SQL Server and working with Ubuntu Linux for our shop’s server. It was a lot of fun to learn, but parts still confuse me, and I am not too confident in my skills in building upon that knowledge. It is something I still need to practice.

The hardest challenge was Ubuntu Linux, and figuring out how to link my Java code to the computer. Figuring out the ports, connections, and SQL setup through SQL Server and not MySQL was a challenge that stumped me for a long while. I eventually solved this by working one step at a time, unlocking the right port, learning to set up SQL Server databases through the terminal, and creating the right Connect statement in the SQL Server library for Java. I received amazing feedback from Automotive, Business Technologies, my classmates, and my instructor. All of them provided guidance about code, UI design, and Linux. About my method design, where to place UI elements for accessibility for users, and how Linux works in the first place, since I was only used to Windows before that. My favorite part of this project was the Linux part. It was completely new, but I really enjoyed myself. It’s a totally different world than what I’m used to, and felt like a breath of fresh air. It was completely brand new and was a difficult challenge, yet I persevered. It was a great learning experience on how to connect two computers using ports, which I learned previously in Sophomore year, but never had an application for. I honestly really liked this project. It gave me great opportunities to learn, grow, and test my resolve against large-scale projects that aren’t necessarily complex by code, but by sheer size.

JavaFX – Fantasy Bestiary

This project was an extra assignment to do when anyone finished their current work and wanted a greater challenge of an assignment. It is to make a Pokémon-like battle simulator between creatures that the player can create in the application as well. The main difference was that this had to use a HashMap to store the creatures. Which is where every creature has a key that shows you where it is. Like hotel rooms and their numbers. To complete this assignment, I had to create different classes for creatures that gave information about that creature and were customizable for each creature. A goblin can’t fly like a dragon after all. I did this in an IDE called IntelliJ with Maven to use JavaFX, a Java library that lets the user create UI elements.

While going through this project, there was a larger scale of management than what I was used to. I had many, many classes that I had to organize and inherit from perfectly to get the output I was formulating in my head. I was fortunate enough to have background experience with HashMaps, so the difficult part of the assignment wasn’t that much of a challenge. Still, however, I had to demonstrate knowledge of class structure, inheritance, polymorphism, organization, and safe coding practices when working with UI elements. After this project, I felt like I was at a 4 and was ready for an even more difficult assignment. This project made complete sense to me, and I felt that I could effectively explain each of my decisions for the design of why certain methods are the way that they are.

The hardest part of the assignment was the Creature class. Not because the code was especially difficult or complex, but because it was the foundation for every creature in the bestiary. Every creature came from this class and needed to have certain methods that worked in such a way that the creature could be unique when it needed to be, but also the same when it didn’t. I did this by making different revisions, looking at children classes of the Creature class, and making tweaks so that I could perform the tasks I had to complete. If I had to redo this project, I would definitely write down and plan out everything that every creature needs, and things that they don’t. I eventually presented this to my teacher and classmates and got some feedback. They liked how it works, but my code was a little messy. I took that to heart in a good way and changed how I organized code and created it so that it wouldn’t happen again. If messy code ever breaks, there is no fixing it afterall. This project was a learning experience of a project that is on a larger scale across many classes, which all come together to fix one problem. I really liked this extra assignment, for it pushed the limits I placed on myself. That I could now make big projects and not get lost in feature creep. I could effectively break a larger problem down into smaller parts that I can make one at a time, which eventually come together. The true essence of coding and problem-solving.