Question: Objectives This is one of two major programming projects this semester. You should NOT collaborate your code / script on this project. While you may
Objectives This is one of two major programming projects this semester. You should NOT collaborate your codescript on this project. While you may ask for assistance in debugging, this project should be ENTIRELY your own work. Objectives include: Read information from a csv file Process strings from the input Create a multidimensional list of lists an array Print information to the console Print plots to the console Create a text file as output Use variables and sequence types Use If Statements and loops Use functions Handin Requirements All projects will be submitted electronically through Canvas. Zip up your entire project directoryfolder to submit. Rightclick on the project folder and select zip or compressed files Use the following naming convention for your submission: Projectabczip $ The project folder should include all files necessary to run your program. The program can be created using either Spyder or Jupyter Notebooks The versions on the UTSA VDI Introduction This program aims to help a UTSA instructor manage and generate reports of students' grades. Your program will allow the teacher to: Input raw student information from a csv file independent of class size Create a gradebook with the student information in a list of lists an array Based on a menu of choices: Display on the console a student's exam scores. Menu choices include: Either all exam scores, the average, the lowest or the highest Create a plot of an individual student's exam scores Create a plot of all the student's average grades Create an output file of the overall class averages per student Exit the Program You will be asking your instructoruser a number of questions via the console. In addition, you will load a file into your program for processing. The input file for this assignment is provided on Canvas where you found the pdf instructions In addition, a test script used to evaluate your program is provided at the end of this document. Finally. a rubric in Canvas is provided to help you understand the requirements. Requirements The program has two major sections: Read in a csv file and create a grade book list of lists an array with of all the student information. Present a menu to the instructoruser: a To display information about individual and the overall class exams results. b To display plots to the console. c Create an output file of the grade book. Section You will open the "sectionstudents.csv file. This file can be found as an attachment to the assignment within Canvas. You should download it into the same folder where you are creatingbuilding your program. The file is a csv format which means each field is separated by a coma. Each row is a different student. The columns represent the following information in this order: student's abc first name, last name, exam score, exam score, exam score Once open, you will read the csv file using the readlines method. Remember the reodlines method reads the file one line at a time and returns a string variable for each line. You will want to create a variable to hold this list of string variables. Each element in this temporary list will be one line of information from the csv file. For example, the first line of the csv will be in the first element of your new variable. Next you must process each line in your temporary list into a twodimensional array list of lists which requires you to break up the strings into tokens. Recommend you use a loop to process each line in your list You will also want to ensure you change your exam scores into integer values to ensure they can be processed in later sections of the code. Once you have all of the tokens, you can create a variable to hold a list of these tokens to then be appended into your grade book. Don't forget to make an empty grade book variable before you start your loop! Requirement: Each row in the grade book should be a different student and each column of the array should be their information abc firstname, lastname, exam exam exam Section Section of your program will be the most complex as you will be using a menu system with a submenu. At a minimum, your menus need to include the following Menu choices highlighted in Green below You can createuse additional menu items to navigate between the menu choices. These will only lose you points if they do not work. At a minimum, you are required to create the below user defined functions and use them in your menu system. Each user defined function will be described within the menu choices below. You can creoteuse additional functions in your code. Those will only lose you points if they do not work. listexams catave callow calhigh The below requirements will provide details on how to meet the minimum for this assignment. Minimum Requirements You must include a header. The header must follow the format below. Insert your full name in the YOURNAME UTSA CS Section Project written by YOURNAME The program will present a menu to the instructoruser with options. Main Menu : Exam Scores : Graphs : Class Graph : Output File : Exit Program Select an Option: Based on console input from the instructorusernumeric value that corresponds to the menu choice the program will perform one of the five below activities. It will continue to prompt the instructoruser until option Exit Program is selected. Then the program will close with a farewell message. Exam scores which will have a submenu Graphs Class Graph Output File Exit Note: If the instructoruser inputs a number outside of the program should prompt the user to resubmit due to an error. Value is out of range, please resubmit: Main Menu : Exam scores Option When the instructoruser selects option a new menu will be presented to the instructoruser Individual Student Exam Menu :List All :Average :Low Score :High Score :Exit Select an Option: Just like the main menu, you should have a check to ensure the instructoruser selects a value in the menu and prompt them for a new value if it is incorrect. Once the instructoruser selects a correct menu option, you must prompt the user for a way to indentify the student. You will want to capture this value for use in your functions. Each time the instructoruser selects a menu choice, you will need to prompt the user for the abc The program is not required to maintain a student id between each menu selection. Assumption is that the user will want to change students while in the Individual Student Exam Menu. Submenu : List All The List all menu option will search the grade book for the matching student and display on the console, the three exam scores. Create a function called listexams to use to perform the search and output for this menu option. Exam Scores: NNN NNN NNN If the search does not result in a student id match, the program should indicate that the student id provided was not found. Not Found: providedstudentid Submenu : Average The Average menu option will search the grade book for the matching student and display on the console, the average value for the three exams. Create a function called calave to provide the average exam results. The results will be displayed on the console floating point with two decimals Student Average: NNNN If the search does not result in a student id match, the program should indicate that the student id provided was not found. Not Found: providedstudentid Submenu : Low Score The Low Score menu option will search the grade book for the matching student and display on the console, the student's lowest exam score. Create a function called callow to provide the lowest exam results for the student. The results will be displayed on the console. Low Score: NNN If the search does not result in a student id match, the program should indicate that the student id provided was not found. Not Found: providedstudentid Submenu : High Score The High Score menu option will search the grade book for the matching student and display on the console, the student's highest exam score. Create a function called calhigh to provide the highest exam score for the student. The results will be displayed on the console. If the search does not result in a student id match, the program should indicate that the student id provided was not found. Not Found: providedstudentid Submenu : Exit This option should return the user to the main menu. Main Menu : Graphs The Graphs menu option will provide a console display to indicate the results will be a graph of the exam scores. This will provide a graph of exam scores. It will also search the grade book for the matching student. The user will need to provide the student abc Provide abc of Student: If the search does not result in a student id match, the program should indicate that the student id provided was not found. Not Found: providedstudentid When a student is found, a plot of the students scores will be displayed in the console. The plot must include each of the three scores, clearly labeled, it must include a label for the xaxis Exams and a label for the label Scores and a legend with the student's abc Below is an example of the appropriate format. Once the plot is completed the program returns to the main menu. Main Menu : Class Graph Extra Credit This menu option is extra credit if you complete it If you do not want to submit extra credit, display the following prompt when the user selects option And retum the user to the main menu. The "Under Construction" option does not get you any additional extra credit points Under Construction Io get full extra credit points, when the user selects option the program will first calculate the overall average grade for each student. Then, it will determine each individual students letter grade. Letter grades are based on the ranges listed in the table below. Then the program will create a plot with the number of students in each category. The plot must include the letter grades on the axis and the number of students on the axis with approprate labels. You must also include a title "Report of Section Grades". The example below only has three scores and they were all As This is just an example, the real data will be different but the and axis format will be the same. Main Menu : Output Grades File When the instructoruser selects option the program will create an output text file. The text file will include one line for each student in the master list. The format of the output will be Last Name, First Name and the student's Average Score. The file will also include a coma between each field in the output. The name of the file to output will be "SectionResults.txt The display will notify the user that the file has been created. Main Menu : Exit When the instructoruser selects option the program will display the below farewell message on the console. Include your name in YOURNAME Thank you. This program is brought to you by Python Expert: YOURNAME. Test Script When we evaluate your program, we will start with this test script to see if you have all of the functions and capabilities required in the minimum requirements. We may use additional menu choices, but if your program can successfully navigate the below script and provide the required information you should get full points based on the rubric abc aaa zzz ccc iii abc iii
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
