This individual coursework requires developing and documenting a Windows form .NET framework desktop application in C# using an object-oriented approach and Visual Studio. Your software artefact must be submitted as a Visual Studio project. It will be marked using Visual Studio 2017 and any features not working in the standard installation of Visual Studio 2017 will not be assessed.
Design and implement a Windows form .NET framework desktop application in C# (not a web-based or database application) that helps a tutor to manage grouping and marks of students doing a group coursework.
The application should provide the following functionality:
1. Allow importing a class list from a text file (e.g. in .CSV format), or manually entering student details, which include student ID number, first name, last name, and email address.
2. Assign students to existing or new groups as described below. A group has a minimum of two and a maximum of four students from the class list. A student can only be in one group. Three methods of assigning students to groups should be implemented as follows:-
i. Create a new group, then assign from 1 to 4 new members to the group, allowing the user toselect them from the class list.
ii. Manually assign a student from the class list to an existing group, which can be identified by the group unique ID or by its existing member. Display a message if the group has already had the maximum of 4 members.
iii. Bulk-assign the students who are not in any group to groups which have less than two members, and new groups if required.
3. Display the membership of the existing groups and the unassigned students on the computer screen. Your implementation should allow the user to select from at least two different sorting orders, e.g. by student last names and by group ID.
4. For each group, allow the user to record the group mark, and the individual student’s weighting out of 100% of their group’s mark.
5. Display the coursework mark for groups and individual students in a format of your own design.
6. Save and retrieve the grouping status and the marks between program runs.
7. Quit the application.
Your software implementation should demonstrate/provide the following features
1. Use of appropriate data types (built-in and programmer-defined) to handle the application data
2. Use of appropriate data structures e.g. arrays / linked-list etc., for the required programming scenario
3. Use suitable algorithms e.g. sorting
4. Define and use your own class or classes
5. Provide either console-based or window-based user interface for your application
6. Save and retrieve the objects state using serialization.
Your submission should include the software project and a reflective essay as described below.
1. Your software artefact in the form of a Visual Studio 2017 project, which should include the program’s source code, compiled classes, the executable file and data file (if any).
2. A reflective essay (1000 words), which concisely documents:
a. detailed instructions to run the program
b. the architecture of your software in terms of software classes, clearly indicating which classes to be of your own work and which classes from other sources (e.g. from textbooks, online sources such as MSDN etc.).
c. detailed description of your software classes’ properties and methods
d. a description of your algorithm to assign students to groups in the form of a flowchart and/or decision table.
e. which data structures and which algorithms you have used, in which part of your program, and why.
f. A reflection of your own experience of using C# and Visual Studio for the development task, which feature you like and why, what issues you experienced and your solution to overcome it.