Applied Project 2
700047 Programming Design
Applied Project 2
700047 Programming Design – 2020.2
Total Marks: 100
Project Weighting – 15%
Learning outcomes assessed: 5,6,7,8
Due Date: 11:59pm Sunday 20th September (end of week 11)
Submission Guideline
• All students are to submit their project via vUWS into the drop box named, “Assessment 3: Applied
Project 2” under Assessment folder. You have to submit two files: MS Word file with the design
and python code (.py file or a .txt file)
• You must use the Project 2 solution template file available on vUWS to provide the design
(deliverables i, ii, iv and v given in the task specification). Make sure that you have named the
submitted document file following the following format: FirstNameLastNameProjectNameDesign
e.g. JoeSmithProject2Design.
• The code-deliverable iii given in the task specification should be provided as python file or a text
file. Make sure that you have named the submitted program code according to the following
format: FirstNameLastNameProject2Code e.g. JoeSmithProject2Code.
• Place your full name, student ID as the header and page number as the footer of the document.
• You must use appropriate computer software to create the flowchart. Hand-drawn flowcharts or
other sections of the assignment will automatically receive 0 marks.
• Fill in and submit the assignment cover sheet available on vUWS under the Assessments folder.
• Late submission will be penalised at the rate of 10% per day or part thereof.
• If you need extra time to complete this assessment, you can apply for an extension up to 5 days
by emailing your class teacher with a valid reason. Such request email should include your student
ID, name, unit code and name, assessment name, length of extension requested and a reason.
• This is an individual assessment. It is your responsibility to familiarise yourself with the misconduct
policy of the university. Click on the link below for further details:
https://policies.westernsydney.edu.au/document/view.current.php?id=304
2 | P a g e
1. Assessment Description
You will continue working on the same scenario from Applied Project 1 with the additional outlined
requirements. The additional requirements mainly focus on validation of user input and on the usage of
functions (must use modular programming) with cohesion and coupling principles. They are described in
Section 1.1: Boarding Pass generator 2.0 and include the ability of the kiosk to print E-boarding passes
for a group of passengers following the Section 3. Task Specification.
1.1 Problem Description: Boarding Pass generator 2.0
Australasian Airways Pty Ltd, is an Australian low-cost airline headquartered in Sydney. The airline
operates daily direct servicesfrom Sydney to 4 different cities, Auckland, Melbourne, Gold Coast and Perth
using a mixed fleet of the Airbus A320 family and the Boeing 787 Dreamliner. Recently, the Executive
committee of the airline has decided to install self-service check-in kiosks for passengers to check
themselves in for their flight and print their own E-boarding passes. The top administration of the airline
has contacted you to design and create a prototype for the check-in kiosks.
To print the E-boarding pass(es), the program asks for the number of passengers that the E-boarding pass
need to be printed for. It, then ask for each passenger’s details, e-ticket number, full name, and
destination for the flight. Each passenger receives a 7-character essay writing help long e-ticket number, e.g. AB3426C, while
purchasing a ticket from the airline. The program, then determines the flight number, seat number, and
gate number for the flight and print a boarding pass for each passenger.
As the user enters passenger details such as e-ticket number, full name, and destination, the program
validates the user input. If an invalid input is entered, the program displays an appropriate error message
and asks the user to re-enter invalid values until each entry is correct. Assume an empty value for a
passenger’s name is invalid input. An e-ticket number must have exactly 7 characters to be considered as
valid. If the input value of destination is anything other than Melbourne, Gold Coast, Perth or Auckland,
consider it as invalid.
At the Sydney domestic airport, the flights to a given destination are assigned to the same flight number
and depart from the same gate as shown in Table 1. For example, all flights to Melbourne have a flight
number, AA176 and depart from gate 32. The program calculates the seat number by extracting the last
three characters from the 7-character long e-ticket number. For instance, the seat number for a passenger
with a e-ticket number of AB3426C will be 26C.
Passengers of Australasian Airways can earn velocity points for their flight which can be redeemed for
buying tickets on future flights. Passengers receive 1 point for every 3 miles travelled in their flight. The
velocity points increase only for each 3-mile increment. The program displays the total points earned in
the flight. For example, the air distance between Sydney and Melbourne is 438 miles as shown in Table 1.
Therefore, a passenger flying from Sydney to Melbourne will earn 146 velocity points. A passenger flying
from Sydney to Gold Coast will earn 140 velocity points. When a group of passengers are travelling, the
total velocity points earned should be calculated. For example, for a group of two people with one
travelling to Melbourne and the other travelling to Gold Coast, the total velocity points earned should be
286. The prototype should print (display on screen) the E-boarding pass details as shown in section 2.
Input/output specification.
3 | P a g e
Table1: Flight Information
Destination Flight Gate Distance(miles)
Melbourne AA176 32 438
Gold Coast AA956 56 422
Perth AA102 10 2040
Auckland AA208 16 1340
2. Input/output Specification
The input, processing and output of the program have been demonstrated with the following
sample runs, where blue coloured text is the output of the program and the rest are user inputs.
Sample Run 1
A sample run of the program using valid input for all: menu choice, traveller’s name, destination and eticket number.
4 | P a g e
5 | P a g e
Sample Run 2
Here is a sample run of the program using invalid destination input.
Sample Run 3
Here is a sample run of the program when an invalid empty name is input.
6 | P a g e
Sample Run 4
Sample run of the program for an invalid e-ticket number. Length of eTicket number should be 7.
Sample Run 4
Here is a sample run of the program when an invalid choice for menu
7 | P a g e
3. Task Specification
It is important to note that you must use an iteration control structure and modularisation in your
solution.
You must design at least 3 meaningful modules with independent functionality for the above solution
program.
You need to prepare the followings deliverables.
i. Structure chart using the notation used in the Workbook.
ii. Flowchart using the notation used in the Workbook, where there is one flowchart for each
module corresponding to the structure chart.
iii. Python code of your solution.
iv. Test data containing at least two sets of data; one dataset for positive testing which verifies that
a valid set of input to the program produces an expected output. The other dataset must be for
negative testing to test the ability of the program to handle invalid input and guide the user so
they finish their order successfully.
v. Test execution results for both positive and negative testing of the code. You can take screenshot
of the test execution results and place them in the given template file.
Hints:
1.You can control the program using a top-level menu module that provides the user with options to
perform a set of actions. One of the options will normally to terminate the program. All other choices will
cause the selected option to be executed and then returns the control back to the menu. Restrict global
variable usage for constants. You are not expected to use arrays or array like data structures.
2. Python syntax for manipulating string variables are given in appendix A .
4. Marking Criteria
Criteria Fail Pass Credit Distinction High Distinction
Create a
structure
chart
Structure chart
is either not
submitted or
does not show a
modular
solution to the
given problem.
A satisfactory
attempt to
complete the
structure chart.
Structure chart
shows a
modular
solution to the
given problem.
A good attempt to
complete the
structure chart.
Structure chart
includes all
modules. Each
module has a
meaningful name
and independent
functionality.
A very good attempt
to complete the
structure chart.
Structure chart
includes all modules
which are at the
correct level. Each
module has a
meaningful name and
independent
functionality.
An excellent attempt to
complete the structure chart.
Structure chart includes all
modules which are at the
correct level and shows the
correct data flow between
modules. Each module has a
meaningful name and
independent functionality.
Create a
flowchart
Flowchart is
either not
submitted or
does not show
the solution
algorithm to the
given problem.
A satisfactory
attempt to
complete the
flowchart.
Flowchart
shows the
solution to the
given problem.
A good attempt to
complete the
flowchart that
shows the solution
to the given
problem.
One flowchart for
each module of the
structure chart.
A very good attempt
to complete the
flowchart that shows
the solution to the
given problem. One
flowchart for each
module and has a
name corresponding
to the structure chart.
An excellent attempt to
complete the flowchart.
Flowchart uses correct
symbols and shows the
solution to the given problem.
One flowchart for each
module and has a name
corresponding to the
structure chart.
Create
Python code
Python code is
either not
submitted or
does not
logically solve
the given
problem.
A satisfactory
attempt to
complete the
Python code.
Python code
takes correct
input, logically
solves the
problem and
displays correct
output.
A good attempt to
complete the
Python code which
logically solves the
problem with
correct
input/output and
matches the
flowchart logic.
A very good attempt
to complete the
Python code that
corresponds to the
modular design of the
structure chart and
logically solves the
problem with correct
input/output and
matches the flowchart
logic.
An excellent attempt to
complete the Python code
that corresponds to the
modular design of the
structure chart and matches
the flowchart logic.
The Python code is an efficient
solution which uses
meaningful variable names,
appropriate repetition
structure and programming
logic to solve the given
problem.
Test Data Test data either
not submitted
or is not a
reasonable
attempt.
A satisfactory attempt to complete the
test data including input with expected
output. Test data for either positive or
negative testing is absent.
An excellent attempt to complete the test data. Two
sets of input data (one for positive testing and one for
negative testing) with expected output.
Report test
results
Test results are
either not
submitted or the
Python code
does not run.
Python code runs without any syntax
error. Test result accords the test data.
Correct inputs are given to the program
and the program produces the
expected output. Test execution results
of either positive or negative datasets
have been shown.
Python code runs without any syntax error. Test results
accord the test data. Correct Inputs are given to the
program and the program produces the expected
output. Test execution results of both positive and
negative datasets have been shown.
5 | P a g e
5. Feedback Checklist
Your teacher will tick all completed items in your submission. The maximum marks for each
item are shown in brackets.
Structure chart (20 marks)
At least three modules created, and each module has an independent and meaningful
functionality towards solving the problem (10)
all modules named (2)
modules on correct level (3)
correct data flow between modules (5)
Flowchart (20 marks)
correct symbols used (2)
all flowcharts are named (2)
one flowchart for each module (2)
flowcharts correctly show the solution to the problem (14)
Python code (40 marks)
the modular code aligns with the structure chart (both hierarchy and data flow among
the modules) (4)
correct keywords and indentation used (2)
iteration structure used for printing E-boarding passes for a group of passengers (4)
minimal use of hardcoded numbers in the code (1)
checks passenger destination is valid (2)
checks passenger name is not empty (1)
checks e-ticket number is exactly 7 character long (2)
all modules from structure chart created (3)
all modules are called with correct parameters within the scope of the program (3)
create module/modules which returns a value (2)
returned value from module is used (2)
Use of appropriate control structure in solving the problem logically (5)
correct flight number, gate number and seat number determined (3)
code displays the correct total velocity points earned (3)
Aesthetically display E-boarding passes in the given format (3)
Test Data (10 marks)
datasets contain valid input (3)
dataset output corresponds to valid input data (2)
datasets contain invalid input (3)
dataset output corresponds to invalid input data (2)
Test Results (10 marks)
Python code runs without any syntax error and produce correct results for valid input (5)
Python code runs without any syntax error and produce appropriate error message for
invalid input before producing correct result for valid input (5)
APPENDIX A – String Manipulation in Python
In python, given a string, S = “ABCDEFG”, the following table illustrates some ways by which string
manipulation can be obtained:
Code Result Explanation
S[-3:] EFG The last three characters
S.lower() abcdefg A new string in lower case. Note the original string does not change
len(S) 7 Count of the characters in s