ITECH1000 Programming 1 1717 – assignment 2  (Math Whiz)

Assignment 2

Overview

This is an individual assignment that requires you to design, develop and test a small Java program using object-oriented approaches.

Assessment Details

Maths Whiz! is a competition for local school children to compete against each other to find out who is the ultimate Maths Whiz Champion for the region. Two students from each school are selected to compete in the Championship Round.

Your task is to design, develop and test a small application for managing the Championship results.

Stage 1: Design

This stage requires you to prepare documentation that describes the function of the program and how it is to be tested. There is no coding or code testing involved in this stage. A document template has been provided for your use.

Requirements:

  • Read through Stage 2: Program Development to obtain details of the requirements of this program.
  • Write an algorithm that describes how the program will
    1. All program requirements must be included, even if you do not end up including all these requirements in your program
    2. The algorithm must be structured logically so that the program would function
  • Prepare and document test cases that can be used to check that the program works correctly, once it has been coded. You do NOT need to actually run the test cases in this stage; this will occur in Stage 3: Testing.
    1. All program requirements must be included, even if you do not end up including all these requirements in your program
    2. Make sure the test cases include checking of data entered by the user to make sure that only valid data is accepted. If the user enters invalid data, the user should be informed of this and given another chance to enter the data. NB: As we have not covered exception handling, you may assume that the user will always enter the expected data
    3. Test cases should be documented using a template like the one below. You may include extra information if you wish. At this stage, the Actual Result column will be left

 

 

Test Case Expected Result Actual Result
Display Results selected Each competitor is listed with their total final score, sorted from highest to lowest total score.

This list is followed by a list of First, Second and Third placings, identifying the student and the school they represent.

Stage 2: Program Development

 Using the Design Documentation to assist you, develop a Java program that uses object-oriented coding approaches to record and report upon the Maths Whiz! Championship round, implementing the requirements outlined in this section.

You must follow coding conventions, such as proper layout of code, using naming conventions and writing meaningful comments throughout your program.

Overview of the Program:

This section provides an overview of how the program works from the user’s perspective. You may change the appearance of the program provided you implement the same functionality.

  • When the program starts, it provides a short message for initializing the contest administration system and prompts the user to enter the number of questions in the competition. The user must enter a whole number greater than or equal to 1, otherwise the system keeps prompting for the required number of questions until a valid entry is
  1. Once the number of questions required is obtained, the program automatically initialises. This initialisation includes creating the contest, creating the schools, creating the students and registering the students in the
  2. When initialisation is complete, a menu appears providing the user with options to Enter Results, Display Results, View Program Credits or Exit

 

  1. When the user selects the Enter Results option, the user is prompted to enter the scores each student obtains on each question in the

 

5. When all results have been entered for the contest, a message “Score entry complete” appears and the menu is shown again.

6. When the user chooses the Display Results option, the results of the championship are displayed by student. Students are listed in order of their total scores across all questions, from highest to lowest. This list is followed by the placings for the event, with those students who achieve the highest three scores shown in first, second and third place, with the school they represent also identified. The menu is then

7. When the user selects the option to View Program Credits, a message is displayed providing authorship information for this program. The main menu is then

8. When the user selects the option to Exit program, a message thanks the user for using the system, and the program

Technical Information:

This section provides technical implementation details required by the programmer to create the program. You must address these requirements as specified.

Development of this program requires four classes: Contest, Student, School and Entry as well as a Driver class to control the flow of the program.

Driver Class: Name this file ID3XXXXXXX, where the Xs are replaced by your student ID. This class will contain a main() method to manage the flow of the program, and other methods as necessary to ensure the code is modularized and functions correctly.

Contest Class: This represents a Contest, in this case the Maths Whiz! Championship round. Use the class diagram below as the basis for designing your class.

Contest
–  name: String

–  MAX_ENTRANTS: int {readOnly}

–  NUMBER_OF_QUESTIONS: int {readOnly}

–  MAX_SCHOOL_ENTRANTS: int {readOnly}

–  entries: Entry[]

~ Contest(String, int, int, int)

+ getContestName(): String

+ getEntrantLimit(): int

+ getNumberOfQuestions(): int

+ registerEntrant(Student)

–  capacityReached(): boolean

–  schoolLimitReached(School): boolean

+ enterScores()

+ viewContestScores()

–  sortResults()

Student Class: This represents a Student from one of the participating schools. Use the class diagram below as the basis for designing your class.

Student
–  name: String

–  enrolledSchool: School

~ Student(String, School)

+ getName(): String

+ getSchool(): School

School Class: This represents a local School participating in the Maths Whiz! Challenge. Use the class diagram below as the basis for designing your class.

School
–  name: String

–  registrationID: String

~ School(String, String)

+ getName(): String

+ getID(): String

 

 

Entry Class: This represents a single Student registered to compete in the contest, and the scores they obtain for each question in the contest. Use the class diagram below as the basis for designing your class.

 

Entry
–  entrant: Student

–  quizScores: int[]

~ Entry(Student, int)

+ setScore(int, int)

+ getScore(int)

+ getEntrant(): Student

+ totalScore(): int

Initialising the Program:

