Objectives:
The software testing process (i.e., the BBT) consumes large amounts of data. Creating the test data is a crucial part of the testing process especially for new systems which are not in use yet. This assignment will give you an opportunity to practice creating representative test data. After completing this assignment, students will be able to:
• Create random data from a given set of parameters
• Create a large number of test cases to test all possibilities
• Write a C++ program to process the data as though it were collected from a real situation.
This assignment will be submitted into two parts (Part-A and Part-B) – a separate Code::Blocks project is required for each part.
Problem description:
A statewide high school soccer league needs a new system for tracking teams and recording their rankings. Assume there are 5000 high schools in the state (in reality, California has the most high schools in the U.S. at 4500), each with a unique 6 digit number ID, and a name of random length(816) and char combination. For each school a team will have between 12 and 25 players, including alternates. Each player has an ability level between 1 and 50, and the mean ability level of a team’s players will be the team’s mean ability score. Each team plays against 19 other teams during a season, playing against each team twice, for a total of 38 matches. Wins and losses are tracked. At the end of the season the top 100 teams are invited to a State Tournament. League administrators want to see the results of the Season as well as statewide statistics for total number of players in the league and average number of players per team.
On the same line as the team data, you will need to output the team’s win loss record. Losses will be represented by a negative number, the number of points lost by, between -6 and -1. Wins will be positive numbers between 1 and 6. There will be 38 randomly generated match records listed on the same line in the “stateTeams.txt” as the team’s data. The win+loss scores will be skewed by the team’s ability level. A team with a lower ability level should have more losses than a team with a higher ability level. To do this, take the following approach:
• Compare the current team to a 19 random teams from the list. This will require generating the teams first, then comparing a team’s mean ability score to other teams from the list to generate wins+losses. Each team will play 19 teams twice, for a total of 38 matches.
• To eliminate ties, if the teams have the same mean ability score, compare the median score.
• Higher ability will determine the winner.
• Lower ability the loser.
The number of points won or lost by is randomly generated.
Submission notes for Part-A:
• Zip the entire Code::Blocks project containing all the .cpp, .h, .cbp files and name the zipped file “Assg6A_cslogin.zip”, where the cslogin is your login ID for the computers at the Department of Computer Science at ODU
• You do not have to submit the txt file (stateTeams.txt) with your program for Part-A. This file will be deleted when the graders test your program.
Submit the zipped file using the appropriate Blackboard link.
Part-B:
Create a new project in Code Blocks. Write a C++ program which reads the stateTeams.txt you created in Part A using the appropriate data structure to manage the team data. For each Team calculate a raw win+loss score, where wins+loss equals the sum of points won or lost, and a curved rank using their median ability score to curve the data using the following formula: Rank = (Wins+Loss) / (MedianAbilityScore) * 100
Don’t forget to use the proper number types for true division. Sort the list of teams using the following rules:
• First sort the teams by curved rank.
• Teams with the same curved rank will be sorted by the raw win+loss record.
• Teams with the same curved rank and the same win+loss rank will be sorted by their MeanAbilityScore .
• If the above is all the same, sort by whoever has the least number of players.
Output the sorted teams by Rank, TeamID, School Name, and win+loss to a file called “results.txt”. The rank will be printed to 4 decimal places. At the end of the file, print a report containing the top 100 team IDs and School Names that will be invited to the State Tournament in two columns of id/name pairs(see example), the total number of high school players in the state, and the average number of players per team. A sample “results.txt” file will be made available in the assignment folder.