Individual Report and Program Code assignment help

Task 2 - Project Individual

16/01/2026
45 Points Possible
In Progress
NEXT UP: Submit Assignment
5 Attempts Allowed
Attempt 1 Add Comment

Details

Goal

To produce a Python program that effectively solves a real-world problem.

Task Instructions

You can choose one (1) of the two programs below. You are required to design and create a program that performs your solution. For those students who are looking for higher grades such as Distinctions or High Distinction, you should aim to implement two or more of the advanced options.

Format/Product: Report and Program Code
Type: Individual
Word Count: Approximately 1,000 words. Program length can vary - there is no minimum or maximum length.

 

1. Regional Animal Shelter Management System (RASMS)

🐾 Background

You have been hired by the Regional Animal Welfare Authority to design a simple Animal Shelter Management System (RASMS).

The system will help staff track animals in multiple shelters across the region, manage adoptions, and move animals between shelters when needed.

Your job is to model and implement this system using Python.

🎯 Task Objectives (Core Requirements)

You must design and implement a Python program that performs the following key tasks:

1. Shelter Setup

Model at least 10 shelters from around Adelaide or regional South Australia.

Each shelter has:

  • A name (e.g., "Glenelg Animal Rescue")
  • A location/suburb
  • A list of animals currently housed there.

2. Animal Records

Each animal in the system must have:

  • Animal type (e.g., Dog, Cat, Rabbit, Bird, Reptile)
  • Name
  • Age (in years)
  • Breed
  • Health status (e.g., Healthy, Needs Vaccination, Injured)
  • Adoption status (e.g., Available, Adopted, In Treatment)
  • Animal ID (a unique code such as D102, C214, etc.)
  • Shelter address (e.g., "12 Paws Street, Glenelg")

3. System Actions

Your program should provide a menu-driven interface that allows the Shelter Manager to perform the following actions:

a) View Shelter Inventory

  • Display a list of all shelters and the animals they currently house.
  • For each animal, display: ID, name, species, breed, age, health status, and adoption status.

b) Move an Animal Between Shelters

  • Allow the manager to relocate an animal from one shelter to another.
  • Update its shelter location and print a Movement Record showing: 
    • Animal ID and name
    • Old shelter and address
    • New shelter and address

c) Update an Animal's Status

  • Allow updating an animal's health or adoption status (e.g., "In Treatment" → "Healthy", or "Available" → "Adopted").

d) Exit the System

  • Exit cleanly with a message thanking the user and confirming that data has been saved (if file handling is implemented).

💡 Advanced Features (for Distinction / High Distinction)

Students aiming for higher grades should implement two or more of the following extensions:

1. File Handling (JSON or CSV)

  • Load all shelter and animal data from a JSON or text file at startup.
  • Save all changes (moves, status updates, adoptions) back to the file upon exit.

2. Search and Reporting

  • Add the ability to search animals by name, breed, or health status.
  • Add a summary report showing: 
    • Total animals per shelter
    • Number available for adoption
    • Number currently in treatment

3. Scalability / Code Design

  • Extend the system to support 15+ shelters and ensure new shelters or animal types can be added easily.
  • Use classes and objects to represent shelters and animals (rather than just lists/dicts).

4. Database Integration (SQLite)

  • Replace file storage with a SQLite database.
  • Use SQL queries to: 
    • Retrieve shelters and animals
    • Update animal movement and status
  • Ensure database integrity (e.g., foreign key between Shelter and Animal tables).

🐕 5. Adoption for a Fee and Revenue Tracking

Extend the system to support animal adoptions with fees.

When an animal is marked as Adopted, record an adoption fee based on animal type and age, e.g.:

  • Dogs: $300 if under 5 years, $200 if older
  • Cats: $250 if under 5 years, $150 if older
  • Rabbits or other small animals: $150 if under 5 years, $100 if older

Students may choose a similar pricing logic.

Each shelter must keep a running total of all adoption fees collected.

Add a new menu option: "View Shelter Revenue Report", which displays:

  • Each shelter's name
  • Number of animals adopted
  • Total adoption fees collected
  • Optionally, display a regional total for all shelters combined.

 

2. Campus Café Ordering and Inventory System (CCOIS)

☕ Background

You have been hired to develop a Campus Café Ordering and Inventory System (CCOIS) for a small university café.