Initialising the program requires the following steps:

  1. Prompt the user to enter the number of questions required for the championship. This must be a minimum of 1 question and is a whole number to be stored as an int. Initialisation cannot proceed until this number has been
  2. Create a new Contest for the Maths Whiz! Championship. For this task, you will set the maximum number of entrants to 8 and the maximum entrants from any one school to be
  3. Create a new School for each of the participating
    1. You must select any four schools that are local to your university campus and create a School to represent each of these.
    2. Each School’s name must match the name of a local school you have selected. You can make up any id for that
    3. For testing purposes, you must create a fifth school that will not end up competing in the contest. This is to demonstrate that further entries will not be accepted into the contest once all available entries have been filled. This school must be named after you.
  4. Create new Students to compete in the contest. Each Student has an attribute that stores their School. You may choose the names for your own
  5. Make sure you have enough students to fill the contest and for testing, to demonstrate that the limit on entrants from any one school is enforced and that further entrants cannot be registered once the contest is.
  6. Register the Students to compete in the contest. Registration occurs by creating new Entries, which comprise a Student and an integer array that stores the Student’s scores for each question. These Entries are stored in the entries array. This array must be full when registration is complete.
    1. You will need to make sure that each student is only registered once in the
    2. There is a limit on the number of students from a single school in each event. Make sure that this limit is not
    3. When all places in the event have been filled, no further registrations may be accepted.

The user should be advised with a message if any of these issues occur. Your initialisation code must include attempted registrations that result in each of these issues.

7. Advise the user that initialisation is complete,

Running the Program
  1. Entering Results
    1. Scores for each question should be stored in the quizScores array for each Student
    2. The user is to be prompted to enter the scores for each question for each Student. All scores for Question 1 will be entered first, continuing for each successive question number until all questions have scores entered. Each score is to be read as an int and updated by accessing each Student in the entries array and using the setScores(int, int) method to update the quizScores array. Tip: This method takes two integer parameters. One of these represents the question number the student has answered. The other represents the score they obtained for that
    3. You may assume that the user’s results entry is the correct data type (that is, an int). You do not need to check to make sure that the user does not enter non-numerical characters.
    4. If the user selects the option to Enter Results after having already entered these, the earlier scores will be overwritten.

2.        Displaying Results

  1. Displaying the contest results requires sorting the Students in order of the total scores they obtained and presenting this information in a readable format. This report is followed by identifying the first, second and third place-getters and the school each of these students
    1. To sort the students, you will need to write a sorting method that finds the total score for each student and rearranges their position based in the array based on this
    2. If two or more students obtain the same total score, then the order of the students and their placings will be determined based on the order their results were

3.        Viewing Program Credits

  1. No special processing is required for this section. A simple display of the credit information is all that is

4.        Exit Program

  1. The program should exit by reaching the end of the main() method. System.exit(int) should not be

Stage 3: Testing

Using a copy of the test cases developed in Stage 1: Design, test the program you have developed in

Stage 2: Program Development. Document your results, including both failed and successful tests.

Note: Please do not leave out any failed tests. If your testing highlights that your program has not worked correctly, then the failed tests help to demonstrate that you have been testing your program properly.

To show that you have tested your program, include small (but readable) screen captures in your Actual Results as well as any explanatory comments. Microsoft Windows includes a Snipping Tool that is useful for taking captures of the relevant parts of the screen.

Submission

Your program code, design and testing documentation should be zipped into a single file and loaded into the Assignment Box provided in Moodle by the due date and time.

Marking Criteria/Rubric 
 

Task

Available Marks Student Mark
Stage 1: Design Documentation
Development of an algorithm describing how the program should function 1
·         All requirements from the Assessment Details section included
·         Logical structure
Documented test cases to validate program 1
·         All requirements from the Assessment Details section included
·         Data is validated to ensure user entries are appropriate and incorrect user entries are handled smoothly
Stage 2: Program Development
A Java program addressing the requirements outlined in the Assignment Details section, including appropriate use of classes, instances, loops, conditional statements, constants and variables:
Use of coding conventions throughout entire program, including readable and clear layout, following naming conventions and including meaningful and appropriate comments.
Creation of classes Contest, School, Student and Entry to match diagrams provided 2
Initialisation of the program in the driver class:
·         Creation of a Contest, Schools and Students, using four local school names and an additional school named after the programming student developing this program 2
·         Registration of Students in the Contest, ensuring each student is only registered once, each school is limited to the set number of entrants and the capacity of the contest is not exceeded.  

2

Running Program
·         Appropriate menus display until user chooses to exit 0.5
·         Entering of results for the contest 2
·         Display Results correctly displays the total scores for each entrant 3
·         First, second and third positions are accurately displayed and the school identified 1
·         Program Credits included 0.5
Coding Standards
·         Code modularized, correctly using method calls and passing data between methods 1
·         Object-oriented approaches have been implemented appropriately (full marks only available for a complete assignment)  

2

Stage 3: Testing  

 

2

Documented test results clearly showing all the testing that has been conducted and the results of this testing. Pro-rata marks based on extent of assignment tasks completed.
Total 20

 

 

Feedback

Assignments will be marked within 2 weeks of submission. Marks will be loaded in fdlGrades, and a completed marking sheet will be available via Moodle.

Plagiarism:

Plagiarism is the presentation of the expressed thought or work of another person as though it is one’s own without properly acknowledging that person. You must not allow other students to copy your work and must take care to safeguard against this happening. More information about the plagiarism policy and procedure for the university can be found at http://federation.edu.au/students/learning-and- study/online-help-with/plagiarism.

NOTE: YOU WILL HAVE TO REPLACE YOUR NAME AND REGISTRATION