COS3711 Assignment 3 (COMPLETE ANSWERS) 2025 - DUE 2025; 100% correct solutions and explanations.
COS3711 Assignment 3 (COMPLETE ANSWERS) 2025 - DUE 2025; 100% correct solutions and explanations. Assignment 3 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. 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. Three sets of files have been provided for you so that you do not have to do it all from scratch: • COS3711A3_QMainWindow_template – use this template to set up the main GUIs. • COS3711A3_ContainerWidget – this contains a widget providing the setup of the one interface. • COS3711A3_Icons – this contains icons that you can use in the application. Use these to set up a project (using cmake, not qmake) that uses a QMainWindow as the user interface so that you can implement the functionality provided by a QMainWindow (menus, toolbar, status bar) to meet the requirements of the scenario given below. Marks will also be awarded for following good programming practice, for example, • naming conventions, • code layout and line spacing, • using initialiser lists in constructors, • using forward class declarations in header files, • enabling and disabling buttons as appropriate, • GUI handling like setting focus, sequential tabbing, clearing input widgets (like text input fields being cleared and spin boxes being returned to some default value), and • providing appropriate user feedback (including tooltips and messages to the user). 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 Transporting cargo around the world is essential in ensuring that customers have access to the goods they need and want. Containers All such items are packaged in some sort of container, each of which has a code, weight, and volume (which should be calculated and expressed as an integer). For the purposes of this scenario, there are two kinds of containers. • A box, where we want to know its dimensions: length, breadth, and height. • A cylinder, where we want to know its diameter and height. The user should not be able to instantiate a simple container; only boxes and cylinders can be instantiated. Think carefully about how these requirements will be designed and an appropriate design pattern that could be used when instantiating container types. Use sensible ranges/limits for the input widgets on the user interface. The container code, which is allocated when containers are created, takes the following format. • The current year value between 2000 and 2099 (both included) • Forward slash (/) • The current month value between 01 and 12 (both included) • Forward slash (/) • A ‘B’ or a ‘C’, depending on the container type. • A serial number starting from 1, running up to 9999. Each new container is given the next serial number. Examples of valid codes are 2022/01/B1 and 2022/01/C2. Lists When a user creates a box or cylinder, the objects should be added to an unallocated container list. The container codes of these items should be displayed on the user interface using some model/view convenience class instance. The user should be able to backup this list of unallocated containers (remembering that you cannot simply back up the pointers to the container objects as they may be deleted before the restore is done); when restoring the unallocated container list, the container objects should be recreated and added to the list, and the model/view convenience object appropriately updated. Use an appropriate design pattern for this backup/restore functionality where the state is saved in memory rather than to a file. For transport, containers are packed onto a pallet (where it should be possible to calculate a pallet’s total weight and volume); for the purposes of this assignment, you may assume that there is no limit to the number of pallets, number of items on a pallet, or a pallet’s total weight and volume. The user should be able to click on a container code in the model/view convenience object, and this container should be moved to a pallet selected by the user, updating both the list of unallocated containers and
Written for
- Institution
-
University of South Africa
- Course
-
Advanced Programming
Document information
- Uploaded on
- September 12, 2025
- Number of pages
- 26
- Written in
- 2025/2026
- Type
- Exam (elaborations)
- Contains
- Questions & answers
Subjects
-
cos3711 assignment 3 complete answers 2025 due