I want the code for all classes and the second project and a uwp layout GUI example
Lab Summary You will create a partial system representing a school. In the first part of the lab, you will create a Class Library consisting of two classes in a class hierarchy, one enumeration, and one structure. Your focus includes students and their courses, and the final grades they receive in each course. In the second part, you will create a UWP Application which uses your Class Library to create objects and display their output. Lab instructions Part A: Class Library 1. Create a Class Library (Universal Windows) assembly. Name the Project School, and name the solution Lab2YourName. Create the following structure and enumeration types... 2. Course is a structure that includes the following: - The grade must be between 0 and 100 . The course name begins with PROG followed by 4 digits. - Methods Course(string c; double of)- 3. Create an enumeration named Status with five possible values. - The enumerated values are: Unknown, Honours, Passing, Alert, and Failing Uninown Honours Passing Alert Failing Create two classes based on the following class hierarchy... PROG 1224 Lab 2 Winter 2023 4. The base class named Person includes the following: Person - The id field comes with a read only property that must be set in the constructor - The name field comes with a read/write property; a valid string is required and should be formatted as Title or Proper case. Can. - The only Person() constructor takes 2 input parameters - one for the id field and one for the name field. - The Tostring() method overrides the base Object ToString() a Fields method - returns the name and id in a formatted string- id : int - Optional: The Equals method overrides the base Object Equals name : string method - return true if two Person objects have the same id. If. - Properties they have the same id but different names, throw an exception c. PersoniD { get }1 int with the message 'Duplicate Student' [1 bonus mark] -See textbook pg. 202 c. Person Name [ get set I : string - Methods Equals(object obj) \& bool Person(int i, string n ) ToString 3 string 5. Student is a class that inherits from Person and includes the following: - The courses field is a 6 element array of type Course - an array that can hold 6 instances of Course structures. Note that you do not populate the array here - just declare it with a size of 6 elements. - The status field is an enumeration type - Status. - Add a read/write property to access the courses. - The Studentstatus property is a read only property that updates and then returns the status field - use the UpdateStatus method, as described below - Create one Student() constructor that takes three parameters - one for the student's courses array (type Course[l] - the other two parameters are to be passed back. to the Person base class. - Add a method named Average that returns a double representing the overall grade average (to 2 decimal places) of all the courses in the course array - Add a method named HighestMark that returns the student's highest grade as a string that includes the course code and grade formatted nicely. If more than one course contains the same highest. grade, return all the occurrences in the array as a formatted string. - Override the Person Tostring[] method - the body will call the base class Tostring() and adds the Student status value. - Add a private method named UpdateStatus that returns and sets the status of a student based on the following rules: "Failing" if the student has 2 or more courses below 50% "Alert" if the student has 1 course below 50% OR an overall average less than 60% "Honours" if the student has at least 50% in all courses AND an overall average of 80% or above "Passing" if not one of the three above ROG 1224 Lab 2 Winter 2023 art B: Test UWP App Add another project to the solution. This project should be a Blank App (Universal Windows) UWP project named SchoolTest. Set this project as the Startup Project for this solution. You will use this project to test your School objects for correctness. Design your own interface. Think about how you will use controls to create the objects and how you will display output to show correctness. Note: As a minimum, you can hard code data and display output in a TextBlock. Optional: Feel free to design an interactive interface that allows the user to create students and their courses to test the correctness of the objects. Test the Person class... - Use the Person constructor - Display the Person ToString() and (optional) Equals method outcome - Test the Person properties by changing name and use the get accessors to display output to the use Test the Course structure... - Create Course objects, using the constructor - Use the set accessors of each property to set each field value. Ensure your validation is working - Display output from the get accessors of each property. Test the Student class... - Populate a Course[] array for a student object - Create Student objects using the constructor - Test the Student ToString() method and StudentStatus property - Loop through the StudentCourses array building a string (or use StringBuilder) for output. Each time through the loop, use the current element get accessors to display each course code and grade. Display the output. - Call the HighestMark() and Average() methods and output the results