In this assignment, you are required to improve the program for Assignment 1 and Assignment 2 by developing a simple Assessment Management System

Value: 15%
Submission method options: Alternative submission method
Task
In this assignment, you are required to improve the program for Assignment 1 and Assignment 2 by developing a simple Assessment Management System. The system allows a lecturer to add and search students details and assignments. The main program should first display a menu as follows. A lecturer needs to select an operation from the main menu.
=======================================================
Welcome to the Student and Assessment Management System
add a student assessment marks.
search assessment marks for a student.
quit.
=======================================================
Please select an option from the above:
If a lecturer chooses the option
the program then asks them to enter a student ID, name, Assignment 1 mark, Assignment 2 mark, Assignment 3 mark and the Final Exam mark one by one. Once all details for a student are entered it will display the student ID, name, the weighted mark of each individual assignment (see assignment1 specifications for how to calculate the weighted marks for the assessment items). Then the details of the student with the weighted marks for the assessment items are added to the end of the students.txt file. Note that the student ID should not be the same as those already exist in the txt file and the format of the newly added record should be consistent with that of existing records.
Once the new record has been added, the system will then ask the user ‘Do you want to enter details for another student (Y/N)?’
• If they enter ‘Y’, the system will allow them to enter details for another student as before.
• If they enter ‘N’, the system will display the main menu again, otherwise, it will ask the same question again.
A typical example of the display of the program (once a lecturer chooses the option
) can be as follows. Your program MUST follow the same display style.
Enter the student ID: 11561234
Enter the student name: Alan Parker

Enter Assignment 1 marks out of 100: 70
Enter Assignment 2 marks out of 100: 80
Enter Assignment 3 marks out of 100: 90
Enter Final Exam mark out of 100: 95

Thank You!
The details of the student you entered are as follows:
Student ID: 11561234
Student name: Alan Parker

Weighted mark for Assignment 1 out of 10: 7
Weighted mark for Assignment 2 out of 20: 16
Weighted mark for Assignment 3 out of 30: 27
Weighted mark for the Final Exam is out of 40: 38

The record has been successfully added to the students.txt file.

Do you want to enter details for another student (Y/N)? N

=================================================================
Welcome to the Student and Assessment Management System
add a student assignment marks
search assessment marks for a student.
quit.
=================================================================
Please select an option from the above:
After the operation, the students.txt file will have the following content after the details of Alan Parker are entered.

If a lecturer chooses the option from the main menu then the program asks the lecturer to enter the student ID for whom they want to see details. To facilitate the search option you need to use an appropriate data structure such as List or Dictionary. The program then collects the student details and assessment marks from the students.txt file and calculate the total mark and displays them as follows (assuming the following student was searched for).
Please enter the student ID you want to search assessment marks for: 11561234
Thank You!
A student has been found:
Student ID: 11561234
Student name: Alan Parker

Assignment 1 mark: 7
Assignment 2 mark: 16
Assignment 3 mark: 27
Final Exam mark: 38

Total marks out of 100: 88
Do you want to search assessment marks for another student (Y/N)? N
After displaying the assessment marks the program prompts the lecturer with the following message, ‘Do you want to search assessment marks for another student (Y/N)?’
• If a lecturer enters ‘Y’ then the program asks them to enter the student ID for whom the assessment marks need to be searched and displayed.
• If the lecturer enters ‘N’ then the program displays the main menu, otherwise, the program prompts the same message again.

Finally, the program quits if the user chooses the option .
Your program should be able to handle invalid inputs such as not-a-number or negative.
You need to develop the system by completing the following three tasks:
Task 1 –
Draw flowchart/s that present the steps of the algorithm required to perform the task specified.
Task 2 –
Select six sets of test data that will demonstrate the ‘normal’ operation of your program; that is, test data that will demonstrate what happens when a VALID input is entered. Select three sets of test data that will demonstrate the ‘abnormal’ operation of your program. Note that all the three features: Add and Search should be tested.
Set it out in a tabular form as follows: test data type, test data, the reason it was selected, the output expected due to using the test data, and finally the output actually observed when the test data is used. It is important that the output listings (i.e., screenshots) are not edited in any way.
Test Data Table
Test data type Test data The reason it was selected The output expected due to the use of the test data The screenshot of the actual output when the test data are used

