ASSIGNMENT 2 2025
UNIQUE NO.
DUE DATE: 18 JULY 2025
, lOMoARcPSD|18222662
COS3711/Assignment 2/2025
Assignment 2
1. Introduction
Please read this whole assignment tutorial letter before starting to ensure that you know what is
expected of you and you do not get surprised by some requirement later in the development
process.
Use CMake to set up the projects and useQMainWindow instances for the user interfaces so that
you can implement the functionality provided by a QMainWindow (such as menus, a toolbar, and
a status bar) to meet the requirements of the scenario given below. Please note that you must
not use Qt Designer, and you are expected to manually set up GUIs to ensure that you properly
handle memory using Qt’s parent-child functionality.
Marks will also be awarded for following good programming practice.
• Follow standard naming conventions: class names start with a capital letter, variable and
function names start with a lowercase letter, using camelCase for names made up of multiple
words.
• Ensure consistent code layout and use of blank lines.
• Use forward class declarations in header files.
• Use initialiser lists in constructors.
• Have proper GUI management: setting cursor focus, sequential tabbing, clearing input widgets
(like text input fields being cleared and spin boxes being returned to some default value), and
enabling and disabling buttons/menu items as appropriate.
• Provide appropriate user feedback.
• Your code should build and run without any warnings.
Consider the following scenario and then design a solution to meet the requirements listed.
2. Scenario
Implement an application that tracks items bought from a store. Screenshots of possible interfaces
have been provided as guidance below.
Store application
The store keeps a list of customers so that when something is purchased from the store, it is
recorded against that customer’s name. Only the customer’s name is required.
Only two items are currently sold in the store currently – books and magazines, and only the name
of the item is required. Clearly, a list of such items is needed, and the user should be able to add
items to the list. When an item is added, the application should automatically make a backup in