Self-Checkout System

For this project I helped develop the software portion of a grocery stores self-checkout system. The project was built using Java and Java Swing.

Summary

The goal of this project was to create the software portion of a self-checkout system that can often be found at a grocery store. The hardware of the self-checkout machine was simulated using software and was created by professor Robert James Walker at the University of Calgary.

The software portion would handle the inputs provided by the hardware portion of the machine, like scanning an item or processing payment. For example, if an item is scanned then the total cost would update and the machine would lock until the item is placed in the bagging area. The entire machine was represented using a GUI created with Java Swing.

Git Repository

The action menu in this image serves to simulate the customer with their cart full of groceries.

Description

When first launching the program, the self-checkout machine starts in a locked state. To unlock the machine a staff member must log in and turn the machine on.

Below is an image of the staff members UI. At the bottom left of the menu there is a button to turn the station on, which will allow customers to access the machine. Furthermore, for any hardware maintenance the system must first be blocked via the Block System button.

This screen shows the window that will welcome the customer ready to checkout.

As mentioned above, the customers actions are handled by the action menu, and all the products added to the transaction will be listed on the left. When items are scanned they must be placed in the bagging area otherwise the system will lock due to the weight in the bagging area not matching the expected weight.

The search bar on the right is to search for an item that needs to be weighed and added manually, such as produce.

This screen indicates that the customer is adding their bags to the bagging area. This is so the system does not lock due to unexpected weight in the bagging area.

The following two images show the checkout screen with the payment options, the user can then pay using the action window.