For this first artifact, the original project was an excersice on utilizing data structures to build objects and manipulate them with a service class, then running automated tests to ensure proper storage. It was originally a very simple project that contained three objects classes and three service classes. The objects were created and saved into a list through the service class. The course was heavily focused on automated testing, object building and object manipulation.
View Project on GitHub1. Briefly describe the artifact. What is it? When was it created?
The artifact that I am using for this category is Project 1 from CS320. The purpose of the application was to create Appointments, Contacts and Tasks and set up automated tests to ensure that the software was working properly. The project included object classes to construct the objects (Appointments, Contacts, and Tasks) and service classes to manage lists of these objects. It was created on December 7th, 2024.
2. Justify the inclusion of the artifact in your ePortfolio.
The reason I chose this project for my ePortfolio was due to the fact that it was not a complete application and I saw room for expansion. The structure of the application and the current storage structure for the data could easily be improved with the addition of a user interface and a database. Some of the structures needed reworked and adding a database and GUI would serve to showcase my skills in the parameters of Software Design and Engineering. There were places to increase security with user accounts and encrypted passwords and better input validation.
3. Did you meet the course outcomes?
This project is still a work in progress since it is also going to be used for Category 3 of this course. It is on track to meet the enhancements that I had planned at the beginning of the course. All of the GUI components have been finished and when I create the database for the application, I will finish the remaining components to present the appointment, customer accounts, employee accounts and tasks to the user.
4. Reflect on the process of enhancing and modifying the artifact.
I have never created a GUI for a Java application and I had to learn how to create swing GUI structures for this artifact. I think learning how to create workable user interfaces with swing was the biggest obstacle to hurdle. I went from not knowing how to create anything in swing to creating the user interface, dialogs and list displays for this project. It was challenging to create each of the dialogs and fields required to create the kind of UI that would serve this project.
View Project on GitHubThe scheduler program uses a Model View Controller (MVC) architecture which consists of object Models for each object type:
Each of these objects has a service class that handles interaction with the database. They are responsible for the Create, Read, Update and Delete (CRUD) functionality:
The View(GUI) for the application was built using Java Swing and consists of:
The Main Screen of the Scheduler Application. Displays a list of current appointments.
The add new appointment function allows the user to set up a new appointment, create a new customer or task if required and save that to the database.
The add customer function takes customers information and adds it to the database
The add employee function takes new employee information, hashes the password and adds it to the database. once an employee has set up a login they are able to login to the applicaiton.
You can access the add task or add customer functions through the add appointment dialog or directly from the menu on the main screen.
The user has the ability to manage tasks, appointments, customers and employees throught thier respective management screens. By double clicking on a record, they will bring up the edit record dialog for that type of object.
Once the user edits the data, the program saves the updates the information in the database.
Above is a diagram of the class structure of the enhanced artifact.
Sequence diagram for the appointment scheduling application.