COMP642 Advanced Programming
Semester 2 2024
Project - Software Development
Worth: 40%
Due: Friday, 1 November 2024 5:00 p.m.
Late Penalty: Work not received by the due time attracts an immediate penalty of up
to 25% of the marks available. No work will be accepted after Sunday,
3 November 2024 5:00 p.m.
Submission: Zip your completed files and submit the .zip through the link on
COMP642 Akoraka | Learn page.
This is an individual assessment. You must not collaborate or confer with others. You
may help others by verbally explaining concepts and making suggestions in general
terms, but without directly showing or sharing your own code. You must develop the
logical structure, the detail of your code and the database on your own, even if you are
working alongside others. Code that is copied or shares a similar logic to others will
receive zero marks for both parties.
The use of Artificial Intelligence (AI) tools, such as ChatGPT, to complete this assessment
is prohibited. Assessment answers will be analysed for evidence of the use of AI and
penalties may be administered.
The University policy on Academic Integrity can be found here.
Introduction
Your task is to create a Python application which uses the model classes that you have
designed in the first part of this project. Please refer to the feedback provided for the first
part to improve your design. Alternatively, you may you use the class diagram shown in
Appendix A. Note that this is a simplified class diagram and shows the attributes only (and
not the methods). You may also add additional attributes to each class as you see fit.
You are required to code your design (possibly amended after feedback) and create a GUI
(using tkinter or Flask and Python) that works with your design. You will also write test cases
to verify the functionalities of your software application.
Customers should be able to place orders, view their current orders and past orders, cancel
current order (if the order is not processed yet), make payments, and view their information.
Staff should be able to view current orders, fulfil the orders, and update the status of the
orders. Staff can also use the application to generate several reports for the company. COMP642 | OO programming Software Design | Page 2
Requirements
1. Adapt your design from Project Part 1 as necessary, so that the following
functionalities can be implemented for customers and staff. You will need to use
SQLAlchemy to store the objects to a MySQL database.
Customers can:
1. Log in and Log out.
2. View available vegetables and premade boxes.
3. Place order for vegetables and premade boxes. Premade boxes need to be
assembled based on the size. At checkout, pay for the item using credit card or
debit card or charge the amount to their account.
4. View current order details.
5. Cancel current order if the order has not been fulfilled.
6. View previous orders details.
7. View their own details.
Staff can:
1. Log in and Log out.
2. View all vegetables and premade boxes.
3. View all current orders and their details.
4. View all previous orders and their details.
5. Update an order status.
6. View all customers and their details.
7. Generate a list of all the customers.
8. Generate the total sales for the week, month, and year.
9. View the most popular items.
2. Implement an appropriately designed view. Your view should be an interface with
appropriate controls, useful feedback, and exception handling. You may use tkinter
or web application to implement the view.
3. Perform error handling and prevention mechanisms to ensure that the application is
robust, reliable, and resilient.
4. Write and test your code for all the model classes and other components in your
design using pytest.
5. Your code must be clear and easy to maintain, and appropriately commented.
6. Your application does not have to provide facilities for staff to add new
customers/vegetables, delete existing customers/vegetables, or amend
customer/vegetable details. It also does not have to provide facilities for a customer
to amend their details.
COMP642 | OO programming Software Design | Page 3
Marking Criteria
Criteria Marks
(out of 140)
Mark Range
Application functionalities:
Customer (20)
Staff (20)
40 Marks will be assigned using the following criteria:
All requirements met (81% - 100%)
Some requirements met (51% - 80%)
Minimum requirements met (1% - 50%)
Application Interface
10 Excellent user interface, intuitive, and user friendly.
Widgets are well-chosen, effectively implemented,
and enhance the user experience (9 – 10).
The user interface is intuitive and user-friendly.
Widgets are mostly appropriate and functional but
may have minor usability issues (7 – 8).
The user interface provides basic functionality but
lacks in intuitiveness and user-friendliness. Widgets
may be poorly chosen or implemented, leading to
confusion or difficulty in their use (5 – 6).
The user interface is not intuitive or user-friendly.
Widgets are poorly chosen or implemented (1 – 4).
Error Handling and Preventions 10 All relevant errors are detected and handled
appropriately (9 – 10).
Some errors are detected and handled
appropriately but may miss some less common
issues (5 – 8).
Minimal or ineffective error detection; many errors
are not identified (0 – 4).
Testing 10 Comprehensive test coverage with all relevant
areas of the application thoroughly tested,
including edge cases (9 – 10).
Most key areas are tested, though some gaps may
exist. The test suite covers essential functionality
and interactions but might miss a few edge cases
or less common scenarios (5 – 8).
Significant gaps in test coverage, with critical areas
or edge cases often untested. The test suite lacks
depth and fails to cover many aspects of the
application (1 – 4).
Code 70 See Code Evaluation Rubric.