COS3711
Assignment 2
Due 18 July 2025
,COS3711 – Assignment 2: Advanced Programming Project
1. Introduction
This project involves the design and implementation of a Store Management System
using C++ and the Qt framework. The development process emphasizes manual
memory handling, multithreaded programming, and network communication via UDP
broadcasting, while intentionally avoiding the use of Qt Designer for GUI construction.
The system architecture adopts a modular and object-oriented approach, ensuring code
reusability, extensibility, and maintainability. It draws upon principles from key software
engineering methodologies and design patterns as described in:
Design Patterns: Elements of Reusable Object-Oriented Software by Gamma et
al. (1995), and
Software Engineering: A Practitioner’s Approach by Pressman & Maxim (2020).
Key technical objectives include:
Creating a GUI-based desktop application without the Qt Designer tool.
Manually managing memory with explicit use of new and delete.
Implementing multithreading using QThread.
Broadcasting and receiving messages via the User Datagram Protocol (UDP).
Employing classical object-oriented design patterns and coding standards.
2. System Architecture
2.1 Project Structure and Directory Layout
The solution is split into two standalone applications:
1. StoreApp – Handles store operations and broadcasts data over UDP.
2. ReceiverApp – Listens for UDP broadcasts and displays incoming information.
The directory layout follows a clean and modular structure:
, objectivec
CopyEdit
COS3711_Assignment2/
│
├── StoreApp/
│ ├── CMakeLists.txt
│ ├── main.cpp
│ ├── mainwindow.h / .cpp
│ ├── customer.h / .cpp
│ ├── product.h / .cpp
│ ├── transaction.h / .cpp
│ ├── broadcaster.h / .cpp
│ ├── workerthread.h / .cpp
│
├── ReceiverApp/
│ ├── CMakeLists.txt
│ ├── main.cpp
│ ├── mainwindow.h / .cpp
│ ├── receiver.h / .cpp
│
└── CMakeLists.txt (root)
2.2 Component Overview
🔹 StoreApp
The StoreApp serves as the primary interface for managing store operations. It allows
users to:
Add and manage customers and products,
Record transactions,
Broadcast transaction summaries over the network via UDP.
Assignment 2
Due 18 July 2025
,COS3711 – Assignment 2: Advanced Programming Project
1. Introduction
This project involves the design and implementation of a Store Management System
using C++ and the Qt framework. The development process emphasizes manual
memory handling, multithreaded programming, and network communication via UDP
broadcasting, while intentionally avoiding the use of Qt Designer for GUI construction.
The system architecture adopts a modular and object-oriented approach, ensuring code
reusability, extensibility, and maintainability. It draws upon principles from key software
engineering methodologies and design patterns as described in:
Design Patterns: Elements of Reusable Object-Oriented Software by Gamma et
al. (1995), and
Software Engineering: A Practitioner’s Approach by Pressman & Maxim (2020).
Key technical objectives include:
Creating a GUI-based desktop application without the Qt Designer tool.
Manually managing memory with explicit use of new and delete.
Implementing multithreading using QThread.
Broadcasting and receiving messages via the User Datagram Protocol (UDP).
Employing classical object-oriented design patterns and coding standards.
2. System Architecture
2.1 Project Structure and Directory Layout
The solution is split into two standalone applications:
1. StoreApp – Handles store operations and broadcasts data over UDP.
2. ReceiverApp – Listens for UDP broadcasts and displays incoming information.
The directory layout follows a clean and modular structure:
, objectivec
CopyEdit
COS3711_Assignment2/
│
├── StoreApp/
│ ├── CMakeLists.txt
│ ├── main.cpp
│ ├── mainwindow.h / .cpp
│ ├── customer.h / .cpp
│ ├── product.h / .cpp
│ ├── transaction.h / .cpp
│ ├── broadcaster.h / .cpp
│ ├── workerthread.h / .cpp
│
├── ReceiverApp/
│ ├── CMakeLists.txt
│ ├── main.cpp
│ ├── mainwindow.h / .cpp
│ ├── receiver.h / .cpp
│
└── CMakeLists.txt (root)
2.2 Component Overview
🔹 StoreApp
The StoreApp serves as the primary interface for managing store operations. It allows
users to:
Add and manage customers and products,
Record transactions,
Broadcast transaction summaries over the network via UDP.