Task 3 –
Implement your algorithm in Python. Comment on your code as necessary to explain it clearly.
In addition, for this exercise, use multiple functions, instead of using a single function to do everything. Create a good design of the functions to make the best use of the code and avoid duplicate calculations. For example, you can have a function for calculating the weighted mark of an assignment and the function can be used for calculating all weighted marks. Avoid duplicate code.
You also need to design your program so that it has components that can be reused in another program if needed. Handle exceptions appropriately. Use appropriate data structure.
Run your program using the test data you have selected and complete the test data table above.
Your submission will consist of:
1. Your algorithm through flowchart/s.
2. The table recording your chosen test data and results (it can be in a Word or PDF file)
3. Source code for your Python implementation
Rationale
This assessment task will assess the following learning outcome/s:
• be able to analyse the steps involved in a disciplined approach to problem-solving, algorithm development and coding.
• be able to demonstrate and explain elements of good programming style.
• be able to identify, isolate and correct errors; and evaluate the corrections in all phases of the programming process.
• be able to interpret and implement algorithms and program code.
• be able to apply sound program analysis, design, coding, debugging, testing and documentation techniques to simple programming problems.
• be able to write code in an appropriate coding language.
This assessment task is designed to reinforce topic material related to simple functions, files, exceptions and lists.
Marking criteria and standards
Criteria High Distinction (85-100%) Distinction (75-84%) Credit (65-74%) Pass (50-64%) Fail (0-49%)
• Explain the steps involved in a disciplined approach to problem-solving, algorithm development and coding,
• demonstrate elements of good programming style

(four marks allocated) Flowchart/s do not have any unnecessary component. Flowchart/s are presented where all variable names are meaningful. Flowchart/s follow the convention, they are free of errors, and they produce the algorithm correctly. Flowchart/s follow the convention and contain three or less errors Flowchart/s follow the convention, but contain more than three errors
• Identify, isolate and correct errors in all phases of the programming process
• Apply sound program analysis, design, coding, debugging, testing and documentation techniques to simple programming problems

(three marks allocated) Test data explore every branch of the program. Clear explanation is provided of the expected output of the test results.

AND

The presented test output is in the form specified in the assignment. Sound reasons are provided for the selection of test data.

AND

The test output is correct for any test data in addition to those used in the submitted table to report the test result. Selected test data present both normal and abnormal data.

AND

The presented test output is correct. Selected test data are clearly presented in a table and allow easy calculation of output.

AND

The presented test output matches the actual results that can be obtained from the execution of the program. Selected test data are not clearly presented in a table and/or do not allow easy calculation of output.

Or

The presented test output does not match the actual results that can be obtained from the execution of the program.
• Apply sound program analysis, design, coding, debugging, testing and documentation techniques to simple programming problems
• Interpret algorithms and program code,
• Write code in appropriate language

(eight marks allocated) Python code is produced and contains only necessary statements and variables. Exceptions and errors are handled properly. Python code for insert is produced and executes properly without any syntax errors. It produces correct results. Python code for student and assessment management is produced and executes properly without any syntax errors. It produces correct results.

It is fully documented with appropriate comments and all variable names are meaningful.

It uses appropriate data structure. Python code is produced and implements the flowchart/s consistently.

It uses multiple functions effectively.

It uses a good design of functions to avoid duplicate calculations.

It has components that are reusable. Python code is produced and does not execute properly. It may contain syntax errors and/or produce incorrect results.
Additional Comments: The standards outlined for each criteria are cumulative. So, for example, to achieve the standard for high distinction your work needs also to meet the standards outlined for Pass, Credit and Distinction.
Presentation
You have to prepare and present all source code, test data table, and flowchart/s separately and include them all in a single MS Word file identified by your name. See the ‘Requirements’ section below. The Python source code you write should be saved with a name such as ITC558assignment3YourName.py and then include a copy of it as text in the MS Word file named ITC558assignment3YourName.docx.
The other parts of the assignment (such as your flowchart/s and your table of test data) should be included in the same MS Word file and save as ITC558assignment3YourName.docx.
It is critically important that your test runs are unmodified outputs from your program, and that these results should be reproducible by the marker running your saved ITC558assignment3YourName.py python program.
Requirements
You have to save all the parts of the assignment (as described under ‘Presentation’ above) into a single MS Word document identified by your name as outlined in the section on presentation.
Failure to adhere to these requirements may disqualify the submission for marking.
Submit your complete assignment in MS Word format to Turnitin and insert your program source code as an object to your MS Word document (The subject lecturer will explain to you how to insert the object to your MS Word document).