The café serves students and staff and wants to computerize its menu, sales, and inventory tracking.

Your program will allow customers to order food and drinks, calculate totals, and ensure the café's stock levels are updated as items are sold.

The system should also allow a café manager to review or restock inventory when needed.

🎯 Task Objectives (Core Requirements)

You must design and implement a Python program that performs the following key tasks:

1. Load Menu and Inventory

When the program starts, load menu and stock data from a text or JSON file (e.g., menu.json).

Each menu item must include:

  • Item name (e.g., "Flat White")
  • Category (e.g., "Coffee", "Snack", "Meal", "Cold Drink")
  • Price (e.g., 4.50)
  • Quantity in stock (e.g., 25)

Store the data in an appropriate data structure (e.g., a list of dictionaries or class objects).

2. Customer Ordering System

When a customer arrives:

  • Display a welcome message and menu categories.
  • Allow the customer to: 
    • Choose a category (e.g., "Coffee")
    • View all available items in that category
    • Select items and quantities to add to their order/cart
  • Check that there is enough stock for each requested item.
  • If stock is insufficient, display an appropriate message.
  • Update in-memory stock levels as items are ordered.

3. Checkout

When the customer decides to checkout:

  • Display an itemized receipt (docket) showing: 
    • Item name
    • Quantity
    • Price per item
    • Subtotal per item
  • Calculate and display the total payable amount.
  • Optionally include a small discount (e.g., 10%) if the total exceeds a threshold (e.g., $30).
  • Save the updated inventory back to the file to reflect the sold items.

💡 Advanced Features (for Distinction / High Distinction)

Students aiming for higher grades should implement two or more of the following extensions:

1. Manager Mode

Add a Manager Login Mode (simple password-based system).

When logged in as the manager, allow:

  • Viewing the current inventory list
  • Restocking items by increasing their quantity
  • Adding new menu items (name, category, price, quantity)
  • Removing discontinued items
  • Saving all changes to the file

2. Database Integration (SQLite)

Store all menu and inventory data in an SQLite database.

Use SQL commands to:

  • Retrieve menu items
  • Update stock when purchases occur
  • Add or remove items through Manager Mode

3. Reporting and Revenue Tracking

Track total daily sales.

Add a "Manager Report" option that shows:

  • Number of items sold per category
  • Total revenue collected for the day
  • Top 3 best-selling items

4. Meal Deal or Combo Pricing (Optional Enhancement)

  • Allow the café to define special combos (e.g., "Coffee + Muffin = $6.50").
  • Ensure that when a combo is purchased, the stock of both items is adjusted.

 

Submission Format

You should submit two documents:

Report (20 points)

Your report is to be presented as a professional business report. It must be submitted as a Word document in the format "<student name> - Task 2.doc" (not pdf) with the following structure:

  • Title page
  • Table of contents
  • Introduction
  • Problem Description - what your program is and does, and any limitations
  • Design - your pseudocode for your solutions (initial and final) or your flow charts if you prefer
  • You should identify the libraries that you use in your code to help solve your problem, including any installation information needed to make your assignment executable.
  • You must also include a test plan and detailed test cases including inputs and expected outputs

Python program (25 points)

The working Python program together with any testing files or configuration files should be compressed into a .zip in the format "<student name> - Task 2.zip" and submitted.

You should include documentation throughout the program.

If your Python program opens a file, please ensure it is opened from the same folder as your program.

In keeping with the University of the Sunshine Coast policy, all assignments are to be submitted in Canvas via Turnitin below.

 

