SDD  ·  Consolidation project

Leisure Centre Booking Adviser

Three-period practical project Analysis → Design → Implementation → Testing Uses SDD1–SDD8 only

Your project for this week

You will design, build and test a Python program for a leisure centre. This is a consolidation project: it brings together the skills you have already learned in SDD1–SDD8. You are not expected to learn any new programming techniques.

This page is your workbook for all three periods. Keep your design evidence, test results and evaluation together in OneNote. Your Python program is created and saved separately in PyCharm.

Do this before starting Period 1. Click the button, then choose OneNote or Send to OneNote as the printer/destination. Save it in your Computing Science section. If OneNote is not listed, choose Save as PDF, then insert the PDF printout into OneNote. Title the page SDD Leisure Centre Project.
Learning intentions
  • Apply the stages of software development to a complete practical problem.
  • Combine variables, input, output, arithmetic, string operations and selection in Python.
  • Use evidence from testing to debug and evaluate a working program.
Success criteria
  • I can produce analysis and design evidence before coding.
  • I can create a working Python solution using only techniques from SDD1–SDD8.
  • I can run all six compulsory tests, record the results and evaluate my solution.

Your three-period route

Period 1 — Plan

Analyse the problem, identify variables and create a complete design.

Period 2 — Build

Implement the program carefully in PyCharm and run it often.

Period 3 — Prove

Test, debug, improve and evaluate the finished solution.

Project brief

The scenario

A local leisure centre needs a Python program that helps a visitor choose an activity and calculates the correct price. The program will ask for a fictional visitor name, age, height, membership status and chosen activity. It will then decide whether the visitor is eligible, apply any discount and display a clear booking summary.

Use fictional test data only. Do not enter your own name or anyone else’s personal information.

Activity and price rules

ActivityStandard priceEntry rule
Swimming£8Open to everyone
Climbing£12At least 10 years old AND at least 140 cm tall
Skating£10At least 8 years old

Discount and output rules

Junior or senior discount
Visitors aged 15 or under OR aged 65 or over receive £2 off.
Member discount
Other eligible visitors who are members receive £1 off.
Booking code
Use the first three letters of the fictional name in uppercase, followed by the age. TestUser, age 14, becomes TES14.
Invalid choices
An activity other than swimming, climbing or skating must produce a clear error message.

Techniques you may use

Variables, strings, integers, real numbers, Booleans, arithmetic, input(), print(), casting, concatenation, len(), slicing, upper(), lower(), if, elif, else, comparisons, and, or and not.

Do not use: loops, lists, arrays, user-defined functions or copied techniques that have not yet been taught. A strong solution can be completed entirely with SDD1–SDD8 knowledge.
Period 1 of 3

Analyse and design

Today’s goal: produce enough planning evidence that another programmer could understand what your solution must do.

Suggested timing: read the brief 5 min · analysis 15 min · variable table 10 min · design 25 min · checkpoint 5 min

1. State the purpose

Write one precise sentence explaining what the finished program will do. Start with: The purpose of the program is to…

Write or type your purpose here in OneNote.

2. Identify the inputs, processes and outputs

Complete the IPO table. Be specific: “calculate price after discount” is better than simply writing “calculate”.

InputsProcessesOutputs

3. Write the functional requirements

Write at least eight statements describing what the program must do. Each should begin The program must…

Write or type at least eight functional requirements here in OneNote.

4. Create a variable table

Include every important value your program must store. Choose from string, integer, real and Boolean.

Variable nameData typePurpose
visitor_nameStringStores the fictional visitor name

5. Design the algorithm

Create a structure diagram and either a flowchart or numbered main-steps-and-refinements pseudocode. Your design must include the activity rules, eligibility checks, discounts, booking code and final output.

Create diagrams in draw.io and insert screenshots into this OneNote page. If writing pseudocode, type or ink it below.

Insert your structure diagram here.
Insert your flowchart or write your pseudocode here.
✅ End-of-period checkpoint
  • I have a purpose, IPO table and at least eight functional requirements.
  • My variable table includes sensible names and data types.
  • My design shows every decision and calculation before I begin coding.
Period 2 of 3

Implement in Python

Today’s goal: turn yesterday’s design into a clear, working Python program.

Suggested timing: reopen and check design 5 min · inputs and setup 15 min · decisions and calculations 25 min · output and quick checks 15 min

1. Set up the file

  1. Open your usual SDD project in PyCharm.
  2. Create a Python file named leisure_centre.py.
  3. Add a heading as a comment, then save the file.
  4. Keep this OneNote workbook open beside PyCharm so you can follow your design.

