Posted on: 6th Oct 2026

ICT239 Web Application Development End-of-Course Assessment July 2025

ICT239 End-of-Course Assessment – July Semester 2025

Course: ICT239 Web Application Development

ECA Submission Deadline: Sunday, 09 November 2025, 12 noon

This ECA carries 70% of the course marks and is a compulsory component. It is to be done individually and not collaboratively with other students.

Notes to Students

  • Use the solution template document provided with the question paper.
  • Show only relevant code segments and explain them in your answers. Do not copy large chunks of code.
  • The marker will run your application on Vocareum using start.sh. Update requirements.txt if you install additional packages, and add an instructions.txt or instructions.md file explaining how to run your application.
  • Provide screenshots of output from your runs in the solution document, or record and upload recordings of the runs.
  • Submit all source code, the Word report and any recordings in Vocareum. The Word report must include an appendix with the complete content of all your solution files (py, html, css, js), and must also be submitted on Canvas.

Question 1 (20 marks)

Explain your answer and supplement your explanation by lifting/commenting on the relevant source code in the Staycation application.

Question 1a (11 marks)

Explain the MVC architecture and its advantages when applied to web applications such as Staycation. Then, use ONE (1) complete user function (e.g., get package details, book package, manage booking) and relevant code segments in the frontend and backend components to explain how the M, the V and the C components of the MVC architecture are applied to the Staycation application.

Question 1b (9 marks)

  • Explain the typical purposes of GET and POST requests and evaluate whether they have been appropriately used in the Staycation application.
  • Compare the security features of the two types of requests.
  • Explain whether it is possible to make either or both requests more secure, and if so, how you would go about doing so.

Question 2 (20 marks)

Make modifications to the existing functions in the Staycation application.

Question 2a – Modification to Booking Function (10 marks)

  • Does the Staycation application allow users who are not authenticated to make bookings? Justify and explain using the relevant code.
  • Re-implement the booking function so that the admin user cannot make a booking. If the admin user clicks the Book button on either the Package page or the Package Detail page, an error message should be shown.

Question 2b – Modification to Upload Function (10 marks)

Modify the Upload function to read CSV files with the columns check_in_date, customer and hotel_names, where hotel_names is a list of one or more hotels.

Add a new option that allows the admin user to read a CSV file with a list of hotel names and create bookings that run consecutively from the specified check_in_date. For example, if a row lists three hotels from 27/9/2025 and each package is 2 nights, create bookings with check-in dates 27/9/2025, 29/9/2025 and 1/10/2025. Create as many bookings as there are hotel names in each data row.

Question 3 (40 marks)

Add new features to the Staycation application.

Question 3a – Purchase Bundle Function (16 marks)

Using the Package page, allow an authenticated non-admin user to buy packages as a bundle and qualify for a discount based on the number of packages purchased. Display appropriate messages if the user is not authenticated or is an admin user.

  • Add a checkbox for each staycation package and a Purchase Bundle button below the top panel.
  • No package selected: flash “Please select packages to buy as a bundle”.
  • One package: no discount. Two or three packages: 10% discount. Four or more packages: 20% discount.
  • Study the sample MongoDB bundle documents (purchased_date, customer, bundledPackages with package and utilised fields), define the required document structures and include all methods needed.
  • There is no limit to the number of bundles purchased in a day. Set the purchase date to the current date and the “utilised” status of each package to false.

Question 3b – Manage Bundle Function (14 marks)

Allow a non-admin user to view the bundles purchased (sorted by ascending purchase date) and make a booking by selecting a check-in date and clicking the Book button.

  • Show a message if the user has not purchased any bundle.
  • Packages in a bundle must be booked within a year of purchase, or the bundle and its packages expire.
  • Once a package is utilised, set its “utilised” status to true.
  • Show utilised and expired packages in expired bundles, and utilised and un-utilised packages (with a date selector) in bundles that have not expired.
  • Define the required document structures and include all methods needed.

Question 3c – Single Page Application (10 marks)

Differentiate between a multi-page application and a single-page application. Re-implement Question 3b as a single-page application for the booking of packages in the Manage Bundle function, using a copy of your solution.

Show the relevant code segments before and after the changes, explain what the changes achieve and why they are required, and indicate the file each segment comes from. Submit Question 3c as a separate Flask application in the folder Q3c.

Question 4 (20 marks)

Add a new chart for the admin user.

  • Modify the Dashboard hyperlink so that it shows a page with a dropdown menu but no chart.
  • Amount Incoming: display the original trend chart (including bookings uploaded through the modified upload function, if Question 2b was implemented).
  • Bookings By Month: display a bar chart of the number of bookings for each month-year for each hotel, sorted by hotel name. Show a very small bar for data points with the value 0.
  • Choose a Type: return to the dashboard page without a chart.

Show the relevant code segments before and after the changes, including new code, explain what the code achieves and why it is required, and indicate the file name of each segment.

  • Question 4a (4 marks): Implement all frontend components (without JavaScript).
  • Question 4b (8 marks): Implement all backend components.
  • Question 4c (8 marks): Implement the JavaScript component.

—– End of ECA Paper —–

Get Expert Help With Your ICT239 Web Application Development ECA

Get Help By Expert

Stuck explaining MVC with real Staycation code, or implementing the bundle purchase, single-page booking and dashboard charts in Flask and MongoDB? Our my assignment help programming experts support students with the ICT239 Web Application Development ECA, from GET versus POST security and CSV upload logic to MongoDB document design, AJAX-based single-page booking and Chart.js dashboards. You can also review our computer and IT assignment samples and browse more SUSS assignment questions. If you are short on time, our do my assignment service gives personalised guidance on code explanation and the solution template, so your submission stays original.

Tags:- ICT239 SUSS
Answer
Organisational Change Intervention Plan Assignment Brief 2026
No Need To Pay Extra
  • Turnitin Report

    $10.00
  • Proofreading and Editing

    $9.00
    Per Page
  • Consultation with Expert

    $35.00
    Per Hour
  • Live Session 1-on-1

    $40.00
    Per 30 min.
  • Quality Check

    $25.00
  • Total
    Free

New Special Offer

Get 30% Off

Hire an Assignment Helper and Earn A+ Grade

UP TO 15 % DISCOUNT

Get Your Assignment Completed At Lower Prices

Plagiarism Free Solutions
100% Original Work
24*7 Online Assistance
Native PhD Experts
Hire a Writer Now

Facing Issues with Assignments? Talk to Our Experts Now! Download Our App Now!