Resources

  • Your code should follow the PEP 8 — the Style Guide for Python Code (https://pep8.org/) for comments, naming and general style.
  • Review the material on test plan creation.
  • Sample Report Structure - ICT112 - Task 2 - Template

Testing Ideas:

  • ICT112 - 2023 - Module 10 - Sample Answers 2-1.docx
  • ICT112-MyDate - Sample Answer 2-1.py
  • my_test.py
  • input1.txt

 

Use of AI is permitted in this task

You may use generative AI in completing this assessment task. If you are using AI tools, please learn what they can and cannot do, then use them critically. Note that AI tools can generate incorrect or misleading results so make sure you use them with care and critical judgement. You will be responsible for the accuracy of any information that you submit as part of an assessment. Any use of generative AI must be appropriately acknowledged by an attribution to the tools used in completing the task. Failure to acknowledge the use of AI may constitute contract cheating.

Acknowledging the use of AI

Any use of generative AI must be appropriately acknowledged by an attribution to the tools used in completing the task. To acknowledge the use of generative tools, students should clearly include a written declaration of the use of AI in the beginning or at the end of their assessment tasks. The format should be as below:

I acknowledge the use of generative AI tools to generate or enhance materials that are included within this assessment task in modified form.

 

Rubric

Task 3 Rubric

Criteria 1: Analysis of the given problem and appropriate report structure (15 pts)

  • High Distinction (15 to >12.5 pts): Skilful and seamless: Report is well structured, clear, concise and complete. The meaning is consistently clear, comprehensive and insightful. Problem definition is clearly and comprehensively understood and reflected in the pseudocode and test plan. Assumptions show a good depth of insight into the sometimes unclear problem definition.
  • Distinction (12.5 to >10.9 pts): Proficient: Report is mostly well structured and may have some repetition but is complete. The meaning is clear. Problem definition is comprehensively reflected in the pseudocode and test plan. Assumptions show a sound depth of insight into the sometimes unclear problem definition.
  • Credit (10.9 to >9.4 pts): Effective: Report is well written in places and may exhibit repetition in multiple places. The overall meaning is clear, though there are minor instances of awkward or unclear expression. Most of the problem specifications are clearly reflected in the pseudocode and test plan. Assumptions show some insight into the sometimes unclear problem definition.
  • Pass (9.4 to >7.4 pts): Accurate: The intended meaning can be discerned but lacks clarity and/or there are instances of awkward or unclear expression. Problem specifications are generally reflected in the pseudocode and test plan and assumptions.
  • Fail (7.4 to >0 pts): Narrow/shallow: Use of language fails to make meaning clear. Many errors in grammar, syntax, and spelling are present. Problem specifications are narrowly/not reflected in the pseudocode and test plan and assumptions.

Criteria 2: Creative approaches to solving the problem (5 pts)

  • High Distinction (5 to >4.2 pts): Problem is solved creatively. Pseudocode reflects a clear and accurate design.
  • Distinction (4.2 to >3.7 pts): Problem is solved creatively but only with constructs taught in class.
  • Credit (3.7 to >3.2 pts): Problem is solved with a little creativity.
  • Pass (3.2 to >2.45 pts): Solution follows the pattern given in class.
  • Fail (2.45 to >0 pts): Problem is not completely addressed.

Criteria 3: Application of relevant programming concepts (10 pts)

  • High Distinction (10 to >8.4 pts): The Python code is skilfully constructed. The code exhibits efficiency, abstraction and good use of libraries without error, and shows no unjustified or repeated code.
  • Distinction (8.4 to >7.4 pts): The Python code exhibits minor missed opportunities for use of libraries, or abstraction without justification.
  • Credit (7.4 to >6.4 pts): Problem is solved with some application of concepts.
  • Pass (6.4 to >4.9 pts): Problem is solved but significant repetition is evident in code, with no abstraction methods and no efficiency.
  • Fail (4.9 to >0 pts): Incorrect data is used. The code has substantial errors/inadequate coverage of answers or does not run completely.

Criteria 4: Correctness of the program and output and program documentation (15 pts)

  • High Distinction (15 to >12.4 pts): Program has accurate and complete function and/or output with no additional output, and is completely consistent with the design specified. Comments are used in a meaningful way to explain non-obvious code and/or segments of code.
  • Distinction (12.4 to >10.9 pts): Program has accurate and complete function and/or output with minor additional output, and is consistent with the design. Either one or two comments are missing, or unhelpful comments are included.
  • Credit (10.9 to >9.4 pts): Program and/or output is correct but is incomplete or includes substantial additional output. The program is mostly consistent with the design. Either minor omission of comments missing, or inclusion of unhelpful/unnecessary comments.
  • Pass (9.4 to >7.4 pts): Program and/or output is mostly correct or is incomplete. The program is consistent with the design. No comments are included or all comments are unhelpful/unnecessary.
  • Fail (7.4 to >0 pts): Program and/or output has substantial errors or omissions. The program has major inconsistencies with the specified design. Comments are not included or are not helpful.

Total Points: 45

Submission Declaration

I agree to the tool's End-User License Agreement

I declare that this assignment is my own work and complies with the University's Student Conduct - Governing Policy. I agree and acknowledge that by submitting this work it may be used for a textual similarity review by Turnitin.com and included as source documents in the Turnitin.com reference database solely for the purpose of detecting plagiarism of such documents. Use of the Turnitin.com service is subject to the Usage Policy posted on the Turnitin.com site.

Note: This report is provided as a sample for reference purposes only. For further guidance, detailed solutions, or personalized assignment support, please contact us directly.

Regional Animal Shelter Management System (RASMS)

Student Name: [Your Name]
Student ID: [Your ID]
Course: ICT112
Task: Task 2 - Project
Date: January 16, 2026

Table of Contents

  1. Introduction
  2. Problem Description
  3. System Design
  4. Pseudocode
  5. Libraries Used
  6. Test Plan and Test Cases
  7. Limitations
  8. AI Acknowledgement

1. Introduction

This report presents the design and implementation of a Regional Animal Shelter Management System (RASMS) for the Regional Animal Welfare Authority. The system is designed to help shelter staff track animals across multiple shelters in the Adelaide and regional South Australia area, manage adoptions, and facilitate animal transfers between shelters.

The solution is implemented in Python and includes advanced features such as file handling with JSON, search and reporting capabilities, adoption fee tracking with revenue reporting, and an object-oriented design approach using classes.

2. Problem Description

2.1 Purpose

The RASMS aims to streamline the management of animals across multiple shelters by providing a centralized system that allows shelter managers to:

  • View all animals and their current shelter locations
  • Move animals between shelters when necessary
  • Update animal health and adoption statuses
  • Track adoption fees and revenue per shelter
  • Search for specific animals by various criteria
  • Generate comprehensive reports on shelter inventory and finances

2.2 What the Program Does

The program provides a menu-driven interface with the following core functionalities:

Core Features:

  • View all shelters and their animal inventory
  • Move animals between shelters with automatic record keeping
  • Update animal health status (e.g., Healthy, Needs Vaccination, Injured)
  • Update adoption status (e.g., Available, Adopted, In Treatment)
  • Exit the system with automatic data saving

Advanced Features Implemented:

  1. File Handling: All shelter and animal data is stored in a JSON file (shelters_data.json) that is loaded at startup and saved upon exit
  2. Search and Reporting: Search animals by name, breed, or health status, with summary reports showing total animals, available for adoption, and in treatment
  3. Adoption Fee and Revenue Tracking: Tracks adoption fees based on animal type and age, maintains running totals per shelter
  4. Object-Oriented Design: Uses Shelter and Animal classes for better code organization and scalability

2.3 Limitations

  • The system currently supports up to 15 shelters, though it can be extended further
  • No user authentication or multi-user access control
  • No database integration (uses JSON file storage instead)
  • Limited to text-based interface (no graphical user interface)
  • Adoption fees are calculated using fixed pricing rules and cannot be customized per transaction
  • No backup or recovery mechanism if the JSON file becomes corrupted

3. System Design

3.1 Architecture Overview

The system follows an object-oriented design with two main classes:

Animal Class:

  • Attributes: animal_id, name, animal_type, breed, age, health_status, adoption_status, shelter_name
  • Methods: to_dict() for JSON serialization, update_status() for changing health/adoption status

Shelter Class:

  • Attributes: name, location, address, animals (list), total_revenue, animals_adopted_count
  • Methods: add_animal(), remove_animal(), find_animal(), calculate_adoption_fee(), process_adoption(), get_inventory_summary()

Main Program Functions:

  • load_data(): Loads shelter data from JSON file
  • save_data(): Saves shelter data to JSON file
  • display_menu(): Shows menu options to user
  • view_inventory(): Displays all shelters and animals
  • move_animal(): Handles animal transfer between shelters
  • update_animal_status(): Updates health or adoption status
  • search_animals(): Searches by name, breed, or health status
  • view_revenue_report(): Displays adoption fees and revenue
  • main(): Main program loop

3.2 Data Structure

Data is stored in JSON format with the following structure:

{  "shelters": [    {      "name": "Glenelg Animal Rescue",      "location": "Glenelg",      "address": "12 Paws Street, Glenelg",      "total_revenue": 0,      "animals_adopted_count": 0,      "animals": [        {          "animal_id": "D001",          "name": "Max",          "animal_type": "Dog",          "breed": "Labrador",          "age": 3,          "health_status": "Healthy",          "adoption_status": "Available"        }      ]    }  ] }

4. Pseudocode

4.1 Main Program Flow

BEGIN Program    LOAD shelter data from JSON file        WHILE user does not choose to exit DO        DISPLAY main menu options:            1. View Shelter Inventory            2. Move Animal Between Shelters            3. Update Animal Status            4. Search Animals            5. View Revenue Report            6. Exit System                GET user choice                CASE choice OF            1: CALL view_inventory()            2: CALL move_animal()            3: CALL update_animal_status()            4: CALL search_animals()            5: CALL view_revenue_report()            6: SAVE data to JSON file               DISPLAY exit message               EXIT loop            DEFAULT: DISPLAY error message        END CASE    END WHILE END Program

4.2 View Shelter Inventory Function

FUNCTION view_inventory(shelters)    FOR each shelter in shelters DO        DISPLAY shelter name, location, address        DISPLAY number of animals in shelter                IF shelter has animals THEN            FOR each animal in shelter DO                DISPLAY animal ID, name, type, breed, age                DISPLAY health status, adoption status            END FOR        ELSE            DISPLAY "No animals currently housed"        END IF                DISPLAY separator line    END FOR END FUNCTION

4.3 Move Animal Between Shelters Function

FUNCTION move_animal(shelters)    DISPLAY list of all shelters with numbers    GET source shelter number from user        IF source shelter is invalid THEN        DISPLAY error message        RETURN    END IF        DISPLAY animals in source shelter    GET animal ID from user        FIND animal in source shelter    IF animal not found THEN        DISPLAY error message        RETURN    END IF        DISPLAY list of destination shelters    GET destination shelter number from user        IF destination shelter is invalid THEN        DISPLAY error message        RETURN    END IF        REMOVE animal from source shelter    ADD animal to destination shelter    UPDATE animal's shelter name        DISPLAY movement record:        - Animal ID and name        - Old shelter and address        - New shelter and address        DISPLAY success message END FUNCTION

4.4 Update Animal Status Function

FUNCTION update_animal_status(shelters)    DISPLAY list of all shelters with numbers    GET shelter number from user        IF shelter is invalid THEN        DISPLAY error message        RETURN    END IF        DISPLAY animals in selected shelter    GET animal ID from user        FIND animal in shelter    IF animal not found THEN        DISPLAY error message        RETURN    END IF        DISPLAY current status of animal    DISPLAY status type options:        1. Health Status        2. Adoption Status        GET status type choice from user        IF choice is Health Status THEN        DISPLAY health status options        GET new health status from user        UPDATE animal's health status            ELSE IF choice is Adoption Status THEN        DISPLAY adoption status options        GET new adoption status from user                IF new status is "Adopted" THEN            CALCULATE adoption fee based on animal type and age            ADD fee to shelter's total revenue            INCREMENT shelter's adopted count            DISPLAY adoption fee information        END IF                UPDATE animal's adoption status    END IF        DISPLAY success message with updated status END FUNCTION

4.5 Search Animals Function

FUNCTION search_animals(shelters)    DISPLAY search options:        1. Search by Name        2. Search by Breed        3. Search by Health Status        GET search choice from user    GET search term from user        CREATE empty results list        FOR each shelter in shelters DO        FOR each animal in shelter DO            IF search choice is Name THEN                IF animal name contains search term THEN                    ADD animal and shelter to results                END IF            ELSE IF search choice is Breed THEN                IF animal breed contains search term THEN                    ADD animal and shelter to results                END IF            ELSE IF search choice is Health Status THEN                IF animal health status matches search term THEN                    ADD animal and shelter to results                END IF            END IF        END FOR    END FOR        IF results is empty THEN        DISPLAY "No animals found"    ELSE        DISPLAY number of animals found        FOR each result DO            DISPLAY animal details and shelter location        END FOR    END IF END FUNCTION

4.6 Calculate Adoption Fee Function

FUNCTION calculate_adoption_fee(animal_type, age)    CONVERT animal_type to lowercase        IF animal_type is "dog" THEN        IF age is less than 5 THEN            RETURN 300        ELSE            RETURN 200        END IF            ELSE IF animal_type is "cat" THEN        IF age is less than 5 THEN            RETURN 250        ELSE            RETURN 150        END IF            ELSE IF animal_type is "rabbit" OR "bird" OR "reptile" THEN        IF age is less than 5 THEN            RETURN 150        ELSE            RETURN 100        END IF            ELSE        RETURN 100 (default fee)    END IF END FUNCTION

4.7 View Revenue Report Function

FUNCTION view_revenue_report(shelters)    DISPLAY report header    CREATE variable for regional_total = 0        FOR each shelter in shelters DO        DISPLAY shelter name        DISPLAY number of animals adopted        DISPLAY total adoption fees collected        ADD shelter revenue to regional_total        DISPLAY separator    END FOR        DISPLAY regional total for all shelters combined END FUNCTION

4.8 Load and Save Data Functions

FUNCTION load_data(filename)    TRY        OPEN file for reading        PARSE JSON data from file        CREATE empty shelters list                FOR each shelter data in JSON DO            CREATE new Shelter object                        FOR each animal data in shelter DO                CREATE new Animal object                ADD animal to shelter            END FOR                        ADD shelter to shelters list        END FOR                RETURN shelters list            CATCH FileNotFoundError        DISPLAY warning message        RETURN empty shelters list with default data            CATCH JSONDecodeError        DISPLAY error message        RETURN empty shelters list END FUNCTION FUNCTION save_data(shelters, filename)    CREATE empty data dictionary    CREATE empty shelters list in dictionary        FOR each shelter in shelters DO        CONVERT shelter to dictionary format        ADD animals list to shelter dictionary        ADD shelter dictionary to list    END FOR        TRY        OPEN file for writing        WRITE JSON data to file with formatting        DISPLAY success message            CATCH IOError        DISPLAY error message END FUNCTION

5. Libraries Used

5.1 Standard Libraries

The following Python standard libraries are used in this project:

json

  • Purpose: Reading and writing shelter data to/from JSON files
  • Functions used: json.load(), json.dump()
  • Installation: No installation required (built-in Python library)

os

  • Purpose: Checking if the data file exists before loading
  • Functions used: os.path.exists()
  • Installation: No installation required (built-in Python library)

5.2 Why These Libraries?

  • json: Provides an easy and human-readable format for storing structured data. JSON is ideal for this application because it naturally represents the hierarchical structure of shelters containing multiple animals.
  • os: Ensures the program handles missing data files gracefully without crashing, providing better user experience.

5.3 Installation Instructions

No additional installation is required as all libraries used are part of Python's standard library. To run this program, you only need:

  • Python 3.6 or higher installed on your system
  • The program file (rasms.py)
  • The data file (shelters_data.json) in the same folder as the program

6. Test Plan and Test Cases

6.1 Test Strategy

The testing approach includes:

  • Unit Testing: Testing individual functions with specific inputs
  • Integration Testing: Testing the flow between different functions
  • User Acceptance Testing: Testing complete user workflows
  • Edge Case Testing: Testing boundary conditions and error handling

6.2 Detailed Test Cases

Test Case 1: View Shelter Inventory

Test ID: TC001
Function: view_inventory()
Objective: Verify that all shelters and animals are displayed correctly
Preconditions: System loaded with sample data
Test Steps:

  1. Run the program
  2. Select option 1 from the main menu
  3. Observe the output

Expected Output:

All shelters displayed with: - Shelter name, location, and address - Number of animals - Each animal's ID, name, type, breed, age, health status, adoption status

Test Data: Default shelters_data.json file
Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 2: Move Animal Between Shelters - Valid

Test ID: TC002
Function: move_animal()
Objective: Verify that an animal can be successfully moved between shelters
Preconditions: At least 2 shelters exist, source shelter has at least 1 animal
Test Steps:

  1. Select option 2 from main menu
  2. Enter source shelter number: 1
  3. Enter animal ID: D001
  4. Enter destination shelter number: 2
  5. Verify movement record is displayed

Input:

  • Source shelter: 1
  • Animal ID: D001
  • Destination shelter: 2

Expected Output:

Movement Record: Animal: D001 - Max From: Glenelg Animal Rescue, 12 Paws Street, Glenelg To: [Destination Shelter Name and Address] Successfully moved!

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 3: Move Animal - Invalid Animal ID

Test ID: TC003
Function: move_animal()
Objective: Verify error handling for non-existent animal ID
Preconditions: System loaded with data
Test Steps:

  1. Select option 2 from main menu
  2. Enter valid shelter number
  3. Enter invalid animal ID: X999

Input:

  • Shelter number: 1
  • Animal ID: X999

Expected Output:

Error: Animal with ID X999 not found in this shelter.

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 4: Update Health Status

Test ID: TC004
Function: update_animal_status()
Objective: Verify that animal health status can be updated
Preconditions: Animal exists in system
Test Steps:

  1. Select option 3 from main menu
  2. Enter shelter number: 1
  3. Enter animal ID: D001
  4. Select status type: 1 (Health Status)
  5. Enter new health status: 2 (Needs Vaccination)

Input:

  • Shelter: 1
  • Animal ID: D001
  • Status type: 1
  • New health status: Needs Vaccination

Expected Output:

Animal D001 - Max's health status updated to: Needs Vaccination

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 5: Update Adoption Status with Fee Calculation

Test ID: TC005
Function: update_animal_status() with adoption fee
Objective: Verify adoption status update and fee calculation
Preconditions: Animal is available for adoption, age < 5, type = Dog
Test Steps:

  1. Select option 3 from main menu
  2. Enter shelter number containing the animal
  3. Enter animal ID
  4. Select status type: 2 (Adoption Status)
  5. Select new status: 2 (Adopted)
  6. Verify adoption fee is calculated and displayed

Input:

  • Animal: D001 (Dog, age 3)
  • Status type: 2
  • New status: Adopted

Expected Output:

Adoption Fee Calculated: $300 This fee has been added to the shelter's revenue. Animal D001 - Max's adoption status updated to: Adopted

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 6: Search Animals by Name

Test ID: TC006
Function: search_animals()
Objective: Verify search functionality by animal name
Preconditions: Multiple animals in system
Test Steps:

  1. Select option 4 from main menu
  2. Select search type: 1 (Name)
  3. Enter search term: "Max"

Input:

  • Search type: 1
  • Search term: Max

Expected Output:

Found 1 animal(s) matching your search: Animal ID: D001 Name: Max Type: Dog Breed: Labrador Age: 3 years Health: Healthy Adoption Status: Available Shelter: Glenelg Animal Rescue, Glenelg

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 7: Search Animals by Breed

Test ID: TC007
Function: search_animals()
Objective: Verify search functionality by breed
Preconditions: Multiple animals with different breeds
Test Steps:

  1. Select option 4 from main menu
  2. Select search type: 2 (Breed)
  3. Enter search term: "Labrador"

Input:

  • Search type: 2
  • Search term: Labrador

Expected Output:

Found X animal(s) matching your search: [List of all Labrador dogs with details]

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 8: Search with No Results

Test ID: TC008
Function: search_animals()
Objective: Verify handling when search returns no results
Preconditions: System loaded with data
Test Steps:

  1. Select option 4 from main menu
  2. Enter search criteria that matches no animals
  3. Observe output

Input:

  • Search term: "Unicorn"

Expected Output:

No animals found matching your search criteria.

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 9: View Revenue Report

Test ID: TC009
Function: view_revenue_report()
Objective: Verify revenue report displays correct information
Preconditions: At least one animal has been adopted with fee
Test Steps:

  1. Adopt at least one animal (TC005)
  2. Select option 5 from main menu
  3. Verify report shows correct fees and counts

Expected Output:

=== SHELTER REVENUE REPORT === Shelter: Glenelg Animal Rescue Animals Adopted: 1 Total Revenue: $300.00 --------------------------------- Regional Total Revenue: $300.00

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 10: Data Persistence

Test ID: TC010
Function: save_data() and load_data()
Objective: Verify data is saved and loaded correctly
Test Steps:

  1. Make changes to the system (move animal, update status)
  2. Select option 6 to exit
  3. Restart the program
  4. Verify changes are persisted

Expected Output:

  • All changes from previous session are present
  • No data loss

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 11: Invalid Menu Choice

Test ID: TC011
Function: main()
Objective: Verify error handling for invalid menu selections
Test Steps:

  1. At main menu, enter invalid option: 9

Input: 9

Expected Output:

Invalid choice. Please try again.

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 12: Adoption Fee - Cat Under 5

Test ID: TC012
Function: calculate_adoption_fee()
Objective: Verify correct fee for young cat
Test Steps:

  1. Adopt a cat aged less than 5 years
  2. Verify fee calculation

Input:

  • Animal type: Cat
  • Age: 3

Expected Output:

  • Adoption fee: $250

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 13: Adoption Fee - Dog Over 5

Test ID: TC013
Function: calculate_adoption_fee()
Objective: Verify correct fee for older dog
Test Steps:

  1. Adopt a dog aged 5 years or more
  2. Verify fee calculation

Input:

  • Animal type: Dog
  • Age: 7

Expected Output:

  • Adoption fee: $200

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 14: Missing Data File on Startup

Test ID: TC014
Function: load_data()
Objective: Verify system handles missing data file gracefully
Test Steps:

  1. Delete or rename shelters_data.json
  2. Run the program
  3. Verify default data is created

Expected Output:

  • Warning message about missing file
  • System creates default shelters and animals
  • Program continues to function

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

Test Case 15: Empty Shelter Display

Test ID: TC015
Function: view_inventory()
Objective: Verify correct display when shelter has no animals
Test Steps:

  1. Move all animals out of a shelter
  2. View inventory
  3. Verify empty shelter displays correctly

Expected Output:

Shelter: [Name] Location: [Location] Address: [Address] Number of Animals: 0 No animals currently housed in this shelter.

Actual Result: [To be filled during testing]
Status: [Pass/Fail]

6.3 Test Summary Table

Test IDTest NamePriorityStatusNotes
TC001View InventoryHigh[Pass/Fail] 
TC002Move Animal - ValidHigh[Pass/Fail] 
TC003Move Animal - Invalid IDMedium[Pass/Fail] 
TC004Update Health StatusHigh[Pass/Fail] 
TC005Update Adoption with FeeHigh[Pass/Fail] 
TC006Search by NameMedium[Pass/Fail] 
TC007Search by BreedMedium[Pass/Fail] 
TC008Search No ResultsLow[Pass/Fail] 
TC009View Revenue ReportHigh[Pass/Fail] 
TC010Data PersistenceHigh[Pass/Fail] 
TC011Invalid Menu ChoiceLow[Pass/Fail] 
TC012Cat Adoption FeeMedium[Pass/Fail] 
TC013Dog Adoption FeeMedium[Pass/Fail] 
TC014Missing Data FileMedium[Pass/Fail] 
TC015Empty Shelter DisplayLow[Pass/Fail] 

7. Limitations

7.1 Current Limitations

File-Based Storage: The system uses JSON file storage which has limitations for concurrent access. If multiple users try to access the system simultaneously, data corruption could occur.

No User Authentication: The system does not have user login or role-based access control. Any person running the program has full administrative access to all functions.

Fixed Pricing Structure: Adoption fees are calculated using predefined rules and cannot be adjusted on a per-transaction basis without modifying the code.

Text-Based Interface: The system uses a command-line interface which may not be as user-friendly as a graphical interface for some users.

Limited Error Recovery: If the JSON file becomes corrupted, the system will fail to load data and will create default data, potentially losing historical records.

Single Region Focus: The system is designed specifically for Adelaide and regional South Australia. Expansion to other regions would require modifications.

No Backup System: There is no automated backup of the data file. Users must manually backup the JSON file.

7.2 Future Enhancements

To address these limitations, future versions could include:

  • Database integration using SQLite or PostgreSQL for better data management
  • User authentication and role-based access control
  • Web-based or desktop GUI interface
  • Automated backup and recovery systems
  • Customizable pricing rules through configuration files
  • Support for multiple regions
  • Data export capabilities (CSV, PDF reports)
  • Email notifications for adoption confirmations
  • Integration with veterinary systems for health records

8. AI Acknowledgement

I acknowledge the use of generative AI tools (Claude by Anthropic) to generate or enhance materials that are included within this assessment task in modified form. Specifically, AI was used to:

  • Assist in structuring the pseudocode format
  • Generate sample test case templates
  • Review and improve code documentation comments
  • Suggest best practices for JSON file handling
  • Help format the report structure

All code logic, design decisions, and implementation were created by me with AI serving as a reference tool and writing assistant. I take full responsibility for the accuracy and functionality of the submitted work.

End of Report

Example invalid form file feedback

Join our 150К of happy users

Get original papers written according to your instructions and save time for what matters most.