2. Build in a sensible order

  1. Receive the fictional visitor name, age, height, membership status and activity.
  2. Cast age and height to integers.
  3. Convert membership status and activity to lowercase.
  4. Set starting values for price and eligibility.
  5. Use selection to set the activity price and determine eligibility.
  6. Apply the correct discount only when appropriate.
  7. Create the booking code using slicing, uppercase conversion and concatenation.
  8. Display either an invalid/ineligible message or a clear booking summary.
Work in small sections. Run the program after receiving the inputs, again after setting the activity price, and again after adding the discount. Small tests make errors much easier to locate.

3. Core implementation checklist

  • My prompts clearly tell the user what to enter.
  • I used int() for age and height.
  • I used lower() so activity and membership inputs are consistent.
  • I used an if/elif/else chain.
  • I used at least one complex condition with and.
  • I used at least one complex condition with or.
  • I used arithmetic to calculate the final price.
  • I used slicing and upper() to create the booking code.
  • The final output is readable and labels every value.

4. Record today’s progress

Paste a screenshot of your latest program run into OneNote. Under it, state what works and what still needs attention next period.

Insert a screenshot and progress note here.
✅ End-of-period checkpoint
  • My file is saved as leisure_centre.py.
  • The program runs without a syntax error for at least one valid activity.
  • I recorded evidence of my current result in OneNote.
Period 3 of 3

Test, debug and evaluate

Today’s goal: prove that your program works across all important routes, correct any errors and evaluate the finished solution.

Suggested timing: finish core program 10 min · compulsory tests 25 min · corrections and retests 10 min · evaluation 10 min · submit 5 min

1. Run all compulsory tests

Use the fictional name TestUser for every test. Record the actual result and mark each test pass or fail. For eligible tests, the booking code should begin TES and end with the test age.

#AgeHeightMemberActivityExpected result
114145noclimbingEligible · £10 · code TES14
214135yesclimbingNot eligible
330170yesswimmingEligible · £7 · code TES30
470160noskatingEligible · £8 · code TES70
57130noskatingNot eligible
625175nobowlingInvalid activity message
TestActual resultPass / failCorrection made, if needed
1
2
3
4
5
6

2. Debug and retest

If a test fails, find the cause, correct the program and run that test again. Describe at least one error you encountered—even if it was corrected before the formal tests.

Describe the error, its cause, the correction and the result after retesting.

3. Evaluate the finished solution

Answer in full sentences:

  1. Which functional requirements did your program complete successfully?
  2. What evidence shows that the eligibility and discount rules work?
  3. What part of your program works particularly well?
  4. What would you improve in a future version?
Write or type your evaluation here.
✅ Final submission checklist
  • OneNote contains my analysis, requirements, variable table and designs.
  • OneNote contains my six test results, debugging evidence and evaluation.
  • My final leisure_centre.py file is saved in the required location.
  • I have submitted or shared both pieces of work as instructed.

Extensions — only after the core project passes all six tests

Extension 1 — Safer names

Use len() and selection to display a clear message if the fictional name contains fewer than three characters.

Extension 2 — Weekend promotion

Ask for the day. On Saturday OR Sunday, reduce the price by a further £1 for eligible visitors.

Extension 3 — Better presentation

Improve prompts, spacing and headings so the final booking summary is exceptionally clear. Add a personalised activity message without changing the original rules.

Extension 4 — Extra evidence

Update your design to show any extension you added, then create and record suitable additional test cases.

Cover / teacher notes — Shift+T to hide

Purpose: This is consolidation of SDD1–SDD8. Pupils should not use loops, arrays, lists or user-defined functions.

Period 1 checkpoint: analysis and design evidence should be complete before implementation. A structure diagram plus either a flowchart or pseudocode is required.

Period 2 checkpoint: the program should run for at least one valid activity. Encourage frequent small runs rather than writing the whole solution before testing.

Period 3 expected prices: Test 1 £10, Test 3 £7 and Test 4 £8. Tests 2 and 5 are ineligible; Test 6 is invalid. These values have been checked against the published rules.

Common issues: missing int(); using = instead of ==; capital AND/OR; incorrect indentation; applying the £1 member discount after the £2 age discount; and displaying a price for an ineligible visitor.

Submission: pupils need their OneNote workbook evidence and the separate leisure_centre.py file. Extensions are optional and should begin only after all six tests pass.