Student staff app

implement a new student-staff management software app.  In the first instance you have been asked to build a console proof of concept or prototype.

Write a Console application in C# to implement the details given in the assignment specification below.

Your programme must support the ability to do basic CRUD operations such as adding/editing/removing/finding students, lecturers, etc.  Students, Lecturers and Administrators should be stored in one or more lists.

Create an inheritance hierarchy for this application, below are the minimum amount of classes to use in your programme.

Person Class with properties Name, Phone and Email.

Student Class (should inherit the functionality of the base class Person) with properties Status and StudentID.  A students status can only be either Postgrad or an Undergrad.

Employee Class (should inherit the functionality of the base class Person) with a properties called Salary and EmployementType with a value of JobSharing, FT or PT.

Lecturer Class (should inherit the functionality of the base class Employee) with a properties called Subject Taught and Department, where Department having a value of Arts, Business, Professional or Law.

Administrator Class (again, this should derive from Employee) with properties Grade (with a value of Registrar, Exams Officer, Senior or Junior).

Ensure each class provides an override ToString() method.

Start your classes as immutable, i.e., having read-only properties and only then add setters if you cannot avoid them.

Test your app by writing code in your Main() function that executes all of your functionality to show that it works as expected.

UML Documentation
Create UML documentation which describes the details given above. You will need to determine for yourself any details which are not given in the specification. You should submit the following:

Use Case Diagram
Class Diagram

Technical Merit

You can add additional functionality to your application; you can choose any additional Classes you wish, whether it was something we covered in class or something you researched yourself. 

Whatever you consider as technical merit must be included in your report and, where relevant, in the Use Case Diagram and/or Class Diagram.  Explain in your report the value of this technical merit to your programhow did it make your program better (where better could be more maintainable, more compact, more readable, etc.)

Note: Do not make use of any database functionality or any third party libraries.